windows主機下使用rman恢復備份到不同主機

sxitsxit發表於2012-09-13

MicrosoftInternetExplorer402DocumentNotSpecified7.8Normal0

源主機ip :  192.168.6.144


1:ORACLE相關設定如下:


ORACLE_BASE=C:\oracle\product\10.2.0 

ORACLE_HOME=C:\oracle\product\10.2.0\db_1

ORACLE_SID=orcl

Path=C:\oracle\product\10.2.0\db_1\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem



2:檢視資料庫歸檔模式


SQL> archive log list;

資料庫日誌模式            存檔模式

自動存檔             啟用

存檔終點            USE_DB_RECOVERY_FILE_DEST

最早的聯機日誌序列     4

下一個存檔日誌序列   6

當前日誌序列           6



如果為非歸檔,可以用如下命令修改


SQL> startup mount

ORACLE 例程已經啟動。

Total System Global Area  167772160 bytes

Fixed Size                  1247900 bytes

Variable Size              75498852 bytes

Database Buffers           88080384 bytes

Redo Buffers                2945024 bytes

資料庫裝載完畢。

SQL>

SQL> alter database archivelog;

資料庫已更改。



3:檢視源庫資料檔案、日誌檔案和控制檔案資訊


SQL> select file_name from dba_Data_files;

FILE_NAME

--------------------------------------------------------------------------------

C:\ORADATA\ORCL\USERS01.DBF

C:\ORADATA\ORCL\SYSAUX01.DBF

C:\ORADATA\ORCL\UNDOTBS01.DBF

C:\ORADATA\ORCL\SYSTEM01.DBF

C:\ORADATA\ORCL\EXAMPLE01.DBF

C:\ORADATA\ORCL\TT.DBF

C:\ORADATA\ORCL\TEST.DBF

已選擇7行。


SQL> select member from v$logfile;

MEMBER

--------------------------------------------------------------------------------

C:\ORADATA\ORCL\REDO03.LOG

C:\ORADATA\ORCL\REDO02.LOG

C:\ORADATA\ORCL\REDO01.LOG

SQL> select name from v$controlfile;

NAME

--------------------------------------------------------------------------------

C:\ORADATA\ORCL\CONTROL01.CTL

C:\ORADATA\ORCL\CONTROL02.CTL

C:\ORADATA\ORCL\CONTROL03.CTL


4:備份源資料庫,並以這個備份作為恢復的基礎


SQL> select dbid from v$database;

  DBID

---------------

 1321505122


C:\>rman target /


恢復管理器: Release 10.2.0.1.0 - Production on 星期三 9月 12 09:20:39 2012

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

連線到目標資料庫: ORCL (DBID=1321505122)

RMAN> backup database plus archivelog;   //備份源資料庫

啟動 backup 於 13-9月 -12

當前日誌已存檔

使用目標資料庫控制檔案替代恢復目錄

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=140 devtype=DISK

通道 ORA_DISK_1: 正在啟動存檔日誌備份集

通道 ORA_DISK_1: 正在指定備份集中的存檔日誌

輸入存檔日誌執行緒 =1 序列 =20 記錄 ID=18 時間戳=793883108

輸入存檔日誌執行緒 =1 序列 =21 記錄 ID=19 時間戳=793883136

輸入存檔日誌執行緒 =1 序列 =22 記錄 ID=20 時間戳=793883175

輸入存檔日誌執行緒 =1 序列 =23 記錄 ID=21 時間戳=793883197

輸入存檔日誌執行緒 =1 序列 =24 記錄 ID=22 時間戳=793883259

通道 ORA_DISK_1: 正在啟動段 1 於 13-9月 -12

通道 ORA_DISK_1: 已完成段 1 於 13-9月 -12

段控制程式碼=C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2012_09_13\O1_MF_ANNNN_TAG20120913T110741_852MHZSW_.BKP 標記=TAG20120913T110741 註釋=NONE

通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:04

完成 backup 於 13-9月 -12

啟動 backup 於 13-9月 -12

使用通道 ORA_DISK_1

通道 ORA_DISK_1: 啟動全部資料檔案備份集

通道 ORA_DISK_1: 正在指定備份集中的資料檔案

輸入資料檔案 fno=00001 name=C:\ORADATA\ORCL\SYSTEM01.DBF

輸入資料檔案 fno=00003 name=C:\ORADATA\ORCL\SYSAUX01.DBF

輸入資料檔案 fno=00005 name=C:\ORADATA\ORCL\EXAMPLE01.DBF

輸入資料檔案 fno=00006 name=C:\ORADATA\ORCL\TT.DBF

輸入資料檔案 fno=00007 name=C:\ORADATA\ORCL\TEST.DBF

輸入資料檔案 fno=00002 name=C:\ORADATA\ORCL\UNDOTBS01.DBF

輸入資料檔案 fno=00004 name=C:\ORADATA\ORCL\USERS01.DBF

通道 ORA_DISK_1: 正在啟動段 1 於 13-9月 -12

通道 ORA_DISK_1: 已完成段 1 於 13-9月 -12

段控制程式碼=C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2012_09_13\O1_MF_NNNDF_TAG20120913T110748_852MJ489_.BKP 標記=TAG20120913T110748 註釋=NONE

通道 ORA_DISK_1: 備份集已完成, 經過時間:00:01:05

通道 ORA_DISK_1: 啟動全部資料檔案備份集

通道 ORA_DISK_1: 正在指定備份集中的資料檔案

備份集中包括當前控制檔案

在備份集中包含當前的 SPFILE

通道 ORA_DISK_1: 正在啟動段 1 於 13-9月 -12

通道 ORA_DISK_1: 已完成段 1 於 13-9月 -12

段控制程式碼=C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2012_09_13\O1_MF_NCSNF_TAG20120913T110748_852ML6SW_.BKP 標記=TAG20120913T110748 註釋=NONE

通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:02

完成 backup 於 13-9月 -12

啟動 backup 於 13-9月 -12

當前日誌已存檔

使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在啟動存檔日誌備份集

通道 ORA_DISK_1: 正在指定備份集中的存檔日誌

輸入存檔日誌執行緒 =1 序列 =25 記錄 ID=23 時間戳=793883335

通道 ORA_DISK_1: 正在啟動段 1 於 13-9月 -12

通道 ORA_DISK_1: 已完成段 1 於 13-9月 -12

段控制程式碼=C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2012_09_13\O1_MF_ANNNN_TAG20120913T110856_852ML93F_.BKP 標記=TAG20120913T110856 註釋=NONE

通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:02

完成 backup 於 13-9月 -12


RMAN> backup current controlfile;  // 備份當前控制檔案

啟動 backup 於 13-9月 -12

使用通道 ORA_DISK_1

通道 ORA_DISK_1: 啟動全部資料檔案備份集

通道 ORA_DISK_1: 正在指定備份集中的資料檔案

備份集中包括當前控制檔案

通道 ORA_DISK_1: 正在啟動段 1 於 13-9月 -12

通道 ORA_DISK_1: 已完成段 1 於 13-9月 -12

段控制程式碼=C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2012_09_13\O1_MF_NCNNF_TAG20120913T111243_852MSCTC_.BKP 標記=TAG20120913T111243 註釋=NONE

通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:01

完成 backup 於 13-9月 -12



5:生成源資料庫的引數檔案


SQL> show parameter spfile;

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

spfile                               string      C:\ORACLE\PRODUCT\10.2.0\DB_1\

                                                 DBS\SPFILEORCL.ORA

SQL> create pfile from spfile;


然後到 C:\oracle\product\10.2.0\db_1\database目錄下生成一個檔案 initorcl.ora  ,將這個引數檔案傳到目的庫(192.168.6.244)中 C:\oracle\product\10.2.0\db_1\database目錄下;

將源庫C:\oracle\product\10.2.0\flash_recovery_area\ORCL\BACKUPSET\2012_09_12目錄下的備份檔案全部拷貝到 目的庫(192.168.6.244)中




目的主機ip: 192.168.6.244



1:上傳oracle的安裝包,安裝的時候選擇僅安裝資料庫軟體 ,不要用dbca建立庫


2:修改  initorcl.ora 檔案中的部分引數

 

 adump、bdump、cdump和udump  位置

 control_files  位置

 db_recovery_file_dest 位置


 

3:windows下可以通過oradim建立一個服務啟動oracle環境


 C:\>oradim -new -sid jim

   例項已建立。



4:通過rman將資料庫啟動到nomount狀態


C:\>set oracle_sid=jim

C:\>rman target /

恢復管理器: Release 10.2.0.1.0 - Production on 星期三 9月 12 10:11:05 2012

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

已連線到目標資料庫 (未啟動)

RMAN> startup nomount pfile='C:\oracle\product\10.2.0\db_1\database\initorcl.ora';

Oracle 例項已啟動

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

Fixed Size                     1247900 位元組

Variable Size                 62915940 位元組

Database Buffers             100663296 位元組

Redo Buffers                   2945024 位元組

RMAN>


5:通過備份的控制檔案恢復出控制檔案


將源庫(6.144)backupset目錄下的備份集拷貝到目的庫(6.244)的C:\db_arch\backupset目錄下,然後找到備份控制檔案的備份集名字


RMAN> restore controlfile  to 'C:\oradata\jim\control01.ctl' from 'C:\db_arch\backupset\O1_MF_NCNNF_TAG20120913T111243_852MSCTC_.BKP';

啟動 restore 於 13-9月 -12

使用目標資料庫控制檔案替代恢復目錄

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=157 devtype=DISK

通道 ORA_DISK_1: 正在復原控制檔案

通道 ORA_DISK_1: 恢復完成, 用時: 00:00:04

完成 restore 於 13-9月 -12



6:有了控制檔案以後,然後掛載資料庫


RMAN> alter database mount;

資料庫已裝載

釋放的通道: ORA_DISK_1

RMAN>


mount資料庫的過程中會去讀控制檔案,如果初始化引數 initorcl.ora  中的 control_files指定了多個控制檔案路徑,需要將前一步恢復出來的控制檔案多複製幾份,

然後放到對應的路徑下;否則mount資料庫的時候,報如下錯


RMAN-03002: alter db 命令 (在 09/12/2012 10:32:59 上) 失敗

ORA-00205: 標識控制檔案時出錯, 有關詳細資訊, 請檢視預警日誌



7:oracle 10g開始,新增了一個功能,通過catalog start with命令,oracle 可以搜尋指定目錄中的備份檔案,並將這些備份檔案新增到控制檔案。

 以下命令就是向控制檔案中載入備份集


RMAN> catalog start with 'C:\db_arch\backupset';

啟動 implicit crosscheck backup 於 13-9月 -12

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=156 devtype=DISK

已交叉檢驗的 4 物件

完成 implicit crosscheck backup 於 13-9月 -12

啟動 implicit crosscheck copy 於 13-9月 -12

使用通道 ORA_DISK_1

完成 implicit crosscheck copy 於 13-9月 -12

搜尋恢復區域中的所有檔案

正在編制檔案目錄...

沒有為檔案編制目錄

搜尋與樣式 C:\db_arch\backupset 匹配的所有檔案

資料庫未知檔案的列表

=====================================

檔名: C:\DB_ARCH\backupset\O1_MF_ANNNN_TAG20120913T110741_852MHZSW_.BKP

檔名: C:\DB_ARCH\backupset\O1_MF_ANNNN_TAG20120913T110856_852ML93F_.BKP

檔名: C:\DB_ARCH\backupset\O1_MF_NCNNF_TAG20120913T111243_852MSCTC_.BKP

檔名: C:\DB_ARCH\backupset\O1_MF_NCSNF_TAG20120913T110748_852ML6SW_.BKP

檔名: C:\DB_ARCH\backupset\O1_MF_NNNDF_TAG20120913T110748_852MJ489_.BKP

是否確實要將上述檔案列入目錄 (輸入 YES 或 NO)? yes

正在編制檔案目錄...

目錄編制完畢

已列入目錄的檔案的列表

=======================

檔名: C:\DB_ARCH\backupset\O1_MF_ANNNN_TAG20120913T110741_852MHZSW_.BKP

檔名: C:\DB_ARCH\backupset\O1_MF_ANNNN_TAG20120913T110856_852ML93F_.BKP

檔名: C:\DB_ARCH\backupset\O1_MF_NCNNF_TAG20120913T111243_852MSCTC_.BKP

檔名: C:\DB_ARCH\backupset\O1_MF_NCSNF_TAG20120913T110748_852ML6SW_.BKP

檔名: C:\DB_ARCH\backupset\O1_MF_NNNDF_TAG20120913T110748_852MJ489_.BKP



9:編寫恢復指令碼,然後執行恢復


RMAN> 

run{

set newname for datafile 1 

to 'C:\oradata\jim\SYSTEM01.DBF';

set newname for datafile 2

to 'C:\oradata\jim\UNDOTBS01.DBF';

set newname for datafile 3

to 'C:\oradata\jim\SYSAUX01.DBF';

set newname for datafile 4

to 'C:\oradata\jim\USERS01.DBF';

set newname for datafile 5

to 'C:\oradata\jim\EXAMPLE01.DBF';

set newname for datafile 6

to 'C:\oradata\jim\TT01.DBF';

set newname for datafile 7

to 'C:\oradata\jim\TEST.DBF';

restore database;

switch datafile all;  // 對於nocatalog模式下,rman備份的資訊是儲存在控制檔案裡,而這個命令就是更新控制檔案裡的資訊

}

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

啟動 restore 於 13-9月 -12

使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在開始恢復資料檔案備份集

通道 ORA_DISK_1: 正在指定從備份集恢復的資料檔案

正將資料檔案00001恢復到C:\ORADATA\JIM\SYSTEM01.DBF

正將資料檔案00002恢復到C:\ORADATA\JIM\UNDOTBS01.DBF

正將資料檔案00003恢復到C:\ORADATA\JIM\SYSAUX01.DBF

正將資料檔案00004恢復到C:\ORADATA\JIM\USERS01.DBF

正將資料檔案00005恢復到C:\ORADATA\JIM\EXAMPLE01.DBF

正將資料檔案00006恢復到C:\ORADATA\JIM\TT01.DBF

正將資料檔案00007恢復到C:\ORADATA\JIM\TEST.DBF

通道 ORA_DISK_1: 正在讀取備份段 C:\DB_ARCH\BACKUPSET\O1_MF_NNNDF_TAG20120913T110

748_852MJ489_.BKP

通道 ORA_DISK_1: 已恢復備份段 1

段控制程式碼 = C:\DB_ARCH\BACKUPSET\O1_MF_NNNDF_TAG20120913T110748_852MJ489_.BKP 標記

= TAG20120913T110748

通道 ORA_DISK_1: 恢復完成, 用時: 00:00:45

完成 restore 於 13-9月 -12

資料檔案 1 已轉換成資料檔案副本

輸入資料檔案副本 recid=9 stamp=793887265 檔名=C:\ORADATA\JIM\SYSTEM01.DBF

資料檔案 2 已轉換成資料檔案副本

輸入資料檔案副本 recid=10 stamp=793887265 檔名=C:\ORADATA\JIM\UNDOTBS01.DBF

資料檔案 3 已轉換成資料檔案副本

輸入資料檔案副本 recid=11 stamp=793887265 檔名=C:\ORADATA\JIM\SYSAUX01.DBF

資料檔案 4 已轉換成資料檔案副本

輸入資料檔案副本 recid=12 stamp=793887266 檔名=C:\ORADATA\JIM\USERS01.DBF

資料檔案 5 已轉換成資料檔案副本

輸入資料檔案副本 recid=13 stamp=793887266 檔名=C:\ORADATA\JIM\EXAMPLE01.DBF

資料檔案 6 已轉換成資料檔案副本

輸入資料檔案副本 recid=14 stamp=793887266 檔名=C:\ORADATA\JIM\TT01.DBF

資料檔案 7 已轉換成資料檔案副本

輸入資料檔案副本 recid=15 stamp=793887266 檔名=C:\ORADATA\JIM\TEST.DBF

RMAN>


10:將以shudown immediate方式關閉源庫,並將源庫(1.144)目錄下的三個redolog拷貝到目的庫(6.244)上的資料檔案目錄C:\oradata\jim  ;

並將源庫(6.144)上的歸檔日誌拷貝到目的庫(6.244)的C:\db_arch\backupset目錄下 ; 如下操作時修改控制檔案裡新日誌檔案的路徑


在目的庫(6.244)上再開一個sql視窗,執行


SQL> select  open_mode from v$database;

OPEN_MODE

----------

MOUNTED

SQL> alter database rename file  'C:\oradata\orcl\redo01.log' to 'C:\oradata\jim\redo01.log';

資料庫已更改。

SQL> alter database rename file  'C:\oradata\orcl\redo02.log' to 'C:\oradata\jim\redo02.log';

資料庫已更改。

SQL> alter database rename file  'C:\oradata\orcl\redo03.log' to 'C:\oradata\jim\redo03.log';

資料庫已更改。




11:利用歸檔日誌進行資料庫的恢復


RMAN> recover database;

啟動 recover 於 13-9月 -12

使用通道 ORA_DISK_1

正在開始介質的恢復

存檔日誌執行緒 1 序列 26 已作為檔案 C:\ORADATA\JIM\REDO01.LOG 存在於磁碟上

存檔日誌執行緒 1 序列 27 已作為檔案 C:\ORADATA\JIM\REDO02.LOG 存在於磁碟上

存檔日誌執行緒 1 序列 28 已作為檔案 C:\ORADATA\JIM\REDO03.LOG 存在於磁碟上

通道 ORA_DISK_1: 正在啟動到預設目標的存檔日誌恢復

通道 ORA_DISK_1: 正在恢復存檔日誌

存檔日誌執行緒 =1 序列=25

通道 ORA_DISK_1: 正在讀取備份段 C:\DB_ARCH\BACKUPSET\O1_MF_ANNNN_TAG20120913T110

856_852ML93F_.BKP

通道 ORA_DISK_1: 已恢復備份段 1

段控制程式碼 = C:\DB_ARCH\BACKUPSET\O1_MF_ANNNN_TAG20120913T110856_852ML93F_.BKP 標記

= TAG20120913T110856

通道 ORA_DISK_1: 恢復完成, 用時: 00:00:01

存檔日誌檔名 =C:\DB_ARCH\ORCL\ARCHIVELOG\2012_09_13\O1_MF_1_25_852R7JVT_.ARC

執行緒 =1 序列 =25

通道 default: 正在刪除存檔日誌

存檔日誌檔名 =C:\DB_ARCH\ORCL\ARCHIVELOG\2012_09_13\O1_MF_1_25_852R7JVT_.ARC

記錄 ID=29 時間戳 =793888112

存檔日誌檔名 =C:\ORADATA\JIM\REDO01.LOG 執行緒 =1 序列 =26

存檔日誌檔名 =C:\ORADATA\JIM\REDO02.LOG 執行緒 =1 序列 =27

存檔日誌檔名 =C:\ORADATA\JIM\REDO03.LOG 執行緒 =1 序列 =28

介質恢復完成, 用時: 00:00:08

完成 recover 於 13-9月 -12

RMAN>




12:以resetlogs方式開啟db


RMAN> alter database open resetlogs;

資料庫已開啟




13:另外開一個sql視窗,驗證資料


SQL> connect test/test;

已連線。

SQL> select * from test;

        ID NAME

---------- ----------

         1 a

         2 b

         3 c

         4 d

         5 c

         6 c

已選擇6行。



以resetlogs方式開啟資料庫以後,需要對庫做一次全備




14:增加temp臨時檔案


從dselect tablespace_name from dba_tablespaces 檢視可以查到臨時表空間的名字,但是在實際的儲存目錄上,卻沒有發現臨時表空間


SQL> select name from v$tempfile;

NAME

------------------------------------------

C:\ORADATA\ORCL\TEMP01.DBF



然後增加臨時表空間temp的資料檔案,大小依據之前的臨時表空間大小


SQL> alter tablespace temp add tempfile 'C:\ORADATA\JIM\TEMP01.DBF' size 100m;

SQL> select name from v$tempfile;

NAME

-------------------------------------------------------------------------------

C:\ORADATA\ORCL\TEMP01.DBF

C:\ORADATA\JIM\TEMP01.DBF



刪除控制檔案中關於臨時表空間的相關記錄


SQL> alter database tempfile 'C:\ORADATA\ORCL\TEMP01.DBF' offline;

資料庫已更改。

SQL> alter database tempfile 'C:\ORADATA\ORCL\TEMP01.DBF' drop including datafil

es;

資料庫已更改。

SQL> select name from v$tempfile;

NAME

--------------------------------------------------------------------------------

C:\ORADATA\JIM\TEMP01.DBF


至此,用rman遷移資料全部ok


參考連結    http://blog.csdn.net/tianlesoftware/article/details/6245209

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

相關文章