处理过程参考了:
https://blogs.oracle.com/Database4CN/entry/%E5%A6%82%E4%BD%95%E9%87%8D%E5%BB%BArac%E7%9A%84%E6%8E%A7%E5%88%B6%E6%96%87%E4%BB%B6
 
 
问题现象:
 
现场有学校提报 登录PL/SQL连接数据库是报错“ORA-12541: TNS:无监听程序 ”;排查日志,发现
 
Tue Nov 25 14:46:58 2014
Thread 2 advanced to log sequence 18098 (LGWR switch)
  Current log# 4 seq# 18098 mem# 0: +DATADG/urpdb/onlinelog/group_4.266.821439273
Tue Nov 25 14:46:58 2014
Archived Log entry 50394 added for thread 2 sequence 18097 ID 0xb0471722 dest 1:
Tue Nov 25 14:54:49 2014
Read from controlfile member '+DATADG/urpdb/controlfile/current.260.821439141' has found a corrupted block (blk# 35, cf seq# 0)
Hex dump of (file 0, block 35) in trace file /u01/app/oracle/diag/rdbms/urpdb/urpdb2/trace/urpdb2_lmon_10377.trc
Corrupt block relative dba: 0x00000023 (file 0, block 35)
Completely zero block found during control file block read
Hex dump of (file 0, block 35) in trace file /u01/app/oracle/diag/rdbms/urpdb/urpdb2/trace/urpdb2_lmon_10377.trc
Corrupt block relative dba: 0x00000023 (file 0, block 35)
Completely zero block found during control file block read
Errors in file /u01/app/oracle/diag/rdbms/urpdb/urpdb2/trace/urpdb2_lmon_10377.trc:
ORA-00202: control file: '+DATADG/urpdb/controlfile/current.260.821439141'
Errors in file /u01/app/oracle/diag/rdbms/urpdb/urpdb2/trace/urpdb2_lmon_10377.trc  (incident=15289):
ORA-00227: corrupt block detected in control file: (block 35, # blocks 1)
ORA-00202: control file: '+DATADG/urpdb/controlfile/current.260.821439141'
Incident details in: /u01/app/oracle/diag/rdbms/urpdb/urpdb2/incident/incdir_15289/urpdb2_lmon_10377_i15289.trc
Tue Nov 25 14:54:51 2014
Dumping diagnostic data in directory=[cdmp_20141125145451], requested by (instance=2, osid=10377 (LMON)), summary=[incident=15289].
Errors in file /u01/app/oracle/diag/rdbms/urpdb/urpdb2/trace/urpdb2_lmon_10377.trc:
ORA-00227: corrupt block detected in control file: (block 35, # blocks 1)
ORA-00202: control file: '+DATADG/urpdb/controlfile/current.260.821439141'
LMON (ospid: 10377): terminating the instance due to error 227
System state dump requested by (instance=2, osid=10377 (LMON)), summary=[abnormal instance termination].
System State dumped to trace file /u01/app/oracle/diag/rdbms/urpdb/urpdb2/trace/urpdb2_diag_10357.trc
Instance terminated by LMON, pid = 10377
 
从日志可以看出,控制文件损坏了,导致数据库实例终止。
 
 
 
解决办法:
 
因为日志文件、数据文件都是好的,只是唯一的一份控制文件损坏了,只能通过重建控制文件方法解决;
 
在RAC上重建控制文件与单实例有一些小区别:
 在重建控制文件前必须设置cluster_database=false,而且只启动一个实例来执行操作,否则会报错
ORA-01503: CREATE CONTROLFILE failed
ORA-12720: operation requires database is in EXCLUSIVE mode

重建完控制文件后,需要再将cluster_database设为true.

 
 
处理步骤:
 
1.首先生成重建控制文件的脚本:
SQL> alter database backup controlfile to trace;
 
2.数据库的Alert log中会详细输出这个文件的路径和名字:

Tue Nov 25 22:32:04 2014
alter database backup controlfile to trace
Backup controlfile written to trace file /u01/app/oracle/diag/rdbms/urpdb/urpdb1/trace/urpdb1_ora_6233.trc
Completed: alter database backup controlfile to trace

 
 
3.启动一个实例

SQL> startup nomount;

 

4.修改cluster_database属性
SQL> alter system set cluster_database=false scope=spfile;

SQL> shutdown immediate

SQL> startup nomount;

 
 
5.从urpdb1_ora_6233.trc 中获取创建控制文件脚本(noresetlogs的)执行
 
SQL> CREATE CONTROLFILE REUSE DATABASE "URPDB" NORESETLOGS  ARCHIVELOG
    MAXLOGFILES 192
    MAXLOGMEMBERS 3
    MAXDATAFILES 1024
    MAXINSTANCES 32
    MAXLOGHISTORY 18688
LOGFILE
  GROUP 1 '+DATADG/urpdb/onlinelog/group_1.261.821439143'  SIZE 50M BLOCKSIZE 512,
  GROUP 2 '+DATADG/urpdb/onlinelog/group_2.262.821439143'  SIZE 50M BLOCKSIZE 512,
  GROUP 3 '+DATADG/urpdb/onlinelog/group_3.265.821439273'  SIZE 50M BLOCKSIZE 512,
  GROUP 4 '+DATADG/urpdb/onlinelog/group_4.266.821439273'  SIZE 50M BLOCKSIZE 512
DATAFILE
  '+DATADG/urpdb/datafile/system.256.821439061',
  '+DATADG/urpdb/datafile/sysaux.257.821439061',
  '+DATADG/urpdb/datafile/undotbs1.258.821439061',
  '+DATADG/urpdb/datafile/users.259.821439061',
  '+DATADG/urpdb/datafile/undotbs2.264.821439205',
  '+DATADG/urpdb/datafile/tsp_imp_d.dbf',
  '+DATADG/urpdb/datafile/tsp_dpstar.dbf',
  '+DATADG/urpdb/datafile/ts_portal_d.dbf',
  '+DATADG/urpdb/datafile/ts_w5_d.dbf',
  '+DATADG/urpdb/datafile/ts_wap_d.dbf',
  '+DATADG/urpdb/datafile/ts_oa_d.dbf',
  '+DATADG/urpdb/datafile/tsp_sastar.dbf',
  '+DATADG/urpdb/datafile/tsp_portal.dbf'
CHARACTER SET AL32UTF8
;
 
 
6.确认redo log,thread#是正确的
SQL> select * from v$log; 
 
 
7.恢复数据库、启动数据库、恢复临时文件(这些步骤,在urpdb1_ora_6233.trc 写的很清楚)
SQL> recover database;

Media recovery complete.

SQL> alter system  archive log all;

SQL> alter database open;

SQL> ALTER TABLESPACE TEMP ADD TEMPFILE '+DATADG/urpdb/tempfile/temp.263.821439145' REUSE;


SQL> ALTER TABLESPACE TSP_IMP_TEMP ADD TEMPFILE '+DATADG/urpdb/tempfile/tsp_imp_temp.dbf' REUSE;
SQL> ALTER TABLESPACE TSP_DPSTAR_TEMP ADD TEMPFILE '+DATADG/urpdb/tempfile/tsp_dpstar_temp.dbf' REUSE;
SQL> ALTER TABLESPACE TS_PORTAL_TEMP ADD TEMPFILE '+DATADG/urpdb/datafile/ts_portal_temp.dbf' REUSE;
SQL> ALTER TABLESPACE TS_W5_TEMP ADD TEMPFILE '+DATADG/urpdb/datafile/ts_w5_temp.dbf' REUSE;
SQL> ALTER TABLESPACE TS_WAP_TEMP ADD TEMPFILE '+DATADG/urpdb/datafile/ts_wap_temp.dbf' REUSE;
 
 
8.还原cluster_database属性
 
SQL> alter system set cluster_database=true scope=spfile;

SQL> shutdown immediate

 
 
9.重启集群服务
./crsctl start cluser   问题解决。
 
 
10.登录另外一台服务器查看数据库状态,如有问题进行相应处理。
 
 
总结:
 
  1.开启数据库控制文件自动备份很重要:
         本数据库由于没有打开控制文件自动备份功能,只能采用重建方法。如果开启了,采用该控制文件,进行recover database using backup controlfile会更简单一些(有待测试验证)

RAC环境下控制文件损坏重建过程的更多相关文章

  1. RAC 环境下参数文件(spfile)管理

    RAC环境下,初始化参数文件与但实例下参数文件有些异同,主要表现在初始化参数可以为多个实例公用,也可以单独设置各个实例的初始化参数.对于那些非共用的初始化参数则必须要单独设置,而共用的则可以单独设置, ...

  2. Oracle-11g-R2 RAC 环境下 GPnP Profile 文件

    GPnP Profile 文件的作用: GPnP Profile 文件是一个保存于 $GRID_HOME/gpnp/<hostname>/profiles/peer 目录下的小型 XML ...

  3. Oracle 控制文件损坏解决方案

    Oracle 控制文件损坏解决方案 故障一:丢失(损坏)一个控制文件 前台报错:ORA-00205:error in identifying control file,check alert log ...

  4. Oracle 11g RAC环境下Private IP修改方法及异常处理

    Oracle 11g RAC环境下Private IP修改方法及异常处理 Oracle 11g RAC环境下Private IP修改方法及异常处理 一. 修改方法 1. 确认所有节点CRS服务以启动 ...

  5. 【转】Oracle RAC 环境下的连接管理

    文章转自:http://www.oracle.com/technetwork/cn/articles/database-performance/oracle-rac-connection-mgmt-1 ...

  6. Oracle RAC 环境下的连接管理(转) --- 防止原文连接失效

    崔华老师的文章!!! 这篇文章详细介绍了Oracle RAC环境下的连接管理,分别介绍了什么是 Connect Time Load Balancing.Runtime Connection Load ...

  7. Oracle RAC 环境下的 v$log v$logfile

    通常情况下,在Oracle RAC 环境中,v$视图可查询到你所连接实例的相关信息,而gv$视图则包含所有实例的信息.然而在RAC环境中,当我们查询v$log视图时说按照常理的话,v$log视图应当看 ...

  8. 【RAC】rac环境下的数据库备份与还原

    [RAC]rac环境下的数据库备份与还原 一.1  BLOG文档结构图 一.2  前言部分 一.2.1  导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~ ...

  9. 利用XAG在RAC环境下实现GoldenGate自动Failover

    概述 在RAC环境下配置OGG,要想实现RAC节点故障时,OGG能自动的failover到正常节点,要保证两点: 1. OGG的checkpoint,trail,BR文件放置在共享的集群文件系统上,R ...

随机推荐

  1. Linux系统下授权MySQL账户访问指定数据库和数据库操作

    Linux系统下授权MySQL账户访问指定数据库 需求: 1.在MySQL中创建数据库mydata 2.新建MySQL账户admin密码123456 3.赋予账户admin对数据库mydata具有完全 ...

  2. phpstorm 设置

    phpstorm 设置多项目并存 phpstorm 或 webstorm  设置多个项目可以并存: File -> settings -> Directories -> Add Co ...

  3. CentOS开启FTP及配置用户

    vsftpd作为FTP服务器,在Linux系统中是非常常用的.下面我们介绍如何在centos系统上安装vsftp. 什么是vsftpd vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序 ...

  4. uboot生成随机的MAC地址

    转载:http://blog.chinaunix.net/uid-25885064-id-3303132.html 在使用U-boot时,有个问题就是MAC地址的设置,如果MAC地址相同的两块开发板在 ...

  5. Gunicorn、Supervisor

    简介 Gunicorn来源于Ruby的unicorn项目,是一个Python WSGI HTTP Server,通过pre-fork worker模型来管理和维护worker. 简而言之就是通过多进程 ...

  6. 【JavaSE】Java问题总结

    使用BufferedInputStream时OutOfMemoryError异常 eclipse Luna安装subversion(SVN) 使用BufferedInputStream时OutOfMe ...

  7. TP框架---thinkphp基础知识

    php框架    发瑞 一.真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困 ...

  8. c#数组的count()和length的区别

    C# 数组中 Length 表示数组项的个数,是个属性. 而 Count() 也是表示项的个数,是个方法,它的值和 Length 一样.但实际上严格地说 Count() 不是数组的内容,而是 IEnu ...

  9. Magnetic Fingerprinting Approach to Indoor Localization

    Magnetic Fingerprinting Approach to Indoor Localization

  10. string 转 LPCTSTR

    (1)在ANSI字符集下 LPCTSTR想当于LPCSTR,当中L指long.P指Point,C指Const.在程序中能够直接用char*类型的数据对LPCSTR进行赋值,用下述语句: LPCSTR ...