将RAC的备份恢复到单机。
数据库恢复时, set newname极慢的原因,初步分析如下:
查询各 session的等待事件:
SQL> select s.sid, s.serial#, s.paddr, p.pid, s.event, s.p1, s.program from v$session s, v$process p where s.paddr = p.addr ;
……………………….
315 35 0000000CD3144DC8 23 rdbms ipc reply 5 rman@p24fdbqd (TNS V1-V3)
332 1 0000000CD6176370 5 CSS initialization 0 oracle@p24fdbqd (DBW0)
发现一个 rman进程在等待ipc (进程间通信),参数是 5,也就是在等待pid为 5的进程,即DBW0 。
而DBW0正在等待“ CSS initialization”,但是这个等待是在寻找 OCR和VOTEDISK 才会发生的,单实例不应该有。
根据 DBW0的trace 文件,DBW0在确实在寻找 ASM里的东西,认为自己应该在集群里:
ORA-01186: file 201 failed verification tests
ORA-01157: cannot identify/lock data file 201 - see DBWR trace file
ORA-01110: data file 201: '+DATA/xxx/tempfile/temp.263.750902335'
ORA-01157: cannot identify/lock data file 201 - see DBWR trace file
ORA-01110: data file 201: '+DATA/xxx/tempfile/temp.263.750902335'
ORA-17503: ksfdopn:2 Failed to open file +DATA/xxx/tempfile/temp.263.750902335
ORA-15001: diskgroup "DATA" does not exist or is not mounted
ORA-15077: could not locate ASM instance serving a required diskgroup
ORA-29701: unable to connect to Cluster Manager
并且将错误日志记录在 /oracle/product/10.2.0/db_1/log/xxx/client 目录下。
日志里只有一条简单的信息:
2013-12-17 16:15:27.672: [ CSSCLNT][2479832160]clsssInitNative: connect failed, rc 9
这个日志的数量非常之大,今天就产生 400多个,到目前已经有33万多
[oracle@xxx client]$ pwd
/oracle/product/10.2.0/db_1/log/p24fdbqd/client
[oracle@xxx client]$ ll | grep "Dec 17" | grep -v 2012 | wc -l
482
[oracle@xxxclient]$ ll | wc -l
335132
由于这些日志的名称是 cssN.log的形式,N 是自增的数字,因此每生成一个 log文件,就必须遍历整个目录来获取最大的数字。
因此慢应该是由两部分时间组成,一个是连接 CSS服务超时(应该是由于控制文件是从 RAC备份而来),一个是遍历 /oracle/product/10.2.0/db_1/log/xxx/client 文件夹,这也符合用户反应的,新装的环境恢复很快,往后越来越慢的现象。
任何定时查询集群、 ASM相关信息的SQL ,如监控程序,也会频繁产生此类错误日志。
建议先清空 /oracle/product/10.2.0/db_1/log/xxx/client 文件夹观察一下。
处理结果:
将/oracle/product/10.2.0/db_1/log/xxx/client重命名,发现会自动重建,然后各项操作速度就非常快了。