系统数据文件备份与恢复及只读数据文件备份与恢复
系统数据文件又称为 关键性数据文件
关键性数据文件分为:SYSTEM表空间的数据文件 和 UNDO_TABLESPACE 撤销表空间的数据文件
undo_tablespace 自动撤销表空间的数据文件可以通过查询参数 undo_tablespace 指向的撤销表空间。
system 表空间的数据文件默认就是 1号数据文件,其内部保存的是 oracle数据库系统表即数据字典,是对数据库本身的
描述,是数据库正常运行的基本保障。系统回滚段(以名为sys.system的撤销段)能够保存数据字典变更的撤销数据。也是
1号数据文件的内容。
system表空间 1号数据文件的损坏分为:数据文件丢失、文件头损坏、数据字典损坏、sys.system撤销段损坏。
1、文件丢失或不能访问:启动oracle时只能讲实例带到mount状态
2、文件头损坏:运行检查点发起后实例会崩溃,启动oracle时也只能带到mount状态。
3、数据字段损坏:数据库内的对象定义系统、名称解析系统、用户账号系统、权限管理系统等基础设施将出现部分或全部崩溃。
4、以名为 sys.system的撤销段损坏:如果实例在运行时sys.system 撤销段与 undo_tablespace 表空间撤销段同时损坏,实例运行的
DDL及对SYSTEM表空间内的任意DML 都将失败;在启动实例阶段SYS.SYSTEM撤销段头部损坏
实例被强行中断。 连NOMOUNT 状态也进不了,必须用 “startup mount” 才能进入MOUNT状态。
在发生检查点时,若数据文件 或 撤销表空间数据文件头部损坏,实例会被强行中止。这也可作为判断该文件是否为关键数据文件的一个指标。
但是 检查点CKPT进程不会因为普通文件头部损坏而中止实例。
undo_tablespace 数据文件损坏
udo数据文件是用来保存所有的变更类命令所产生的撤销数据。
udo数据文件损坏分为 3种:
1、udo数据文件丢失或不能访问,实例只能启动到 mount状态
2、udo数据文件头部损坏,也只能启动到mount状态,运行检查点发起后实例崩溃。
3、udo表空间某些撤销段损坏,DML命令可能失败;oracle启动时任意一个撤销段头部损坏,实例将被强制关闭,必须 startup mount才能
进入 mount 状态。撤销段的拥有者是 SYS。实例启动时对撤销段损坏进行 零容忍,有一个撤销段损坏就崩溃。
备份
使用 BACKUP DATABASE、 backup tablespace 、 backup datafile 、backup as copy 数据文件镜像复制 都可以备份数据文件。
恢复
恢复的核心步骤是:将数据库进入到mount状态、从备份还原(即restore 或 switch命令)、使用增量备份或重做日志恢复(recovery)
打开数据库。关键数据文件的恢复整个过程都是在 MOUNT状态下完成的。即不能在OPEN状态下进行恢复,也就是
说 关键数据文件不可采用 高可用恢复策略。mount状态需要打开控制文件。
恢复的流程为:
1、如果实例在运行,则使用 shutdown abort 关闭实例或 KILL 系统命令关闭实例;
2、startup mount ;进入到 MOUNT状态(即打开控制文件);
3、使用RMAN 执行 restore 或 switch 命令还原损坏的关键数据文件;
4、使用 recover database 命令利用归档日志和在线重做日志恢复数据文件;
5、执行 alter database open 命令打开数据库,恢复完成。
RUN
{
STARTUP MOUNT;
RESTORE TABLESPACE SPACE_NAME;
RECOVER DATABASE;
ALTER DATABASE OPEN;
}
当数据文件的镜像复制处于磁盘上时,使用 switch 命令取代restore命令将控制文件中的数据文件名立即换成镜像复制文件名,
这样恢复的速度更快。 SWITCH命令的作用是将当前数据文件与镜像复制文件互换。
STARTUP MOUNT;
---以下两步不是必须的
LIST DATAFILECOPY ALL;
validate datafilecopy all;
---以上两步不是必须的
RUN
{
SWITCH DATAFILE 1 TO DATAFILECOPY 'PATH';
RECOVER DATABASE;
ALTER DATABASE OPEN;
}
只读数据文件是只读表空间的数据文件。
备份:
备份只读数据文件方式 和备份其他数据文件的方式一样。
恢复:
由于只读文件没有 “写(更改)”的操作,所有就不用归档日志和重做日志恢复了。只需 还原即可。
在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;
}