Oracle 11g Dataguard環境下資料檔案、日誌檔案管理(上)

lwitpub發表於2014-05-07

 

Dataguard環境下,PrimaryStandby之間是緊密關聯的物件。很多單例項環境下常見的資料庫管理動作,如表空間建立、資料檔案新增、日誌管理等都有很大的不同和差異。

 

本篇主要介紹在DG環境下,資料檔案Data File和線上日誌online redo log的管理操作。

 

1、環境介紹

 

筆者使用版本為Oracle 11.2.0.4DG已經搭建完成。

 

SQL> select * from v$version;

 

BANNER

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

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - Production

PL/SQL Release 11.2.0.4.0 - Production

CORE  11.2.0.4.0 Production

 

TNS for Linux: Version 11.2.0.4.0 - Production

NLSRTL Version 11.2.0.4.0 - Production

 

Primary端例項名稱為ora11g,命名轉換引數設定完成。資料檔案如下:

 

 

ora11g

SQL> select file_name from dba_data_files;

 

FILE_NAME

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

/u01/app/oradata/ORA11G/datafile/o1_mf_users_9mnjs074_.dbf

/u01/app/oradata/ORA11G/datafile/o1_mf_undotbs1_9mnjs068_.dbf

/u01/app/oradata/ORA11G/datafile/o1_mf_sysaux_9mnjs04h_.dbf

/u01/app/oradata/ORA11G/datafile/o1_mf_system_9mnjrzty_.dbf

 

SQL> show parameter convert;

 

NAME                                 TYPE        VALUE

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

db_file_name_convert                 string      ORA11G, ORA11GSY

log_file_name_convert                string      ORA11G, ORA11GSY

 

引數standby_file_management設定為AUTOOracle官方要求在DG環境下,取值為AUTO

 

SQL> show parameter standby_file

 

NAME                                 TYPE        VALUE

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

standby_file_management              string      AUTO

 

Primary端日誌情況如下:

 

 

SQL> select group#, type, member from v$logfile;

 

    GROUP# TYPE    MEMBER

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

         3 ONLINE  /u01/app/oradata/ORA11G/onlinelog/o1_mf_3_9mnjx4n0_.log

         3 ONLINE  /u01/app/fast_recovery_area/ORA11G/onlinelog/o1_mf_3_9mnjx54c_.log

         2 ONLINE  /u01/app/oradata/ORA11G/onlinelog/o1_mf_2_9mnjwzpq_.log

         2 ONLINE  /u01/app/fast_recovery_area/ORA11G/onlinelog/o1_mf_2_9mnjx15f_.log

         1 ONLINE  /u01/app/oradata/ORA11G/onlinelog/o1_mf_1_9mnjwtj9_.log

         1 ONLINE  /u01/app/fast_recovery_area/ORA11G/onlinelog/o1_mf_1_9mnjwvdm_.log

         4 STANDBY /u01/app/oradata/ORA11G/onlinelog/o1_mf_4_9nd01b56_.log

         4 STANDBY /u01/app/fast_recovery_area/ORA11G/onlinelog/o1_mf_4_9nd01cpl_.log

         5 STANDBY /u01/app/oradata/ORA11G/onlinelog/o1_mf_5_9nd04pps_.log

         5 STANDBY /u01/app/fast_recovery_area/ORA11G/onlinelog/o1_mf_5_9nd04rpd_.log

         6 STANDBY /u01/app/oradata/ORA11G/onlinelog/o1_mf_6_9nd04xjo_.log

         6 STANDBY /u01/app/fast_recovery_area/ORA11G/onlinelog/o1_mf_6_9nd04yv7_.log

 

12 rows selected

 

Standby端名稱為ora11gsy,對應引數配置和Primary端相同。資料檔案和日誌情況如下:

 

 

SQL> col file_name for a65

SQL> select file_name from dba_data_files;

 

FILE_NAME

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

/u01/app/oradata/ORA11GSY/datafile/o1_mf_users_9mnjs074_.dbf

/u01/app/oradata/ORA11GSY/datafile/o1_mf_undotbs1_9mnjs068_.dbf

/u01/app/oradata/ORA11GSY/datafile/o1_mf_sysaux_9mnjs04h_.dbf

/u01/app/oradata/ORA11GSY/datafile/o1_mf_system_9mnjrzty_.dbf

 

SQL> select group#, type, member from v$logfile;

 

    GROUP# TYPE    MEMBER

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

         3 ONLINE  /u01/app/oradata/ORA11GSY/onlinelog/o1_mf_3_9ndhov9r_.log

         3 ONLINE  /u01/app/fast_recovery_area/ORA11GSY/onlinelog/o1_mf_3_9ndhovov_.log

         2 ONLINE  /u01/app/oradata/ORA11GSY/onlinelog/o1_mf_2_9ndhoqbh_.log

         (篇幅原因,有省略……

         6 STANDBY /u01/app/fast_recovery_area/ORA11GSY/onlinelog/o1_mf_6_9ndhpfvo_.log

 

12 rows selected

 

 

SQL> show parameter convert

 

NAME                                 TYPE        VALUE

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

db_file_name_convert                 string      ORA11G, ORA11GSY

log_file_name_convert                string      ORA11G, ORA11GSY

 

我們首先進行資料檔案建立過程實驗。

 

2、資料檔案管理實驗

 

建立表空間,新增檔案是我們經常進行的日常維護操作。搭建DG之後,是可以在Primary端直接建立檔案,Oracle會在Standby端進行新檔案建立動作。

 

注意:這個操作要滿足兩個前提。首先需要確認primarystandby端對應位置(convert過的目錄)存在足夠的儲存空間。一旦由於空間問題引起standby端檔案建立失敗,額外處理比較麻煩。另一個確保standby_file_management引數取值auto,該引數的作用是將PrimaryStandby檔案建立動作繫結起來,進行自動同步操作。

 

--空間確認

[root@SimpleLinux ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda2        48G   15G   31G  33% /

tmpfs           2.0G  278M  1.8G  14% /dev/shm

 

primary端建立表空間,使用OMF特性,由Oracle負責檔案命名。

 

 

SQL> create tablespace dgtest datafile size 500m autoextend off

  2  extent management local uniform size 1m

  3  segment space management auto;

 

Tablespace created

 

檔案確認。

 

SQL> select file_name from dba_data_files;

 

FILE_NAME

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

/u01/app/oradata/ORA11G/datafile/o1_mf_users_9mnjs074_.dbf

/u01/app/oradata/ORA11G/datafile/o1_mf_undotbs1_9mnjs068_.dbf

/u01/app/oradata/ORA11G/datafile/o1_mf_sysaux_9mnjs04h_.dbf

/u01/app/oradata/ORA11G/datafile/o1_mf_system_9mnjrzty_.dbf

/u01/app/oradata/ORA11G/datafile/o1_mf_dgtest_9pck1kvs_.dbf

 

standby端檔案建立:

 

 

SQL> select file_name from dba_data_files;

 

FILE_NAME

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

(篇幅原因,有省略……)

/u01/app/oradata/ORA11GSY/datafile/o1_mf_system_9mnjrzty_.dbf

/u01/app/oradata/ORA11GSY/datafile/o1_mf_dgtest_9pck215t_.dbf

 

注意一個細節:standby端建立了表空間dgtest的檔案,但是和建立DG過程生成檔案不同的是,檔名並不相同。說明:Oracle在這個過程,是自我應用OMF的。

 

standby端日誌情況如下:

 

 

Sun May 04 12:37:55 2014

create tablespace dgtest datafile size 500m autoextend off

extent management local uniform size 1m

segment space management auto

 

ORA-604 signalled during: create tablespace dgtest datafile size 500m autoextend off

extent management local uniform size 1m

segment space management auto

 

...

Sun May 04 12:38:39 2014

Successfully added datafile 5 to media recovery

Datafile #5: '/u01/app/oradata/ORA11GSY/datafile/o1_mf_dgtest_9pck215t_.dbf'

 

上面實驗的是Primary端應用OMF。如果是指定檔名稱目錄,效果如何呢?

 

 

SQL> create tablespace dgtest2 datafile '/u01/app/oradata/ORA11G/datafile/dgtest201.dbf' size 10m autoextend off

  2  extent management local uniform size 1m

  3  segment space management auto;

 

Tablespace created

 

 

SQL> select file_name from dba_data_files;

 

FILE_NAME

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

(篇幅原因,有省略……

/u01/app/oradata/ORA11G/datafile/o1_mf_dgtest_9pck1kvs_.dbf

/u01/app/oradata/ORA11G/datafile/dgtest201.dbf

 

6 rows selected

 

注意,在Standby端,Oracle並沒有進行檔案轉義,而是採用standby端的OMF策略建立檔案。

 

 

SQL> select file_name, tablespace_name from dba_data_files;

 

FILE_NAME                                                         TABLESPACE_NAME

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

(篇幅原因,有省略……

/u01/app/oradata/ORA11GSY/datafile/o1_mf_dgtest_9pck215t_.dbf     DGTEST

/u01/app/oradata/ORA11GSY/datafile/o1_mf_dgtest2_9pckjo3w_.dbf    DGTEST2 (不同之處)

 

6 rows selected

 

日誌資訊:

 

Sun May 04 12:46:13 2014

Successfully added datafile 6 to media recovery

Datafile #6: '/u01/app/oradata/ORA11GSY/datafile/o1_mf_dgtest2_9pckjo3w_.dbf'

 

說明:我們雖然在Primary端建立檔案採用直接檔案指定的方法,但是對應到Standby端,還是會有OMF策略。

 

下面實驗刪除表空間:

 

--Primary

SQL> drop tablespace dgtest2 including contents and datafiles;

Tablespace dropped

 

standby端對應的日誌如下:

 

Sun May 04 12:53:20 2014

Recovery deleting file #6:'/u01/app/oradata/ORA11GSY/datafile/o1_mf_dgtest2_9pckjo3w_.dbf' from controlfile.

Deleted Oracle managed file /u01/app/oradata/ORA11GSY/datafile/o1_mf_dgtest2_9pckjo3w_.dbf

Recovery dropped tablespace 'DGTEST2'

 

刪除檔案會自動連帶刪除。注意:資料檔案自動建立對於引數standby_file_management的依賴是強制性的。如果這個引數保持預設值manual,那麼在建立過程中會出現錯誤。

 

下面我們討論redo log的情況。


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

相關文章