普通数据文件备份与恢复:
普通数据文件指 非 system表空间、udo表空间、临时表空间、只读表空间的文件。普通数据文件的恢复可用采用高可用恢复策略,
即能够在OPEN状态下恢复。
1、实例启动时,如果普通数据文件丢失、无法访问、头部损坏,只能启动到 mount 状态
2、实例运行时,普通数据文件头损坏,在发生检查点之后,由于检查点无法在数据文件头部更新,此数据文件的状态在控制文件
中会被自动设置为 离线,同时警告日志中会记录由于检查点失败导致该数据文件离线的记录。
3、实例运行时,如果普通数据文件非头部数据块损坏,将导致需要访问受损数据块的命令失败,数据文件自身不会被自动 离线。
备份的方式 同 关键性数据文件备份一样。
恢复普通数据文件的核心步骤: 令损坏的数据文件 离线、从备份还原(report 或switch)、使用增量备份或重做日志恢复(recovery),
最后令数据文件 上线。普通数据文件的恢复 既可以在 mount 状态下恢复 又可以在 open 状态下恢复。
非数据文件头部损坏修复:低可用恢复策略(mount)、高可用恢复策略(open)
低可用恢复策略:
1、使用 shutdown abort 关闭实例
2、使用 startup mount 进入 MOUNT状态
3、用 restore 或 switch 命令 还原损坏的普通数据文件
4、使用 recover database 命令 利用归档日志和在线日志恢复数据文件
5、执行 alter database open 打开数据库,恢复完成。
RUN
{
SHUTDOWN ABORT;
STARTUP MOUNT;
RESTORE DATAFILE 'PATH';
RECOVER DATABASE;
ALTER DATABASE OPEN;
}
高可用恢复策略:
1、将数据文件 离线 alter database datafile 'path' offline;
2、执行 restore 或 switch 命令还原受损坏的普通数据文件;
3、执行 recover tablespace 或 recover datafile 命令,利用归档日志和在线日志恢复数据文件;
4、执行 alter database datafile 'path' online ;将已恢复完成的数据文件上线,恢复完成。
run
{
sql 'alter database datafile 5 offline';
restore datafile 5;
recover datafile 5;
sql 'alter database datafile 5 online';
}
如果实例已停止 则
run
{
startup mount;
sql 'alter database datafile 5 offline';
alter database open;
restore datafile 5;
recover datafile 5;
sql 'alter database datafile 5 on line';
}
文件头部损坏后的恢复
数据文件头部损坏后的恢复步骤为:在低可用恢复策略与 高可用恢复策略的基础上,再根据相关数据文件是否已下线
而进行恢复。 未下线 低可用恢复策略、已下线低可用恢复策略与高可用恢复策略。
未下线低可用恢复策略的步骤:
1、使用 shutdown abort 关闭实例
2、使用 startup mount 启动到 mount 状态;
3、执行 restore 或 switch 命令还原损坏的普通数据文件
4、执行 recover database 命令利用归档日志和在线日志恢复数据文件;
5、执行 alter database open 命令打开数据,恢复完成
RUN
{
shutdown abort;
startup mount;
restore datafile 5;
recover datafile 5;
alter database open;
}
已下线低可用恢复策略步骤
1、使用 shutdown abort 关闭实例
2、执行 startup mount 命令将实例带入 mount 状态
3、执行 alter database datafile 'path' online 命令将数据文件在控制文件中的状态修改为 上线
4、执行 restore 或 switch 命令还原损坏的普通数据文件
5、执行 recover database 利用归档日志和在线日志恢复数据文件
6、执行 alter database open 打开数据,恢复完成
run
{
shutdown abort;
startup mount;
alter database datafile 5 online;
restore datafile 5;
recover database;
alter database open;
}
高可用恢复策略 需要首先删除头部损坏的数据文件才可做 restore 操作。恢复步骤为:
1、删除头部损坏的数据文件;
2、若实例已停止,使用 startup mount 将实例带到mount 状态。如果数据处在 OPEN 状态则忽略该过程。
3、使用 alter database 命令将损坏的数据文件 下线(offline)
4、如果实例已停止,并用 startup mount 带到了mount 状态,使用 alter database open 打开数据。否则忽略该过程
5、执行 restore 或 switch 命令还原损坏的普通数据文件;
6、执行 recover tablespace 或 recover datafile 命令,利用归档日志和在线日志恢复数据文件;
7、执行 alter database 命令将完成恢复的数据文件重新上线,恢复完成
实例未停止
删除 受损坏的数据文件( rm /'path')
run
{
sql 'alter database datafile 5 offline';
restore datafile 5;
recover datafile 5;
sql 'alter database datafile 5 online';
)
实例已停止
删除 受损坏的数据文件( rm /'path')
run
{
startup mount;
sql 'atler database datafile 5 offline';
alter database open;
restore datafile 5 ;
recover datafile 5;
sql 'alter database datafile 5 online';
}
只读数据文件备份与恢复
只读数据文件是只读表空间的数据文件。
备份:
备份只读数据文件方式 和备份其他数据文件的方式一样。
恢复:
由于只读文件没有 “写(更改)”的操作,所有就不用归档日志和重做日志恢复了。只需 还原即可。
在MOUNT状态下的 低可用恢复策略的恢复 步骤:
1、执行 startup mount 进入 MOUNT 状态
2、执行 restore 或 switch 命令还原数据文件
3、执行 alter database open 命令打开数据库,恢复完成
在OPEN状态下的高可用恢复策略的恢复步骤:
1、执行 alter database 命令让受损坏的只读数据文件下线
2、执行 restore force 或 switch 命令还原数据文件
3、执行 alter database datafile 5 online 命令使数据文件上线。
低可用恢复 需要 参数文件和控制文件必须就位。 高可用恢复 还需要关键数据库文件必须就位。
控制文件无损情况下的恢复
指:只读数据文件损坏时控制文件没有损坏。
---如果数据块损坏,通道认为只读数据文件还存在,无须还原,这时必须用 restore datafile 5 force命令还原
run
{sql 'alter databae datafile 5 offline';
restore datafile 5 force;
sql' alter database datafile 5 online';
}
使用镜像复制就不必使用 force关键字
run
{
sql' alter database datafile 5 offline';
switch datafile 5 to datafilecopy 'path';
sql' alter database datafile 5 online';
}
控制文件损坏情况下的恢复
指:只读数据文件与控制文件一并损坏时的恢复。其恢复步骤包括 恢复控制文件与只读数据文件
1、将数据库启动至 NOMOUNT状态
2、用 restore 命令还原控制文件
3、将数据库启动到 MOUNT 状态
4、用 restore 命令还原只读数据文件
5、用 recover 命令恢复整个数据
6、用 resetlogs 方式打开数据库
run
{
restore controlfile from autobackup;
mount database;
restore datafile 5;
recover database;
---如果只读数据文件改为 读写状态后,没有备份,这时数据文件和控制文件都损坏,则需再加一次 recover databae,否则不需要
recover database;
---如果只读数据文件改为 读写状态后,没有备份,这时数据文件和控制文件都损坏,则需再加一次 recover databae
alter database open resetlogs;
}