Oracle控制文件详解

Oracle控制文件详解

一、Oracle 控制文件

        为二进制文件,初始化大小由CREATE DATABASE指定,可以使用RMAN备份

        记录了当前数据库的结构信息,同时也包含数据文件及日志文件的信息以及相关的状态,归档信息等等

        在参数文件中描述其位置,个数等等。通常采用分散放开,多路复用的原则。在mount阶段被读取,open阶段一直被使用

        维护数据库一致性(数据库启动时会比较控制文件与联机日志文件中的ckpt,即起始scn号,如相等则正常启动,否则需要介质恢复)

        一个控制文件只能属于一个数据库

        控制文件的任意修改将写入到初始化参数中指定的所有控制文件中,读取时则仅读取第一个控制文件

        控制文件只能连接一个数据库,控制文件的大小一般不要超过MB,最多为个,最少一个,互为镜像

               

        控制文件中包含的内容

            数据库的名字、ID、创建的时间戳

            表空间的名字

            联机日志文件、数据文件的位置、个数、名字

            联机日志的Sequence号码

            检查点的信息

            撤销段的开始或结束

            归档信息

            备份信息

   

二、查看控制文件的相关信息

    1.使用相关视图来查看

        V$CONTROLFILE                   --列出实例中所有控制文件的名字及状态信息

        V$PARAMETER                     --列出所有参数的位置及状态信息

        V$CONTROLFILE_RECORD_SECTION    --列出控制文件中记录的部分信息

        SHOW PARAMETERCONTROL_FILES    --列出控制文件的名字、状态、位置等

2.使用STRINGS命令来查看控制文件中的具体内容

3.备份控制文件到平面文件(然后查看控制文件中的具体内容)

       

        SQL> alter database backup controlfile  to trace as '/u01/app/oracle/ctl.txt';

 

        Database altered.

 4.转储控制文件内容(查看控制文件中的具体内容)

        alter session set events 'immediatetrace name CONTROLF level 12'; level表示级别

        或                     --level1  块头的内容 --level2 数据文件内容 --levle10 |12 所有内容

        oradebug setmypid

        oradebug dump controlf12

   

        SQL> alter system set events 'immediatetrace name controlf level 10';

 

        System altered.

 

        SQL> showparameter user_dump;

 

        NAME                                 TYPE        VALUE

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

        user_dump_dest                       string      /u01/app/oracle/admin/orcl/udu

                                                         mp

三、控制文件的管理 

    规划原则:多路复用,建议存放到不同的磁盘或同一磁盘不同的分区

    个数与位置及状态管理:

        查看控制文件的状态是否与参数定义中的相吻合,当数据库发生结构修改时,将修改内容同时写入控制文件

    备份管理

    恢复管理

    新建控制文件语句

   

    spfile或pfile都可以实现对控制文件的个数及位置管理

    spfile步骤

        修改spfile参数中的control_files   --alter system ... scope = spfile | both |memory

        一致性关闭数据库

        增加或减少控制文件(cp or mv)

        启动数据库使用spfile

        验证结果

       

    pfile步骤

        一致性关闭数据库

        修改pfile参数(vi或vim)   修改*.control_files=......这一段

        增加或减少控制文件(cp or mv)

        启动数据库使用pfile

        验证结果

       

    --演示spfile修改控制文件

        SQL> showparameter control_file

 

        NAME                                 TYPE        VALUE

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

        control_file_record_keep_time        integer     7

        control_files                        string      /u01/app/oracle/oradata/orcl/c

                                                         ontrol01.ctl, /u01/app/oracle/

                                                         oradata/orcl/control02.ctl, /u

                                                         01/app/oracle/oradata/orcl/con

                                                         trol03.ctl

        --将控制文件减少到一个

        SQL> alter system set control_files = '/u01/app/oracle/oradata/orcl/control01.ctl' scope =spfile;

 

        System altered.

 

        SQL> shutdown immediate;

        Database closed.

        Database dismounted.

        ORACLE instanceshut down.

        SQL> startupmount

        ORACLE instancestarted.

 

        Total SystemGlobal Area  251658240 bytes

        Fixed Size                  1218796bytes

        Variable Size              88082196bytes

        Database Buffers          159383552bytes

        RedoBuffers                2973696bytes

        Database mounted.

       

        --再次查看参数文件,已显示为一个

        SQL> showparameter control_file

 

        NAME                                 TYPE        VALUE

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

        control_file_record_keep_time        integer     7

        control_files                        string      /u01/app/oracle/oradata/orcl/c

                                                         ontrol01.ctl

       

        --增加控制文件(在nomount状态下即可修改)

        SQL> alter system set control_files = '/u01/app/oracle/oradata/orcl/control01.ctl',

          2  '/u01/app/oracle/oradata/orcl/control02.ctl',

          3  '/u01/app/oracle/oradata/orcl/control03.ctl'

          4  scope = spfile;

 

        System altered.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章