天天看點

RAC資料庫恢複到單執行個體資料庫

  a.準備單執行個體伺服器,pfile檔案,啟動到nomount

  b.備份rac資料庫

  c.将備份檔案拷貝到單執行個體伺服器

  d.在單執行個體伺服器上還原、恢複

  e.resetlogs打開資料庫

  f.rename redo檔案名

  g.disable thread 2并删除其redo組

  h.增加temp臨時表空間資料檔案

  i.删除不必要的undo表空間

  另外,備份、拷貝的環節就請參考其他文檔,就不介紹了,下面從第4步在單執行個體伺服器上還原、恢複與打開開始介紹;

rman> startup nomount

rman> restore controlfile to '/app/oracle/oradata/ctl01.dbf' from '/app/oracle/backup/ctl_23_1_855331400';

rman> run{startup mount;

set until sequence 870 thread 1;

set newname for datafile 1  to '/app/oracle/oradata/system.257.779207027';

set newname for datafile 3  to '/app/oracle/oradata/sysaux.262.779207043';

set newname for datafile 4  to '/app/oracle/oradata/users.260.779207053';

set newname for datafile 2  to '/app/oracle/oradata/undotbs1.264.779207043';

set newname for datafile 15  to '/app/oracle/oradata/pptest_tbs.282.793979093';

set newname for datafile 5  to'/app/oracle/oradata/undotbs2.268.779207507';

set newname for datafile 8  to'/app/oracle/oradata/tbs_p3w.271.780396123';

set newname for datafile 9  to'/app/oracle/oradata/tbs_p4w.274.780396125';

set newname for datafile 6  to'/app/oracle/oradata/tbs_p1w.270.780396121';

set newname for datafile 7  to'/app/oracle/oradata/tbs_p2w.273.780396123';

set newname for datafile 14 to'/app/oracle/oradata/pptest_tbs.279.781454807';

restore database;

switch datafile all;

recover database;

}

sys@racdb3> alter database rename file '+dg/racdb/onlinelog/group_1.263.779207025' to '/app/oracle/oradata/redo1.log';

  rename 完所有redo檔案後,即可resetlogs打開資料庫;但是,實際操作中遇到bug7207932:rman restore from rac asm to single instance non asm fails with ora-00600 [kgeade_is_0] (文檔 id 1146703.1)

  bug 7207932  ora-600 [kgeade_is_0] when renaming a file from asm to fs

  要想繞開的方法則是重建控制檔案後,再打開資料庫

  sys@racdb3> alter database backup controlfile to trace as '/tmp/ctl.trc' reuse resetlogs;

 打開trace檔案,修改裡面的logfile部分資訊;然後重新開機資料庫到nomount狀态;

sys@racdb3> shutdown immediate

sql> startup nomount

create controlfile reuse database "racdb" resetlogs  archivelog

maxlogfiles 50

maxlogmembers 2

maxdatafiles 2000

maxinstances 8

maxloghistory 292

logfile

group 1 '/app/oracle/oradata/group_1.263.779207025'  size 10m,

group 2 '/app/oracle/oradata/group_2.259.779207027'  size 10m,

group 3 '/app/oracle/oradata/group_3.258.779207027'  size 10m

datafile

'/app/oracle/oradata/system.257.779207027',

'/app/oracle/oradata/undotbs1.264.779207043',

'/app/oracle/oradata/sysaux.262.779207043',

'/app/oracle/oradata/users.260.779207053',

'/app/oracle/oradata/undotbs2.268.779207507',

'/app/oracle/oradata/tbs_p1w.270.780396121',

'/app/oracle/oradata/tbs_p2w.273.780396123',

'/app/oracle/oradata/tbs_p3w.271.780396123',

'/app/oracle/oradata/tbs_p4w.274.780396125',

'/app/oracle/oradata/pptest_tbs.279.781454807',

'/app/oracle/oradata/pptest_tbs.282.793979093'

character set zhs16gbk

;

  建立完成後,用backup controlfile進行恢複;

sys@racdb3> recover database using backup controlfile until cancel;

sys@racdb3>alter database add logfile thread 2

group 4 '/app/oracle/oradata/group_4.265.779207453' size 10m reuse,

group 5 '/app/oracle/oradata/group_5.266.779207459' size 10m reuse,

group 6 '/app/oracle/oradata/group_6.267.779207467' size 10m reuse;

sys@racdb3> alter database open resetlogs;

成功resetlogs打開後,還需要做一些去thread 2的操作;

sys@racdb3> alter database disable thread 2;

sys@racdb3> alter database drop logfile group 4;

alter database drop logfile group 4

*

error at line 1:

ora-00350: log 4 of instance unnamed_instance_2 (thread 2) needs to be archived

ora-00312: online log 4 thread 2: '/app/oracle/oradata/racdb/onlinelog/o1_mf_4_9ym2kvgf_.log'

sys@racdb3> alter database clear unarchived logfile group 4;

sys@racdb3> alter tablespace temp add tempfile '/app/oracle/oradata/temp01.dbf' size 10m reuse;

tablespace altered.

sys@racdb3> drop tablespace undotbs2 including contents and datafiles;

最新内容請見作者的github頁:http://qaseven.github.io/