恢複資料庫需要準備的檔案:rman完整備份(包括資料檔案、記錄檔、控制檔案、參數檔案),記錄來源資料庫的DBID
一、安裝資料庫ORACLE資料庫軟體並建立跟來源資料庫同名和資料庫SID並修改資料庫DBID跟來源資料庫DBID一樣,建立跟來源資料庫伺服器相同的資料檔案目錄、記錄檔目錄、控制檔案目錄。
二、修改DBID:
SQL>CONN / AS SYSDBA;
SQL> select dbid from v$database;
DBID
----------
1465764760
SQL> show parameter db_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string eygle
SQL> exec dbms_backup_restore.nidbegin('eygle','EYGLE','3935589514','1465764760',0,0,10)
PL/SQL 過程已成功完成。
SQL> select dbid from v$database;
DBID
----------
1465764760
SQL> variable a number;
SQL> variable b number
SQL> variable c number;
SQL> exec dbms_backup_restore.nidprocessdf(0,0,:a,:b,:c);
PL/SQL 過程已成功完成。
SQL> print :a
A
----------
0
SQL> print :b
B
----------
1
SQL> print :c
C
----------
1
SQL> exec dbms_backup_restore.nidprocesscf(:a,:b);
PL/SQL 過程已成功完成。
SQL> print :a
A
----------
1
SQL> print :b
B
----------
1
SQL> exec dbms_backup_restore.nidend;
PL/SQL 過程已成功完成。
SQL> select dbid from v$database;
DBID
----------
3935589514
三、DBID修改成功後,依次恢複參數檔案、控制檔案、資料檔案、記錄檔:
SQL>startup nomount force
SQL>host;
C:\Documents and Settings\Administrator>rman target / 恢複 管理器: Release 10.2.0.1.0 - Production on 星期三 9月 1 23:19:41 2010 Copyright (c) 1982, 2005, Oracle. All rights reserved. 串連到目標資料庫: study (未裝載)
----恢複參數檔案
RMAN> restore spfile to pfile 'D:\ORACLE\DATABASE\INITSTORDA.ORA' from 'D:\ORACLE\backup\C-3350757905-20090826-03';
--恢複控制檔案 RMAN> restore controlfile from 'F:\FULL-x\CONTROL7286087020.CTL'; 啟動 restore 於 01-9月 -10
使用目標資料庫控制檔案替代恢複目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK 通道 ORA_DISK_1: 正在複原控制檔案
通道 ORA_DISK_1: 恢複完成, 用時: 00:00:06
輸出檔案名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\CONTROL01.CTL
輸出檔案名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\CONTROL02.CTL
輸出檔案名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\CONTROL03.CTL
完成 restore 於 01-9月 -10 RMAN> alter database mount; 資料庫已裝載
釋放的通道: ORA_DISK_1 RMAN> ----恢複所有可用的資料檔案 SQL> select file#,name from v$datafile; FILE# NAME
---------- ------------------------------------------------------------
1 D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\SYSTEM01.DBF
2 D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\UNDOTBS01.DBF
3 D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\SYSAUX01.DBF
4 D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\USERS01.DBF
5 D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\STREAMS_TBS01.DBF
6 D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\PHONE01.DBF
7 D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\PHONE02.DBF 已選擇7行。
RMAN> restore datafile 1,2,3,4,5,6; 啟動 restore 於 01-9月 -10
使用通道 ORA_DISK_1 通道 ORA_DISK_1: 正在開始恢複資料檔案備份組
通道 ORA_DISK_1: 正在指定從備份組恢複的資料檔案
正將資料檔案00001恢複到D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\SYSTEM01.DBF
正將資料檔案00002恢複到D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\UNDOTBS01.DBF
正將資料檔案00003恢複到D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\SYSAUX01.DBF
正將資料檔案00004恢複到D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\USERS01.DBF
正將資料檔案00005恢複到D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\STREAMS_TBS01.DBF
正將資料檔案00006恢複到D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\PHONE01.DBF
通道 ORA_DISK_1: 正在讀取備份段 F:\FULL-X\0CLMRBQU_1_1
通道 ORA_DISK_1: 已恢複備份段 1
段控制代碼 = F:\FULL-X\0CLMRBQU_1_1 標記 = TAG20100901T231645
通道 ORA_DISK_1: 恢複完成, 用時: 00:01:15
完成 restore 於 01-9月 -10 ----恢複歸檔記錄檔 RMAN> run{
2> set archivelog destination to '/racbackup';
3> restore archivelog all;
4> } ----恢複資料庫 SQL> conn /as sysdba SQL> recover database using backup controlfile until cancel; ----指定 resetlogs關鍵字,啟動資料庫到open狀態
SQL> alter database open resetlogs; 至此,資料庫恢複正常
SQL>CONN / AS SYSDBA; ----修改使用者密碼 SQL>alter user SYS identified by SYS; ----修改密碼檔案方法 C:\Documents and Settings\Administrator>orapwd file=C:\Oracle\product\11.2.0\dbhome_1\database\PWDdmsasc.ora password=SYS force=y