在oracle备份数据库,Oracle在A机器上备份了数据库,到B机器上恢复时,怎么进行下去?...
最近幾天自己寫了個關于RMAN異機恢復的筆記希望對你有幫助
不對的地方還望指正
1,在源數據庫做一次全備(包含控制文件,歸檔日志文件)
rman>run {
>allocate channel d1 type disk;
>allocate channel d2 type disk;
>backup full database format 'f:\orcl2data.bak'
>tag='full' include current controlfile;
>sql 'alter system archive log current';
>backup archivelog all format 'f:\orcl2log.bak' delete all input;
>release channel d2;
>release channel d1;
}
2, 在源數據庫上創建pfile文件,并拷貝至目標機器上任何位置
sql>create pfile=f:\orcl2pfile.ora from spfile;
3,windowx在CMD窗口輸入(linux可取消此步驟)
oradim -new -sid reportvi
set ORACLE_SIDD=reportvi
sqlplus / as sysdba
--使用保存的pfile文件啟動到numount狀態
sql>startup nomount pfile='xxxx'
sql>EXIT
--將剛才備份的f:\orcl2data.bak、f:\orcl2log.bak拷貝至目標機器上XXXXX路徑
rman target/
--恢復控制文件
rman>restore controlfile from 'YYYY';
--恢復控制文件之后就可以加載恢復目錄了
rman>catalog start with 'XXXXXX'
rman>list bakcup
--刪除狀態為expired 防止恢復數據文件的時候找到多個無效的備份
rman>delete expired backup
--再重新加載恢復目錄
rman>catalog start with 'XXXXXX'
RMAN> run{
>allocate channel d1 type disk;
>set newname for datafile 1 to 'F:\report_data\reportvi\SYSTEM01.DBF';
>set newname for datafile 2 to 'f:\report_date\reportvi\UNDOTBS01.DBF';
>set newname for datafile 3 to 'f:\report_date\reportvi\SYSAUX01.DBF';
>set newname for datafile 4 to 'f:\report_date\reportvi\USERS01.DBF';
>restore database;
>switch datafile all;
>recover database;
>release channel d1;
}
這里的datafile 1,2,3,4對應的數據文件名稱一定要和源庫上的對應
比如datafile 1對應的system01 恢復的時候絕對不能恢復成sysaux01
run{
allocate channel d1 type disk;
set newname for datafile 1 to 'F:\report_data\reportvi\SYSTEM01.DBF';
set newname for datafile 2 to 'f:\report_date\reportvi\UNDOTBS01.DBF';
set newname for datafile 3 to 'f:\report_date\reportvi\SYSAUX01.DBF';
set newname for datafile 4 to 'f:\report_date\reportvi\USERS01.DBF';
restore database;
switch datafile all;
recover database;
release channel d1;
}
--在執行recover database的時候會報如下錯誤 是因為沒有源數據庫的redo文件導致
啟動 recover 于 22-3月 -13
使用通道 ORA_DISK_1
正在開始介質的恢復
無法找到存檔日志
存檔日志線程 =1 序列=144
MAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover 命令 (在 03/22/2013 14:14:54 上) 失敗
RMAN-06054: 介質恢復正請求未知的日志: 線程 1 seq 144 lowscn 3022894
如果要做到與源庫的數據一致,就把源庫關閉拷貝3個redo文件到目標數據庫目錄下
sql>alter databse open;
ORA-01589: 要打開數據庫則必須使用 RESETLOGS 或 NORESETLOGS 選項
--剛剛做過恢復必須使用resetlogs 選項打開數據庫
sql>alter database open resetlog;
alter database open resetlogs
*
第 1 行出現錯誤:
ORA-00344: 無法重新創建聯機日志
'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDO01.LOG'
ORA-27040: 文件創建錯誤, 無法創建文件
OSD-04002: 無法打開文件
O/S-Error: (OS 3) 系統找不到指定的路徑。
SQL> alter database rename file 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDO01.LOG' to 'F:\oracle\product\10.2.0\oradata\orcl2\redo01.log';
數據庫已更改。
SQL> alter database rename file 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDO02.LOG' to 'F:\oracle\product\10.2.0\oradata\orcl2\redo02.log';
數據庫已更改。
SQL> alter database rename file 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDO03.LOG' to 'F:\oracle\product\10.2.0\oradata\orcl2\redo03.log';
數據庫已更改。
SQL> alter database open resetlogs;
數據庫已更改。
總結
以上是生活随笔為你收集整理的在oracle备份数据库,Oracle在A机器上备份了数据库,到B机器上恢复时,怎么进行下去?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle 创建临时表报权限不足,OR
- 下一篇: oracle数据库sql培训,Oracl