日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

使用RMAN恢复数据库

發(fā)布時(shí)間:2025/7/14 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用RMAN恢复数据库 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?http://blog.163.com/scott_guo/blog/static/1810260832011112832357453/

?

由于需要搭建一個(gè)測(cè)試環(huán)境,把上周末的一個(gè)全備拿出來(lái)做恢復(fù),首先備份一下測(cè)試庫(kù)上現(xiàn)有的重要表:

exp banping/bangping@ERPTEST file=f:\20090905.dmp tables=(msgtaskdef,rptcol,rptdata)

然后把全備的備份片文件和控制文件COPY過(guò)來(lái):

rcp p5b1:/orabak/ctl_file/c-2400249746-20090828-02 /orabak
rcp p5b1:/orabak/arch/* /orabak

文件屬主給Oracle:

p5b2@/orabak#chown oracle.dba *

然后啟動(dòng)數(shù)據(jù)庫(kù)到nomount狀態(tài),進(jìn)入Rman環(huán)境,restore控制文件:

$ rman target /
RMAN> restore controlfile from '/orabak/ c-2400249746-20090828-02';

啟動(dòng)到mount狀態(tài):

RMAN> sql 'alter database mount';

根據(jù)測(cè)試庫(kù)的環(huán)境重命名數(shù)據(jù)文件的位置:

run {
?allocate channel c1 device type disk;
?allocate channel c2 device type disk;
?set newname for datafile '/dev/rdb_system' to '/u02/oradata/erpdev2/rdb_system';
?set newname for datafile '/dev/rdb_undotbs1' to '/u02/oradata/erpdev2/rdb_undotbs1';
?set newname for datafile '/dev/rdb_sysaux' to '/u02/oradata/erpdev2/rdb_sysaux';
?set newname for datafile '/dev/rdb_undotbs2' to '/u02/oradata/erpdev2/rdb_undotbs2';
?set newname for datafile '/dev/rdb_users' to '/u02/oradata/erpdev2/rdb_users';
?set newname for datafile '/dev/rdb_erp' to '/u02/oradata/erpdev2/rdb_erp';
?set newname for datafile '/dev/rdb_erp_index' to '/u02/oradata/erpdev2/rdb_erp_index';
?set newname for datafile '/dev/rdb_erp_xm' to '/u02/oradata/erpdev2/rdb_erp_xm';
?set newname for datafile '/dev/rdb_erp_ht' to '/u02/oradata/erpdev2/rdb_erp_ht';
?set newname for datafile '/dev/rdb_erp_wl' to '/u02/oradata/erpdev2/rdb_erp_wl';
?set newname for datafile '/dev/rdb_erp_cw' to '/u02/oradata/erpdev2/rdb_erp_cw';
?set newname for datafile '/dev/rdb_erp_zj' to '/u02/oradata/erpdev2/rdb_erp_zj';
?set newname for datafile '/dev/rdb_erp_sp' to '/u02/oradata/erpdev2/rdb_erp_sp';
?set newname for datafile '/dev/rdb_cndwl' to '/u02/oradata/erpdev2/rdb_cndwl';
?set newname for datafile '/dev/rdb_xdwl' to '/u02/oradata/erpdev2/rdb_xdwl';
?set newname for datafile '/dev/rdb_sysaux2' to '/u02/oradata/erpdev2/rdb_sysaux2';
?set newname for datafile '/dev/rdb_erp2' to '/u02/oradata/erpdev2/rdb_erp2';
?set newname for datafile '/dev/rdb_erp_ht2' to '/u02/oradata/erpdev2/rdb_erp_ht2';
?restore database;
?switch datafile all;
}

然后執(zhí)行recover操作:

RMAN> recover database;

這時(shí)數(shù)據(jù)庫(kù)報(bào)錯(cuò)了:

Oracle Error:
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01152: file 1 was not restored from a sufficiently old backup
ORA-01110: data file 1: '/u02/oradata/erpdev2/rdb_system'

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 09/04/2009 14:31:39
RMAN-06053: unable to perform media recovery because of missing log
RMAN-06025: no backup of log thread 2 seq 106090 lowscn 10440022578 found to restore
RMAN-06025: no backup of log thread 2 seq 106089 lowscn 10440021828 found to restore
RMAN-06025: no backup of log thread 2 seq 106088 lowscn 10440020848 found to restore
RMAN-06025: no backup of log thread 2 seq 106087 lowscn 10440018779 found to restore
RMAN-06025: no backup of log thread 2 seq 106086 lowscn 10440007985 found to restore
RMAN-06025: no backup of log thread 2 seq 106085 lowscn 10439981571 found to restore
RMAN-06025: no backup of log thread 2 seq 106084 lowscn 10439980750 found to restore
RMAN-06025: no backup of log thread 1 seq 99356 lowscn 10440022588 found to restore
RMAN-06025: no backup of log thread 1 seq 99355 lowscn 10440021839 found to restore
RMAN-06025: no backup of log thread 1 seq 99354 lowscn 10440020856 found to restore
RMAN-06025: no backup of log thread 1 seq 99353 lowscn 10440018824 found to restore
RMAN-06025: no backup of log thread 1 seq 99352 lowscn 10440008036 found to restore
RMAN-06025: no backup of log thread 1 seq 99351 lowscn 10439981670 found to restore
RMAN-06025: no backup of log thread 1 seq 99350 lowscn 10439980746 found to restore

看來(lái)有些備份片不全,于是把全備后的備份片弄過(guò)來(lái)放到/orabak/arch目錄,先注冊(cè)到控制文件:

RMAN> catalog start with '/orabak/arch';

searching for all files that match the pattern /orabak/arch

List of Files Unknown to the Database
=====================================
File Name: /orabak/arch/CNDERPDB_arch_20090829_696171285_15256_1
File Name: /orabak/arch/CNDERPDB_arch_20090829_696171311_15258_1
File Name: /orabak/arch/CNDERPDB_arch_20090829_696171617_15257_1
File Name: /orabak/arch/CNDERPDB_arch_20090829_696171922_15259_1
File Name: /orabak/arch/CNDERPDB_arch_20090829_696172209_15260_1
File Name: /orabak/arch/CNDERPDB_arch_20090829_696172385_15261_1

Do you really want to catalog the above files (enter YES or NO)? y
cataloging files...
cataloging done

List of Cataloged Files
=======================
File Name: /orabak/arch/CNDERPDB_arch_20090829_696171285_15256_1
File Name: /orabak/arch/CNDERPDB_arch_20090829_696171311_15258_1
File Name: /orabak/arch/CNDERPDB_arch_20090829_696171617_15257_1
File Name: /orabak/arch/CNDERPDB_arch_20090829_696171922_15259_1
File Name: /orabak/arch/CNDERPDB_arch_20090829_696172209_15260_1
File Name: /orabak/arch/CNDERPDB_arch_20090829_696172385_15261_1

重新進(jìn)行recover操作:

RMAN> recover database;

Starting recover at 07-SEP-09
using channel ORA_DISK_1

starting media recovery

archive log thread 1 sequence 99417 is already on disk as file /u02/ora_arch/1_99417_640266118.dbf
unable to find archive log
archive log thread=2 sequence=106154
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 09/07/2009 08:59:16
RMAN-06054: media recovery requesting unknown log: thread 2 seq 106154 lowscn 10444622603

繼續(xù)找不到需要的備份片,嘗試了幾次后發(fā)現(xiàn)會(huì)一直這樣找下去:

unable to find archive log
archive log thread=1 sequence=99470
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 09/07/2009 09:29:02
RMAN-06054: media recovery requesting unknown log: thread 1 seq 99470 lowscn 10444784948

由于測(cè)試用,指定SCN恢復(fù):

RMAN> run {
2>????????????? set until scn 10444783788;
3>????????????? recover database ;
4> }

executing command: SET until clause

Starting recover at 07-SEP-09
using channel ORA_DISK_1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 09/07/2009 09:38:44
RMAN-06556: datafile 1 must be restored from backup older than scn 10444783788

這個(gè)通過(guò)list backup of archivelog all找出來(lái)的SCN竟然不對(duì),繼續(xù)把備份片拿回來(lái),執(zhí)行到剛才說(shuō)缺失的10444784948號(hào)SCN進(jìn)行恢復(fù):

RMAN> run {
2>????????????? set until scn 10444784948;
3>????????????? recover database ;
4> }

executing command: SET until clause

Starting recover at 07-SEP-09
using channel ORA_DISK_1

starting media recovery

archive log thread 2 sequence 106205 is already on disk as file /u02/ora_arch/2_106205_640266118.dbf
channel ORA_DISK_1: starting archive log restore to default destination
channel ORA_DISK_1: restoring archive log
archive log thread=1 sequence=99470
channel ORA_DISK_1: reading from backup piece /orabak/arch/CNDERPDB_arch_20090830_696257683_15267_1
channel ORA_DISK_1: restored backup piece 1
piece handle=/orabak/arch/CNDERPDB_arch_20090830_696257683_15267_1 tag=TAG20090830T130014
channel ORA_DISK_1: restore complete, elapsed time: 00:00:03
archive log filename=/u02/ora_arch/1_99470_640266118.dbf thread=1 sequence=99470
archive log filename=/u02/ora_arch/2_106205_640266118.dbf thread=2 sequence=106205
media recovery complete, elapsed time: 00:00:03
Finished recover at 07-SEP-09

嘗試打開后報(bào)錯(cuò):

RMAN> alter database open;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of alter db command at 09/07/2009 09:57:10
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

RMAN> alter database open resetlogs;

RMAN-06900: WARNING: unable to generate V$RMAN_STATUS or V$RMAN_OUTPUT row
RMAN-06901: WARNING: disabling update of the V$RMAN_STATUS and V$RMAN_OUTPUT rows
ORACLE error from target database:
ORA-19921: maximum number of 64 rows exceeded

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of alter db command at 09/07/2009 09:57:20
ORA-00344: unable to re-create online log '/dev/rdb_redo1_11'
ORA-27040: file create error, unable to create file
IBM AIX RISC System/6000 Error: 13: Permission denied

按照備份的文件,先在測(cè)試庫(kù)建立一系列redo文件:

SQL> alter database rename file '/dev/rdb_redo1_11' to '/u02/oradata/erpdev2/rdb_redo1_1';

Database altered.

建立臨時(shí)表空間文件,可以刪除不必要的:

SQL> select name from v$tempfile;

NAME
--------------------------------------------------------------------------------
/dev/rdb_erp_temp
/dev/rdb_erp_temp2
/dev/rdb_erp_temp3

SQL> alter database rename file '/dev/rdb_erp_temp' to '/u02/oradata/erpdev2/rdb_erp_temp';

Database altered.

SQL> select name from v$tempfile;

NAME
--------------------------------------------------------------------------------
/u02/oradata/erpdev2/rdb_erp_temp
/dev/rdb_erp_temp2
/dev/rdb_erp_temp3

SQL> alter database tempfile '/dev/rdb_erp_temp2' drop including datafiles;

Database altered.

SQL> alter database tempfile '/dev/rdb_erp_temp3' drop including datafiles;

Database altered.

SQL> select name from v$tempfile;

NAME
--------------------------------------------------------------------------------
/u02/oradata/erpdev2/rdb_erp_temp

由于是不完全恢復(fù),要resetlogs打開:

SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
SQL> alter database open resetlogs;

Database altered.

查看歸檔模式:

SQL> archive log list????
Database log mode????????????? Archive Mode
Automatic archival???????????? Enabled
Archive destination??????????? /u02/ora_arch/
Oldest online log sequence???? 0
Next log sequence to archive?? 1
Current log sequence?????????? 1

關(guān)閉歸檔:

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

Total System Global Area? 603979776 bytes
Fixed Size????????????????? 2074704 bytes
Variable Size???????????? 318769072 bytes
Database Buffers????????? 276824064 bytes
Redo Buffers??????????????? 6311936 bytes
Database mounted.
SQL> alter database noarchivelog;

Database altered.

SQL> alter database open;

Database altered.

轉(zhuǎn)載于:https://blog.51cto.com/itbull/1180204

總結(jié)

以上是生活随笔為你收集整理的使用RMAN恢复数据库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。