控制文件的备份与恢复
实例启动时进程既要读取控制文件又要写控制文件,所以该阶段只要有一个控制文件损坏实例就无法到MOUNT状态。
即 该阶段 控制文件缺一不可。有损坏时只能启动到 NOMOUNT状态。
备份
控制文件的备份有: 在线控制文件镜像备份、手动备份、自动备份
在线镜像备份是指 除了第一个被使用的控制文件(初始化参数 control_files指向的第一个)外,其他的控制文件即为镜像备份。
自动备份:
显示自动备份:该类型的备份默认情况下是关闭的。在RMAN中 用 configure autobackup 命令 的属性设置为 ON 即可打开这以后
oracle就会在 RMAN执行任何备份操作导致控制文件内RMAN资料库被更新之后,自动做备份。还有在数据块物理
结构发生变化之后 也会自动备份。物理结构发生变化导致自动备份 ORACLE 交给了 MMON后台进程延时处理完成,
而MMON后台进程又交给其管理的奴隶进程(M000)完成备份操作。要修改延时的时间间隔(单位 秒),请修改
隐含参数 "_controlfile_autobackup_delay" 。由物理结构发生变化而引发的自动备份 只能使用DISK类型的默认通道。
也会自动备份 控制文件。
--查看自动备份的状态
RMAN> SHOW CONTROLFILE AUTOBACKUP;
---启用自动备份
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
---关闭自动备份
RMAN>CONFIGURE CONTROLFILE AUTOBACKUP OFF;
隐式自动备份:当自动备份 关闭的情况下,使用RMAN 命令备份 关键数据文件时,控制文件会被自动备份。同样 执行
backup database 和 backup tablespace system 时控制文件也必然被自动备份。但是ORACLE不认为这是自动备份,
因为这种的备份集没有在快速恢复区的 autobackup 目录下,而是在backupset目录,备份片名由 “o1_mf_ncsnf_”
开头,将来恢复时,此类备份的步骤和自动备份的步骤是有别的。即 采用手动备份恢复而非自动备份恢复。
手动备份分为:备份集、镜像复制备份、重建脚本
备份集合镜像复制备份默认路径是 快速恢复区,如果没有启用快速恢复区则路径是 $oracle_home/dbs
重建脚本则写入常规的追踪文件路径中。
备份集备份:
RMAN> BACKUP AS BACKUPSET CURRENT CONTROLFILE;
镜像复制备份:
RMAN 和 SQL/PLUS 都可以完成对控制文件的镜像复制备份。
RMAN>backup as copy current controlfile format ='path';
SQL>alter database backup controlfile to 'path';
重建脚本:
SQL/PLUS 同样可以产生一种 脚本文件,其中包含能够重新创建控制文件的命令。
SQL>ALTER DATABASE BACKUP CONTROLFILE TO TRACE;----将控制文件备份为文本文件
SQL>ALTER DATABASE BACKUP CONTROLFILE TO 'PATH';---将控制文件备份为二进制文件
---默认追踪文件的位置
SELECT VALUE FROM v$diag_info where name ='Default Trace File';
--或 通过查看初始化参数USER_DUMP_DEST 来确定追踪文件路径
SQL>SHOW PARAMETER USER_DUMP_DEST
重建脚本中包含 两条 CREATE CONTROLFILE 的命令 ,分别 是 不重设日志(noresetlogs)、重设日志(resetlogs)。
按时间跨度分类备份:在线镜像备份、结构备份、历史备份
在线镜像备份:也称为在线副本,或当前备份。也就是control_files初始化参数所指向的除了损坏的控制文件以外的其他
健康的控制文件。它们理解当前库的物理结构,知道最新的检查点、最新的在线日志序列号、最新的SCN
数据库SCN、控制文件序列号、控制文件SCN、各个数据文件头部检查点信息及归档日志。
结构备份:该备份中数据库的物理结构信息(数据文件及在线重做日志)和当前控制文件一致,但是最新的检查点、最新
的重做日志序列号、SCN、数据库SCN、控制文件序列号、控制文件SCN、各个数据文件头部检查点集及归档日志
信息比当前控制文件中的陈旧。简言之:如果产生自动备份或手动备份后,数据库的结构没有发生任何变化,那么
它们便是结构备份。
历史备份:该备份中的数据库的结构物理信息和当前控制文件中的不一致。简言之:如果产生自动备份或手动备份之后,
数据库的物理结构发生变化,那么它们就是历史备份。
恢复
控制文件的恢复是需要重做日志帮助的。恢复包括:先从备份还原,然后用重做日志恢复。
恢复是在 NOMOUNT 状态进行的。
大多情况下,恢复控制文件先考虑 在线镜像备份,其次是结构备份,最后考虑历史备份。
除了镜像备份之外,其他备份恢复控制文件的顺序为:
1、从备份中还原控制文件
2、用重做日志介质恢复数据库(也称为:应用日志 (apply log))
3、以重设日志的方式打开数据库。
在线镜像备份恢复:
1、执行 startup nomount 将实例带到 NOMOUNT 状态
2、查看警告日志和追踪日志观察损坏的具体情况
3、用操作系统命令使用健康的在线镜像备份替换已损坏的活丢失的控制文件
4、执行 alter database mount 将实例带到 mount 状态
5、执行 alter database open 打开数据库,恢复完成。
自动备份恢复:
1、执行 startup nomount 将实例 带到 nomount 状态
2、运行 restore controlfile from autobackup 命令还原控制文件
3、执行 mount database 命令将实例带到 mount 状态
4、执行 recover database 命令恢复数据库
5、执行 alter database open resetlogs 命令打开数据库,恢复完成
延伸:recover database 的过程是这样的:自动在快速恢复区内探索尚不清楚的备份和归档日志、自动找到最当前的
在线日志(即 实例关闭时LGWR正在写的那个在线日志,它是恢复过程终点的标志)、判断控制文件是否需要
恢复、读取日志信息以恢复数据文件和控制文件的部分信息。有时甚至自动利用通道从归档日志的备份中将归
档日志自动还原,以便为恢复操作所用。
recover database 命令在 RMAN 和 sql/plus 中的是由区别的:
1、SQL>RE