新增控制檔案成員形成多路徑

skyin_1603發表於2016-10-15

在一般生產的環境中,重要的檔案,比如三大檔案,其中控制檔案與日誌檔案,都需要建立冗餘形成多路徑
控制檔案或者多路徑日誌檔案,這樣提高資料庫的安全性。學習環境就沒有必要這樣做,以下是模擬建立冗餘的過程:

新增控制檔案成員:


1、檢視目前的控制檔案

SQL> select name from v$controlfile;

NAME

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

/u01/app/oracle/oradata/PROD/ora_control1.ctl

/u01/app/oracle/oradata/PROD/ora_control2.ctl


 2、新增兩個控制檔案,形成多路徑控制檔案:

SQL> alter system set control_files=

  2  '/u01/app/oracle/oradata/PROD/ora_control1.ctl',

  3  '/u01/app/oracle/oradata/PROD/ora_control2.ctl',

  4  '/u01/app/oracle/fast_recovery_area/ora_control3.ctl',

  5  '/u01/app/FRA/ora_control4.ctl'

  6  scope = spfile;                
 -------因為這個修改靜態引數,所以要以scope = spfile修改,重啟資料庫後才能生效,在當前會話不生效。

System altered.

 

3、關閉資料庫,系統層複製控制檔案:

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

 
4、在系統層生產跟寫在引數檔案裡控制檔案引數值相對應的檔案物件:(這個非常關鍵
-----這一步操作,必須在關閉資料庫的狀態下進行,主要是為了關閉控制檔案,避免控制檔案寫內容。

SQL> !cp /u01/app/oracle/oradata/PROD/ora_control1.ctl /u01/app/oracle/fast_recovery_area/ora_control3.ctl

SQL> !cp /u01/app/oracle/oradata/PROD/ora_control1.ctl /u01/app/FRA/ora_control4.ctl

新增了兩個控制檔案成員,就相應地新增連個控制檔案的物件,這個還可以在系統層oracle使用者的home目錄下進行操作
如下:
[oracle@enmo ~]$  cp /u01/app/oracle/oradata/PROD/ora_control1.ctl /u01/app/oracle/fast_recovery_area/ora_control3.ctl
[oracle@enmo ~]$  cp /u01/app/oracle/oradata/PROD/ora_control1.ctl /u01/app/FRA/ora_control4.ctl


5、檢視檔案:

[oracle@enmo ~]$ cd /u01/app/oracle/fast_recovery_area/

[oracle@enmo fast_recovery_area]$ ls

ora_control3.ctl

[oracle@enmo ~]$ cd /u01/app/FRA/

[oracle@enmo FRA]$ ls

ora_control4.ctl

看到新控制檔案成員已經建立成功。

6、開啟資料庫:

SQL> startup

ORACLE instance started.

 

Total System Global Area  835104768 bytes

Fixed Size                  2257840 bytes

Variable Size             541068368 bytes

Database Buffers          289406976 bytes

Redo Buffers                2371584 bytes

Database mounted.

Database opened.

新增成功,沒有發現錯誤,正常啟動資料庫。

 

7、再次檢視控制檔案:

SQL> select name from v$controlfile;

NAME

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

/u01/app/oracle/oradata/PROD/ora_control1.ctl

/u01/app/oracle/oradata/PROD/ora_control2.ctl

/u01/app/oracle/fast_recovery_area/ora_control3.ctl

/u01/app/FRA/ora_control4.ctl
新的控制檔案生效。

以上在新增過程中,有一些步驟是非常關鍵的。記得在我第一次新增控制檔案成員的時候,由於先在系統層生成
控制檔案成員,再修改引數檔案的該靜態引數,最後在啟動資料庫到mount狀態的時候報錯了,原因是控制檔案
版本不一樣。因為該引數是在資料庫開啟的狀態下修改的,修改引數過程中,資料庫在不斷地往控制檔案中寫入資料庫
的修改資訊,這些修改資訊都要註冊到控制檔案中才能被資料庫識別生效。那一次的錯誤操作的教訓,讓我刻骨銘心。

所以記得兩點:

1》先修改引數再關庫。
2》先關庫再在系統複製控制檔案。

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

相關文章