Oracle控制文件的备份与恢复(手动)
这里先阐述一下数据库的启动过程:
1. 启动实例/例程(nomount状态)时,读取参数文件(文本文件PFILE 或服务器参数文件SPFILE),分配SGA、启动后台进程、打开告警文件及后台进程跟踪文件;
2. 装载数据库(mount 状态)时,根据初始化参数control_file 的值定位并打开控制文件,从中得到数据文件及重做日志的信息。
3. 打开数据库(open状态)时,打开所有数据文件和重做日志文件;至此,用户可以正常访问数据库;
推荐阅读:
控制文件用来记录和维护数据库的物理结构,里面记载着数据库打开时需要已经定位的所有数据文件和重做日志文件,并且记载着同步和恢复数据库时的日志序列号、检查点及日志历史记录;如果控制文件丢失,就像是人的大脑不能用了一般,只有医生(dba)能够处理,普通用户不能正常访问,那么就失去了它作为数据库的意义,除非恢复控制文件或重建控制文件(重建控制文件的两种情况是所有控制文件损坏、改变数据库名称或数据库的永久性参数);既然它的地位如此显赫,那么我们不得不重视,重视的体现就是多元化以及定期地或数据库配置发生变化时及时备份;数据库配置发生变化的命令有:
添加日志
alter database [add|drop] logfile
添加日志成员
alter datebase [add|drop] logfile member
添加日志组
alter datebase [add|drop] logfile group
修改数据库是否归档
alter datebase [noarchivelog|archivelog]
重命名数据库文件
alter datebase rename file
创建表空间
create tablespace
添加数据文件到相应表空间
alter tablespace [add|rename]datafile
修改表空间状态
alter tablespace [read write|read only]
删除表空间
drop tablespace
获取控制文件信息视图:
v$controlfile
备份控制文件(建立控制文件副本):
copy ‘E:\oracle\product\10.2.0\oradata\orcl\control01.ctl’ ‘e:\oracle\backup\control.ctl’;(冷备份|一致性备份)
或
alter database backup controlfile to ‘e:\oracle\backup\control.ctl’[reuse](热备份|非一致性备份);
该命令会将当前控制文件的所有信息存放到控制文件的副本中,通过该副本,既可以执行基于控制文件的不完全恢复,也可以生成控制文件的跟踪文件;
备份控制文件(备份到跟踪文件):
该方案主要是为了创建控制文件恢复控制文件;
alter database backup controlfile to trace;
恢复控制文件:
恢复控制文件时,服务器进程和后台进程需要从控制文件中读取各种与备份相关的信息。
当数据库的控制文件出现介质失败时,会出现ORA-00205错误;
ORA-00205: error in identifying controlfile, check alert log for more info
Cause: The system could not find acontrol file of the specified name and size.
Action: Check that ALL control files areonline and that they are the same files that the system created at cold starttime.
1. 控制文件组中的某个出现介质失败
因为所有的控制文件是互为镜像,所以用其他控制文件来恢复即可;如果出现介质失败的磁盘也出现损坏,那么在需要在nomount 状态时修改control_files 参数,使之去掉有问题的控制文件;
SQL> show parameter control_file
NAME TYPE VALUE
-------------------------------------------------------- ------------------------------
control_file_record_keep_time integer 7
control_files string E:\ORACLE\PRODUCT\10.2.0\ORADA
TA\ORCL\CONTROL01.CTL,E:\ORAC
LE\PRODUCT\10.2.0\ORADATA\ORCL
\CONTROL02.CTL, E:\ORACLE\PROD
UCT\10.2.0\ORADATA\ORCL\CONTRO
L03.CTL
说明当前有三个控制文件互为镜像;
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。