用户管理的备份恢复

 

三、Performing user-managed restore operations

1About user-managed restore operations

丢失一个或多个数据文件:恢复+修复

丢失所有控制文件:恢复或重建(都需要手工加上临时表空间中的数据文件),然后以resetlogs打开数据库。

一个控制文件丢失:使用其他控制文件的覆盖,或修改SPFILE

一个或多个归档日志文件丢失:只能做不完全恢复,然后以resetlogs打开数据库。

SPFILE丢失:使用PFILE打开或重建SPFILE

2Keeping records for use in a restore scenario

记录如下文件的位置:数据文件(v$datafile)、控制文件(v$controlfile)、在线重做日志文件(v$logfile)、归档日志文件(v$archived_log)、初始化参数文件、密码文件、网络配置文件。

列出表格,将备份文件与系统中文件一一对应上。

3Determining which datafiles require recovery

查询视图v$recover_file,确定需要recovery的数据文件。若控制文件是从备份中恢复的,或介质错误后重建的,则该视图中不包含如上信息。

4Restore datafiles

1)根据3中方法,查询v$recover_file视图,确定需要恢复的文件

2)将该文件所在表空间OFFLINE

3)恢复该数据文件

4)修复数据文件或表空间

5)将表空间ONLINE

5Re-creating datafiles when backups are unavailable

数据文件损坏,且备份不可用,也可以恢复该数据文件。条件:

*        创建该数据文件后的所有归档日志文件可用

*        控制文件中包含该数据文件的信息(控制文件是当前文件,或从备份中恢复,但备份中也包含该数据文件)

重建数据文件步骤:

(1)    创建一个新的空数据文件替换掉损坏文件。例如文件’/disk1/users1.f’损坏,则在disk2上重建该文件:

Alter database create datafile ‘/disk1/users1.f’ as ‘/disk2/users1.f’;

新创建的文件原来大小相同,原来的数据文件被重命名。

(2)    修复该数据文件

Recover datafile ‘disk2/user1.f’;

(3)    用损坏文件创建后的所有归档日志进行修复。

Note:不可重建system表空间中的数据文件,because the necessary redo data is not available.

6Restoring and Re-creating control files

若在数据库运行时一个或多个控制文件损坏,则ORACLE继续运行,直到后台进程需要访问控制文件时自动shutdown

丢失多路控制文件中的一个

使用正常文件覆盖损坏文件,或修改SPFILE

丢失所有控制文件,有备份

恢复过程取决于在线重做日志文件是否可用

相关在线

日志状态

数据文件

状态

恢复方式

可用

当前

使用备份恢复控制文件,指定在线日志完全修复,以RESETLOGS打开数据库。

不可用

当前

重建控制文件,以RESETLOGS打开数据库。

可用

备份

使用备份恢复控制文件,指定在线日志完全修复,以RESETLOGS打开数据库。

不可用

备份

使用备份恢复控制文件,执行不完全修复,以RESETLOGS打开数据库。

恢复步骤:

(1)    关闭数据库

(2)    使用备份控制文件覆盖到现有位置

(3)    启动数据库到MOUNT

(4)    使用备份控制文件修复,若为不完全修复,则使用until cancel选项

Recover database using backup controlfile [until cancel];

(5)    使用auto选项应用归档日志。若提示无法找到需要的归档日志,则可能该文件尚未归档,一个一个地指定在线重做日志文件,直到找到合适的。

如果由于某些原因,在线重做日志文件无法访问,则可以直接结束修复过程。注意如果所有数据文件为当前文件,且需要在线日志中的REDO信息修复,则必须应用在线日志修复,否则无法打开数据库。若在线重做日志不可用,则必须重建控制文件(相当于丢失所有控制文件且无备份)。

(6)    使用RESETLOGS打开数据库

(7)    添加临时表空间的数据文件

(8)    立即做全库备份

丢失所有控制文件,无备份

此时若在线日志文件完好,则重建控制文件,修复数据库,打开数据库(不需要RESETLOGS)。

步骤:

(1)    NOMOUNT数据库

(2)    重建控制文件(默认字符集为US7ASCII,需要指定)

(3)    MOUNT数据库后正常修复(不使用控制文件修复)

Recover database;

(4)    打开数据库(不使用resetlogs

Alter database open;

(5)    立即备份控制文件

Alter database backup controlfile to ‘….’ [reuse];

(6)    添加临时表空间中的数据文件

问题:使用备份控制文件恢复,必须以RESETLOGS打开数据库。则以前的全库备份失效,需要重新进行全库备份;重建控制文件恢复,可以用NORESETLOGS方式打开数据库,此时v$log中日志序列号并未重置,则以前的归档日志仍可用。但v$archived_log中丢失部分记录,是否有影响?

7Restoring archived redo logs

当执行介质修复时,必须的归档日志文件必须在磁盘上。恢复步骤:

(1)    查询v$archived_logv$recovery_log视图,确定需要的归档日志。

若某数据文件需要修复,但无备份,则需要自该数据文件创建以来的所有归档日志。

V$archived_log视图保存所有归档日志文件的名称。

V$recovery_log视图列出修复需要的归档日志名称。

v$recover_file视图列出需要修复的数据文件)

注意:v$recovery_log视图仅仅当oracle发现需要使用归档日志修复时才组装(产生数据)。例如:

--1。初始时该视图中无数据

SQL> select *From v$recovery_log;

未选定行

--2。将表空间t_2立即offline,则online时需要修复

SQL> alter tablespace t_2 offline immediate;

表空间已更改。

--3。此时查询该视图,仍无数据。(因为此时oracle未发现需要修复的数据文件)

SQL> select *From v$recovery_log;

未选定行

--4。触发需要修复的数据文件

SQL> alter tablespace t_2 online;

alter tablespace t_2 online

*

ERROR 位于第 1 :

ORA-01113: ?? 14 ??????

ORA-01110: ???? 14: 'D:\ORACLE\ORADATA\TEST\TD_2.DBF'

--5。此时查询该视图,仍无数据。(因为需要的日志尚未归档)

SQL> select *From v$recovery_log;

未选定行

--6。交换日志(测试系统中只有2组日志)

SQL> alter system switch logfile;

系统已更改。

SQL> alter system switch logfile;

系统已更改。

--7。再次查询该视图,发现数据。

SQL> select * from v$recovery_log;

   THREAD#  SEQUENCE# TIME       ARCHIVE_NAME

---------- ---------- ---------- ------------------------------------------------------------------

         1         11 22-7?  -07 D:\ORACLE\ORA92\RDBMS\ARC00011.001

--8。测试完毕,恢复表空间t_2online状态

SQL> recover datafile 14

ORA-00279: ?? 426418638 (? 07/22/2007 14:02:48 ??) ???? 1 ????

ORA-00289: ??: D:\ORACLE\ORA92\RDBMS\ARC00011.001

ORA-00280: ?? 426418638 ???? 1 ???? # 11 ???

 

指定日志: {<RET>=suggested | filename | AUTO | CANCEL}

auto

已应用的日志。

完成介质恢复。

SQL> alter tablespace t_2 online;

表空间已更改。

(2)    将步骤1中的归档日志文件恢复到参数log_archive_dest_1指定的位置。这样修复时ORACLE会自动从该目录寻找相关的归档日志。

(3)    2中的目录所在磁盘空间不足,则可将全部或部分归档日志放到新位置。

在介质恢复前或恢复过程中,可用如下两种方法指定归档日志位置:SQL*PLUS中使用SET语句的LOGSOURCE参数,或ALTER DATABASE语句的RECOVER…FROM参数。例如,

Set logsource /disk1/temp

Alter database recover from ‘/disk1/temp’;

删除恢复的归档日志,以释放磁盘空间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值