ORACLE_OCP之执行恢复
- 文章目标:
- 根据数据库故障的性质执行适当的还原和恢复操作
- 使用介质恢复手段修复数据文件
- 执行完全和不完全或基于“时间点”恢复
一、保证备份可用
二、以NOARCHIVELOG模式还原
- 如果数据库处于NOARCHIVELOG模式,并且丢失了任何或全部的数据文件,请执行以下任务: (普遍做法)
- 如果该实例尚未关闭,则将其关闭。
- 从备份还原整个数据库,包括所有数据和控制文件。并进行相关的恢复操作。
- 打开数据库。
- 通知用户必须重新输入自上次备份以来所做的所有更改。
三、在NOARCHIVELOG模式下使用增量备份进行恢复
- 使用增量备份以NOARCHIVELOG模式执行数据库的有限恢复.
- In SQL*Plus or RMAN:
STARTUP FORCE NOMOUNT; RESTORE CONTROLFILE; ALTER DATABASE MOUNT; RESTORE DATABASE; RECOVER DATABASE NOREDO; ALTER DATABASE OPEN RESETLOGS;
四、执行完全恢复
- 在ARCHIVELOG模式下丢失非关键数据文件:
- 如果数据文件丢失或损坏,并且该文件不属于SYSTEM或UNDO表空间,则可以在数据库打开时还原和恢复丢失的数据文件。
- 恢复到上一次提交为止,并且不需要用户重新输入任何数据。
注:第二点恢复到上一次提交为止,并不会百分百。有一定的可能性会失败。
五、执行完全恢复
- ARCHIVELOG模式下丢失关键数据文件:
- 1.该实例可能会也可能不会自动关闭。 如果不是,请使用SHUTDOWN ABORT关闭实例。.
- 2.Mount the database.
- 3.还原和恢复丢失的数据文件或把所有的数据文件都还原、恢复了.
- 4.Open the database.
六、还原ASM磁盘组
- 使用ASMCMD md_restore命令从元数据备份文件还原ASM磁盘组。
- 如果ASM磁盘组丢失,则可以使用元数据备份文件来重建磁盘组及其元数据,而不必手动重新创建磁盘组。
- Restore options<还原操作>:
- full:创建磁盘组并还原元数据
- nodg:仅还原元数据
- newdg -o:使用与原始磁盘组不同的名称创建磁盘组并恢复元数据
七、还原ASM磁盘组:示例
-
还原元数据文件中的所有磁盘组:
ASMCMD> md_restore /backup/asm_metadata --full
-
仅还原DATA磁盘组的元数据:
ASMCMD> md_restore /backup/asm_metadata --nodg –G data
-
创建一个SQL脚本以还原DATA磁盘组:
ASMCMD> md_restore /backup/asm_metadata –full
–S asmsql.sql –G data
八、您已经知道的内容:恢复镜像副本
- RMAN可以通过使用增量备份来恢复镜像副本:
- 镜像副本将使用所有更改进行更新,直到增量备份的SCN。
- 增量备份减少了介质恢复所需的时间。
- 对于增量更新的备份,可以在恢复操作期间使用SWITCH命令。
九、恢复镜像副本:示例
-
每天运行这些命令:
RMAN> recover copy of database with tag ‘daily_inc’;
RMAN> backup incremental level 1 for recover of copy
2> with tag ‘daily_inc’ database; -
命令运行结果:
十、快速切换到镜像副本
-
通过执行以下步骤来执行快速恢复:
- 1.使数据文件脱机。
- 2.使用SWITCH TO … COPY命令切换到镜像副本。
- 3.恢复数据文件(镜像副本)。
- 4.使数据文件联机。
-
(可选)执行以下操作,将文件放回原始位置:
- 5.在原始位置创建数据文件的镜像副本。
- 6.使数据文件脱机。
- 7.使用SWITCH TO … COPY命令进行切换
- 8.恢复数据文件。
- 9.使数据文件联机。
SQL> SWITCH DATAFILE ‘filename’ TO COPY;
十一、使用SET NEWNAME切换文件
-
在RUN块中使用SET NEWNAME命令可还原到非默认位置.
RUN
{ ALLOCATE CHANNEL dev1 DEVICE TYPE DISK;
ALLOCATE CHANNEL dev2 DEVICE TYPE sbt;
SQL “ALTER TABLESPACE users OFFLINE IMMEDIATE”;
SET NEWNAME FOR DATAFILE ‘/disk1/oradata/prod/users01.dbf’
TO ‘/disk2/users01.dbf’;
RESTORE TABLESPACE users;
SWITCH DATAFILE ALL;
RECOVER TABLESPACE users;
SQL “ALTER TABLESPACE users ONLINE”;
} -
为数据库或表空间中的所有文件指定默认名称格式,而不要使用单个名称。
-
默认名称用于RUN块中的DUPLICATE,RESTORE和SWITCH命令
十二、使用还原点
- 还原点提供时间点的名称:
-
Now:
SQL> CREATE RESTORE POINT before_mods;
-
过去的一段时间:
SQL> CREATE RESTORE POINT end_q1 AS OF SCN 100;
-
十三、执行时间点恢复
-
通过执行以下操作来执行服务器管理的时间点恢复:
- 1.确定还原的目标点:SCN,时间,还原点或日志序列号。
- 2.适当设置NLS环境变量。’yyyy-mm-dd hh24:mi:ss’(nls_date_format)
- 3.挂载数据库。
- 4.使用SET UNTIL,RESTORE和RECOVER命令准备并执行RUN块。
- 5.以只读模式打开数据库,并验证恢复点正确。
- 6.使用RESETLOGS打开数据库。
-
从第4到第6步的操作示例:
-
4 使用SET UNTIL,RESTORE和RECOVER命令准备并执行RUN块。
RUN
{
SET UNTIL TIME ‘2020-08-14:21:59:00’;
RESTORE DATABASE;
RECOVER DATABASE;
} -
5.以只读模式打开数据库,并验证恢复点正确。
RMAN> SQL ‘ALTER DATABASE OPEN READ ONLY’;
-
6.使用RESETLOGS打开数据库。
RMAN> ALTER DATABASE OPEN RESETLOGS;
-