在oracle备份数据库,Oracle在A机器上备份了数据库,到B机器上恢复时,怎么进行下去?...
最近幾天自己寫了個(gè)關(guān)于RMAN異機(jī)恢復(fù)的筆記希望對(duì)你有幫助
不對(duì)的地方還望指正
1,在源數(shù)據(jù)庫(kù)做一次全備(包含控制文件,歸檔日志文件)
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, 在源數(shù)據(jù)庫(kù)上創(chuàng)建pfile文件,并拷貝至目標(biāo)機(jī)器上任何位置
sql>create pfile=f:\orcl2pfile.ora from spfile;
3,windowx在CMD窗口輸入(linux可取消此步驟)
oradim -new -sid reportvi
set ORACLE_SIDD=reportvi
sqlplus / as sysdba
--使用保存的pfile文件啟動(dòng)到numount狀態(tài)
sql>startup nomount pfile='xxxx'
sql>EXIT
--將剛才備份的f:\orcl2data.bak、f:\orcl2log.bak拷貝至目標(biāo)機(jī)器上XXXXX路徑
rman target/
--恢復(fù)控制文件
rman>restore controlfile from 'YYYY';
--恢復(fù)控制文件之后就可以加載恢復(fù)目錄了
rman>catalog start with 'XXXXXX'
rman>list bakcup
--刪除狀態(tài)為expired 防止恢復(fù)數(shù)據(jù)文件的時(shí)候找到多個(gè)無(wú)效的備份
rman>delete expired backup
--再重新加載恢復(fù)目錄
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對(duì)應(yīng)的數(shù)據(jù)文件名稱一定要和源庫(kù)上的對(duì)應(yīng)
比如datafile 1對(duì)應(yīng)的system01 恢復(fù)的時(shí)候絕對(duì)不能恢復(fù)成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;
}
--在執(zhí)行recover database的時(shí)候會(huì)報(bào)如下錯(cuò)誤 是因?yàn)闆]有源數(shù)據(jù)庫(kù)的redo文件導(dǎo)致
啟動(dòng) recover 于 22-3月 -13
使用通道 ORA_DISK_1
正在開始介質(zhì)的恢復(fù)
無(wú)法找到存檔日志
存檔日志線程 =1 序列=144
MAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover 命令 (在 03/22/2013 14:14:54 上) 失敗
RMAN-06054: 介質(zhì)恢復(fù)正請(qǐng)求未知的日志: 線程 1 seq 144 lowscn 3022894
如果要做到與源庫(kù)的數(shù)據(jù)一致,就把源庫(kù)關(guān)閉拷貝3個(gè)redo文件到目標(biāo)數(shù)據(jù)庫(kù)目錄下
sql>alter databse open;
ORA-01589: 要打開數(shù)據(jù)庫(kù)則必須使用 RESETLOGS 或 NORESETLOGS 選項(xiàng)
--剛剛做過(guò)恢復(fù)必須使用resetlogs 選項(xiàng)打開數(shù)據(jù)庫(kù)
sql>alter database open resetlog;
alter database open resetlogs
*
第 1 行出現(xiàn)錯(cuò)誤:
ORA-00344: 無(wú)法重新創(chuàng)建聯(lián)機(jī)日志
'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDO01.LOG'
ORA-27040: 文件創(chuàng)建錯(cuò)誤, 無(wú)法創(chuàng)建文件
OSD-04002: 無(wú)法打開文件
O/S-Error: (OS 3) 系統(tǒng)找不到指定的路徑。
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';
數(shù)據(jù)庫(kù)已更改。
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';
數(shù)據(jù)庫(kù)已更改。
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';
數(shù)據(jù)庫(kù)已更改。
SQL> alter database open resetlogs;
數(shù)據(jù)庫(kù)已更改。
總結(jié)
以上是生活随笔為你收集整理的在oracle备份数据库,Oracle在A机器上备份了数据库,到B机器上恢复时,怎么进行下去?...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: oracle 创建临时表报权限不足,OR
- 下一篇: oracle数据库sql培训,Oracl