6.管理控制檔案(筆記)

tonykorn97發表於2006-04-12

6.管理控制檔案

控制檔案用於記錄和維護資料庫的物理結構,當啟動例程並開啟資料庫時,oracle會根據初始化引數control files 在例程和資料庫之間建立關聯.裝載資料庫(MOUNT狀態),ORACLE會安裝初始化引數control_files定位並開啟控制檔案和重做日誌.


控制檔案時oracle資料庫最重要的物理檔案.控制檔案不僅記載了資料庫的物理結構(資料檔案的名稱和位置,重做日誌的名稱和位置).裝載和開啟資料庫時也需要這些檔案,而且它們還記載了日誌序列好,檢查點和日誌歷史資訊.同步和恢復資料庫時需要這些資訊.

控制檔案主要記載了以下資訊

資料庫名稱

資料檔名稱和位置

重做日誌名稱和位置

表空間名稱

當前日誌序列好

檢查點資訊

日誌歷史資訊

RMAN資訊

控制檔案主要是由永久引數和RMAN資訊組成.

永久引數包括

MAXINSTANCES:用於指定可以同時訪問資料庫的最大例程個數

MAXDATAFILES:用於指定oracle資料庫的最大資料檔案個數

MAXLOGFILES:用於指定oracle資料庫的最大日誌組個數

MAXLOGMEMBERS:用於指定每個日誌組的最大日誌成員個數.

MAXLOGHISTORY:用於指定控制檔案可記載日誌歷史的最大個數.

使用RMAN執行備份操作時,RMAN備份資訊會被記載到控制檔案中.初始化引數control_file_record_keep_time指定了RMAN備份資訊在控制檔案中的保留時間,預設值為7.

多元化控制檔案

使用PFILE多元化控制檔案

如果在啟動例程時使用了pfile,在多元化控制檔案時需要手工編輯文字引數檔案,並修改初始化引數control_files.具體步驟如下:

1,手工修改初始化引數control_files

Control_files=d:democontrol01.ctl,e:democontrol02.ctl

此時e:democontrol02.ctl檔案還不存在.

2,關閉資料庫,

3,複製控制檔案

4,啟動資料庫.

因為例程使用PFILE,所以啟動時應該指定PFILE全名

STARTUP PFILE=%oracle_home%databaseinitdemo.ora

使用spfile多元化控制檔案

如果啟動例程使用spfile,在多元化控制檔案時需要執行ALTER SYSTEM命令修改初始化引數control_files

1,修改初始化引數

C:sqlplus sys/oracle@demo as sysdba

Sql>ALTER SYSTEM SET control_files=

2 ‘d:democontrol01.ctl’,’e:democontrol02.ctl’

3 SCOPE=SPFILE;

此時e:democontrol02.ctl還不存在.

2,關閉資料庫,

3,複製控制檔案

4,啟動資料庫.

處理意外丟失的控制檔案

多元化控制檔案以後,如果某個控制檔案丟失或損壞,資料庫將無法裝載,在啟動例程並裝載資料庫時,會報告如下錯誤;

ORA-00205:error in identifying controlfile,check alert log for more info

出現如上錯誤時,應修改初始化引數control_files,去掉損壞或丟失的控制檔案,然後重新啟動資料庫.

重建控制檔案.

以建立demo資料庫的控制檔案為例,說明重新建立控制檔案的方法

1,修改初始化引數CONTROL_FILES,改變控制檔案的位置.

如果控制檔案所在的磁碟出現損壞,那麼必須使用ALTER SYSTEM命令改變控制檔案的存放位置.當例程處於NOMOUNT狀態時,執行以下命令可以改變控制檔案位置.

Alter system set control_files=’c:democontrol01.ctl’,’d:democontrol02.ctl’ scope=spfile;

2,關閉例程

3.啟動例程(startup nomunt)

建立控制檔案時,要求例程必須處於NOMOUNT狀態.正確地設定了初始化引數CONTROL_FILES,玉女國國重新啟動例程,並應檢查初始化引數CONTROL_FILES的設定是否正確.

Startup nomount

Select value FROM v$parameter where name=’control_files’;

4,建立控制檔案.

CREATE CONTROLFILE DATABASE demo NORESETLOGS

LOGFILE

GROUP 1 ‘D:DEMOREDO01.LOG’ SIZE 10M,

GROUP 2 ‘D:DEMOREDO02.LOG’ SIZE 10M

DATAFILE

‘D:DEMOSYSTEM01.DBF’,

‘D:DEMOUNDOTBS01.DBF’,

‘D:DEMOSYSAUX01.DBF’

CHARACTER SET ZHS16GBK;

其中,DATABASE用於指定資料庫名,該名稱必須和初始化引數db_name完全一致;

NORESETLOGS用於指定仍然使用原有重做日誌,如果不希望使用原有重做日誌,可以指定RESETLOGS選項;

LOGFILE用於指定資料庫原有重做日誌大組號,尺寸已經對應的日誌成員;

DATAFILE用於指定資料庫原有的資料檔案

CHAARACETR SET 用於指定資料庫字符集.

5,開啟資料庫

Alter database open;

如果建立控制檔案時指定了RESETLOGS選項,那麼在開啟資料庫時必須帶有該選項(格式為ALTER DATABASE OPEN RESETLOGS).

6,增加臨時檔案.

開啟資料庫後,客戶應用可以執行各種資料庫訪問操作,如果執行排序操作,可能會顯示錯誤資訊.為了順利執行排序操作,必須重新建立臨時檔案.

Alter tablespace temp add tempfile ‘d:demotemp.dbf’ size 10485760

Reuse autoextend off;

修改永久引數

當某個DBA執行CREATE DATABASE ADD LOGFILE MEMBER為某日誌組增加日誌成員時,oracle顯示如下錯誤資訊:

ALTER DATABASE ADD LOGFILE MEMBER

*

ERROR at line 1:

ORA-00357:too many members specified for log file,the maximum is 2

出現如上錯誤時,表示日誌組成員個數超出了永久引數MAXLOGMEMBERS的設定.

在這種情況下,為了給日誌組增加多個日誌成員,必須修改永久引數MAXLOGMEMBERS.

然後才可以增加多個日誌成員.下面以限制DEMO資料庫最多10個日誌組,每個日誌組最多4個日誌成員為例,說明修改永久引數的方法.

1,啟動例程 STARTUP NOMOUNT

2,建立控制檔案.

建立控制檔案時必須提供正確的資料檔案和重做日誌清單.因為原有控制檔案仍然存在,所有必須指定REUSE選項覆蓋控制檔案.

CREATE CONTROLFILE REUSE DATABASE “DEMO” NORESETLOGS

MAXLOGFILES 10

MAXLOGMEMBERS 4

LOGFILE

GROUP 1 ‘D:DEMOREDO01.LOG’ SIZE 10M,

GROUP 2 ‘D:DEMOREDO02.LOG’ SIZE 10M

DATAFILE

‘D:DEMOSYSTEM01.DBF’,

‘D:DEMOUNDOTBS01.DBF’,

‘D:DEMOSYSAUX01.DBF’

CHARACTER SET ZHS16GBK;

3.開啟資料庫

Alter database open;

如果建立控制檔案時指定了RESETLOGS選項,那麼在開啟資料庫時必須帶有該選項(格式為ALTER DATABASE OPEN RESETLOGS).

4增加臨時檔案.

開啟資料庫後,客戶應用可以執行各種資料庫訪問操作,如果執行排序操作,可能會顯示錯誤資訊.為了順利執行排序操作,必須重新建立臨時檔案.

Alter tablespace temp add tempfile ‘d:demotemp.dbf’ size 10485760

Reuse autoextend off;

修改資料庫名稱

使用CREATE CONTROLFILE命令衝擊建立控制檔案.

使用工具DBNEWID改變資料庫名.

下面以DEMO資料庫名稱修改為EXAMPLE為例,說明透過建立控制檔案修改資料庫名稱的方法.

1,初始化引數DB_NAME

因為oracle資料庫名稱是透過初始化引數db_name來標識的,所有在建立控制檔案之前,必須正確的設定該引數.需要注意,因為初始化引數DB_NAME不能使用ALTER SYSTEM命令進行修改,所以必須建立PFILE,然後修改引數DB_NAME.最後使用該PFILE重新建立SPFILE

建立PFILE檔案:SQL>CREATE PFILE FROM SPFILE;

編輯PFILE檔案initdemo.ora,修改引數DB_NAME:db_name=example

建立臨時的SPFILE檔案.

因為當前例程使用的SPFILE檔案不能覆蓋,所有執行CREATE SPFILE是應該指定一個臨時的SPFILE檔案.示例如下:

CREATE SPFILE=’ORACLE_HOME%databasespfiletemp.ora’ from

PFILE=’%ORACLE_HOME%databaseinitdemo.ora’;

2,關閉oracle資料庫.

關閉oracle資料庫後,為了使用新的spfile檔案,應該使用OS命令刪除原來的SPFILE檔案,然後將臨時spfile檔案修改為spfiledemo.ora

3,啟動例程.

建立控制檔案必須在nomount狀態下進行,所以必須啟動例程.啟動例程後還應該初始化引數DB_NAME設定是否正確

STARTUP NOMOUNT

SELECT value FROM v$parameter WHERE name=’db_name’;

4,建立控制檔案.

因為要修改資料庫名稱,所有建立控制檔案時必須指定SET DATABASE選項和RESETLOGS選項.因為原有控制檔案仍然存在,所有必須指定REUSE選項覆蓋控制檔案

CREATE CONTROLFILE REUSE SET DATABASE “EXAMPLE” RESETLOGS

MAXLOGFILES 16

MAXLOGMEMBERS 3

MAXDATAFILES 100

MAXINSTANCES 8

MAXLOGHISTORY 454

LOGFILE

GROUP 1 ‘D:DEMOREDO01.LOG’ SIZE 10M,

GROUP 2 ‘D:DEMOREDO02.LOG’ SIZE 10M

DATAFILE

‘D:DEMOSYSTEM01.DBF’,

‘D:DEMOUNDOTBS01.DBF’,

‘D:DEMOSYSAUX01.DBF’

CHARACTER SET ZHS16GBK;

5,開啟資料庫

Alter database open;

如果建立控制檔案時指定了RESETLOGS選項,那麼在開啟資料庫時必須帶有該選項(格式為ALTER DATABASE OPEN RESETLOGS).

6,增加臨時檔案.

開啟資料庫後,客戶應用可以執行各種資料庫訪問操作,如果執行排序操作,可能會顯示錯誤資訊.為了順利執行排序操作,必須重新建立臨時檔案.

Alter tablespace temp add tempfile ‘d:demotemp.dbf’ size 10485760

Reuse autoextend off;

刪除控制檔案

使用ALTER SYSTEM命令修改初始化引數

Alter system set control_files=’d:democontrol01.ctl’ scope=spfile;然後重新啟動資料庫

檢視控制檔案的資訊

1,顯示控制檔名稱.

Select * from v$controlfile;

2, 顯示初始化引數control_files

Select value from v$parameter where name=’control_files’;

3,獲得控制檔案不同部分的資訊.

Col type format a20

Select type,record_size,records_total,records_used from v$controlfile_record_section;

其中,type用於標識特定記錄型別,record_size用於標識每條記錄所佔用的位元組數,

RECORDS_TOTAL用於標識記錄的最大條數,RECORDS_USED用於標識已佔用記錄條數.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/312079/viewspace-245220/,如需轉載,請註明出處,否則將追究法律責任。

相關文章