ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 控制文件的概述+控制文件3路复用

控制文件的概述+控制文件3路复用

原创 Linux操作系统 作者:高亚娟 时间:2013-01-23 19:23:25 0 删除 编辑

1、控制文件概述:

控制文件是一个很小的二进制文件,是数据库所必须的文件。控制文件记录了数据库的物理结构信息。控制文件最少要有两个,放在不同的磁盘上。

控制文件内包含的内容的:

n   数据库的名字

n   数据文件和在线日志文件的名字和位置

n   数据库创建时的时间戳

n   当前日志的序列号

n   检查点的信息

数据库open状态时,控制文件必须处于可写的状态。

如果没有控制文件,数据库没有办法启动到mount状态,原因见附录1。

 

2、为控制文件提供名字:

1)可以通过初始化参数control_files指定。

2)如果在数据库创建过程中,不为参数control_files指定控制文件的名字

    (1)如果不使用OMF,数据库使用系统指定的默认控制文件名字。

    (2)如果使用OMF,则数据库根据设置的OMF参数决定控制文件的名字和路径。

            (3)如果使用ASM,初始化参数文件中有这样的设置:DB_CREATE_FILE_DEST = '+dgroup1';DB_RECOVERY_FILE_DEST = '+dgroup2';DB_RECOVERY_FILE_DEST_SIZE = 10G,并且control_files没有指定,那么数据库会创建两个控制文件,一个在磁盘组drgoup1上,另一个在dgroup2(闪回恢复区),dgroup1上的控制文件是主控制文件。

 

3、控制文件的大小:

控制文件的大小与五个参数 MAXDATAFILES , MAXLOGFILES , MAXLOGMEMBERS , MAXLOGHISTORY, and MAXINSTANCES的值相关。

 

4、增加或修改控制文件的名字:

步骤如下:

a)   关闭数据库

b)   用系统命令,拷贝一份已经存在的控制文件到指定的位置。

c)   编辑参数文件

d)   启动数据库

 

0)查看数据库版本

SYS@PROD> select banner from v$version where rownum<2;

 

BANNER

----------------------------------------------------------------

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod

 

1 row selected.

1)查看原有控制文件信息

SYS@PROD> show parameter control_files;

 

NAME                                 TYPE        VALUE

------------------------------------------ ------------------------------

control_files                     string      /u01/app/oracle/oradata/PROD/d

                                                 isk1/control01.ctl, /u01/app/o

                                                 racle/oradata/PROD/disk2/contr

                                                 ol02.ctl

2)关闭数据库,准备三路复用控制文件

SYS@PROD> create pfile from spfile;

 

File created.

 

SYS@PROD> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

3)物理拷贝一份已经存在的控制文件到另一个目录

[oracle@secdb1 disk1]$ cp /u01/app/oracle/oradata/PROD/disk1/control01.ctl /u01/ app/oracle/oradata/PROD/disk3/control03.ctl

4)修改初始化参数文件

[oracle@secdb1 dbs]$ cat initPROD.ora

……

control_files = (/u01/app/oracle/oradata/PROD/disk1/control01.ctl,/u01/app/oracle/oradata/PROD/disk2/control02.ctl)

……

编辑其中的control_files,修改为:

control_files = (/u01/app/oracle/oradata/PROD/disk1/control01.ctl,/u01/app/oracle/oradata/PROD/disk2/control02.ctl,/u01/app/oracle/oradata/PROD/disk3/control03.ctl)

保存initPROD.ctl文件。

5)启动数据库

SYS@PROD> create spfile from pfile;

 

File created.

SYS@PROD> startup

ORACLE instance started.

 

Total System Global Area  314572800 bytes

Fixed Size                  1219184 bytes

Variable Size              96470416 bytes

Database Buffers          213909504 bytes

Redo Buffers                2973696 bytes

Database mounted.

Database opened.

6)3路复用成功

SYS@PROD> show parameter control_files;

 

NAME                                 TYPE        VALUE

------------------------------------------- ------------------------------

control_files                     string      /u01/app/oracle/oradata/PROD/d

                                                 isk1/control01.ctl, /u01/app/o

                                                 racle/oradata/PROD/disk2/contr

                                                 ol02.ctl, /u01/app/oracle/orad

                                                 ata/PROD/disk3/control03.ctl

 

修改控制文件的名字与此情况类似,不再详解。

 

 

附录1:

Oracle数据库启动第一步:需找参数文件pfile/spfile,然后根据参数文件中的设置(如内存分配等设置),创建实例(Instance),分配内存,启动后台进程。nomount状态也就是启动数据库实例的过程。这个过程在后台是启动Oracle可执行程序的过程。

启动数据库到mount状态:启动到nomount的时候,Oracle就可以从参数文件中获得控制文件的信息,然后找到控制文件,mount状态的时候,就是打开控制文件,并且根据控制文件中记录的数据库文件位置进行数据文件的存在性校验。需要确认的一点是:只根据记录的数据文件的位置校验文件的存在性。

启动到open状态:由于控制文件中记录了数据库中数据文件,日志文件的位置信息,检查点信息等重要信息,在数据库的open阶段,Oracle将根据控制文件中记录的这些信息找到这些文件,然后进程检查点及完整性检查。如果不存在文件就可以启动数据库了,如果存在不一致或文件丢失则需要进行恢复。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28559081/viewspace-753151/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2013-01-23

  • 博文量
    3
  • 访问量
    3643