RSM0进程引起alert日志暴增的处理过程
RSM0进程引起alert日志暴增的处理过程
整体架构如下:

在alert日志中不断重复出现以下修改参数的记录:
<msg time='2013-04-24T10:50:44.736+08:00' org_id='oracle' comp_id='rdbms' client_id='' type='UNKNOWN' level='16' host_id='XXX21DBRAC1' host_addr='xx.x.x.xx' module='' pid='31902'> <txt>ALTER SYSTEM SET log_archive_trace=0 SCOPE=BOTH SID='XXXdb1'; </txt> </msg> <msg time='2013-04-24T10:50:44.747+08:00' org_id='oracle' comp_id='rdbms' client_id='' type='UNKNOWN' level='16' host_id='XXX21DBRAC1' host_addr='xx.x.x.xx' module='' pid='31902'> <txt>ALTER SYSTEM SET log_archive_format='%t_%s_%r.dbf' SCOPE=SPFILE SID='XXXdb1'; </txt> </msg> <msg time='2013-04-24T10:50:44.783+08:00' org_id='oracle' comp_id='rdbms' client_id='' type='UNKNOWN' level='16' host_id='XXX21DBRAC1' host_addr='xx.x.x.xx' module='' pid='31902'> <txt>ALTER SYSTEM SET standby_file_management='MANUAL' SCOPE=BOTH SID='*'; </txt> </msg> <msg time='2013-04-24T10:50:44.816+08:00' org_id='oracle' comp_id='rdbms' client_id='' type='UNKNOWN' level='16' host_id='XXX21DBRAC1' host_addr='xx.x.x.xx' module='' pid='31902'> <txt>ALTER SYSTEM SET archive_lag_target=0 SCOPE=BOTH SID='*'; </txt> </msg> <msg time='2013-04-24T10:50:44.849+08:00' org_id='oracle' comp_id='rdbms' client_id='' type='UNKNOWN' level='16' host_id='XXX21DBRAC1' host_addr='xx.x.x.xx' module='' pid='31902'> <txt>ALTER SYSTEM SET log_archive_max_processes=4 SCOPE=BOTH SID='*'; </txt> </msg> <msg time='2013-04-24T10:50:44.883+08:00' org_id='oracle' comp_id='rdbms' client_id='' type='UNKNOWN' level='16' host_id='XXX21DBRAC1' host_addr='xx.x.x.xx' module='' pid='31902'> <txt>ALTER SYSTEM SET log_archive_min_succeed_dest=1 SCOPE=BOTH SID='*'; </txt> </msg>
注意:发现都是从xx.x.x.xx自身发出的命令
根据日志文件中的pid查看进程
[oracle@XXX21DBRAC1 ~]$ ps -ef | grep 31902 oracle 18995 18966 0 12:14 pts/1 00:00:00 grep 31902 oracle 31902 1 1 Mar01 ? 18:04:30 ora_rsm0_XXXdb1
注释:
RSM0 Data Guard Broker Resource Guard Process 0 是 broker的进程
rsm(broker resource manager)负责处理broker使用的、需要在配置中的一个数据库上执行任何sql命令。
通过dgmgrl修改了配置,可能是数据库在启动过程中由broker执行的配置命令。
相关进程还有:
RSM0 Data Guard Broker Resource Guard Process 0
RSM1 Data Guard Broker Resource Guard Process 1
NSV0 Data Guard Broker NetSlave Process 0
NSV1 Data Guard Broker NetSlave Process 1
NSV2 Data Guard Broker NetSlave Process 2
NSV3 Data Guard Broker NetSlave Process 3
NSV4 Data Guard Broker NetSlave Process 4
NSV5 Data Guard Broker NetSlave Process 5
NSV6 Data Guard Broker NetSlave Process 6
NSV7 Data Guard Broker NetSlave Process 7
NSV8 Data Guard Broker NetSlave Process 8
NSV9 Data Guard Broker NetSlave Process 9
INSV Data Guard Broker INstance SlaVe Process
注意:
一旦开始使用broker就必须一直使用它修改dg的配置。
如果之后使用sql*plus修改配置,broker会将其还原或者导致broker配置和数据库配置之间不一致。
如果卸载broker,将不得不重新配置dg,以返回原始的设置。
参数:dg_broker_start=true 所有节点修改将启用broker
实际查看如下:
[oracle@XXX21DBRAC1 ~]$ ps -ef | grep nsv
oracle 26609 26568 0 13:05 pts/1 00:00:00 grep nsv
oracle 31893 1 0 Mar01 ? 00:03:25 ora_insv_XXXdb1
oracle 31900 1 0 Mar01 ? 00:11:48 ora_nsv1_XXXdb1
[oracle@XXX21DBRAC1 ~]$ cd
[oracle@XXX21DBRAC1 ~]$
[oracle@XXX21DBRAC1 ~]$ dgmgrl /
DGMGRL for Linux: Version 11.2.0.3.0 - 64bit Production
Copyright (c) 2000, 2009, Oracle. All rights reserved.
Welcome to DGMGRL, type "help" for information.
Connected.
DGMGRL> show configuration
Configuration - dg2012
Protection Mode: MaxPerformance
Databases:
XXXdb_p - Primary database
Warning: ORA-16532: Data Guard broker configuration does not exist
XXXdb_s - Physical standby database (disabled)
Fast-Start Failover: DISABLED
Configuration Status:
WARNING
节点2:
[oracle@XXX21DBRAC2 ~]$ dgmgrl / DGMGRL for Linux: Version 11.2.0.3.0 - 64bit Production Copyright (c) 2000, 2009, Oracle. All rights reserved. Welcome to DGMGRL, type "help" for information. Connected. DGMGRL> show configuration ORA-16532: Data Guard broker configuration does not exist Configuration details cannot be determined by DGMGRL
查看各节点参数设置:
节点1:
SQL> show parameter dg_
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dg_broker_config_file1 string /u01/app/oracle/product/11.2.0
/dbhome_1/dbs/dr1XXXDB_P.dat
dg_broker_config_file2 string /u01/app/oracle/product/11.2.0
/dbhome_1/dbs/dr2XXXDB_P.dat
dg_broker_start boolean TRUE
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
+DATA/XXXdb/datafile/system.256.788703825
+DATA/XXXdb/datafile/sysaux.257.788703825
+DATA/XXXdb/datafile/undotbs1.258.788703825
+DATA/XXXdb/datafile/users.259.788703825
+DATA/XXXdb/datafile/undotbs2.271.788704025
+DATA/XXXdb/datafile/XXX21_01.dbf
+DATA/XXXdb/datafile/XXX11_01.dbf
+DATA/XXXdb/datafile/sysaux02.dbf
+DATA/XXXdb/datafile/system02.dbf
9 rows selected.
节点2:
SQL> show parameter dg
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dg_broker_config_file1 string /u01/app/oracle/product/11.2.0
/dbhome_1/dbs/dr1XXXDB_P.dat
dg_broker_config_file2 string /u01/app/oracle/product/11.2.0
/dbhome_1/dbs/dr2XXXDB_P.dat
dg_broker_start boolean TRUE
说明主库启用了broker但是配置存在问题。
建议将主库所有实例参数dg_broker_start 设置为false。