ORACLE DG 庫參數db_file_name_convert和log_file_name_convert的作用


https://www.cnblogs.com/xqzt/p/5089826.html

ORACLE DG 庫參數db_file_name_convert和log_file_name_convert的作用
一、參數說明
[1] db_file_name_convert
db_file_name_convert 主數據庫和備用數據庫的數據文件轉換目錄映射(如果兩數據庫的目錄結構不一樣),如果有多個對映,逐一指明對映關系。

格式: *.db_file_name_convert= 主數據庫數據文件目錄,備用數據庫數據文件目錄

[2] log_file_name_convert
指明主數據庫和備用數據庫的log文件轉換目錄映射。

格式: *. log_file_name_convert=主數據庫log目錄,備用數據庫目錄

二、作用過程:
下面通過跟蹤恢復從庫的過程來分析這從庫參數文件中db_file_name_convert和log_file_name_convert的作用:

1.dataguard的主庫完全備份數據庫;

2.將主庫的完全備份復制到從庫的相應位置

3.恢復從庫,下面到了最關鍵部分了

用主庫的備份來恢復從庫,可以想到從庫恢復出來中的控制文件和主庫的控制一樣。但是我們想使主從庫的數據文件路徑、聯機日志路徑不同; 最關鍵的參數要用到了,
那就是db_file_name_convert和log_file_name_convert從庫通過主庫的備份恢復控制文件--->恢復控制文件時,oracle查看從庫參數文件中的db_file_name_convert和
log_file_name_convert參數---->將主庫保存數據文件、聯機日志的路徑轉換成從庫保存數據文件、聯機日志的路徑---->生成從庫的控制文件。
所以,db_file_name_convert和log_file_name_convert這兩個參數像橋梁一樣,來完成轉換dataguard的主庫和從庫數據文件和聯機日志保存路徑不同的問題

驗證1:備庫未配置db_file_name_convert和log_file_name_convert

Standby>show parameter convert
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
db_file_name_convert string
log_file_name_convert string
Standby>

主庫新增數據文件/usr/oracle/app/oradata/orcl/tb01.dbf 和 /usr/oracle/app/oradata/tb02.dbf

Primary>create tablespace TB01 datafile '/usr/oracle/app/oradata/orcl/tb01.dbf' size 1m autoextend on;
Tablespace created.
Primary>create tablespace TB02 datafile '/usr/oracle/app/oradata/tb02.dbf' size 1m autoextend on;
Tablespace created.
Primary>select name from v$datafile;
NAME
-----------------------------------------------------------------------------------------------------------------------------
/usr/oracle/app/oradata/orcl/system01.dbf
/usr/oracle/app/oradata/orcl/sysaux01.dbf
/usr/oracle/app/oradata/orcl/undotbs01.dbf
/usr/oracle/app/oradata/orcl/users01.dbf
/usr/oracle/app/oradata/orcl/tb01.dbf
/usr/oracle/app/oradata/tb02.dbf
6 rows selected.

Primary>

備庫執行

Standby>alter database recover managed standby database disconnect from session;
Standby>select name from v$datafile;

NAME
----------------------------------------------------------------------------------------------------
/usr/oracle/standby/app/oradata/orcl_standby/system01.dbf
/usr/oracle/standby/app/oradata/orcl_standby/sysaux01.dbf
/usr/oracle/standby/app/oradata/orcl_standby/undotbs01.dbf
/usr/oracle/standby/app/oradata/orcl_standby/users01.dbf
/usr/oracle/app/oradata/orcl/tb01.dbf
/usr/oracle/app/oradata/tb02.dbf

路徑和主庫的路徑相同

驗證2:備庫配置了db_file_name_convert和log_file_name_convert

Standby>show parameter convert

NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
db_file_name_convert string /usr/oracle/app/oradata/orcl/,/usr/oracle/standby/app/oradata/orcl_standby/
log_file_name_convert string /usr/oracle/app/oradata/orcl/,/usr/oracle/standby/app/oradata/orcl_standby/

備庫執行
Standby>alter database recover managed standby database disconnect from session;
結果如下
Standby>select name from v$datafile;
NAME
----------------------------------------------------------------------------------------------------
/usr/oracle/standby/app/oradata/orcl_standby/system01.dbf
/usr/oracle/standby/app/oradata/orcl_standby/sysaux01.dbf
/usr/oracle/standby/app/oradata/orcl_standby/undotbs01.dbf
/usr/oracle/standby/app/oradata/orcl_standby/users01.dbf
/usr/oracle/standby/app/oradata/orcl_standby/tb01.dbf
/usr/oracle/app/oradata/tb02.dbf

結果db_file_name_convert = ‘/usr/oracle/app/oradata/orcl/’,‘/usr/oracle/standby/app/oradata/orcl_standby/’起作用了

將/usr/oracle/app/oradata/orcl/tb01.dbf轉換成 /usr/oracle/standby/app/oradata/orcl_standby/tb01.dbf
/usr/oracle/app/oradata/tb02.dbf 未被轉換,因為不符合

switchover后,當前的備庫(以前的主庫)未配置db_file_name_convert和log_file_name_convert

1、未配置db_file_name_convert和log_file_name_convert的情況,從庫同步后的數據文件和主庫路徑相同
主庫新增了一個數據文件/usr/oracle/standby/app/oradata/orcl_standby/dg01(不要受orcl_standby的影響,這里執行過switchover,以前的備庫是當前的主庫)

SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/usr/oracle/standby/app/oradata/orcl_standby/system01.dbf
/usr/oracle/standby/app/oradata/orcl_standby/sysaux01.dbf
/usr/oracle/standby/app/oradata/orcl_standby/undotbs01.dbf
/usr/oracle/standby/app/oradata/orcl_standby/users01.dbf
/usr/oracle/standby/app/oradata/orcl_standby/dg01

從庫的結果
SYS@orcl>select name from v$datafile;
NAME
-----------------------------------------------------------------------------------------------------------------------------/usr/oracle/app/oradata/orcl/system01.dbf
/usr/oracle/app/oradata/orcl/sysaux01.dbf
/usr/oracle/app/oradata/orcl/undotbs01.dbf
/usr/oracle/app/oradata/orcl/users01.dbf
/usr/oracle/standby/app/oradata/orcl_standby/dg01

switchover后,當前的備庫(以前的主庫)配置了db_file_name_convert和log_file_name_conver
在當前的備庫(以前的主庫)執行以下的語句
alter system set DB_FILE_NAME_CONVERT='/usr/oracle/standby/app/oradata/orcl_standby/','/usr/oracle/app/oradata/orcl/' scope=spfile;
alter system set LOG_FILE_NAME_CONVERT='/usr/oracle/standby/app/oradata/orcl_standby/','/usr/oracle/app/oradata/orcl/' scope=spfile;
當前的主庫(以前的備庫)新增一個數據文件 /usr/oracle/standby/app/oradata/orcl_standby/dg02

SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/usr/oracle/standby/app/oradata/orcl_standby/system01.dbf
/usr/oracle/standby/app/oradata/orcl_standby/sysaux01.dbf
/usr/oracle/standby/app/oradata/orcl_standby/undotbs01.dbf
/usr/oracle/standby/app/oradata/orcl_standby/users01.dbf
/usr/oracle/standby/app/oradata/orcl_standby/dg01
/usr/oracle/standby/app/oradata/orcl_standby/dg02
6 rows selected.

當前的備庫(以前的主庫)同步后的結果


SYS@orcl>select name from v$datafile;
NAME
-----------------------------------------------------------------------------------------------------------------------------/usr/oracle/app/oradata/orcl/system01.dbf
/usr/oracle/app/oradata/orcl/sysaux01.dbf
/usr/oracle/app/oradata/orcl/undotbs01.dbf
/usr/oracle/app/oradata/orcl/users01.dbf
/usr/oracle/standby/app/oradata/orcl_standby/dg01
/usr/oracle/app/oradata/orcl/dg02

/usr/oracle/standby/app/oradata/orcl_standby/dg02 被轉換成 /usr/oracle/app/oradata/orcl/dg02

建議:
主庫備庫都配置db_file_name_convert和log_file_name_conver,這樣不管怎樣switchover,數據文件和redo log文件的位置都非常清晰。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM