windows下異機恢復---改變db_name

xfhuangfu發表於2015-07-04
本次試驗,參考metalink上的 doc:419137.1
將源db透過rman異機恢復到目的庫,並重新修改db_name為sp
源主機 192.168.1.244 ,db_name為win10g ,rman中的控制檔案自動備份開啟

往表t中插入資料,觀察日誌情況,並切換日誌組

SSQL> select group#,sequence#,status,first_change#,archived from v$log;

    GROUP#  SEQUENCE# STATUS           FIRST_CHANGE# ARC
---------- ---------- ---------------- ------------- ---
         1        120 CURRENT                6079303 NO
         2        119 INACTIVE               6079232 YES
         3        118 INACTIVE               6079199 YES

SQL> insert into t values(6);

已建立 1 行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系統已更改。

SQL> select group#,sequence#,status,first_change#,archived from v$log;

    GROUP#  SEQUENCE# STATUS           FIRST_CHANGE# ARC
---------- ---------- ---------------- ------------- ---
         1        120 ACTIVE                 6079303 YES
         2        119 INACTIVE               6079232 YES
         3        121 CURRENT                6083207 NO
         

第二次

SQL> insert into t values(7);

已建立 1 行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系統已更改。

SQL> select group#,sequence#,status,first_change#,archived from v$log;

    GROUP#  SEQUENCE# STATUS           FIRST_CHANGE# ARC
---------- ---------- ---------------- ------------- ---
         1        120 ACTIVE                 6079303 YES
         2        122 CURRENT                6083236 NO
         3        121 ACTIVE                 6083207 YES


第三次

SQL> insert into t values(8);

已建立 1 行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系統已更改。

SQL> select group#,sequence#,status,first_change#,archived from v$log;

    GROUP#  SEQUENCE# STATUS           FIRST_CHANGE# ARC
---------- ---------- ---------------- ------------- ---
         1        123 CURRENT                6083256 NO
         2        122 ACTIVE                 6083236 YES
         3        121 ACTIVE                 6083207 YES


                 

第四次

SQL> insert into t values(9);

已建立 1 行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系統已更改。

SQL> select group#,sequence#,status,first_change#,archived from v$log;

    GROUP#  SEQUENCE# STATUS           FIRST_CHANGE# ARC
---------- ---------- ---------------- ------------- ---
         1        123 ACTIVE                 6083256 YES
         2        122 ACTIVE                 6083236 YES
         3        124 CURRENT                6083276 NO

         
         

第五次


SQL> insert into t values(10);

已建立 1 行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系統已更改。

SQL> select group#,sequence#,status,first_change#,archived from v$log;

    GROUP#  SEQUENCE# STATUS           FIRST_CHANGE# ARC
---------- ---------- ---------------- ------------- ---
         1        123 ACTIVE                 6083256 YES
         2        125 CURRENT                6083295 NO
         3        124 ACTIVE                 6083276 YES



第六次

SQL> insert into t values(11);

已建立 1 行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系統已更改。

SQL> select group#,sequence#,status,first_change#,archived from v$log;

    GROUP#  SEQUENCE# STATUS           FIRST_CHANGE# ARC
---------- ---------- ---------------- ------------- ---
         1        126 CURRENT                6083310 NO
         2        125 ACTIVE                 6083295 YES
         3        124 ACTIVE                 6083276 YES

       


第七次


SQL> insert into t values(12);

已建立 1 行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系統已更改。

SQL> select group#,sequence#,status,first_change#,archived from v$log;

    GROUP#  SEQUENCE# STATUS           FIRST_CHANGE# ARC
---------- ---------- ---------------- ------------- ---
         1        126 ACTIVE                 6083310 YES
         2        125 ACTIVE                 6083295 YES
         3        127 CURRENT                6083332 NO
         
         
SQL> select * from t;

        ID
----------
         6
         7
         8
         9
        10
        11
        12

已選擇7行。


這個時候在閃回恢復區中生成了 多個歸檔日誌檔案

然後備份win10g

run{
backup as compressed backupset database;
backup archivelog all not backed up delete input;
delete noprompt obsolete recovery window of 5 days;
}
         

啟動 backup 於 20-3月 -13
使用目標資料庫控制檔案替代恢復目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=158 devtype=DISK
通道 ORA_DISK_1: 啟動壓縮的全部資料檔案備份集
通道 ORA_DISK_1: 正在指定備份集中的資料檔案
輸入資料檔案 fno=00001 name=C:\ORADATA\WIN10G\SYSTEM01.DBF
輸入資料檔案 fno=00003 name=C:\ORADATA\WIN10G\SYSAUX01.DBF
輸入資料檔案 fno=00002 name=C:\ORADATA\WIN10G\UNDOTBS01.DBF
輸入資料檔案 fno=00005 name=C:\ORADATA\WIN10G\EXAMPLE01.DBF
輸入資料檔案 fno=00006 name=C:\ORADATA\TT.DBF
輸入資料檔案 fno=00004 name=C:\ORADATA\WIN10G\USERS01.DBF
通道 ORA_DISK_1: 正在啟動段 1 於 20-3月 -13
通道 ORA_DISK_1: 已完成段 1 於 20-3月 -13
段控制程式碼=C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\BACKUPSET\2013_03_20\
O1_MF_NNNDF_TAG20130320T173244_8NM0KWSW_.BKP 標記=TAG20130320T173244 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:01:05
完成 backup 於 20-3月 -13

啟動 backup 於 20-3月 -13
當前日誌已存檔
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在啟動存檔日誌備份集
通道 ORA_DISK_1: 正在指定備份集中的存檔日誌
輸入存檔日誌執行緒 =1 序列 =120 記錄 ID=118 時間戳=810581265
輸入存檔日誌執行緒 =1 序列 =121 記錄 ID=119 時間戳=810581329
輸入存檔日誌執行緒 =1 序列 =122 記錄 ID=120 時間戳=810581366
輸入存檔日誌執行緒 =1 序列 =123 記錄 ID=121 時間戳=810581414
輸入存檔日誌執行緒 =1 序列 =124 記錄 ID=122 時間戳=810581447
輸入存檔日誌執行緒 =1 序列 =125 記錄 ID=123 時間戳=810581480
輸入存檔日誌執行緒 =1 序列 =126 記錄 ID=124 時間戳=810581510
輸入存檔日誌執行緒 =1 序列 =127 記錄 ID=125 時間戳=810581633
通道 ORA_DISK_1: 正在啟動段 1 於 20-3月 -13
通道 ORA_DISK_1: 已完成段 1 於 20-3月 -13
段控制程式碼=C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\BACKUPSET\2013_03_20\
O1_MF_ANNNN_TAG20130320T173353_8NM0N1L2_.BKP 標記=TAG20130320T173353 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:01
通道 ORA_DISK_1: 正在刪除存檔日誌
存檔日誌檔名 =C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\ARCHIVELOG\2
013_03_20\O1_MF_1_120_8NM08K2X_.ARC 記錄 ID=118 時間戳 =810581265
存檔日誌檔名 =C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\ARCHIVELOG\2
013_03_20\O1_MF_1_121_8NM0BKL2_.ARC 記錄 ID=119 時間戳 =810581329
存檔日誌檔名 =C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\ARCHIVELOG\2
013_03_20\O1_MF_1_122_8NM0CPPG_.ARC 記錄 ID=120 時間戳 =810581366
存檔日誌檔名 =C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\ARCHIVELOG\2
013_03_20\O1_MF_1_123_8NM0F6PG_.ARC 記錄 ID=121 時間戳 =810581414
存檔日誌檔名 =C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\ARCHIVELOG\2
013_03_20\O1_MF_1_124_8NM0G7OZ_.ARC 記錄 ID=122 時間戳 =810581447
存檔日誌檔名 =C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\ARCHIVELOG\2
013_03_20\O1_MF_1_125_8NM0H8OZ_.ARC 記錄 ID=123 時間戳 =810581480
存檔日誌檔名 =C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\ARCHIVELOG\2
013_03_20\O1_MF_1_126_8NM0J6OZ_.ARC 記錄 ID=124 時間戳 =810581510
存檔日誌檔名 =C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\ARCHIVELOG\2
013_03_20\O1_MF_1_127_8NM0N11G_.ARC 記錄 ID=125 時間戳 =810581633
完成 backup 於 20-3月 -13

啟動 Control File and SPFILE Autobackup 於 20-3月 -13
段 handle=C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\AUTOBACKUP\2013_03
_20\O1_MF_S_810581634_8NM0N30H_.BKP comment=NONE
完成 Control File and SPFILE Autobackup 於 20-3月 -13

使用通道 ORA_DISK_1
未找到已廢棄的備份

RMAN>


RMAN> list backup;


備份集列表
===================

BS 關鍵字  型別 LV 大小       裝置型別 經過時間 完成時間
------- ---- -- ---------- ----------- ------------ ----------
72      Full    168.66M    DISK        00:00:56     20-3月 -13
        BP 關鍵字: 72   狀態: AVAILABLE  已壓縮: YES  標記: TAG20130320T173244
段名:C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\BACKUPSET\2013_03_20\O1_MF_NNNDF_TAG20130320T173244_8NM0KWSW_.BKP
  備份集 72 中的資料檔案列表
  檔案 LV 型別 Ckp SCN    Ckp 時間   名稱
  ---- -- ---- ---------- ---------- ----
  1       Full 6083442    20-3月 -13 C:\ORADATA\WIN10G\SYSTEM01.DBF
  2       Full 6083442    20-3月 -13 C:\ORADATA\WIN10G\UNDOTBS01.DBF
  3       Full 6083442    20-3月 -13 C:\ORADATA\WIN10G\SYSAUX01.DBF
  4       Full 6083442    20-3月 -13 C:\ORADATA\WIN10G\USERS01.DBF
  5       Full 6083442    20-3月 -13 C:\ORADATA\WIN10G\EXAMPLE01.DBF
  6       Full 6083442    20-3月 -13 C:\ORADATA\TT.DBF

BS 關鍵字  大小       裝置型別佔用時間 完成時間
------- ---------- ----------- ------------ ----------
73      3.66M      DISK        00:00:00     20-3月 -13
        BP 關鍵字: 73   狀態: AVAILABLE  已壓縮: NO  標記: TAG20130320T173353
段名:C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\BACKUPSET\2013_03_20\O1_MF_ANNNN_TAG20130320T173353_8NM0N1L2_.BKP

  備份集 73 中的已存檔日誌列表
  Thrd Seq     低 SCN    短時間     下一個 SCN   下一次
  ---- ------- ---------- ---------- ---------- ---------
  1    120     6079303    20-3月 -13 6083207    20-3月 -13
  1    121     6083207    20-3月 -13 6083236    20-3月 -13
  1    122     6083236    20-3月 -13 6083256    20-3月 -13
  1    123     6083256    20-3月 -13 6083276    20-3月 -13
  1    124     6083276    20-3月 -13 6083295    20-3月 -13
  1    125     6083295    20-3月 -13 6083310    20-3月 -13
  1    126     6083310    20-3月 -13 6083332    20-3月 -13
  1    127     6083332    20-3月 -13 6083507    20-3月 -13

BS 關鍵字  型別 LV 大小       裝置型別 經過時間 完成時間
------- ---- -- ---------- ----------- ------------ ----------
74      Full    6.95M      DISK        00:00:01     20-3月 -13
        BP 關鍵字: 74   狀態: AVAILABLE  已壓縮: NO  標記: TAG20130320T173354
段名:C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\AUTOBACKUP\2013_03_20\O1_MF_S_810581634_8NM0N30H_.BKP
  包括的控制檔案: Ckp SCN: 6083513      Ckp 時間: 20-3月 -13
  包含的 SPFILE: 修改時間: 20-3月 -13

RMAN>



目的主機   192.168.1.240  db_name為tt ,rman中的設定都為預設

現在想要把244主機上的備份異地恢復到240主機上,並重名名db_name為sp


1:將源主機(244)上的備份 全部scp到目的主機(240)的 C:\scp目錄下

O1_MF_NNNDF_TAG20130320T173244_8NM0KWSW_.BKP -------資料檔案備份
O1_MF_ANNNN_TAG20130320T173353_8NM0N1L2_.BKP -------歸檔日誌檔案備份
O1_MF_S_810581634_8NM0N30H_.BKP   ---------- 控制檔案自動備份   


在目的庫tt上建立pfile檔案

SQL> startup nomount;
ORACLE 例程已經啟動。

Total System Global Area  293601280 bytes
Fixed Size                  1248624 bytes
Variable Size              96469648 bytes
Database Buffers          192937984 bytes
Redo Buffers                2945024 bytes
SQL> create pfile from spfile;

檔案已建立。


2:關閉目的庫sp,恢復控制檔案

SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。

然後刪除原來so資料庫的所有資料檔案、控制檔案及日誌檔案

修改zt庫上的pfile檔案(所在目錄為C:\oracle\product\10.2.0\db_1\database\inittt.ora)

將裡面的 db_name改為 win10g  ,如果有 undo_tablespace 則改為源主機對應的,而service_names、
instance_name 可改可不改

如果這裡直接將db_name 改為 sp 的話,那麼在將db啟動到mount狀態時報錯:

ORA-01103: 控制檔案中的資料庫名 ''WIN10G'' 不是 ''SP''



然後恢復控制檔案

RMAN> startup nomount;

Oracle 例項已啟動

系統全域性區域總計     293601280 位元組

Fixed Size                     1248624 位元組
Variable Size                 96469648 位元組
Database Buffers             192937984 位元組
Redo Buffers                   2945024 位元組

RMAN>

RMAN> restore controlfile from 'C:\scp\O1_MF_S_810581634_8NM0N30H_.BKP'; //必須在rman中執行

啟動 restore 於 20-3月 -13
使用目標資料庫控制檔案替代恢復目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK

通道 ORA_DISK_1: 正在復原控制檔案
通道 ORA_DISK_1: 恢復完成, 用時: 00:00:01
輸出檔名=C:\SPDATA\SP\CONTROL01.CTL
輸出檔名=C:\SPDATA\SP\CONTROL02.CTL
輸出檔名=C:\SPDATA\SP\CONTROL03.CTL
完成 restore 於 20-3月 -13

RMAN>


3:檢視控制檔案裡的備份資訊 

RMAN> startup mount;

資料庫已經啟動
資料庫已裝載
釋放的通道: ORA_DISK_1

RMAN> list backup;


備份集列表
===================

BS 關鍵字  型別 LV 大小       裝置型別 經過時間 完成時間
------- ---- -- ---------- ----------- ------------ ----------
72      Full    168.66M    DISK        00:00:56     20-3月 -13
        BP 關鍵字: 72   狀態: AVAILABLE  已壓縮: YES  標記: TAG20130320T173244
段名:C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\BACKUPSET\2013_03_20\O1_MF_NNNDF_TAG20130320T173244_8NM0KWSW_.BKP
  備份集 72 中的資料檔案列表
  檔案 LV 型別 Ckp SCN    Ckp 時間   名稱
  ---- -- ---- ---------- ---------- ----
  1       Full 6083442    20-3月 -13 C:\ORADATA\WIN10G\SYSTEM01.DBF
  2       Full 6083442    20-3月 -13 C:\ORADATA\WIN10G\UNDOTBS01.DBF
  3       Full 6083442    20-3月 -13 C:\ORADATA\WIN10G\SYSAUX01.DBF
  4       Full 6083442    20-3月 -13 C:\ORADATA\WIN10G\USERS01.DBF
  5       Full 6083442    20-3月 -13 C:\ORADATA\WIN10G\EXAMPLE01.DBF
  6       Full 6083442    20-3月 -13 C:\ORADATA\TT.DBF

BS 關鍵字  大小       裝置型別佔用時間 完成時間
------- ---------- ----------- ------------ ----------
73      3.66M      DISK        00:00:00     20-3月 -13
        BP 關鍵字: 73   狀態: AVAILABLE  已壓縮: NO  標記: TAG20130320T173353
段名:C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\BACKUPSET\2013_03_20\O1_MF_ANNNN_TAG20130320T173353_8NM0N1L2_.BKP

  備份集 73 中的已存檔日誌列表
  Thrd Seq     低 SCN    短時間     下一個 SCN   下一次
  ---- ------- ---------- ---------- ---------- ---------
  1    120     6079303    20-3月 -13 6083207    20-3月 -13
  1    121     6083207    20-3月 -13 6083236    20-3月 -13
  1    122     6083236    20-3月 -13 6083256    20-3月 -13
  1    123     6083256    20-3月 -13 6083276    20-3月 -13
  1    124     6083276    20-3月 -13 6083295    20-3月 -13
  1    125     6083295    20-3月 -13 6083310    20-3月 -13
  1    126     6083310    20-3月 -13 6083332    20-3月 -13
  1    127     6083332    20-3月 -13 6083507    20-3月 -13

RMAN>




可見還是源庫(win10g)上的資訊


然後將目的主機(240)上的備份片重新註冊到控制檔案中


RMAN> catalog backuppiece 'C:\scp\O1_MF_ANNNN_TAG20130320T173353_8NM0N1L2_.BKP';//必須在rman中執行


啟動 implicit crosscheck backup 於 20-3月 -13
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK
已交叉檢驗的 2 物件
完成 implicit crosscheck backup 於 20-3月 -13

啟動 implicit crosscheck copy 於 20-3月 -13
使用通道 ORA_DISK_1
已交叉檢驗的 6 物件
完成 implicit crosscheck copy 於 20-3月 -13

搜尋恢復區域中的所有檔案
正在編制檔案目錄...
沒有為檔案編制目錄

已列入目錄的備份段
備份段 handle=C:\SCP\O1_MF_ANNNN_TAG20130320T173353_8NM0N1L2_.BKP recid=74 stamp=810583087

RMAN> catalog backuppiece 'C:\SCP\O1_MF_NNNDF_TAG20130320T173244_8NM0KWSW_.BKP';//必須在rman中執行


已列入目錄的備份段
備份段 handle=C:\SCP\O1_MF_NNNDF_TAG20130320T173244_8NM0KWSW_.BKP recid=75 stamp=810583100

RMAN>



註冊以後重新檢視控制檔案裡的備份集資訊(檢視段名的區別)

RMAN> list backup;


備份集列表
===================

BS 關鍵字  大小       裝置型別佔用時間 完成時間
------- ---------- ----------- ------------ ----------
74      3.66M      DISK        00:00:00     20-3月 -13
        BP 關鍵字: 74   狀態: AVAILABLE  已壓縮: NO  標記: TAG20130320T173353
段名:C:\SCP\O1_MF_ANNNN_TAG20130320T173353_8NM0N1L2_.BKP

  備份集 74 中的已存檔日誌列表
  Thrd Seq     低 SCN    短時間     下一個 SCN   下一次
  ---- ------- ---------- ---------- ---------- ---------
  1    120     6079303    20-3月 -13 6083207    20-3月 -13
  1    121     6083207    20-3月 -13 6083236    20-3月 -13
  1    122     6083236    20-3月 -13 6083256    20-3月 -13
  1    123     6083256    20-3月 -13 6083276    20-3月 -13
  1    124     6083276    20-3月 -13 6083295    20-3月 -13
  1    125     6083295    20-3月 -13 6083310    20-3月 -13
  1    126     6083310    20-3月 -13 6083332    20-3月 -13
  1    127     6083332    20-3月 -13 6083507    20-3月 -13

BS 關鍵字  型別 LV 大小       裝置型別 經過時間 完成時間
------- ---- -- ---------- ----------- ------------ ----------
75      Full    168.66M    DISK        00:00:00     20-3月 -13
        BP 關鍵字: 75   狀態: AVAILABLE  已壓縮: YES  標記: TAG20130320T173244
段名:C:\SCP\O1_MF_NNNDF_TAG20130320T173244_8NM0KWSW_.BKP
  備份集 75 中的資料檔案列表
  檔案 LV 型別 Ckp SCN    Ckp 時間   名稱
  ---- -- ---- ---------- ---------- ----
  1       Full 6083442    20-3月 -13 C:\ORADATA\WIN10G\SYSTEM01.DBF
  2       Full 6083442    20-3月 -13 C:\ORADATA\WIN10G\UNDOTBS01.DBF
  3       Full 6083442    20-3月 -13 C:\ORADATA\WIN10G\SYSAUX01.DBF
  4       Full 6083442    20-3月 -13 C:\ORADATA\WIN10G\USERS01.DBF
  5       Full 6083442    20-3月 -13 C:\ORADATA\WIN10G\EXAMPLE01.DBF
  6       Full 6083442    20-3月 -13 C:\ORADATA\TT.DBF

RMAN>
RMAN> crosscheck backup;
RMAN> delete expired backup;



4:在mount狀態下,更新控制檔案裡關於資料檔案的路徑

在源庫(244)上執行 report schema,列出資料檔案編號對應的資料檔案 

RMAN> report schema;

資料庫方案報表

永久資料檔案列表
===========================
檔案大小 (MB) 表空間           回退段資料檔名稱
---- -------- -------------------- ------- ------------------------
1    500      SYSTEM               ***     C:\ORADATA\WIN10G\SYSTEM01.DBF
2    100      UNDOTBS1             ***     C:\ORADATA\WIN10G\UNDOTBS01.DBF
3    370      SYSAUX               ***     C:\ORADATA\WIN10G\SYSAUX01.DBF
4    52       USERS                ***     C:\ORADATA\WIN10G\USERS01.DBF
5    100      EXAMPLE              ***     C:\ORADATA\WIN10G\EXAMPLE01.DBF
6    100      TT                   ***     C:\ORADATA\TT.DBF

臨時檔案列表
=======================
檔案大小 (MB) 表空間           最大大小 (MB) 臨時檔名稱
---- -------- -------------------- ----------- --------------------
1    21       TEMP                 32767       C:\ORADATA\WIN10G\TEMP01.DBF


然後對應資料檔案編號和資料檔名,修改存放目的庫的具體路徑

在目的庫(240)上

mount狀態下

run{
set newname for datafile 1 to 'C:\spdata\sp\SYSTEM01.DBF';
set newname for datafile 2 to  'C:\spdata\sp\UNDOTBS01.DBF';
set newname for datafile 3 to  'C:\spdata\sp\SYSAUX01.DBF';
set newname for datafile 4 to  'C:\spdata\sp\USERS01.DBF'; 
set newname for datafile 5 to  'C:\spdata\sp\EXAMPLE01.DBF';  
set newname for datafile 6 to  'C:\spdata\sp\TT.DBF'; 
restore database;
switch datafile all;
}


正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

啟動 restore 於 20-3月 -13
使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在開始恢復資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集恢復的資料檔案
正將資料檔案00001恢復到C:\SPDATA\SP\SYSTEM01.DBF
正將資料檔案00002恢復到C:\SPDATA\SP\UNDOTBS01.DBF
正將資料檔案00003恢復到C:\SPDATA\SP\SYSAUX01.DBF
正將資料檔案00004恢復到C:\SPDATA\SP\USERS01.DBF
正將資料檔案00005恢復到C:\SPDATA\SP\EXAMPLE01.DBF
正將資料檔案00006恢復到C:\SPDATA\SP\TT.DBF
通道 ORA_DISK_1: 正在讀取備份段 C:\SCP\O1_MF_NNNDF_TAG20130320T173244_8NM0KWSW_.BKP


通道 ORA_DISK_1: 已恢復備份段 1
段控制程式碼 = C:\SCP\O1_MF_NNNDF_TAG20130320T173244_8NM0KWSW_.BKP 標記 = TAG20130320T
173244
通道 ORA_DISK_1: 恢復完成, 用時: 00:00:55
完成 restore 於 20-3月 -13

資料檔案 1 已轉換成資料檔案副本
輸入資料檔案副本 recid=35 stamp=810583327 檔名=C:\SPDATA\SP\SYSTEM01.DBF
資料檔案 2 已轉換成資料檔案副本
輸入資料檔案副本 recid=36 stamp=810583327 檔名=C:\SPDATA\SP\UNDOTBS01.DBF
資料檔案 3 已轉換成資料檔案副本
輸入資料檔案副本 recid=37 stamp=810583327 檔名=C:\SPDATA\SP\SYSAUX01.DBF
資料檔案 4 已轉換成資料檔案副本
輸入資料檔案副本 recid=38 stamp=810583327 檔名=C:\SPDATA\SP\USERS01.DBF
資料檔案 5 已轉換成資料檔案副本
輸入資料檔案副本 recid=39 stamp=810583327 檔名=C:\SPDATA\SP\EXAMPLE01.DBF
資料檔案 6 已轉換成資料檔案副本
輸入資料檔案副本 recid=40 stamp=810583327 檔名=C:\SPDATA\SP\TT.DBF


set newname for 指明資料檔案往個路徑還原
restore database  開始還原資料庫
switch datafile all   更新控制檔案裡記錄的資料檔案路徑

執行完上述命令以後,v$datafile已經更新,但是v$logfile還是源庫(244)

SQL> select name from v$datafile;

NAME
------------------------------------------------------

C:\SPDATA\SP\SYSTEM01.DBF
C:\SPDATA\SP\UNDOTBS01.DBF
C:\SPDATA\SP\SYSAUX01.DBF
C:\SPDATA\SP\USERS01.DBF
C:\SPDATA\SP\EXAMPLE01.DBF
C:\SPDATA\SP\TT.DBF

已選擇6行。



SQL> select group#,member from v$logfile;

    GROUP# MEMBER
---------- ----------------------------------------
         3 C:\ORADATA\WIN10G\REDO03.LOG
         2 C:\ORADATA\WIN10G\REDO02.LOG
         1 C:\ORADATA\WIN10G\REDO01.LOG
         
         


5:更新控制檔案中redo log的位置

將源庫(244)win10g上的三個redo log複製到目的庫(240)的 C:\SPDATA\SP\zt  目錄下

mount狀態下

SQL> select open_mode from v$database;

OPEN_MODE
----------
MOUNTED


SQL> alter database rename file  'C:\ORADATA\WIN10G\REDO01.LOG' to 'C:\SPDATA\SP\REDO01.LOG';//不能在rman中執行

資料庫已更改。

SQL> alter database rename file  'C:\ORADATA\WIN10G\REDO02.LOG' to 'C:\SPDATA\SP\REDO02.LOG';

資料庫已更改。

SQL> alter database rename file  'C:\ORADATA\WIN10G\REDO03.LOG' to 'C:\SPDATA\SP\REDO03.LOG';

資料庫已更改。


檢視資料檔案頭和控制檔案的scn資訊

SQL> select file#,checkpoint_change# from v$datafile;

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1            6083442
         2            6083442
         3            6083442
         4            6083442
         5            6083442
         6            6083442

已選擇6行。

SQL>
SQL> select file#,checkpoint_change# from v$datafile_header;

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1            6083442
         2            6083442
         3            6083442
         4            6083442
         5            6083442
         6            6083442

已選擇6行。
  



SQL> select group#,sequence#,status, first_change# from v$log;

    GROUP#  SEQUENCE# STATUS           FIRST_CHANGE#
---------- ---------- ---------------- -------------
         1        126 INACTIVE               6083310
         3        127 ACTIVE                 6083332
         2        128 CURRENT                6083507



檢視歸檔日誌裡的具體資訊

SQL> select SEQUENCE#,FIRST_CHANGE#,NEXT_CHANGE# from v$archived_log;

。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。省略。。。。。。。。。。。。。。。。
 
 SEQUENCE# FIRST_CHANGE# NEXT_CHANGE#
---------- ------------- ------------
       115       6079023      6079059
       116       6079059      6079150
       117       6079150      6079199
       118       6079199      6079232
       119       6079232      6079303
       120       6079303      6083207
       121       6083207      6083236
       122       6083236      6083256
       123       6083256      6083276
       124       6083276      6083295
       125       6083295      6083310

 SEQUENCE# FIRST_CHANGE# NEXT_CHANGE#
---------- ------------- ------------
       126       6083310      6083332
       127       6083332      6083507

已選擇90行。



SQL>

RMAN> recover database;

啟動 recover 於 21-3月 -13
使用通道 ORA_DISK_1

正在開始介質的恢復

通道 ORA_DISK_1: 正在啟動到預設目標的存檔日誌恢復
通道 ORA_DISK_1: 正在恢復存檔日誌
存檔日誌執行緒 =1 序列=127
通道 ORA_DISK_1: 正在讀取備份段 C:\SCP\O1_MF_ANNNN_TAG20130320T173353_8NM0N1L2_.BKP
通道 ORA_DISK_1: 已恢復備份段 1
段控制程式碼 = C:\SCP\O1_MF_ANNNN_TAG20130320T173353_8NM0N1L2_.BKP 標記 = TAG20130320T173353
通道 ORA_DISK_1: 恢復完成, 用時: 00:00:01
存檔日誌檔名 =C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\ARCHIVELOG\2
013_03_21\O1_MF_1_127_8NNPDCN0_.ARC 執行緒 =1 序列 =127
無法找到存檔日誌
存檔日誌執行緒 =1 序列=1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover 命令 (在 03/20/2013 18:09:00 上) 失敗
RMAN-06054: 介質恢復正請求未知的日誌: 執行緒 1 seq 1 lowscn 6083508


recover database until cancel  這個命令必須在sqlplus中執行,不能在rman中執行


然後在sqlplus中執行也報錯

SQL> recover database until cancel;

ORA-00283: 恢復會話因錯誤而取消
ORA-01610: 使用 BACKUP CONTROLFILE 選項的恢復必須已完成
 
 
而繼續在ramn中執行,也報錯

RMAN> recover database until scn 6083507;

啟動 recover 於 20-3月 -13
使用通道 ORA_DISK_1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover 命令 (在 03/20/2013 19:07:52 上) 失敗
RMAN-06556: 資料檔案 1 必須從 scn 6083506 之前的備份復原


此時直接使用resetlogs方式開啟db

RMAN> alter database open resetlogs;

 


然後找到控制檔案的語法,重建控制檔案(open狀態下)

SQL> alter database backup controlfile to trace ;

然後在udump中找到最新的trace檔案,獲得控制檔案的語法
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
--     Set #2. RESETLOGS case
--
-- The following commands will create a new control file and use it
-- to open the database.
-- Data used by Recovery Manager will be lost.
-- The contents of online logs will be lost and all backups will
-- be invalidated. Use this only if online logs are damaged.
-- After mounting the created controlfile, the following SQL
-- statement will place the database in the appropriate
-- protection mode:
--  ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "WIN10G" RESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 'C:\SPDATA\SP\REDO01.LOG'  SIZE 50M,
  GROUP 2 'C:\SPDATA\SP\REDO02.LOG'  SIZE 50M,
  GROUP 3 'C:\SPDATA\SP\REDO03.LOG'  SIZE 50M
-- STANDBY LOGFILE
DATAFILE
  'C:\SPDATA\SP\SYSTEM01.DBF',
  'C:\SPDATA\SP\UNDOTBS01.DBF',
  'C:\SPDATA\SP\SYSAUX01.DBF',
  'C:\SPDATA\SP\USERS01.DBF',
  'C:\SPDATA\SP\EXAMPLE01.DBF',
  'C:\SPDATA\SP\TT.DBF'
CHARACTER SET ZHS16GBK
;
++++++++++++++++++++++++++++++++++++++++++++++++++
 
然後關閉資料庫、刪除tt庫上的三個控制檔案、將pfile中的db_name 改為sp

SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL>

刪除控制檔案、修改pfile中的db_name為sp


然後啟動db到nomount狀態下

修改控制檔案的語法,將REUSE一定要改為 SET ,win10g改為sp,否則報錯如下:

CREATE CONTROLFILE REUSE DATABASE "SP" RESETLOGS  ARCHIVELOG
*
第 1 行出現錯誤:
ORA-01503: CREATE CONTROLFILE ??
ORA-01504: ???? 'SP' ??? db_name 'win10g' ???


SQL> CREATE CONTROLFILE SET DATABASE "SP" RESETLOGS  ARCHIVELOG
  2      MAXLOGFILES 16
  3      MAXLOGMEMBERS 3
  4      MAXDATAFILES 100
  5      MAXINSTANCES 8
  6      MAXLOGHISTORY 292
  7  LOGFILE
  8    GROUP 1 'C:\SPDATA\SP\REDO01.LOG'  SIZE 50M,
  9    GROUP 2 'C:\SPDATA\SP\REDO02.LOG'  SIZE 50M,
 10    GROUP 3 'C:\SPDATA\SP\REDO03.LOG'  SIZE 50M
 11  -- STANDBY LOGFILE
 12  DATAFILE
 13    'C:\SPDATA\SP\SYSTEM01.DBF',
 14    'C:\SPDATA\SP\UNDOTBS01.DBF',
 15    'C:\SPDATA\SP\SYSAUX01.DBF',
 16    'C:\SPDATA\SP\USERS01.DBF',
 17    'C:\SPDATA\SP\EXAMPLE01.DBF',
 18    'C:\SPDATA\SP\TT.DBF'
 19  CHARACTER SET ZHS16GBK
 20  ;

控制檔案已建立。

SQL>

SQL> alter database open resetlogs;

資料庫已更改。


SQL> select name from v$database;

NAME
---------
SP

可以看到此時的資料庫名改為了最新的SP

下面看下控制檔案、日誌檔案和資料檔案的scn資訊

SQL> select file#,checkpoint_change# from v$datafile;

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1            6084324
         2            6084324
         3            6084324
         4            6084324
         5            6084324
         6            6084324

已選擇6行。

SQL> select file#,checkpoint_change# from v$datafile_header;

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1            6084324
         2            6084324
         3            6084324
         4            6084324
         5            6084324
         6            6084324

已選擇6行。

SQL>
SQL> select group#,sequence#,status from v$log;

    GROUP#  SEQUENCE# STATUS
---------- ---------- ----------------
         1          0 UNUSED
         2          1 CURRENT
         3          0 UNUSED

SQL>


驗證t表中的資料

SQL>
SQL> select * from scott.t;

        ID
----------
         6
         7
         8
         9
        10
        11
        12

已選擇7行。





來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28373936/viewspace-1722262/,如需轉載,請註明出處,否則將追究法律責任。

相關文章