核心数据文件备份与恢复(system表空间数据文件)
核心数据文件备份与恢复(system表空间数据文件)
关键性数据文件分为: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; }