通過RMAN異機遷移資料庫並修改儲存路徑【相同位數與平臺版】

shilei1發表於2013-12-04
訂正記錄:
2013年12月4日 文件細節訂正



-- 查詢資料庫的DBID
SQL> select name,dbid from v$database;

NAME            DBID
--------- ----------
ZHONGRDB  1755753531

-- 查詢資料檔案與臨時檔案資訊
select file_id,file_name from dba_data_files;

select file_id,file_name from dba_temp_files;

SQL> select file_id,file_name from dba_data_files;

   FILE_ID FILE_NAME
---------- --------------------------------------------------
         4 D:\ORADATA\ZHONGRDB\USERS01.DBF
         3 D:\ORADATA\ZHONGRDB\UNDOTBS01.DBF
         2 D:\ORADATA\ZHONGRDB\SYSAUX01.DBF
         1 D:\ORADATA\ZHONGRDB\SYSTEM01.DBF
         5 D:\ORADATA\ZHONGRDB\EXAMPLE01.DBF

SQL> select file_id,file_name from dba_temp_files;

   FILE_ID FILE_NAME
---------- --------------------------------------------------
         1 D:\ORADATA\ZHONGRDB\TEMP01.DBF

-- 通過RMAN資料庫進行備份

-- 將RMAN備份的所有檔案拷貝到新伺服器指定的位置【Target端存放備份路徑必須與Source端一致,否則必須要用Catalog方式

-- 在新伺服器建立密碼檔案
orapwd file=D:\app\Administrator\product\11.2.0\dbhome_1\database\PWDzhongrdb.ora password=zhong

-- 建立例項資訊
oradim -new -sid zhongrdb

-- 通過RMAN還原配置檔案
set oracle_sid=zhongrdb
RMAN TARGET /
STARTUP NOMOUNT
restore spfile to pfile 'D:\app\Administrator\product\11.2.0\dbhome_1\database\initZHONGRDB.ora' from 'D:\ORABACKUP\C-1755753531-20131128-00';

RMAN> STARTUP NOMOUNT

啟動失敗: ORA-01078: failure in processing system parameters
LRM-00109: ???????????????? 'D:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\INITZHONGRDB.ORA'

在沒有引數檔案的情況下啟動 Oracle 例項以檢索 spfile
Oracle 例項已啟動

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

Fixed Size                     2253296 位元組
Variable Size                104861200 位元組
Database Buffers              46137344 位元組
Redo Buffers                   5410816 位元組

RMAN>

RMAN>

RMAN> restore spfile to pfile 'D:\app\Administrator\product\11.2.0\dbhome_1\database\initZHONGRDB.ora' from 'D:\ORABACKUP\C-1755753531-20131128-00';

啟動 restore 於 28-11-13
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=249 裝置型別=DISK

通道 ORA_DISK_1: 正在從 AUTOBACKUP D:\ORABACKUP\C-1755753531-20131128-00 還原 spfile
通道 ORA_DISK_1: 從 AUTOBACKUP 還原 SPFILE 已完成
完成 restore 於 28-11-13

-- PFILE引數路徑修正
*.control_files='D:\app\Administrator\oradata\zhongrdb\control01.ctl','D:\app\Administrator\oradata\zhongrdb\control02.ctl'

-- 資料庫啟動到NOMOUNT模式
STARTUP NOMOUNT

-- 還原原資料庫控制檔案
RMAN TARGET /
restore controlfile from 'D:\ORABACKUP\C-1755753531-20131128-00';

D:\app\Administrator\product\11.2.0\dbhome_1\BIN>rman target /

恢復管理器: Release 11.2.0.3.0 - Production on 星期四 11 28 23:56:00 2013

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

已連線到目標資料庫: ZHONGRDB (未裝載)

RMAN> restore controlfile from 'D:\ORABACKUP\C-1755753531-20131128-00';

啟動 restore 於 28-11-13
使用目標資料庫控制檔案替代恢復目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=63 裝置型別=DISK

通道 ORA_DISK_1: 正在還原控制檔案
通道 ORA_DISK_1: 還原完成, 用時: 00:00:03
輸出檔名=D:\APP\ADMINISTRATOR\ORADATA\ZHONGRDB\CONTROL01.CTL
輸出檔名=D:\APP\ADMINISTRATOR\ORADATA\ZHONGRDB\CONTROL02.CTL
完成 restore 於 28-11-13

-- 啟動資料庫到MOUNT狀態
alter database mount;

-- 還原資料檔案並設定新路徑
run
{
 set newname for datafile 1  to "D:\app\Administrator\oradata\zhongrdb\SYSTEM01.DBF";
 set newname for datafile 2  to "D:\app\Administrator\oradata\zhongrdb\SYSAUX01.DBF";
 set newname for datafile 3  to "D:\app\Administrator\oradata\zhongrdb\UNDOTBS01.DBF";
 set newname for datafile 4  to "D:\app\Administrator\oradata\zhongrdb\USERS01.DBF";
 set newname for datafile 5  to "D:\app\Administrator\oradata\zhongrdb\EXAMPLE01.DBF";
allocate channel c1 device type disk;
allocate channel c2 device type disk;
allocate channel c3 device type disk;
restore database;
switch datafile all;
recover database;
}
對switch datafile all的說明:
--對於nocatalog 模式下,rman備份的資訊是儲存在控制檔案裡的,包括檔案的路徑資訊。 這裡的switch datafile all的作用,就是更新控制檔案裡的資訊。

已連線到目標資料庫: ZHONGRDB (DBID=1755753531, 未開啟)

RMAN> run
2> {
3>  set newname for datafile 1  to "D:\app\Administrator\oradata\zhongrdb\SYSTEM01.DBF";
4>  set newname for datafile 2  to "D:\app\Administrator\oradata\zhongrdb\SYSAUX01.DBF";
5>  set newname for datafile 3  to "D:\app\Administrator\oradata\zhongrdb\UNDOTBS01.DBF";
6>  set newname for datafile 4  to "D:\app\Administrator\oradata\zhongrdb\USERS01.DBF";
7>  set newname for datafile 5  to "D:\app\Administrator\oradata\zhongrdb\EXAMPLE01.DBF";
8> allocate channel c1 device type disk;
9> allocate channel c2 device type disk;
10> allocate channel c3 device type disk;
11> restore database;
12> switch datafile all;
13> }

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

使用目標資料庫控制檔案替代恢復目錄
分配的通道: c1
通道 c1: SID=63 裝置型別=DISK

分配的通道: c2
通道 c2: SID=129 裝置型別=DISK

分配的通道: c3
通道 c3: SID=193 裝置型別=DISK

啟動 restore 於 29-11-13
啟動 implicit crosscheck backup 於 29-11-13
已交叉檢驗的 3 物件
完成 implicit crosscheck backup 於 29-11-13

啟動 implicit crosscheck copy  29-11-13
完成 implicit crosscheck copy  29-11-13

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


通道 c1: 正在開始還原資料檔案備份集
通道 c1: 正在指定從備份集還原的資料檔案
通道 c1: 將資料檔案 00001 還原到 D:\app\Administrator\oradata\zhongrdb\SYSTEM01.DBF
通道 c1: 將資料檔案 00002 還原到 D:\app\Administrator\oradata\zhongrdb\SYSAUX01.DBF
通道 c1: 將資料檔案 00003 還原到 D:\app\Administrator\oradata\zhongrdb\UNDOTBS01.DBF
通道 c1: 將資料檔案 00004 還原到 D:\app\Administrator\oradata\zhongrdb\USERS01.DBF
通道 c1: 將資料檔案 00005 還原到 D:\app\Administrator\oradata\zhongrdb\EXAMPLE01.DBF
通道 c1: 正在讀取備份片段 D:\ORABACKUP\28_DB_03OQ4KFL_1_1_11M28D
通道 c1: 段控制程式碼 = D:\ORABACKUP\28_DB_03OQ4KFL_1_1_11M28D 標記 = TAG20131128T232957
通道 c1: 已還原備份片段 1
通道 c1: 還原完成, 用時: 00:01:05
完成 restore 於 29-11-13

資料檔案 1 已轉換成資料檔案副本
輸入資料檔案副本 RECID=7 STAMP=832723508 檔名=D:\APP\ADMINISTRATOR\ORADATA\ZHONGRDB\SYSTEM01.DBF
資料檔案 2 已轉換成資料檔案副本
輸入資料檔案副本 RECID=8 STAMP=832723508 檔名=D:\APP\ADMINISTRATOR\ORADATA\ZHONGRDB\SYSAUX01.DBF
資料檔案 3 已轉換成資料檔案副本
輸入資料檔案副本 RECID=9 STAMP=832723509 檔名=D:\APP\ADMINISTRATOR\ORADATA\ZHONGRDB\UNDOTBS01.DBF
資料檔案 4 已轉換成資料檔案副本
輸入資料檔案副本 RECID=10 STAMP=832723510 檔名=D:\APP\ADMINISTRATOR\ORADATA\ZHONGRDB\USERS01.DBF
資料檔案 5 已轉換成資料檔案副本
輸入資料檔案副本 RECID=11 STAMP=832723511 檔名=D:\APP\ADMINISTRATOR\ORADATA\ZHONGRDB\EXAMPLE01.DBF
釋放的通道: c1
釋放的通道: c2
釋放的通道: c3

RMAN> recover database;

啟動 recover 於 29-11-13
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=63 裝置型別=DISK

正在開始介質的恢復

通道 ORA_DISK_1: 正在開始將歸檔日誌還原到預設目標
通道 ORA_DISK_1: 正在還原歸檔日誌
歸檔日誌執行緒=1 序列=237
通道 ORA_DISK_1: 正在讀取備份片段 D:\ORABACKUP\ARCH_04OQ4KIB_1_1
通道 ORA_DISK_1: 段控制程式碼 = D:\ORABACKUP\ARCH_04OQ4KIB_1_1 標記 = TAG20131128T233123
通道 ORA_DISK_1: 已還原備份片段 1
通道 ORA_DISK_1: 還原完成, 用時: 00:00:01
歸檔日誌檔名=D:\ARCHIVELOGARC0000000237_0832114878.0001 執行緒=1 序列=237
無法找到歸檔日誌
歸檔日誌執行緒=1 序列=238
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover 命令 (在 11/29/2013 00:06:51 上) 失敗
RMAN-06054: 介質恢復正在請求未知的執行緒 1 序列 238 的歸檔日誌以及起始 SCN 6141572

RMAN> recover database until scn 6141571;

啟動 recover 於 29-11-13
使用通道 ORA_DISK_1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover 命令 (在 11/29/2013 00:09:35 上) 失敗
RMAN-06556: 資料檔案 1 必須從 SCN 6141571 之前的備份還原

RMAN> recover database until scn 6141572;

啟動 recover 於 29-11-13
使用通道 ORA_DISK_1

正在開始介質的恢復
介質恢復完成, 用時: 00:00:01

完成 recover 於 29-11-13

RMAN> alter database open;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: alter db 命令 (在 11/29/2013 00:10:05 上) 失敗
ORA-01589: 要開啟資料庫則必須使用 RESETLOGS 或 NORESETLOGS 選項

RMAN> alter database open resetlogs;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: alter db 命令 (在 11/29/2013 00:10:13 上) 失敗
ORA-00344: 無法重新建立聯機日誌 'D:\ORADATA\ZHONGRDB\REDO01.LOG'
ORA-27040: 檔案建立錯誤, 無法建立檔案
OSD-04002: 無法開啟檔案
O/S-Error: (OS 3) 系統找不到指定的路徑。

-- 通過只讀狀態查詢資料庫資訊
alter database open read only;

select open_mode from v$database;

SYS@ zhongrdb SQL>select open_mode from v$database;

OPEN_MODE
--------------------
READ ONLY

-- 重建控制檔案以修改REDOLOG的位置
alter database backup controlfile to trace as 'D:\CONTROLFILE_ZHONGRDB.txt';

+ NORESETLOGS方式
由於源庫的日誌沒有被恢復,因此如果採用該方式將會報錯。
+ RESETLOGS方式
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ZHONGRDB" RESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 'D:\APP\ADMINISTRATOR\ORADATA\ZHONGRDB\REDO01.LOG'  SIZE 50M BLOCKSIZE 512,
  GROUP 2 'D:\APP\ADMINISTRATOR\ORADATA\ZHONGRDB\REDO02.LOG'  SIZE 50M BLOCKSIZE 512,
  GROUP 3 'D:\APP\ADMINISTRATOR\ORADATA\ZHONGRDB\REDO03.LOG'  SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
  'D:\APP\ADMINISTRATOR\ORADATA\ZHONGRDB\SYSTEM01.DBF',
  'D:\APP\ADMINISTRATOR\ORADATA\ZHONGRDB\SYSAUX01.DBF',
  'D:\APP\ADMINISTRATOR\ORADATA\ZHONGRDB\UNDOTBS01.DBF',
  'D:\APP\ADMINISTRATOR\ORADATA\ZHONGRDB\USERS01.DBF',
  'D:\APP\ADMINISTRATOR\ORADATA\ZHONGRDB\EXAMPLE01.DBF'
CHARACTER SET ZHS16GBK
;

alter database open RESETLOGS;

SYS@ zhongrdb SQL>shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SYS@ zhongrdb SQL>STARTUP NOMOUNT
ORACLE 例程已經啟動。

Total System Global Area     855982080 bytes
Fixed Size                     2260000 bytes
Variable Size                503317472 bytes
Database Buffers             343932928 bytes
Redo Buffers                   6471680 bytes
SYS@ zhongrdb SQL>CREATE CONTROLFILE REUSE DATABASE "ZHONGRDB" RESETLOGS  ARCHIVELOG
  2      MAXLOGFILES 16
  3      MAXLOGMEMBERS 3
  4      MAXDATAFILES 100
  5      MAXINSTANCES 8
  6      MAXLOGHISTORY 292
  7  LOGFILE
  8    GROUP 1 'D:\APP\ADMINISTRATOR\ORADATA\ZHONGRDB\REDO01.LOG'  SIZE 50M BLOCKSIZE 512,
  9    GROUP 2 'D:\APP\ADMINISTRATOR\ORADATA\ZHONGRDB\REDO02.LOG'  SIZE 50M BLOCKSIZE 512,
 10    GROUP 3 'D:\APP\ADMINISTRATOR\ORADATA\ZHONGRDB\REDO03.LOG'  SIZE 50M BLOCKSIZE 512
 11  -- STANDBY LOGFILE
 12  DATAFILE
 13    'D:\APP\ADMINISTRATOR\ORADATA\ZHONGRDB\SYSTEM01.DBF',
 14    'D:\APP\ADMINISTRATOR\ORADATA\ZHONGRDB\SYSAUX01.DBF',
 15    'D:\APP\ADMINISTRATOR\ORADATA\ZHONGRDB\UNDOTBS01.DBF',
 16    'D:\APP\ADMINISTRATOR\ORADATA\ZHONGRDB\USERS01.DBF',
 17    'D:\APP\ADMINISTRATOR\ORADATA\ZHONGRDB\EXAMPLE01.DBF'
 18  CHARACTER SET ZHS16GBK
 19  ;

控制檔案已建立。

SYS@ zhongrdb SQL>select open_mode from v$database;

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

SYS@ zhongrdb SQL>alter database open RESETLOGS;

資料庫已更改。

SYS@ zhongrdb SQL>
SYS@ zhongrdb SQL>select open_mode from v$database;

OPEN_MODE
--------------------
READ WRITE

-- 重建臨時表空間
ALTER TABLESPACE TEMP ADD TEMPFILE 'D:\APP\ADMINISTRATOR\ORADATA\ZHONGRDB\TEMP01.DBF' SIZE 100M;

-- 查詢資料庫的DBID
SQL> select name,dbid from v$database;

NAME            DBID
--------- ----------
ZHONGRDB  1755753531













































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

相關文章