RAC控制文件恢复(三种不同情况)

RAC控制文件恢复(三种不同情况)

测试环境:
系统:LINUX-64
数据库:10.2.0.1
二节点的RAC(RACDB1,RACDB2),存储用的ASM

有备份情况下,丢失控制文件,我们改如何恢复?

一:使用备份的控制文件恢复,最后需要使用resetlogs打开。
(1) 备份控制文件
RMAN> backup current controlfile;

(2) 进行日志切换和数据修改
RACDB1>alter system switch logfile;

System altered.

RACDB1>create table test2 as select * from dba_users;

Table created.

RACDB1>alter system switch logfile;

System altered.

RACDB1>SELECT thread#,group#,sequence#,status FROM V$log;

   THREAD#     GROUP#  SEQUENCE# STATUS
---------- ---------- ---------- ----------------
         1          1          5 ACTIVE
         1          2          6 CURRENT
         2          3          3 CURRENT
         2          4          2 INACTIVE
         1          5          4 INACTIVE

(3) 关闭数据库,删除控制文件
RACDB1>shutdown abort;
RACDB2>shutdown abort;

ASMCMD> pwd
+rac_disk/racdb/controlfile
ASMCMD> ls
Current.256.794232615
ASMCMD> rm *

(4) 启动数据库,无控制文件,所以只能到nomount
RACDB1>startup
ORACLE instance started.

Total System Global Area  184549376 bytes
Fixed Size                  2019448 bytes
Variable Size             142610312 bytes
Database Buffers           37748736 bytes
Redo Buffers                2170880 bytes
ORA-00205: error in identifying control file, check alert log for more info    

(5) 恢复控制文件
RMAN> restore controlfile from '+RAC_DISK/racdb/backupset/2012_09_28/ncnnf0_tag20120928t003933_0.272.795141579';

RACDB1>alter database mount;

Database altered.

RACDB1>SELECT thread#,group#,sequence#,status FROM V$log;

   THREAD#     GROUP#  SEQUENCE# STATUS
---------- ---------- ---------- ----------------
         1          1          2 CURRENT
         1          2          0 UNUSED
         1          5          1 INACTIVE
         2          4          0 UNUSED
         2          3          1 CURRENT

(6) 恢复数据库
先使用auto,恢复到current联机日志,oracle会提示找不到归档,这时候需要自己手动输入联机日志。如下:
RACDB1>recover database using backup controlfile;
ORA-00279: change 1185078 generated at 09/28/2012 00:40:37 needed for thread 1
ORA-00289: suggestion : +RAC_DISK/racdb/flashback/1_6_795092359.dbf
ORA-00280: change 1185078 for thread 1 is in sequence #6 


Specify log: {=suggested | filename | AUTO | CANCEL}
+rac_disk/racdb/onlinelog/group_2.258.794232619  --输入RACDB1的current联机日志
ORA-00279: change 1185078 generated at 09/28/2012 00:40:10 needed for thread 2
ORA-00289: suggestion : +RAC_DISK/racdb/flashback/2_2_795092359.dbf
ORA-00280: change 1185078 for thread 2 is in sequence #2     


Specify log: {=suggested | filename | AUTO | CANCEL}
+rac_disk/racdb/onlinelog/group_4.266.794234285  --这个不是RACDB2的current联机日志,其实也可以输入归档。
ORA-00279: change 1185082 generated at 09/28/2012 00:40:38 needed for thread 2
ORA-00289: suggestion : +RAC_DISK/racdb/flashback/2_3_795092359.dbf
ORA-00280: change 1185082 for thread 2 is in sequence #3
ORA-00278: log file '+rac_disk/racdb/onlinelog/group_4.266.794234285' no longer
needed for this recovery


Specify log: {=suggested | filename | AUTO | CANCEL}
+rac_disk/racdb/onlinelog/group_3.265.794234279   --这个是RACDB2的current联机日志
Log applied.
Media recovery complete.
总结:RAC环境下,要使用current联机日志时,必须要用的每个节点的联机日志。

(7) 打开数据库,以resetlogs方式。
RACDB1>alter database open resetlogs;

Database altered.

RACDB2>startup
ORACLE instance started.

Total System Global Area  184549376 bytes
Fixed Size                  2019448 bytes
Variable Size             138416008 bytes
Database Buffers           41943040 bytes
Redo Buffers                2170880 bytes
Database mounted.
Database opened.

RACDB1>select count(*) from test2;

  COUNT(*)
----------
        11

 

二:用noresetlogs方法重建控制文件
(1) 备份控制文

RMAN> backup current controlfile;

(2) 切换日志和操作数据
RACDB1>alter system switch logfile;

System altered.

RACDB1>create table test3 as select * from dba_data_files;

Table created.

RACDB1>alter system switch logfile;

System altered.

(3) 关闭数据库,删除控制文件
RACDB1>shutdown abort
RACDB2>shutdown abort

ASMCMD> pwd
+rac_disk/racdb/controlfile
ASMCMD> ls
Current.256.795142367
ASMCMD> rm *

RACDB1>startup
ORACLE instance started.

Total System Global Area  184549376 bytes
Fixed Size                  2019448 bytes
Variable Size             146804616 bytes
Database Buffers           33554432 bytes
Redo Buffers                2170880 bytes
ORA-00205: error in identifying control file, check alert log for more info

(4) 恢复控制文件
RMAN> restore controlfile from '+RAC_DISK/racdb/backupset/2012_09_28/ncnnf0_tag20120928t015109_0.285.795145873';

RACDB1>alter database mount;

Database altered.

RACDB1>alter database backup controlfile to trace;    --把控制文件备份到trace文件

Database altered.

(5) 重建控制文件。
RACDB1>shutdown immediate
删除控制文件。
RACDB1>startup nomount;

(6) 用noresetlogs方式重建控制文件
由于是RAC环境,所以先需要修改如下参数:

不修改参数报错如下:
ORA-01503: CREATE CONTROLFILE failed
ORA-12720: operation requires database is in EXCLUSIVE mode


RACDB1>alter system set cluster_database=FALSE scope=spfile sid='*';

System altered.

RACDB1>shutdown immediate
ORA-01507: database not mounted


ORACLE instance shut down.
RACDB1>startup nomount;
ORACLE instance started.

Total System Global Area  184549376 bytes
Fixed Size                  2019448 bytes
Variable Size             146804616 bytes
Database Buffers           33554432 bytes
Redo Buffers                2170880 bytes

CREATE CONTROLFILE REUSE DATABASE "RACDB" NORESETLOGS  ARCHIVELOG
    MAXLOGFILES 192
    MAXLOGMEMBERS 3
    MAXDATAFILES 1024
    MAXINSTANCES 32
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 (
    '+RAC_DISK/racdb/onlinelog/group_1.257.795091225',
    '+RAC_DISK/racdb/onlinelog/group_1.295.795091229'
  ) SIZE 50M,
  GROUP 2 '+RAC_DISK/racdb/onlinelog/group_2.258.794232619'  SIZE 50M,
  GROUP 3 '+RAC_DISK/racdb/onlinelog/group_3.265.794234279'  SIZE 50M,
  GROUP 4 '+RAC_DISK/racdb/onlinelog/group_4.266.794234285'  SIZE 50M,
  GROUP 5 (
    '+RAC_DISK/racdb/onlinelog/group_5.269.795092365',
    '+RAC_DISK/racdb/onlinelog/group_5.296.795092369'
  ) SIZE 100M
-- STANDBY LOGFILE
DATAFILE
  '+RAC_DISK/racdb/datafile/system.259.794232627',
  '+RAC_DISK/racdb/datafile/undotbs1.260.794232647',
  '+RAC_DISK/racdb/datafile/sysaux.261.794232657',
  '+RAC_DISK/racdb/datafile/undotbs2.263.794232675',
  '+RAC_DISK/racdb/datafile/users.264.794232683'
CHARACTER SET ZHS16GBK
;
 27 
CREATE CONTROLFILE REUSE DATABASE "RACDB" NORESETLOGS  ARCHIVELOG
*
ERROR at line 1:
ORA-01503: CREATE CONTROLFILE failed
ORA-01276: Cannot add file +RAC_DISK/racdb/controlfile/current.256.795146237.
File has an Oracle Managed Files file name.   -–由于使用OMF方式,所以需先在参数文件中注释掉controlfile。

RACDB1>show parameter control_files

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      +RAC_DISK/racdb/controlfile/cu
                                                 rrent.256.795146237
RACDB1>alter system set control_files=false scope=spfile sid='*';

System altered.

RACDB1>alter system reset control_files scope=spfile sid='*';

System altered.

RACDB1>shutdown immediate;
ORA-01507: database not mounted


ORACLE instance shut down.
RACDB1>startup nomount;
ORACLE instance started.

Total System Global Area  184549376 bytes
Fixed Size                  2019448 bytes
Variable Size             146804616 bytes
Database Buffers           33554432 bytes
Redo Buffers                2170880 bytes
RACDB1>show parameter control_files

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      /u01/app/oracle/product/10.2.0
                                                 /db_1/dbs/cntrlRACDB1.dbf
CREATE CONTROLFILE REUSE DATABASE "RACDB" NORESETLOGS  ARCHIVELOG
    MAXLOGFILES 192
    MAXLOGMEMBERS 3
    MAXDATAFILES 1024
    MAXINSTANCES 32
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 (
    '+RAC_DISK/racdb/onlinelog/group_1.257.795091225',
    '+RAC_DISK/racdb/onlinelog/group_1.295.795091229'
  ) SIZE 50M,
  GROUP 2 '+RAC_DISK/racdb/onlinelog/group_2.258.794232619'  SIZE 50M,
  GROUP 3 '+RAC_DISK/racdb/onlinelog/group_3.265.794234279'  SIZE 50M,
  GROUP 4 '+RAC_DISK/racdb/onlinelog/group_4.266.794234285'  SIZE 50M,
  GROUP 5 (
    '+RAC_DISK/racdb/onlinelog/group_5.269.795092365',
    '+RAC_DISK/racdb/onlinelog/group_5.296.795092369'
  ) SIZE 100M
-- STANDBY LOGFILE
DATAFILE
  '+RAC_DISK/racdb/datafile/system.259.794232627',
  '+RAC_DISK/racdb/datafile/undotbs1.260.794232647',
  '+RAC_DISK/racdb/datafile/sysaux.261.794232657',
  '+RAC_DISK/racdb/datafile/undotbs2.263.794232675',
  '+RAC_DISK/racdb/datafile/users.264.794232683'
CHARACTER SET ZHS16GBK
 27  ;


Control file created.

RACDB1>RACDB1>show parameter control_files

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      +RAC_DISK/racdb/controlfile/cu
                                                 rrent.256.795147383, +RAC_DISK
                                                 /racdb/controlfile/current.279
                                                 .795147383

RACDB1>alter system set cluster_database=true scope=spfile sid='*';   --勿忘

System altered.


(7) 恢复数据库
RACDB1>recover database;
ORA-00279: change 1185480 generated at 09/28/2012 01:45:00 needed for thread 1
ORA-00289: suggestion : +RAC_DISK/racdb/flashback/1_1_795145477.dbf
ORA-00280: change 1185480 for thread 1 is in sequence #1


Specify log: {=suggested | filename | AUTO | CANCEL}
auto
Log applied.
Media recovery complete.

(8) 打开数据库
RACDB1>alter database open;

Database altered.


三:用resetlogs方法重建控制文件。此方法恢复过程和使用备份的控制文件类似。这里就不在叙述。最后也需要使用resetlogs方式打开。

 

值得注意的是,create controlfile resetlogs/noresetlogs 这两种重建方法的却别在于,noresetlogs重建控制文件时,控制文件中datafile checkpoint来自online logs中的current log头。而用resetlogs重建控制文件时,控制文件中datafile checkpoint来自各数据文件头。

 


参考至大话oracle

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26655292/viewspace-745359/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26655292/viewspace-745359/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值