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.


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