oracle實驗記錄 (oracle 10G dataguard(3)檔案管理)

fufuh2o發表於2009-11-16

關於db_file_name_convert,log_file_name_convert,standby_file_management 引數,理解dg檔案管理


SQL> show parameter standby_file(standby)

NAME                                 TYPE        VALUE
------------------------------------ ----------- -----------------------------
standby_file_management              string      auto

SQL> show parameter name_convert(standby)

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert                 string      g:\oracle\product\10.2.0\orada
                                                 ta\xh, e:\standby\datafile
log_file_name_convert                string      g:\oracle\product\10.2.0\orada
                                                 ta\xh, e:\standby\datafile
SQL> show parameter recov_(standby)

NAME                                 TYPE        VALUE
------------------------------------ ----------- ---------------------------
db_recovery_file_dest                string      e:\standby\archive

1.primary上create tablespace

SQL> create tablespace xhtr datafile 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\xhtr.d
bf' size 10m;

表空間已建立。

SQL> col file_name format a35
SQL> col tablespace_name format a10
SQL> select tablespace_name,file_name from dba_data_files;

TABLESPACE FILE_NAME
---------- -----------------------------------
USERS      G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH
           \USERS01.DBF

SYSAUX     G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH
           \SYSAUX01.DBF

UNDOTBS1   G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH
           \UNDOTBS01.DBF

SYSTEM     G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH
           \SYSTEM01.DBF

TABLESPACE FILE_NAME
---------- -----------------------------------

EXAMPLE    G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH
           \EXAMPLE01.DBF

XHTR       G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH
           \XHTR.DBF


已選擇6行。
SQL> alter system switch logfile;

系統已更改。

SQL>


2.standby1 上應用
SQL> alter database recover managed standby database disconnect from session;

資料庫已更改。

SQL> alter database recover managed standby database cancel;

資料庫已更改。


SQL> alter database open read only;

資料庫已更改。
SQL> col file_name format a35
SQL> col tablespace_name format a10
SQL> select tablespace_name,file_name from dba_data_files;

TABLESPACE FILE_NAME
---------- -----------------------------------
USERS      E:\STANDBY\DATAFILE\USERS01.DBF
SYSAUX     E:\STANDBY\DATAFILE\SYSAUX01.DBF
UNDOTBS1   E:\STANDBY\DATAFILE\UNDOTBS01.DBF
SYSTEM     E:\STANDBY\DATAFILE\SYSTEM01.DBF
EXAMPLE    E:\STANDBY\DATAFILE\EXAMPLE01.DBF
XHTR       E:\STANDBY\DATAFILE\XHTR.DBF~~~~~~~~看到primary db上 新create 的datafile

已選擇6行。

如果要是primary 上 drop tablespace的話 ,standby 也會應用完archivelog後 自動drop tablespace


3.primary 上create tablespace  (standby  standby_file_management改為manual)

SQL> alter system set standby_file_management=MANUAL;(standby)

系統已更改。
SQL> create tablespace xhtr2 datafile 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\xhtr2(primary)
.dbf' size 10m;

表空間已建立。

SQL> alter system switch logfile;(primary)

系統已更改。
SQL> alter database recover managed standby database disconnect from session;(standby)

資料庫已更改。


SQL> select applied from v$archived_log;(standby)

APP
---
.................
YES
NO~~~~~~~~~~~~~~~~~~~~~~可以看到 這個archivelog 沒有應用完

已選擇16行。

檢視standby 的alert.log
ORA-01111: name for data file 7 is unknown - rename to correct file
ORA-01110: data file 7: 'G:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNAMED00007'
ORA-01157: cannot identify/lock data file 7 - see DBWR trace file
ORA-01111: name for data file 7 is unknown - rename to correct file
ORA-01110: data file 7: 'G:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNAMED00007

從alert資訊可以看到standby應用archived log時沒有對應的目錄,standby file 管理為手動


SQL> select name from v$datafile;(standby)

NAME
------------------------------
E:\STANDBY\DATAFILE\SYSTEM01.D
BF

E:\STANDBY\DATAFILE\UNDOTBS01.
DBF

E:\STANDBY\DATAFILE\SYSAUX01.D
BF

E:\STANDBY\DATAFILE\USERS01.DB
F

NAME
------------------------------

E:\STANDBY\DATAFILE\EXAMPLE01.
DBF

E:\STANDBY\DATAFILE\XHTR.DBF
G:\ORACLE\PRODUCT\10.2.0\DB_1\~~~~~可以看到standby有一個錯誤的檔名字
DATABASE\UNNAMED00007


已選擇7行。
SQL> select name from v$tablespace;(standby)

NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
USERS
TEMP
EXAMPLE
XHTR
XHTR2~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~standby 中加入了primary 的新tablespace資訊

已選擇8行。

SQL> alter database create datafile 'G:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNA
MED00007' as 'e:\standby\datafile\xhtr2.dbf';**********

資料庫已更改。

SQL> select name from v$datafile;(standby)

NAME
------------------------------
E:\STANDBY\DATAFILE\SYSTEM01.D
BF

E:\STANDBY\DATAFILE\UNDOTBS01.
DBF

E:\STANDBY\DATAFILE\SYSAUX01.D
BF

E:\STANDBY\DATAFILE\USERS01.DB
F

NAME
------------------------------

E:\STANDBY\DATAFILE\EXAMPLE01.
DBF

E:\STANDBY\DATAFILE\XHTR.DBF
E:\STANDBY\DATAFILE\XHTR2.DBF

已選擇7行。

SQL> alter database recover managed standby database disconnect from session;(standby)

資料庫已更改。

SQL> select applied from v$archived_log;(standby)

......
YES
YES~~~~應用了

已選擇16行。

SQL> drop tablespace xhtr2 including contents and datafiles;(primary)

表空間已刪除。

SQL> alter system switch logfile;(primary)

系統已更改。
SQL> select name from v$tablespace;(standby)

NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
USERS
TEMP
EXAMPLE
XHTR

已選擇7行。

SQL> select name from v$datafile;(standby)

NAME
------------------------------
E:\STANDBY\DATAFILE\SYSTEM01.D
BF

E:\STANDBY\DATAFILE\UNDOTBS01.
DBF

E:\STANDBY\DATAFILE\SYSAUX01.D
BF

E:\STANDBY\DATAFILE\USERS01.DB
F

NAME
------------------------------

E:\STANDBY\DATAFILE\EXAMPLE01.
DBF

E:\STANDBY\DATAFILE\XHTR.DBF

已選擇6行。
 
可以看到manual情況 中standby 的tablespace資訊刪除了 ,但實際的資料檔案 沒刪除
C:\>dir e:\standby\datafile
 驅動器 E 中的卷沒有標籤。
 卷的序列號是 AC5C-2ED7

 e:\standby\datafile 的目錄
.................................
2009-11-03  17:18        10,493,952 XHTR2.DBF***********************物理上還存在
              16 個檔案  1,132,747,162 位元組

 


4.primary create tablespace 但 datafile 不含在 standby 引數db_file_name_convert中(standby_file_management auto)

SQL> alter system set standby_file_management=AUTO;(standby)

系統已更改。
SQL> show parameter db_file_name

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert                 string      g:\oracle\product\10.2.0\orada
                                                 ta\xh, e:\standby\datafile


下面是primary 和standby的 狀態

SQL> col tablespace_name format a10
SQL> col  file_name format a50
SQL> select tablespace_name,file_name from dba_data_files;(primary)

TABLESPACE FILE_NAME
---------- --------------------------------------------------
USERS      G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\USERS01.DBF
SYSAUX     G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\SYSAUX01.DBF
UNDOTBS1   G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\UNDOTBS01.DBF
SYSTEM     G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\SYSTEM01.DBF
EXAMPLE    G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\EXAMPLE01.DBF
XHTR       G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\XHTR.DBF


已選擇7行。

 

SQL> select name from v$tablespace;(standby)

NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
USERS
TEMP
EXAMPLE
XHTR


已選擇8行。

SQL> select name from v$datafile;(standby)

NAME
--------------------------------------------------------------------------------

E:\STANDBY\DATAFILE\SYSTEM01.DBF
E:\STANDBY\DATAFILE\UNDOTBS01.DBF
E:\STANDBY\DATAFILE\SYSAUX01.DBF
E:\STANDBY\DATAFILE\USERS01.DBF
E:\STANDBY\DATAFILE\EXAMPLE01.DBF
E:\STANDBY\DATAFILE\XHTR.DBF

SQL> create tablespace xhtr2 datafile 'g:\xhtr2.dbf' size 10m; (primary)

表空間已建立。

SQL> alter system switch logfile; (primary)

系統已更改。
SQL> select  CREATOR,applied  from v$archived_log;(standby)

 

ARCH    YES

CREATOR APP
------- ---
ARCH    NO~~~~~~看到 這個由arch程式傳遞過來的最新歸檔沒有應用

已選擇23行。

檢視standby alert.log
Some recovered datafiles maybe left media fuzzy
Media recovery may continue but open resetlogs may fail
Wed Nov 04 09:39:47 2009
Errors in file e:\standby\bdump\standby1_mrp0_2616.trc:
ORA-01274: cannot add datafile 'G:\XHTR2.DBF' - file could not be created
ORA-01119: error in creating database file 'G:\XHTR2.DBF'
ORA-27038: created file already exists
OSD-04010: 指定了 選項, 但檔案已經存在********可以看到standby 應用歸檔 要在與primary相同的位置建立一個資料檔案(如果是2臺機器 目錄一樣 那麼沒問題 )
但這個檔案 已由primary建立


SQL> select name from v$datafile;(standby)


NAME
--------------------------------------------------------------------------------

E:\STANDBY\DATAFILE\SYSTEM01.DBF
E:\STANDBY\DATAFILE\UNDOTBS01.DBF
E:\STANDBY\DATAFILE\SYSAUX01.DBF
E:\STANDBY\DATAFILE\USERS01.DBF
E:\STANDBY\DATAFILE\EXAMPLE01.DBF
E:\STANDBY\DATAFILE\XHTR.DBF
G:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNAMED00007(一個不知名的檔案)

已選擇7行。

SQL> select name from v$tablespace;(standby)


NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
USERS
TEMP
EXAMPLE
XHTR
XHTR2~~~~~~~~~~~~~~~~~資訊已經應用

已選擇8行。

 

SQL> alter database create datafile 'G:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNA    (standby)

MED00007' as 'e:\standby\datafile\xhtr2.dbf';
alter database create datafile 'G:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNAMED00
007' as 'e:\standby\datafile\xhtr2.dbf'
*
第 1 行出現錯誤:
ORA-01275: 自動進行備用檔案管理時, 不允許進行 CREATE DATAFILE 操作。


SQL> alter system set standby_file_management=MANUAL; (standby)~~~必須改會manual才行


系統已更改。

SQL> alter database create datafile 'G:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNA  (standby)

MED00007' as 'e:\standby\datafile\xhtr2.dbf';

資料庫已更改。

SQL> alter database recover managed standby database disconnect from session;(standby)

資料庫已更改。

SQL> select applied  from v$archived_log;(standby)
APP
---
YES~~~~~~~~~~~~~~~已經應用成功

已選擇23行。

這樣就明白了db_file_name_convert的 意義主要就是應用redo時 轉換目錄對映目錄.(log_file_name_convert意思是一樣的)

 

不含在db_file_name_conver中可以用 OMF解決
但前提是standby_file_management=auto


SQL> show parameter standby_file

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
standby_file_management              string      MANUAL
SQL>

SQL> alter system set db_create_file_dest='e:\standby\datafile';(standby)

系統已更改。

SQL> show parameter db_create_file_dest (standby)

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest                  string      e:\standby\datafile

 

SQL> create tablespace xhtr3 datafile 'g:\xhtr3.dbf' size 10m;(primary)

表空間已建立。

SQL> alter system switch logfile;(primary)

系統已更改。

SQL> select applied  from v$archived_log;(standby)

APP
---
YES
NO~~~~在standby 這個 收到的archivelog 還是沒有 應用

已選擇24行。

檢視standby alert.log
Wed Nov 04 10:05:54 2009
Errors in file e:\standby\bdump\standby1_mrp0_3624.trc:
ORA-01111: name for data file 8 is unknown - rename to correct file
ORA-01110: data file 8: 'G:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNAMED00008'
ORA-01157: cannot identify/lock data file 8 - see DBWR trace file
ORA-01111: name for data file 8 is unknown - rename to correct file
ORA-01110: data file 8: 'G:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNAMED00008'

這個錯誤是standby_file_management manual時錯誤
SQL> alter system set standby_file_management=AUTO;

系統已更改。

SQL> alter database recover managed standby database disconnect from session;(standby)

資料庫已更改。
SQL> select applied  from v$archived_log;(standby)

YES
YES
YES
YES

APP
---
YES
NO~~~~~~~~~~~~~~~~~~~~~~~還是應用不行

已選擇24行。
SQL> show parameter db_create_file_dest(standby)

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest                  string      e:\standby\datafile
SQL> show parameter standby_file_management

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
standby_file_management              string      AUTO


SQL> select name from v$tablespace;(standby)

NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
USERS
TEMP
EXAMPLE
XHTR
XHTR2
XHTR3

已選擇9行。

SQL> select name from v$datafile;(standby)

NAME
--------------------------------------------------------------------------------

E:\STANDBY\DATAFILE\SYSTEM01.DBF
E:\STANDBY\DATAFILE\UNDOTBS01.DBF
E:\STANDBY\DATAFILE\SYSAUX01.DBF
E:\STANDBY\DATAFILE\USERS01.DBF
E:\STANDBY\DATAFILE\EXAMPLE01.DBF
E:\STANDBY\DATAFILE\XHTR.DBF
E:\STANDBY\DATAFILE\XHTR2.DBF
G:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNAMED00008

已選擇8行。

SQL> alter system set standby_file_management=MANUAL;(standby)

系統已更改。

SQL> alter database create datafile 'G:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNA (standby)
MED00008' as 'e:\standby\datafile\xhtr3'
  2  ;

資料庫已更改。

SQL> alter database recover managed standby database disconnect from session;
(standby)
資料庫已更改。

SQL>  select applied  from v$archived_log;(standby)

APP
---
APP
---
YES
YES~~~~~~~~~~~成功應用

已選擇24行。

SQL> select name from v$tablespace;

NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
USERS
TEMP
EXAMPLE
XHTR
XHTR2
XHTR3

已選擇9行。

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------

E:\STANDBY\DATAFILE\SYSTEM01.DBF
E:\STANDBY\DATAFILE\UNDOTBS01.DBF
E:\STANDBY\DATAFILE\SYSAUX01.DBF
E:\STANDBY\DATAFILE\USERS01.DBF
E:\STANDBY\DATAFILE\EXAMPLE01.DBF
E:\STANDBY\DATAFILE\XHTR.DBF
E:\STANDBY\DATAFILE\XHTR2.DBF
E:\STANDBY\DATAFILE\XHTR3

已選擇8行。
SQL> alter system set standby_file_management=AUTO;(standby)

系統已更改。


SQL> create tablespace xhtr4 datafile 'g:\xhtr4.dbf' size 10m;(primary)

表空間已建立。

SQL> alter system switch logfile;(primary)

系統已更改。

SQL> select applied from v$archived_log;(standby)


YES~~~~~~~~~~~~~~應用成功

已選擇27行。
SQL> select name from v$tablespace;(standby)

NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
USERS
TEMP
EXAMPLE
XHTR
XHTR2
XHTR3
XHTR4

已選擇10行。

SQL> select name from v$datafile;(standby)

NAME
--------------------------------------------------------------------------------

E:\STANDBY\DATAFILE\SYSTEM01.DBF
E:\STANDBY\DATAFILE\UNDOTBS01.DBF
E:\STANDBY\DATAFILE\SYSAUX01.DBF
E:\STANDBY\DATAFILE\USERS01.DBF
E:\STANDBY\DATAFILE\EXAMPLE01.DBF
E:\STANDBY\DATAFILE\XHTR.DBF
E:\STANDBY\DATAFILE\XHTR2.DBF
E:\STANDBY\DATAFILE\XHTR3
E:\STANDBY\DATAFILE\STANDBY1\DATAFILE\O1_MF_XHTR4_5H2778OZ_.DBF  應用成功檔名按OMF 管理名字命名

已選擇9行。

上面可以看 出  如果standby file managment 為auto ,而primary 新增的datafile 不再 db_file_name_convert中可以 用omf解決,不過要提前設定omf 和 standby file management 為auto,standby要是開著恢復模式(recover managed standby) 那麼日誌資訊會應用~~controlfile中會記錄下錯誤的資訊,這之後再開omf或設為auto已經晚了 ,因為control file中已經有了該檔案的錯誤資訊

 


SQL> create tablespace xhtr5 datafile 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\xhtr5(primary)
.dbf' size 10m;

表空間已建立。

SQL> alter system switch logfile;(primary)

系統已更改。

 

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------

E:\STANDBY\DATAFILE\SYSTEM01.DBF
E:\STANDBY\DATAFILE\UNDOTBS01.DBF
E:\STANDBY\DATAFILE\SYSAUX01.DBF
E:\STANDBY\DATAFILE\USERS01.DBF
E:\STANDBY\DATAFILE\EXAMPLE01.DBF
E:\STANDBY\DATAFILE\XHTR.DBF
E:\STANDBY\DATAFILE\XHTR2.DBF
E:\STANDBY\DATAFILE\XHTR3
E:\STANDBY\DATAFILE\STANDBY1\DATAFILE\O1_MF_XHTR4_5H2778OZ_.DBF
E:\STANDBY\DATAFILE\STANDBY1\DATAFILE\O1_MF_XHTR5_5H28JPVT_.DBF~~~~即便primary建立時,在db_file_name_convert中 ,且standby file管理為auto,但日誌應用時候還是                                                                   建立在omf指定的上面
已選擇10行。

 

 

 

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

相關文章