备份与恢复--从备份的归档日志中恢复数据

在恢复过程中,Oracle利用归档日志进行恢复,默认情况下,Oracle会在归档日志的产生目录来寻找归档日志文件。


如果在恢复时发现归档日志被备份并从归档目录删除,则Oracle在恢复过程中无法找到指定的归档日志文件。

[@more@]

SQL> alter tablespace users offline;

Tablespace altered.


备份当前的归档日志
SQL> host cp /u01/app/oracle/admin/orcl/archive/*.* /u01/backup/archive

移除当前的归档日志
SQL> host rm /u01/app/oracle/admin/orcl/archive/*.*

用备份的datafile替换当前的
SQL> host cp /u01/backup/users01.dbf /u01/app/oracle/oradata/orcl


SQL> recover tablespace users;
ORA-00279: change 685260 generated at 01/13/2009 09:45:47 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/admin/orcl/archive/1_23_675592897.dbf
ORA-00280: change 685260 for thread 1 is in sequence #23


Specify log: {=suggested | filename | AUTO | CANCEL}
AUTO
ORA-00308: cannot open archived log '/u01/app/oracle/admin/orcl/archive/1_23_675592897.dbf'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3


ORA-00308: cannot open archived log '/u01/app/oracle/admin/orcl/archive/1_23_675592897.dbf'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3

这时做recovery时提示找不到归档日志。

SQL> host cp /u01/backup/archive/*.* /u01/app/oracle/admin/orcl/archive

SQL> recover tablespace users;
ORA-00279: change 685260 generated at 01/13/2009 09:45:47 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/admin/orcl/archive/1_23_675592897.dbf
ORA-00280: change 685260 for thread 1 is in sequence #23


Specify log: {=suggested | filename | AUTO | CANCEL}
AUTO
ORA-00279: change 685550 generated at 01/13/2009 10:00:56 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/admin/orcl/archive/1_24_675592897.dbf
ORA-00280: change 685550 for thread 1 is in sequence #24
ORA-00278: log file '/u01/app/oracle/admin/orcl/archive/1_23_675592897.dbf' no longer needed

for this recovery


ORA-00279: change 685552 generated at 01/13/2009 10:00:56 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/admin/orcl/archive/1_25_675592897.dbf
ORA-00280: change 685552 for thread 1 is in sequence #25
ORA-00278: log file '/u01/app/oracle/admin/orcl/archive/1_24_675592897.dbf' no longer needed

for this recovery


ORA-00279: change 685603 generated at 01/13/2009 10:02:38 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/admin/orcl/archive/1_26_675592897.dbf
ORA-00280: change 685603 for thread 1 is in sequence #26
ORA-00278: log file '/u01/app/oracle/admin/orcl/archive/1_25_675592897.dbf' no longer needed

for this recovery


Log applied.
Media recovery complete.

将归档日志都拷贝回来后,recovery成功。


如果归档目录的空间不足,无法将归档日志拷贝到归档目录下,则可以使用下面三种方法进行恢复。


方法一:分别指定备份的归档日志

SQL> host rm /u01/app/oracle/admin/orcl/archive/*.*

SQL> host cp /u01/backup/users01.dbf /u01/app/oracle/oradata/orcl

SQL> recover tablespace users;
ORA-00279: change 685260 generated at 01/13/2009 09:45:47 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/admin/orcl/archive/1_23_675592897.dbf
ORA-00280: change 685260 for thread 1 is in sequence #23


Specify log: {=suggested | filename | AUTO | CANCEL}
/u01/backup/archive/1_23_675592897.dbf
ORA-00279: change 685550 generated at 01/13/2009 10:00:56 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/admin/orcl/archive/1_24_675592897.dbf
ORA-00280: change 685550 for thread 1 is in sequence #24
ORA-00278: log file '/u01/backup/archive/1_23_675592897.dbf' no longer needed for this

recovery


Specify log: {=suggested | filename | AUTO | CANCEL}
/u01/backup/archive/1_24_675592897.dbf
ORA-00279: change 685552 generated at 01/13/2009 10:00:56 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/admin/orcl/archive/1_25_675592897.dbf
ORA-00280: change 685552 for thread 1 is in sequence #25
ORA-00278: log file '/u01/backup/archive/1_24_675592897.dbf' no longer needed for this

recovery


Specify log: {=suggested | filename | AUTO | CANCEL}
/u01/backup/archive/1_253_675592897.dbf
ORA-00308: cannot open archived log '/u01/backup/archive/1_253_675592897.dbf'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3


Specify log: {=suggested | filename | AUTO | CANCEL}
/u01/backup/archive/1_25_675592897.dbf
ORA-00279: change 685603 generated at 01/13/2009 10:02:38 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/admin/orcl/archive/1_26_675592897.dbf
ORA-00280: change 685603 for thread 1 is in sequence #26
ORA-00278: log file '/u01/backup/archive/1_25_675592897.dbf' no longer needed for this

recovery


Specify log: {=suggested | filename | AUTO | CANCEL}
/u01/backup/archive/1_26_675592897.dbf
Log applied.
Media recovery complete.

第一种方法也是最简单的一种方法,在恢复过程中直接给出每个归档日志包含当前路径的文件名。这种方

法适合需要恢复的重做日志数量不多。

方法二:

SQL> host cp /u01/backup/users01.dbf /u01/app/oracle/oradata/orcl

SQL> alter database recover automatic from '/u01/backup/archive' tablespace users;

Database altered.

SQL> alter tablespace users online;

Tablespace altered.

SQL> select count(*) from jglu.a;

COUNT(*)
----------
2


第二种方法是使用ALTER DATABASE RECOVER FROM语句指定恢复时读取归档日志的目录。

看看日志记录的信息,这种方法比较快捷

Tue Jan 13 10:15:43 2009
alter database recover automatic from '/u01/backup/archive' tablespace users
Tue Jan 13 10:15:43 2009
Media Recovery Start
Tue Jan 13 10:15:43 2009
Media Recovery Log /u01/backup/archive/1_23_675592897.dbf
Tue Jan 13 10:15:43 2009
Media Recovery Log /u01/backup/archive/1_24_675592897.dbf
Tue Jan 13 10:15:43 2009
Media Recovery Log /u01/backup/archive/1_25_675592897.dbf
Tue Jan 13 10:15:43 2009
Media Recovery Log /u01/backup/archive/1_26_675592897.dbf
Tue Jan 13 10:15:43 2009
Recovery of Online Redo Log: Thread 1 Group 2 Seq 27 Reading mem 0
Mem# 0 errs 0: /u01/app/oracle/oradata/orcl/redo02.log
Tue Jan 13 10:15:44 2009
Recovery of Online Redo Log: Thread 1 Group 3 Seq 28 Reading mem 0
Mem# 0 errs 0: /u01/app/oracle/oradata/orcl/redo03.log
Tue Jan 13 10:15:44 2009
Recovery of Online Redo Log: Thread 1 Group 1 Seq 29 Reading mem 0
Mem# 0 errs 0: /u01/app/oracle/oradata/orcl/redo01.log
Tue Jan 13 10:15:44 2009
Media Recovery Complete (orcl)
Completed: alter database recover automatic from '/u01/backup/archive' tablespace users

第三种方法:

SQL> alter tablespace users offline;

Tablespace altered.

SQL> host cp /u01/backup/users01.dbf /u01/app/oracle/oradata/orcl

SQL> set logsource '/u01/backup/archive'
SQL> recover tablespace users;
ORA-00279: change 685260 generated at 01/13/2009 09:45:47 needed for thread 1
ORA-00289: suggestion : /u01/backup/archive/1_23_675592897.dbf
ORA-00280: change 685260 for thread 1 is in sequence #23


Specify log: {=suggested | filename | AUTO | CANCEL}
AUTO
ORA-00279: change 685550 generated at 01/13/2009 10:00:56 needed for thread 1
ORA-00289: suggestion : /u01/backup/archive/1_24_675592897.dbf
ORA-00280: change 685550 for thread 1 is in sequence #24
ORA-00278: log file '/u01/backup/archive/1_23_675592897.dbf' no longer needed for this

recovery


ORA-00279: change 685552 generated at 01/13/2009 10:00:56 needed for thread 1
ORA-00289: suggestion : /u01/backup/archive/1_25_675592897.dbf
ORA-00280: change 685552 for thread 1 is in sequence #25
ORA-00278: log file '/u01/backup/archive/1_24_675592897.dbf' no longer needed for this

recovery


ORA-00279: change 685603 generated at 01/13/2009 10:02:38 needed for thread 1
ORA-00289: suggestion : /u01/backup/archive/1_26_675592897.dbf
ORA-00280: change 685603 for thread 1 is in sequence #26
ORA-00278: log file '/u01/backup/archive/1_25_675592897.dbf' no longer needed for this

recovery


Log applied.
Media recovery complete.

SQL> alter tablespace users online;

Tablespace altered.

SQL> select * from jglu.a;

ID
----------
1
2


这种方法是利用SQLPLUS的SET命令设置读取归档日志的目录。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/271283/viewspace-1016137/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/271283/viewspace-1016137/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值