【转】 Oracle 9I ora_d00_sid 占CPU2010-07-01 10:48转载自 木叶猴最终编辑 waterweizhong我的系统是在linux下的oracle9.2.0.4。SQL> select distinct server from v$session;DEDICATEDSQL> host[oracle@qadb oradata]$ ps -aux|grep oracleoracle 1972 0.0 0.1 14568 ...
显示全部【转】 Oracle 9I ora_d00_sid 占CPU2010-07-01 10:48转载自 木叶猴最终编辑 waterweizhong
我的系统是在linux下的oracle9.2.0.4。
SQL> select distinct server from v$session;
DEDICATED
SQL> host
[oracle@qadb oradata]$ ps -aux|grep oracle
oracle 1972 0.0 0.1 14568 1724 ? S Jun07 0:16 /u01/app/oracle/product/9.2.0.4/bin/tnslsnr LISTENER -inherit
oracle 1976 0.0 0.1 291240 1696 ? S Jun07 2:16 ora_pmon_sid
...............
oracle 1992 0.0 0.2 292616 2448 ? S Jun07 0:04 ora_s000_sid
oracle 1994 24.7 0.0 291064 428 ? R Jun07 4152:06 ora_d000_sid
oracle 22683 0.0 0.0 290836 44 ? S Jun09 0:00 oraclesid(LOCAL=NO)
...............
其中ora_d000_sid进程长时间的占用了24.7%的cpu。
虽然这时有15到20个session连上来,但都不太占资源。
而且还一直在稳步上涨中:
06-06-19 11:18的:
oracle 1994 24.7 0.0 291064 428 ? R Jun07 4152:06 ora_d000_sid
到06-06-19 15:08的:
oracle 1994 25.8 0.0 291064 440 ? S Jun07 4405:00 ora_d000_sid
到06-06-20 08:51的:
oracle 1994 30.2 0.0 291064 380 ? R Jun07 5467:25 ora_d000_sid
到06-06-20 15:46的:
oracle 1994 31.7 0.0 291064 360 ? R Jun07 5884:58 ora_d000_sid
后经nmgzw建议:“以前我也注意到过,每次shutdown数据库时,总要等***d000***这个进程,因为我确认我们根本就不使用shared mode的连接,所以我把参数改了,这样,起数据库后,也就不存在d000这个进程!
所以,我觉得,不管它为什么在稳步增长,如果用户连接根本没用到,那部用管它,把参数改了,下次启动数据库时不让它起就好了!”
所以我将init.ora中关于mts的“dispatchers="(PROTOCOL=TCP) (SERVICE=sidXDB)"”(只有dispatchers的设置)注释,再用新的参数文件重启数据库。
注:这是老袁今天早上讲的主要内容 !抽空中午的时间我发上来。下午的话会有更加重要的——备份和恢复,还有下午要考试!但是班里面的这几个爷们好像一点都不紧张!FT,这叫考试啊。我先吧今天早上的发上去吧!
================================笔记的分割线==================================
一、 共享服务器初始化参数
DISPATCHERS:配置调度程序进程
MAX_DISPATCHERS:指定同时运行的调度程序进程最大数目
用于设置调度程序的起始数目,初始化文件可以指定多个DISPATCHERS参数,但必须是彼此相邻的。Oracle内部为每个DISPATCHERS参数分配一个INDEX索引值,以方便之后使用ALTER SYSTEM语句时明确引用某个DISPATCHERS参数。
对一般系统来说,每1000个连接分配1个调度程序,运转好的话再多一些。太多的调度程序会降低系统性能,所以要实现估计好连接数。
举例:
DISPATCHERS = "(PROTOCOL = TCP)" --基本参数
DISPATCHERS = "(ADDRESS = (PROTOCOL = TCP)(HOST = 10.2.1.81)) (DISPATCHERS = 2)" --强调IP
DISPATCHERS = "(ADDRESS = (PROTOCOL = TCP)(PORT = 5000))" --强调端口
SHARED_SERVERS:指定启动实例时可创建的共享服务器进程数
MAX_SHARED_SERVERS:指定可以同时运行的共享服务器进程最大数目
指定了启动时希望创建的共享服务进程的数目。Oracle会在SHARED_SERVERS和MAX_SHARED_SERVERS之间的数目中,根据请求队列的长度动态调整共享服务器的数目。一般来说,10个连接分配一个共享服务器。
MAX_SHARED_SERVERS是一个静态初始参数,但SHARED_SERVERS是动态参数,可以使用ALTER SYSTEM语句修改。
CIRCUTTS:进出网络会话时可以利用的虚拟回路总数
SHARED_SERVER_SESSIONS:用户会话允许的共享服务器总数,可以为专门服务器保留用户会话
LARGE_POOL_SIZE:指定大型存储池分配字节大小
SESSIONS:系统可创建的最大会话数目
二、修改调度程序和服务器进程
1、调度进程
可通过V$QUEUE、V$DISPATCHER、V$DISPATCHER_RATE来查看
通过ALTER SYSTEM修改DISPATCHERS参数值
ALTER SYSTEM SET DISPATCHERS =
'(PROTOCOL = TCP)(DISPATCHERS = 5)(INDEX = 0)',
'(PROTOCOL = TCPS)(DISPATCHERS = 2)(INDEX = 1)';
注1:DISPATCHERS:是参数;DISPATCHERS=5 才是调度进程个数;
注2:INDEX用于识别DISPATCHERS参数,从0到n依次排列,即V$DISPATCHER中的CONF_INDX值
2、关闭调度进程
首先要查询到DISPATCHERS的NAME:
SELECT NAME,NETWORK FROM V$DISPATCHER;
然后关闭调度进程:
ALTER SYSTEM SHUTDOWN IMMEDIATE 'D000';
更改共享服务器进程最少数目:
ALTER SYSTEM SET SHARED_SERVERS = 2;
3、监视共享服务器
V$DISPATCHER:提供有关调度程序进程的信息;
V$DISPATCHER_RATE:提供调度程序进程的速率统计表;
V$QUEUE:包含有关共享服务器的消息队列的信息;
V$SHARED_SERVER:包含有关共享服务器进程的信息;
V$CIRCUIT:包含有关虚拟回路的信息;
V$SHARED_SERVER_MONITOR:包含协调共享服务器的信息;
V$SGA:包含各个系统全局区(SGA)组的容量信息;
V$SGASTAT:关于DGA的详细统计信息,用于协调共享服务器;
V$SHARED_POOL_RESERVED:共享存储池的信息
收起