欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Oracle存储结构之控制文件

程序员文章站 2022-04-16 10:52:04
...

控制文件是个相当小的二进制文件,最多能增长到64m左右。参数文件告诉实例控制文件的位置。而控制文件告诉实例:数据库名,数据文

其实,蛮蛋疼的,体系结构要想深入的理解,还需要配合后续的备份与恢复的实验和原理。但不管啦,先稍微了解一下。

控制文件是个相当小的二进制文件,最多能增长到64m左右。

参数文件告诉实例控制文件的位置。而控制文件告诉实例:数据库名,数据文件的名称及其位置,在线重做日志文件的名称及其位置,以及系统和各个数据文件的SCN信息。

我们的Oracle内部的几个人,都比较喜欢往ctl上面写东东,比如:
server process会把数据库结构的变化更新到control file
LGWR会把当前日志序列号记录到control file
CKPT会把检查点信息记录到control file
ARCn会把归档日志信息记录到control file

有了以上的信息,因此,在mount阶段,SMON会去读控制文件,确认它上面的记录是否正确:
1)上次关机的SCN A
上次关机的checkpoint B
2)日志组最后一条的记录 C
RBA指针的位置 D
若正常关机,则 A=B C=D
若不正常关机,则 A>B D>C
这时,,就需要派SMON去前滚,按重做日志的记录在内存中重做一遍,直到C=D。

以下是我的控制文件的部分摘录:
平台是:RHEL-5.8 ora10g
*** SERVICE NAME:() 2012-07-10 10:09:23.691
*** SESSION ID:(159.3) 2012-07-10 10:09:23.691
Thread 1 checkpoint: logseq 17, block 2, scn 676899
cache-low rba: logseq 17, block 40599
on-disk rba: logseq 17, block 40868, scn 697180
start recovery at logseq 17, block 40599, scn 0

我们对控制文件的一些常见操作,比如:
1)如何多路镜像控制文件?
正常关机,cp一份,修改pfile,生成spfile,重启数据库

2)查看控制文件的位置?
i SQL> show parameter control_files

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string /u01/app/oracle/oradata/ORCL/c
ontrolfile/o1_mf_7xzsjpnk_.ctl
, /u01/app/oracle/flash_recove
ry_area/ORCL/controlfile/o1_mf
_7xzsjq6j_.ctl
ii SQL> select name from v$controlfile;

NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/ORCL/controlfile/o1_mf_7xzsjpnk_.ctl
/u01/app/oracle/flash_recovery_area/ORCL/controlfile/o1_mf_7xzsjq6j_.ctl

iii SQL> select value from v$parameter where;

VALUE
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/ORCL/controlfile/o1_mf_7xzsjpnk_.ctl, /u01/app/oracle/fl
ash_recovery_area/ORCL/controlfile/o1_mf_7xzsjq6j_.ctl

3)查看控制文件的内容?
alter database backup controlfile to trace;
然后到udump下去找

Oracle存储结构之控制文件