首页 热点资讯 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

oracle_session_process监控

2023-11-11 来源:华拓网
/bin/grep ‘[1-9]‘ $ORACLE_NUM1 | /bin/awk ‘{print $1}‘ | /usr/bin/head -1 ;;

Process)

/bin/grep ‘[1-9]‘ $ORACLE_NUM1 | /bin/awk ‘{print $1}‘ | /usr/bin/tail -1 ;;

*)

echo "please Use Sessions | Process"

esac

############# 配置好之后重启服务 #################

service zabbix_agentd restart

################ zabbix_server 中先获取一下值 #############

# 如果可以直接上web端定义,不行的话先检查防火墙,iptables, selinux

zabbix_get -s 10.200.200.209 -p 20986 -k oracle.status[Sessions]

#########################   oracle 状态模板 ############################### 

########## 直接定义成xx.xml 然后导入就成##############

<?xml version="1.0" encoding="UTF-8"?>

<zabbix_export>

    <version>3.2</version>

    <date>2017-07-10T10:07:00Z</date>

    <groups>

        <group>

            <name>Templates</name>

        </group>

    </groups>

    <templates>

        <template>

            <template>Templates_oracle_status</template>

            <name>Templates_oracle_status</name>

            <description/>

            <groups>

                <group>

                    <name>Templates</name>

                </group>

            </groups>

            <applications>

                <application>

                    <name>oracles_status</name>

                </application>

            </applications>

            <items>

                <item>

                    <name>oracle_process</name>

                    <type>0</type>

                    <snmp_community/>

                    <multiplier>0</multiplier>

                    <snmp_oid/>

                    <key>oracle.status[Process]</key>

                    <delay>90</delay>

                    <history>10</history>

                    <trends>30</trends>

                    <status>0</status>

                    <value_type>3</value_type>

                    <allowed_hosts/>

                    <units/>

                    <delta>0</delta>

                    <snmpv3_contextname/>

                    <snmpv3_securityname/>

                    <snmpv3_securitylevel>0</snmpv3_securitylevel>

                    <snmpv3_authprotocol>0</snmpv3_authprotocol>

                    <snmpv3_authpassphrase/>

                    <snmpv3_privprotocol>0</snmpv3_privprotocol>

                    <snmpv3_privpassphrase/>

                    <formula>1</formula>

                    <delay_flex/>

                    <params/>

                    <ipmi_sensor/>

                    <data_type>0</data_type>

                    <authtype>0</authtype>

                    <username/>

                    <password/>

                    <publickey/>

                    <privatekey/>

                    <port/>

                    <description/>

                    <inventory_link>0</inventory_link>

                    <applications/>

                    <valuemap/>

                    <logtimefmt/>

                </item>

                <item>

                    <name>oracle_session</name>

                    <type>0</type>

                    <snmp_community/>

                    <multiplier>0</multiplier>

                    <snmp_oid/>

                    <key>oracle.status[Sessions]</key>

                    <delay>90</delay>

                    <history>10</history>

                    <trends>30</trends>

                    <status>0</status>

                    <value_type>3</value_type>

                    <allowed_hosts/>

                    <units/>

                    <delta>0</delta>

                    <snmpv3_contextname/>

                    <snmpv3_securityname/>

                    <snmpv3_securitylevel>0</snmpv3_securitylevel>

                    <snmpv3_authprotocol>0</snmpv3_authprotocol>

                    <snmpv3_authpassphrase/>

                    <snmpv3_privprotocol>0</snmpv3_privprotocol>

                    <snmpv3_privpassphrase/>

                    <formula>1</formula>

                    <delay_flex/>

                    <params/>

                    <ipmi_sensor/>

                    <data_type>0</data_type>

                    <authtype>0</authtype>

                    <username/>

                    <password/>

                    <publickey/>

                    <privatekey/>

                    <port/>

                    <description/>

                    <inventory_link>0</inventory_link>

                    <applications/>

                    <valuemap/>

                    <logtimefmt/>

                </item>

            </items>

            <discovery_rules/>

            <httptests/>

            <macros/>

            <templates/>

            <screens/>

        </template>

    </templates>

    <graphs>

        <graph>

            <name>oracle_status</name>

            <width>900</width>

            <height>200</height>

            <yaxismin>0.0000</yaxismin>

            <yaxismax>100.0000</yaxismax>

            <show_work_period>1</show_work_period>

            <show_triggers>1</show_triggers>

            <type>0</type>

            <show_legend>1</show_legend>

            <show_3d>0</show_3d>

            <percent_left>0.0000</percent_left>

            <percent_right>0.0000</percent_right>

            <ymin_type_1>0</ymin_type_1>

            <ymax_type_1>0</ymax_type_1>

            <ymin_item_1>0</ymin_item_1>

            <ymax_item_1>0</ymax_item_1>

            <graph_items>

                <graph_item>

                    <sortorder>0</sortorder>

                    <drawtype>2</drawtype>

                    <color>000088</color>

                    <yaxisside>0</yaxisside>

                    <calc_fnc>2</calc_fnc>

                    <type>0</type>

                    <item>

                        <host>Templates_oracle_status</host>

                        <key>oracle.status[Process]</key>

                    </item>

                </graph_item>

                <graph_item>

                    <sortorder>1</sortorder>

                    <drawtype>2</drawtype>

                    <color>AAAA00</color>

                    <yaxisside>0</yaxisside>

                    <calc_fnc>2</calc_fnc>

                    <type>0</type>

                    <item>

                        <host>Templates_oracle_status</host>

                        <key>oracle.status[Sessions]</key>

                    </item>

                </graph_item>

            </graph_items>

        </graph>

    </graphs>

</zabbix_export>

技术分享

本文出自 “xiong” 博客,请务必保留此出处http://xiong51.blog.51cto.com/5239058/1946056

oracle_session_process监控

标签:oracle   zabbix   

小编还为您整理了以下内容,可能对您也有帮助:

Oracle中的Connect/session和process的区别及关系介绍

connect,就是客户端到服务器端的一个物理连接通道。
session,是oracle实例中的一个逻辑组合id。
process,是否则session的一个进程。
他们三者的关系,在这里给你举个例子。
你打电话给你爸,当两边电话拨通时,此时叫做建立了一个connect,然后你这边的电话机就是一个进程,叫做客户端进程,你爸那边的电话机也是一个进程,叫做服务器进程。此时,你跟你爸进行通话,询问你爸身体状况啊什么的,这就是谈话的内容了(也就是你和你爸之间的一个session(会话)),正好此时,你妈过来了要跟你聊两句,那么电话不断,你和你妈聊你儿子的事,此时你和你妈建立了一个session,(也就是谈话内容不同),但是你爸的session并没有断掉,只是暂时挂起了,等你在和你爸谈论他身体的时候,又恢复了session。
通过上面这个例子,你应该大体上了解这三者的关系了吧。
在接着说,一个connect可以有0个,1个,2个甚至多个session
比如你电话接通了,只是有人把电话接起来扔那就去干别的事情了,此时没有人通话,这就是0个session,
只给你父亲同话,完了挂掉电话,这就是一个session
如果在给你你母亲通电话,这就是两个session

同样,假如你跟你父亲通电话的过程中,电话线被风挂断了,通话中断,因为物理线路(connect中断了),但是此时session并没有中断,你父亲仍然在那边(喂,喂,或者说了两句话才发现电话线掉了),其实这就相当于虽然connect断了,但是session仍然存在了一会,最后你父亲发现了这个问题才挂掉电话(就相当于session存活,connect断掉,pmon进程监控到了,然后把这个session干掉,同时把process干掉(也就是把电话机挂机))
明白了吗?

Oracle中的Connect/session和process的区别及关系介绍

connect,就是客户端到服务器端的一个物理连接通道。
session,是oracle实例中的一个逻辑组合id。
process,是否则session的一个进程。
他们三者的关系,在这里给你举个例子。
你打电话给你爸,当两边电话拨通时,此时叫做建立了一个connect,然后你这边的电话机就是一个进程,叫做客户端进程,你爸那边的电话机也是一个进程,叫做服务器进程。此时,你跟你爸进行通话,询问你爸身体状况啊什么的,这就是谈话的内容了(也就是你和你爸之间的一个session(会话)),正好此时,你妈过来了要跟你聊两句,那么电话不断,你和你妈聊你儿子的事,此时你和你妈建立了一个session,(也就是谈话内容不同),但是你爸的session并没有断掉,只是暂时挂起了,等你在和你爸谈论他身体的时候,又恢复了session。
通过上面这个例子,你应该大体上了解这三者的关系了吧。
在接着说,一个connect可以有0个,1个,2个甚至多个session
比如你电话接通了,只是有人把电话接起来扔那就去干别的事情了,此时没有人通话,这就是0个session,
只给你父亲同话,完了挂掉电话,这就是一个session
如果在给你你母亲通电话,这就是两个session

同样,假如你跟你父亲通电话的过程中,电话线被风挂断了,通话中断,因为物理线路(connect中断了),但是此时session并没有中断,你父亲仍然在那边(喂,喂,或者说了两句话才发现电话线掉了),其实这就相当于虽然connect断了,但是session仍然存在了一会,最后你父亲发现了这个问题才挂掉电话(就相当于session存活,connect断掉,pmon进程监控到了,然后把这个session干掉,同时把process干掉(也就是把电话机挂机))
明白了吗?

Oracle的session和process的区别与分析

session 和 process的区别:
连接connects,会话sessions和进程pocesses的关系
每个sql login称为一个连接(connection),而每个连接,可以产生一个或多个会话,如果数据库运行在专用服务器方式,
一个会话对应一个服务器进程(process),如果数据库运行在共享服务器方式,一个服务器进程可以为多个会话服务。
session 和 process的关系,tom在他的书里写的很清楚了
一个process可以有0个,1个或者多个session
一个session也可以存在这个或者那个process中
oracle中session跟process的研究
使用方法:
首先看看v$session跟v$processwww.hbbz08.com 中主要的字段属性:
v$session(sid,serial#,paddr,username,status,machine,terminal,sql_hash_value,sql_address,,,)
v$process(addr,spid,,,)
可看到v$session中的paddr跟v$process中的addr对应,也即会话session在数据库主机上对应进程的进程地址.
这里我们要先定位该session正在执行的sql语句,此时我们可以查询如下的语句: select sql_text
from v$sqltext_with_newlines
where (hash_value,address) in (select sql_hash_value,sql_address from v$session where sid=&sid) order by address,piece

Oracle的session和process的区别与分析

session 和 process的区别:
连接connects,会话sessions和进程pocesses的关系
每个sql login称为一个连接(connection),而每个连接,可以产生一个或多个会话,如果数据库运行在专用服务器方式,
一个会话对应一个服务器进程(process),如果数据库运行在共享服务器方式,一个服务器进程可以为多个会话服务。
session 和 process的关系,tom在他的书里写的很清楚了
一个process可以有0个,1个或者多个session
一个session也可以存在这个或者那个process中
oracle中session跟process的研究
使用方法:
首先看看v$session跟v$processwww.hbbz08.com 中主要的字段属性:
v$session(sid,serial#,paddr,username,status,machine,terminal,sql_hash_value,sql_address,,,)
v$process(addr,spid,,,)
可看到v$session中的paddr跟v$process中的addr对应,也即会话session在数据库主机上对应进程的进程地址.
这里我们要先定位该session正在执行的sql语句,此时我们可以查询如下的语句: select sql_text
from v$sqltext_with_newlines
where (hash_value,address) in (select sql_hash_value,sql_address from v$session where sid=&sid) order by address,piece

如何监控Oracle数据库中长时间运行的进程

监控Oracle 数据库中长时间运行进程的两种方式,通过这些方 法,我们可以监控单条语句的 长时间操作,监控存储过程的运行进度,甚至自己'生成'进度信息. 关键词:监控进度V$SESSION_LONGOPS 当Oracle 存储过程运行时间较长时,我们希望客 户端能了解到它在后台执行的状况或者进度信息(类 似WINDOWS 安装软件时的进度条信息),这样可以知 道运行在后台的应用进程是否终止或者休眠,更近一 步要求,最好能知道进行到哪一步骤,还有多少时间才 能完成. 简单到一条SQL 语句的情况,如果执行时间较长, 我们如何得到它的运行状况?是否后台还在运行?虽 然可以查看SQL 的执行计划了解它的执行步骤,但如 何知道它运行到哪一个步骤了呢?如何才能估计出它 的合理的较为精确的执行时间呢? Oracle 数据库前端发出执行命令后,进程在后台 执行,普通开发人员一般无法了解到后台在做什么,一 般采用的方法是用DBMSOUTPUT.PUT_LINE 来打印出 来,但DBMS—OUTPUT.PUT—LINE 打印的信息受缓冲区 大小*,如果信息较多就容易溢出,而且如果存储过 程执行时间较长,只有在其执行完后,这些信息才会打 印出来,这就增加了调试周期,影响了调试效果.有的 开发人员在存储过程中通过写日志表的形式来记录进 度,但需要COMMIT 后其他进程才能看到这些日志信 息,而在某些控制结构中(如游标CURSOR 循环)COM— MIT,则很容易引起ORA 一01555 错误,造成程序出错. 下面介绍两种监控方法. 如何监控单条长语句从ORACLE8 开始,出现一个新的动态视图:V $SESSION_LONGOPS,从这个视图可以获知一些操作 (如全表扫描,并行查询,RMAN,排序等)的执行进度, 我们先来了解一下V$SESSION—LONGOPS 视图的一些 重要字段: 列说明 sID 会话标识 5ERIAL#会话序列号 OPfE 操作的简短描述 TARG 盯操作的对象,如xx TAR~_DESC目标描述 SOFAR 目前已执行单位数目 ToTAIWORK 总单位数目 UNlTS 单位 START_TIME 开始执行时间 LAST_ UPDATE_TIME 统计数据最后更新时间 TIME_ REMAINING 估计剩余时间c ELAPSED_SECONDS 已执行时间(秒) MEsSAGE 统计数据汇总信息 USERA^^E 用户名 ~L_ADDRES5 语句的地址,,用于和V$sql_text 等关联 语句的hash 地址,用于和V$sql_texlSQLHASH VALUE等关联 这个动态视图显示各个运行时间超过6 程.这些进程包含许多备份和恢复功能,统计数据收集,查询等. 执行以下语句就可以得到数据库中各个长时间操 作的进程信息: select'Icfromv$sesslon_ longopswheretime_ re- malnlng>0 我们也可以用图形化工具查看,如TOAD,OEM中 均可查看长操作进程进度信息. Oracle 自带的管理工具OracleEnterpriseManager (OEM)提供了图形化查看长操作的功能,如: 计算机系统应用2007 Quest公司的数据库管理工具TOAD 也可以看到 长操作信息,如: 表的统计信息. 长时问运行的SQL 语句可以用V$SESSION—LON? 为了能监控到查询进程执行的进度,必需使用 CBO 优化器并且: 设置TlMED—STATISTICS或者SQL—TRACE 用ANALYZE语句或者DBMS—STAT 包收集相关 108 实践经验P 帕cficalExpen GOPS来监控.实际上,长时间运行的存储过程也可以 监控.那是否任何操作都可以通过这个视图来监控进 度呢?很遗憾,V$SESSION—LONGOPS 只会报告它认为 耗时长的操作.对于NEsTEDLOOP/UNIQUEINDEX READS/INDEXRANGEScANS 等执行速度很快的操作, 2007 期计算机系统应用由于它们执行一般不超过6 秒,因此将不会出现在V $SESSION—LONGOPS 如何监控自定义存储过程单条长语句可以用上面的方法监控,Oracle 动生成V$SE.SSION— LONGOPS 记录.那么存储过程中 有许多小操作,如何监控进度呢?其实,我们也可以手 工生成V$SESSION—LONGOPS 记录,方法是调用DBMS APPLICATION—INFO 包来生成自定义进度信息. 从Oracle7.2 开始,提供了DBMS—APPLICATION— INFo 包,通过调用这个包,应用可以将自己的名字和 动作填写到V$SESSION 和V$SQLAREA 的MODULE ACTION列中.V$SESSION 列出每个会话的用户名,操 作系统机器名,终端名,程序名等. 应用可以在执行模块时设置模块名和动作名,模 块名一般是甩户自定义的.而动作名一般描述模块中 的当前执行的事务的名字. DBMSAPPLICATION_INFO 包包含以下过程 SET_ MODULE 设置当前运行程序的模块名 SET__AEl'ION 设置当前模块的当前动作名 SESSION—LON-在V$SESSIONLONGOPS视图中 GoPS 插入一行进度信息 SETMODULE过程设置模块名和动作名: createorreplaceproceredel—cust(v_cust—Id varchar2) begindbms—— application—— info.set— mole(mole—— name=>"delcust". actlon_name=>"deletetablecust)i deletefromcustwherecustld=v_ cusLId; dbms_appllcatlon— Info.seLmole(,); end;以上设置的模块名和动作名可以通过查询V $sqlarea 获取. 如:selectsql—text,mole,actionfromv $sqlareawheremole="del_cust: sql_textmoleadion Deletefr0mcustdel_ custdeletetableoust 1rowselected. SET_SESSION—LONGOPS 过程用于在V$session— longops 中插入一行,开发人员可以调用此过程设置长 时间操作的状态信息,这样,任何其他其他会话都可以 看到这个进度信息.如下例所示: declare nohlntnumberdefaultdbmsapplicatlon_info.set_ session— Iongops_ nohint; IdndexnumberdefaultInohlnt: slnonumber;begin forlIn1..8888888888 loop update....; dbms_ appllcaflon— Info.setsesslon_ longops (rlndex=>l_rlndex, slno=>I_slno. op_name=>"updateahugetable. target=>126, target_desc=>'.msgdescription context=>0.sOfar=>j. totalwork=>8888888888. units=>loops endloop;end; 然后,从另一个会话来执行以下语句selectfromv$sesslon_ longopswheretlmere? malnlng>0; 也可以用图形化工具TOAD 或OEM来查看. 因此,采用本文说明的方法,Oracle 开发人员可以 比较方便的监控长操作进程的进度信息,也可以自己 设置监控信息,来了解后台存储过程的运行效率.甚 至,可以在存储过程或SQL 语句提交执行后马上观察 其执行进度,如果比较缓慢,则可以中断其执行,进行 调优,从而缩短调试周期,提高开发效率.

如何监控Oracle数据库中长时间运行的进程

监控Oracle 数据库中长时间运行进程的两种方式,通过这些方 法,我们可以监控单条语句的 长时间操作,监控存储过程的运行进度,甚至自己'生成'进度信息. 关键词:监控进度V$SESSION_LONGOPS 当Oracle 存储过程运行时间较长时,我们希望客 户端能了解到它在后台执行的状况或者进度信息(类 似WINDOWS 安装软件时的进度条信息),这样可以知 道运行在后台的应用进程是否终止或者休眠,更近一 步要求,最好能知道进行到哪一步骤,还有多少时间才 能完成. 简单到一条SQL 语句的情况,如果执行时间较长, 我们如何得到它的运行状况?是否后台还在运行?虽 然可以查看SQL 的执行计划了解它的执行步骤,但如 何知道它运行到哪一个步骤了呢?如何才能估计出它 的合理的较为精确的执行时间呢? Oracle 数据库前端发出执行命令后,进程在后台 执行,普通开发人员一般无法了解到后台在做什么,一 般采用的方法是用DBMSOUTPUT.PUT_LINE 来打印出 来,但DBMS—OUTPUT.PUT—LINE 打印的信息受缓冲区 大小*,如果信息较多就容易溢出,而且如果存储过 程执行时间较长,只有在其执行完后,这些信息才会打 印出来,这就增加了调试周期,影响了调试效果.有的 开发人员在存储过程中通过写日志表的形式来记录进 度,但需要COMMIT 后其他进程才能看到这些日志信 息,而在某些控制结构中(如游标CURSOR 循环)COM— MIT,则很容易引起ORA 一01555 错误,造成程序出错. 下面介绍两种监控方法. 如何监控单条长语句从ORACLE8 开始,出现一个新的动态视图:V $SESSION_LONGOPS,从这个视图可以获知一些操作 (如全表扫描,并行查询,RMAN,排序等)的执行进度, 我们先来了解一下V$SESSION—LONGOPS 视图的一些 重要字段: 列说明 sID 会话标识 5ERIAL#会话序列号 OPfE 操作的简短描述 TARG 盯操作的对象,如xx TAR~_DESC目标描述 SOFAR 目前已执行单位数目 ToTAIWORK 总单位数目 UNlTS 单位 START_TIME 开始执行时间 LAST_ UPDATE_TIME 统计数据最后更新时间 TIME_ REMAINING 估计剩余时间c ELAPSED_SECONDS 已执行时间(秒) MEsSAGE 统计数据汇总信息 USERA^^E 用户名 ~L_ADDRES5 语句的地址,,用于和V$sql_text 等关联 语句的hash 地址,用于和V$sql_texlSQLHASH VALUE等关联 这个动态视图显示各个运行时间超过6 程.这些进程包含许多备份和恢复功能,统计数据收集,查询等. 执行以下语句就可以得到数据库中各个长时间操 作的进程信息: select'Icfromv$sesslon_ longopswheretime_ re- malnlng>0 我们也可以用图形化工具查看,如TOAD,OEM中 均可查看长操作进程进度信息. Oracle 自带的管理工具OracleEnterpriseManager (OEM)提供了图形化查看长操作的功能,如: 计算机系统应用2007 Quest公司的数据库管理工具TOAD 也可以看到 长操作信息,如: 表的统计信息. 长时问运行的SQL 语句可以用V$SESSION—LON? 为了能监控到查询进程执行的进度,必需使用 CBO 优化器并且: 设置TlMED—STATISTICS或者SQL—TRACE 用ANALYZE语句或者DBMS—STAT 包收集相关 108 实践经验P 帕cficalExpen GOPS来监控.实际上,长时间运行的存储过程也可以 监控.那是否任何操作都可以通过这个视图来监控进 度呢?很遗憾,V$SESSION—LONGOPS 只会报告它认为 耗时长的操作.对于NEsTEDLOOP/UNIQUEINDEX READS/INDEXRANGEScANS 等执行速度很快的操作, 2007 期计算机系统应用由于它们执行一般不超过6 秒,因此将不会出现在V $SESSION—LONGOPS 如何监控自定义存储过程单条长语句可以用上面的方法监控,Oracle 动生成V$SE.SSION— LONGOPS 记录.那么存储过程中 有许多小操作,如何监控进度呢?其实,我们也可以手 工生成V$SESSION—LONGOPS 记录,方法是调用DBMS APPLICATION—INFO 包来生成自定义进度信息. 从Oracle7.2 开始,提供了DBMS—APPLICATION— INFo 包,通过调用这个包,应用可以将自己的名字和 动作填写到V$SESSION 和V$SQLAREA 的MODULE ACTION列中.V$SESSION 列出每个会话的用户名,操 作系统机器名,终端名,程序名等. 应用可以在执行模块时设置模块名和动作名,模 块名一般是甩户自定义的.而动作名一般描述模块中 的当前执行的事务的名字. DBMSAPPLICATION_INFO 包包含以下过程 SET_ MODULE 设置当前运行程序的模块名 SET__AEl'ION 设置当前模块的当前动作名 SESSION—LON-在V$SESSIONLONGOPS视图中 GoPS 插入一行进度信息 SETMODULE过程设置模块名和动作名: createorreplaceproceredel—cust(v_cust—Id varchar2) begindbms—— application—— info.set— mole(mole—— name=>"delcust". actlon_name=>"deletetablecust)i deletefromcustwherecustld=v_ cusLId; dbms_appllcatlon— Info.seLmole(,); end;以上设置的模块名和动作名可以通过查询V $sqlarea 获取. 如:selectsql—text,mole,actionfromv $sqlareawheremole="del_cust: sql_textmoleadion Deletefr0mcustdel_ custdeletetableoust 1rowselected. SET_SESSION—LONGOPS 过程用于在V$session— longops 中插入一行,开发人员可以调用此过程设置长 时间操作的状态信息,这样,任何其他其他会话都可以 看到这个进度信息.如下例所示: declare nohlntnumberdefaultdbmsapplicatlon_info.set_ session— Iongops_ nohint; IdndexnumberdefaultInohlnt: slnonumber;begin forlIn1..8888888888 loop update....; dbms_ appllcaflon— Info.setsesslon_ longops (rlndex=>l_rlndex, slno=>I_slno. op_name=>"updateahugetable. target=>126, target_desc=>'.msgdescription context=>0.sOfar=>j. totalwork=>8888888888. units=>loops endloop;end; 然后,从另一个会话来执行以下语句selectfromv$sesslon_ longopswheretlmere? malnlng>0; 也可以用图形化工具TOAD 或OEM来查看. 因此,采用本文说明的方法,Oracle 开发人员可以 比较方便的监控长操作进程的进度信息,也可以自己 设置监控信息,来了解后台存储过程的运行效率.甚 至,可以在存储过程或SQL 语句提交执行后马上观察 其执行进度,如果比较缓慢,则可以中断其执行,进行 调优,从而缩短调试周期,提高开发效率.

在Oracle中session和process的区别

你好:1.process 和session的概念:

process:这个参数了能够连接到SGA的操作系统进程数(或者是Windows 系统中的线程数),这个总数必须足够大,从而能够适用于后台进程与所有的专用服务器进程,此外,共享服务器进程与调度进程的数目也被计算在内.此外,共享服务器进程与调度进程的数目也被计算在内.因此,在专用服务器环境中,这是一种并发连接数的方法.

疑点一:能够连接到SGA的操作系统进程数,这种进程包括哪些进程? Windows系统中的线程数,是指所有与oracle相关的进程的线程数之和?

疑点二:在共享服务器和专用服务器环境中,算法有什么不同?

哪位兄弟了解比较透彻,请指点一下,拜谢!

Sessions:是被应用于oracle层次而非操作系统层次.在不考虑通过专用服务器或共享服务器进行登录的情况下,这个参数了对指定实例的并发登陆数.

疑问:在C/架构中,是指Oracle用户登陆建立的会话数?在B/S架构中又怎么算呢?

2,尽管概念不是很明白,遇到这种问题还得干活先:

1).通过SQLPlus修改

Oracle的sessions和processes的关系是

sessions=1.1*processes + 5

使用sys,以sysdba权限登录:

SQL> show parameter processes;

NAME TYPE VALUE

------------------------------------ ----------- ---------------------------------------

aq_tm_processes integer 1

db_writer_processes integer 1

job_queue_processes integer 10

log_archive_max_processes integer 1

processes integer 150

SQL> alter system set processes=400 scope = spfile;

系统已更改。

SQL> show parameter processes;

NAME TYPE VALUE

------------------------------------ ----------- -----------------------------------------

aq_tm_processes integer 1

db_writer_processes integer 1

job_queue_processes integer 10

log_archive_max_processes integer 1

processes integer 150

SQL> create pfile from spfile;

文件已创建。

重启数据库,OK!

SQL> shutdown immediate;

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup

ORACLE 例程已经启动。

Total System Global Area 171966464 bytes

Fixed Size 787988 bytes

Variable Size 145488364 bytes

Database Buffers 25165824 bytes

Redo Buffers 524288 bytes

数据库装载完毕。

数据库已经打开。

SQL> show parameter processes;

NAME TYPE VALUE

------------------------------------ ----------- ----------------

aq_tm_processes integer 0

db_writer_processes integer 1

gcs_server_processes integer 0

job_queue_processes integer 10

log_archive_max_processes integer 2

processes integer 400

SQL> show parameter session;

NAME TYPE VALUE

------------------------------------ ----------- ----------------

java_max_sessionspace_size integer 0

java_soft_sessionspace_limit integer 0

license_max_sessions integer 0

license_sessions_warning integer 0

logmnr_max_persistent_sessions integer 1

session_cached_cursors integer 0

session_max_open_files integer 10

sessions integer 445

shared_server_sessions integer

SQL>

【注:sessions是个派生值,由processes的值决定,公式sessions=1.1*process + 5】

oracle 中Session是做什么的

在 Oracle 数据库中,Session(会话)指的是一个连接到数据库实例的用户进程或线程。每个 Session 都有一个唯一的标识符,称为 Session ID(SID),用于区分不同的 Session。

Session 在 Oracle 中扮演着非常重要的角色,它们主要用于执行数据库操作、管理事务、控制数据库资源等。具体来说,Session 可以完成以下几个主要的功能:

执行 SQL 语句:Session 可以通过 SQL 语句向数据库发出请求,并获取结果集。在执行 SQL 语句之前,Session 还需要进行身份验证和授权操作。

管理事务:Session 可以启动和管理事务,包括提交事务、回滚事务等操作。在多用户的并发环境中,Session 还需要处理并发访问带来的竞争条件和数据一致性问题。

控制数据库资源:Session 可以控制数据库资源的使用情况,包括 CPU、内存、磁盘等资源。在多用户的并发环境中,Session 还需要通过锁机制等手段,避免多个用户同时访问同一资源带来的问题。

监控和管理:Session 还可以用于监控和管理数据库实例的状态和性能。通过 Session,DBA 可以查看当前连接到数据库的用户和进程,以及相关的会话信息、等待事件等。

Session 是 Oracle 数据库中非常重要的概念,它们用于执行 SQL 语句、管理事务、控制数据库资源等。在多用户的并发环境中,Session 还需要处理并发访问带来的竞争条件和数据一致性问题,从而保证数据库的安全和可靠性。

显示全文