DataGuard---->備庫參數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

      備庫未配置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>

      備庫執行

      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

      備庫配置了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/

      備庫執行

      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