Oracle-20-控制文件管理

控制文件是一個跟蹤數據庫的物理組成的二進制文件,在數據庫工作時至少需要一個控制文件,最多可以指定8個控制文件,在MOUNT時第一次被讀取,OPEN之後時刻被使用,控制文件的位置和個數是由參數文件決定的(control_files)如果控制文件丟失,需要還原和恢復,所有控制文件都是鏡像關係,讀的時候讀第一個控制文件(MASTER CONTROL FILE),寫的時候所有的控制文件並行寫。


控制文件相關數據字典

col name for a50
select * from v$controlfile;
STATUS  NAME                                               IS_ BLOCK_SIZE FILE_SIZE_BLKS
------- -------------------------------------------------- --- ---------- --------------
        +DATA/sundb/controlfile/current.260.974086781      NO       16384            594
        +FLASH/sundb/controlfile/current.256.974086781     YES      16384            594

Elapsed: 00:00:00.00
select TYPE,RECORD_SIZE,RECORDS_TOTAL,RECORDS_USED from v$controlfile_record_section;
TYPE                         RECORD_SIZE RECORDS_TOTAL RECORDS_USED
---------------------------- ----------- ------------- ------------
DATABASE                             316             1            1
CKPT PROGRESS                       8180            11            0
REDO THREAD                          256             8            1
REDO LOG                              72            16            3
DATAFILE                             520           100            5
FILENAME                             524          2298           12
TABLESPACE                            68           100            6
TEMPORARY FILENAME                    56           100            1
RMAN CONFIGURATION                  1108            50            0
LOG HISTORY                           56           292           49
OFFLINE RANGE                        200           163            0
ARCHIVED LOG                         584            28            0
BACKUP SET                            40           409            0
BACKUP PIECE                         736           200            0
BACKUP DATAFILE                      200           245            0
BACKUP REDOLOG                        76           215            0
DATAFILE COPY                        736           200            1
BACKUP CORRUPTION                     44           371            0
COPY CORRUPTION                       40           409            0
DELETED OBJECT                        20           818            1
PROXY COPY                           928           246            0
BACKUP SPFILE                        124           131            0
DATABASE INCARNATION                  56           292            2
FLASHBACK LOG                         84          2048            0
RECOVERY DESTINATION                 180             1            1
INSTANCE SPACE RESERVATION            28          1055            1
REMOVABLE RECOVERY FILES              32          1000            0
RMAN STATUS                          116           141            0
THREAD INSTANCE NAME MAPPING          80             8            8
MTTR                                 100             8            1
DATAFILE HISTORY                     568            57            0
STANDBY DATABASE MATRIX              400            31           31
GUARANTEED RESTORE POINT             212          2048            0
RESTORE POINT                        212          2083            0
DATABASE BLOCK CORRUPTION             80          8384            0
ACM OPERATION                        104            64            6
FOREIGN ARCHIVED LOG                 604          1002            0

37 rows selected.

Elapsed: 00:00:00.02

這裏顯示的控制文件內容的大小是實際控制文件大小的一半,因爲控制文件在寫內容的時候是由冗餘的,防止因爲某些壞塊導致控制文件不可用。

查看參數文件中控制文件的信息

show parameter control_files
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      +DATA/sundb/controlfile/curren
                                                 t.260.974086781, +FLASH/sundb/
                                                 controlfile/current.256.974086
                                                 781


我們減少控制文件數量

alter system set control_files='+DATA/sundb/controlfile/current.260.974086781' scope=spfile;

另外,參數值得修改是靜態的,需要重啓數據庫後才能生效

重啓實例

shutdown immediate
startup

查詢參數文件中控制文件參數

show parameter control_files
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      +DATA/sundb/controlfile/current.260.974086781
col name for a50
select * from v$controlfile;
STATUS  NAME                                               IS_ BLOCK_SIZE FILE_SIZE_BLKS
------- -------------------------------------------------- --- ---------- --------------
        +DATA/sundb/controlfile/current.260.974086781      NO       16384            594

Elapsed: 00:00:00.01


在grid用戶下查看磁盤組狀態

su - grid
sqlplus / as sysasm
select name,state from v$asm_diskgroup;
NAME                           STATE
------------------------------ -----------
DATA                           MOUNTED
FLASH                          MOUNTED

刪除相應的控制文件

asmcmd
cd flash/orcl/controlfile
ls
Current.260.975082355
rm -rf Current.260.975082355

增加控制文件

alter system set control_files=
'+DATA/sundb/controlfile/current.260.974086781',
'+DATA/sundb/controlfile/control02.ctl'
scope=spfile;
shut immediate

然後切換到grid用戶下對控制文件進行復制(這裏需要注意的是,在數據庫打開的狀態下是無法對控制文件進行備份的)

asmcmd -p
cd data/sundb/controlfile
cp Current.260.974086781 +data/sundb/controlfile/control02.ctl

然後重新啓動實例

startup
col name for a50
select * from v$controlfile;
STATUS  NAME                                               IS_ BLOCK_SIZE FILE_SIZE_BLKS
------- -------------------------------------------------- --- ---------- --------------
        +DATA/sundb/controlfile/current.260.974086781      NO       16384            594
        +DATA/sundb/controlfile/control02.ctl              NO       16384            594

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