控制文件(mount阶段被读取,open阶段一直被调用)
控制文件的内容及管理:
·存放数据库的物理信息(数据库的名字,
ID,创建时间,版本,角色)
·存放联机日志和数据文件的指针
·记录联机日志中包含的
redo条目的数量
·记录数据文件头检查点的信息
·记录日志切换的频率
·记录日志进程的信息
·记录检查点进程的信息
·记录
rman备份的信息
·控制文件在
mount时第一次被加载
·在open之后时刻变化
·数据库工作时至少需要一个控制文件,最多同时可以指定
8个控制文件
·控制文件的存放位置和数量由参数决定(
control_files)
·所有的控制文件必须保持镜像关系
·生产库推荐至少使用两个控制文件
查看控制文件中的记录片段
select TYPE,RECORD_SIZE,RECORDS_TOTAL,RECORDS_USED from v$controlfile_record_section;
查看控制文的存储信息
select * from v$controlfile;
控制文件的相关实验
增加控制文件:多元化
& 多路复用
alter system set control_files=
'/u01/app/oracle/oradata/prod/control01.ctl',
'/u01/app/oracle/oradata/prod/control02.ctl'
scope=spfile;
shut immediate
cp -v /u01/app/oracle/oradata/prod/control01.ctl /u01/app/oracle/oradata/prod/control02.ctl
startup
减少控制文件:在参数中减少一个指针
alter system set control_files=
'/u01/app/oracle/oradata/prod/control02.ctl'
scope=spfile;
shut immediate
startup
移动控制文件
alter system set control_files=
'/test/control02.ctl'
scope=spfile;
shut immediate
mv /u01/app/oracle/oradata/prod/control02.ctl /test/control02.ctl
startup
控制文件改名:
alter system set control_files=
'/test/control01.ctl'
scope=spfile;
shut immediate
mv /test/control02.ctl /test/control01.ctl
startup
找回控制文件
未停实例:
1.从内存中获取控制文件:
lsof | grep control02.ctl
cp -v 256 /u01/app/oracle/oradata/prod/control01.ctl
chown oracle. /u01/app/oracle/oradata/prod/control01.ctl
2.读取内存控制文件到跟踪(诊断)文件
alter database backup controlfile to trace
找到对应产生的跟踪文件
利用create controlfile 命令重建。
停实例的处理:
重建控制文件:控制文件中最主要的信息就是所有数据库文件头的信息!只要有数据文件就可以重建控制文件!
(数据文件位置
cd $ORACLE_BASE/oradata/$ORACLE_SID)
create controlfile reuse database prod noarchivelog noresetlogs
datafile
'/u01/app/oracle/oradata/prod/system01.dbf',
'/u01/app/oracle/oradata/prod/sysaux01.dbf',
'/u01/app/oracle/oradata/prod/undo01.dbf'
logfile
'/u01/app/oracle/oradata/prod/redo01.log',
'/u01/app/oracle/oradata/prod/redo02.log';
alter database;
recover database;
###########################################################################