1. 恢复方式的选择
1-1. 控制文件没有完全损坏
nomount 状态复制存在的控制文件, 启动数据库即可
1-2. 控制文件完全损坏
backup control to trace
利用 resetlogs 重建, 重建后 Rman 备份信息将丢失 (nocatalog 情况下)
控制文件完全损坏,并且数据库已经当机, 要么拼一个 create control 命令, 要么利用备份控制文件恢复, 利用备份恢复不会丢失 Rman 备份信息
2. 恢复操作
2-1. 部分控制文件丢失
nomount 状态下修改参数文件启动即可
alter system set control_files='/data/control01.ctl','/data/control02.ctl' scope=spfile;
startup force;
2-2. 丢失所有控制文件
利用 trace 文件重建控制文件, 适用于非归档模式, 有 resetlogs 和非 resetlogs 两种模式
alter database backup controlfile to trace;
shutdown immediate / abort
@/script/create_controlfile.sql;
只读表空间需要重命名, ctl trace 文件中已经包含
数据库打开后添加临时文件, ctl trace 文件中已经包含
重建控制文件会丢失 rman 等备份信息
2-2-1. 利用备份控制文件恢复
适用于表空间删除等的恢复, 恢复目标与当前数据库结构不同的恢复
利用备份控制文件恢复时, 要使用能够识别恢复目标结构的备份控制文件, 如果有识别恢复目标结构的备份控制文件, 利用不完全恢复可以恢复到想要的那个点
数据库中有只读表空间时
read write -> read only -> crash
要使用 readonly 之后的备份控制文件
read only -> read only -> crash
任意时刻的备份控制文件
read only -> read write -> crash
要使用 read write 之后的备份控制文件
2-2-2. 用户管理恢复
restore 备份控制文件, 如果数据文件没有丢失则不需要恢复
startup mount
如果是恢复 droped 表空间, 则要指定 until time 为 drop 之前的时间点
recover database until time using backup controlfile until cancel;
先执行 auto, 应用所有归档日志
auto
在指定在线日志, 重复执行 recover, 直到出现恢复成功。
/data/redo01.log
alter database open resetlogs;
这种方式如果恢复过了之后, 不能再用 resetlogs 之前的控制文件做基于备份控制文件的恢复, 其他的基于表空间, 数据文件, 数据库等的完全不无完全恢复均可以
即使不做全备份,至少做ctl文件的备份
2-2-3. RMAN 恢复
2-2-3-1. 仅丢失控制文件的情况
startup nomount;
# 仅在 nocatalog 时需要指定
set dbid 1234567890;
run {
# nocatalog 时, RMAN 配置信息都被重置为默认, 所以找不到 antobackup
# 如果没有 autobackup 的控制文件, 则要指定具体备份控制文件位置
restore controlfile from autobackup;
alter database mount;
recover database;
}
alter database open resetlogs;
2-2-3-2. 控制文件和数据文件都丢失的情况
startup force nomount;
set dbid 1234567890; -- 使用 catalog 时不需要指定
run {
restore controlfile from autobackup; -- 先恢复控制文件(只能在 nomount阶段)
alter database mount;
restore database;
recover database;
}
alter database open resetlogs;
基于 RMAN 的恢复没有用户管理中的跨 resetlogs 恢复的限制
查询 v$tempfile, 是否需要添加临时文件, 一般重建控制文件需要, 而备份控制文件恢复不需要
0 件のコメント:
コメントを投稿