Home > Database > Mysql Tutorial > Oracle存储结构之控制文件

Oracle存储结构之控制文件

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Release: 2016-06-07 17:16:20
Original
1049 people have browsed it

控制文件是个相当小的二进制文件,最多能增长到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下去找

linux

Related labels:
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template