天天看點

DG_資料檔案轉換參數測試

DG_資料檔案轉換參數測試

本篇部落格流程圖:

一、測試需求及參數說明

二、測試環境進行相關測試

三、問題總結

一、測試需求及參數說明

1.1測試需求說明

DG切換

切換前,資料庫版本12.2.0.1,主庫rac兩節點,備一rac兩節點,備二single單執行個體。

需求,更換主機,使用dg進行遷移;

切換後,新主庫rac兩節點,新備一rac兩節點,新備二single單執行個體。

切換後,由于對convert參數了解不夠,dg正常切換成功,但是convert參數在新的備庫未修改,留坑,本次出于學習目的,進行測試參數。

1.2切換中遇到的問題進行總結:

1.主庫兩個執行個體,應用停業務後,在主庫第二個執行個體kill LOCAL=NO遠端程序後,主庫存活的執行個體一,查詢資料庫切換狀态異常,Alert日志發現為主庫像遠端備庫傳輸的程序被kill,通過手工切換歸檔重置程序連接配接;

2.主庫查詢切換狀态異常,發現dest遠端傳輸歸檔程序異常,發現存在一個遠端歸檔傳輸參數指向一個廢棄的dg(已于客戶确認),後對該參數設定null後,主庫切換狀态恢複正常;

3.在切換前,對RAC環境備庫(切換後新主庫),配置遠端歸檔參數,使用scope=spfile,DG備庫環境切換過程中無重新開機動作,最終導緻切換後DG連通性不正常,重新配置參數後恢複正常;

(對于主庫來說,DG切換角色為實體備庫,主庫會shutdown,但是對于備庫環境,不受影響)

4.在切換後,新的備庫環境rac,配置db convert轉換參數,設定錯誤,參數設定不當,導緻db nomount無法啟動;

解決方式:create pfile='/tmp/pfile.ora' from spfile;

vi 編輯pfile,配置正确的參數後;

create spfile=' 修改前spfile完整路徑.123213123' from pfile='/tmp/pfile.ora';報錯

RAC環境,生成最新的spfile檔案,不要加字尾數字;

create spfile='+DATA/xxx/spfile.ora' from pfile='/tmp/pfile.ora'; 即可

5)在修改db convert參數完畢後,重新開機備庫open,需要媒體恢複,金華姐說這是正常現象,mount狀态打開media recovery ,後面再重新啟動到open就可以了。#此處自己留坑#

1.3參數說明
standby_file_management 
db_create_file_dest
DB_FILE_NAME_CONVERT和LOG_FILE_NAME_CONVERT

standby_file_management
STANDBY_FILE_MANAGEMENT = { MANUAL | AUTO }
啟用自動備用檔案管理後,将在備用資料庫上複制主資料庫上的作業系統檔案添加和删除。STANDBY_FILE_MANAGEMENT僅适用于實體備用資料庫。
如果備用資料庫與主資料庫位于同一系統上,請確定主系統和備用系統不指向相同的檔案。

db_create_file_dest
DB_CREATE_FILE_DEST = directory | disk group
如果将檔案系統目錄指定為預設位置,則該目錄必須已存在; Oracle不會建立它。該目錄必須具有允許Oracle在其中建立檔案的适當權限。Oracle為檔案生成唯一的名稱,是以建立的檔案是Oracle托管檔案。


DB_FILE_NAME_CONVERT
對于建立重複資料庫以進行恢複非常有用。它将主資料庫上的新資料檔案的檔案名轉換為備用資料庫上的檔案名。
DB_FILE_NAME_CONVERT = 'string1' , 'string2' , 'string3' , 'string4' , ...
 主,備,主,備
如果将資料檔案添加到主資料庫,則必須将相應的檔案添加到備用資料庫。更新備用資料庫時,此參數将主資料庫上的資料檔案名轉換為備用資料庫上的資料檔案名。備用資料庫上的檔案必須存在且可寫,否則恢複過程将因錯誤而停止。      

二、測試環境進行相關測試

測試一、備庫未配置任何資料檔案建立參數,主庫建立資料檔案
1.主備同步,備庫存在于主庫完全相同的路徑
2.主庫建立資料檔案,切換日志
SQL>  create tablespace t1 datafile '/picclife/app/oracle/oradata/orcla/t1.dbf' size 1m;
SQL> alter system switch logfile;
主庫參數:
db_create_file_dest                  Null

3.查詢備庫應用情況
Errors in file /picclife/app/oracle/diag/rdbms/orclb/orclb/trace/orclb_m000_3879.trc:
ORA-01110: data file 5: '/picclife/app/oracle/product/12.2.0/db_1/dbs/UNNAMED00005'
ORA-01565: error in identifying file '/picclife/app/oracle/product/12.2.0/db_1/dbs/UNNAMED00005'
ORA-27037: unable to obtain file status
2019-03-17T03:40:44.412366-04:00
Errors in file /picclife/app/oracle/diag/rdbms/orclb/orclb/trace/orclb_mrp0_3575.trc:
ORA-01274: cannot add data file that was originally created as '/picclife/app/oracle/oradata/orcla/t1.dbf'
Recovery interrupted!
2019-03-17T03:40:44.758843-04:00

備庫參數
db_create_file_dest                  Null 
standby_file_management              MANUAL
log_file_name_convert                Null

備庫處理
SQL> select name from v$datafile where name like '%UNNAME%'
NAME
-----------------------------------------------------------------
alter database create datafile '/picclife/app/oracle/product/12.2.0/db_1/dbs/UNNAMED00005'
 as '/picclife/app/oracle/oradata/oracdg/t1.dbf';
recover managed standby database disconnect from session;

4.删除資料檔案(測試)
主庫
drop tablespace t1 including contents and datafiles;
備庫,同樣能删除資料檔案記錄,但無法級聯删除作業系統中的資料檔案
orclb:/picclife/app/oracle/oradata/oracdg$ ls -lrt
-rw-r----- 1 oracle oinstall   1056768 Mar 17 04:01 t1.dbf


測試二、備庫配置standby_file_management=AUTO時,主庫建立資料檔案


2.1 備庫有與主庫一樣的路徑且有權限通路
備庫:
SQL> alter system set standby_file_management=auto;


主庫,建立資料檔案,切換歸檔日志 
SQL>  create tablespace t1 datafile '/picclife/app/oracle/oradata/orcla/t1.dbf' size 1m;
SQL> alter system switch logfile;

備庫,日志:
Existing file may be overwritten
Recovery created file /picclife/app/oracle/oradata/orcla/t1.dbf
Successfully added datafile 5 to media recovery
Datafile #5: '/picclife/app/oracle/oradata/orcla/t1.dbf'
2019-03-17T04:07:53.261481-04:00

備庫,根據參數,自動建立資料檔案,且與主庫路徑相同。
drop tablespace t1 including contents and datafiles;
alter system switch logfile;

2.2 備庫有與主庫路徑不同
将備庫與主庫檔案路徑相同的目錄,mv該名稱
orclb:/picclife/app/oracle/oradata$ mv orcla orcla.bak
主庫,建立資料檔案,切換歸檔日志 
SQL>  create tablespace t1 datafile '/picclife/app/oracle/oradata/orcla/t1.dbf' size 1m;
SQL> alter system switch logfile;
備庫
orclb:/picclife/app/oracle/oradata$ ls
oracdg  orcla  orcla.bak
orclb:/picclife/app/oracle/oradata$ cd orcla
orclb:/picclife/app/oracle/oradata/orcla$ ls -lrt
total 1032
-rw-r----- 1 oracle oinstall 1056768 Mar 17 04:11 t1.dbf
資料檔案還是正常建立了,并且oracle自動建立了該路徑!!! 

2.3 調整版本,将備庫與主庫相同的檔案路徑orcla路徑屬組修改為root:root
主庫,還原測試環境
drop tablespace t1 including contents and datafiles;
alter system switch logfile;
備庫修改檔案屬組:
[root@orclb oradata]# chown root.root orcla
主庫,建立資料檔案,切換歸檔日志 
SQL>  create tablespace t1 datafile '/picclife/app/oracle/oradata/orcla/t1.dbf' size 1m;
SQL> alter system switch logfile;

備庫:報錯資訊複現
Errors in file /picclife/app/oracle/diag/rdbms/orclb/orclb/trace/orclb_m000_6001.trc:
ORA-01110: data file 5: '/picclife/app/oracle/product/12.2.0/db_1/dbs/UNNAMED00005'
ORA-01565: error in identifying file '/picclife/app/oracle/product/12.2.0/db_1/dbs/UNNAMED00005'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 7

備庫處理
SQL> alter system set standby_file_management=manual;
alter database create datafile '/picclife/app/oracle/product/12.2.0/db_1/dbs/UNNAMED00005'
 as '/picclife/app/oracle/oradata/oracdg/t1.dbf';
SQL> alter system set standby_file_management=auto;
recover managed standby database disconnect from session;
主庫,還原測試環境
drop tablespace t1 including contents and datafiles;
alter system switch logfile;


測試三、備庫配置auto參數,且配置convert轉換參數時
備庫
SQL> alter system set db_file_name_convert='/picclife/app/oracle/oradata/orcla/','/picclife/app/oracle/oradata/oracdg/' scope=spfile;
SQL> startup mount;
recover managed standby database disconnect from session;

主庫建立資料檔案,切換日志
SQL>  create tablespace t1 datafile '/picclife/app/oracle/oradata/orcla/t1.dbf' size 1m;
SQL> alter system switch logfile;

備庫自動建立該檔案:正常情況
SQL>  select name from v$datafile;
NAME
------------------------------------------------------------------------------------------------------------------------
/picclife/app/oracle/oradata/oracdg/data2etsh9v3.dbf
/picclife/app/oracle/oradata/oracdg/data2gtsha10.dbf
/picclife/app/oracle/oradata/oracdg/data2ftsha07.dbf
/picclife/app/oracle/oradata/oracdg/data2htsha1q.dbf
/picclife/app/oracle/oradata/oracdg/t1.dbf





測試四、當dg切換後,修改convert參數後,dg能否保持正常轉換。
切換前:主庫orcla,一備orclb,二備orclc;
切換後:主庫orclb,一備orcla,二備orclc;


切換前:
主庫資料檔案路徑,及參數設定

SQL>  select name from v$datafile union select name from v$tempfile;
NAME
----------------------------------------------------------------
/picclife/app/oracle/oradata/orcla/sysaux01.dbf

db_unique_name       orcla
db_file_name_convert Null 
standby_file_management --全部設定為auto

備1 
/picclife/app/oracle/oradata/oracdg/

db_unique_name       orclb
db_file_name_convert                
/picclife/app/oracle/oradata/orcla/, /picclife/app/oracle/oradata/oracdg/

備2
/picclife/app/oracle/oradata/dg2/

db_unique_name       orclc
/picclife/app/oracle/oradata/orcla/, /picclife/app/oracle/oradata/dg2/


原主庫
SQL> select dbid,name, database_role,open_mode,SWITCHOVER_STATUS,FLASHBACK_ON,PROTECTION_MODE,FORCE_LOGGING  from v$database;
       DBID NAME       DATABASE_ROLE          OPEN_MODE  SWITCHOVER_STAT FLASH PROTECTION_MODE                         FORCE_LOGG
----------- ---------- ---------------------- ---------- --------------- ----- ---------------------------------------- ----------
 3115515000 ORCLA      PRIMARY                READ WRITE TO STANDBY      NO    MAXIMUM PERFORMANCE                     YES

SQL> select dest_id,error from v$archive_dest;

   DEST_ID ERROR
---------- -----------------------------------------------------------------
         1
         2
         3
原主庫:切換為實體備庫
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;
SQL> startup mount;
SQL> select dbid,name, database_role,open_mode,SWITCHOVER_STATUS,FLASHBACK_ON,PROTECTION_MODE,FORCE_LOGGING  from v$database;
       DBID NAME       DATABASE_ROLE          OPEN_MODE  SWITCHOVER_STAT FLASH PROTECTION_MODE                         FORCE_LOGG
----------- ---------- ---------------------- ---------- --------------- ----- ---------------------------------------- ----------
 3115515000 ORCLA      PHYSICAL STANDBY       MOUNTED    RECOVERY NEEDED NO    MAXIMUM PERFORMANCE                     YES

備1/2 
SQL> select dbid,name, database_role,open_mode,SWITCHOVER_STATUS,FLASHBACK_ON,PROTECTION_MODE,FORCE_LOGGING  from v$database;

       DBID NAME       DATABASE_ROLE          OPEN_MODE  SWITCHOVER_STAT FLASH PROTECTION_MODE                         FORCE_LOGG
----------- ---------- ---------------------- ---------- --------------- ----- ---------------------------------------- ----------
 3115515000 ORCLA      PHYSICAL STANDBY       READ ONLY  TO PRIMARY      NO    MAXIMUM PERFORMANCE                     YES
                                              WITH APPLY

備1切換為主庫
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

新主庫修改遠端歸檔參數:
alter system set log_archive_dest_2='SERVICE=primaryorcla LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcla';
alter system set log_archive_dest_3='SERVICE=adgc LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orclc';
SQL> alter database open;
SQL> alter system switch logfile;

新1備修改參數:
SQL> alter system set fal_client=primaryorcla;
SQL> alter system set fal_server=adgb;
SQL> recover managed standby database disconnect from session;
SQL> alter system set db_file_name_convert='/picclife/app/oracle/oradata/oracdg/','/picclife/app/oracle/oradata/orcla/' scope=spfile;
recover managed standby database disconnect from session;

重新開機庫,無異常

新2備修改參數:
SQL> alter system set fal_server=adgb;

db_file_name_convert          /picclife/app/oracle/oradata/orcla/, /picclife/app/oracle/oradata/dg2/
SQL> alter system set db_file_name_convert='/picclife/app/oracle/oradata/oracdg/','/picclife/app/oracle/oradata/dg2/' scope=spfile;
SQL> select name from v$datafile;

NAME
----------------------------------------------------------------
/picclife/app/oracle/oradata/dg2/system01.dbf
/picclife/app/oracle/oradata/dg2/sysaux01.dbf
/picclife/app/oracle/oradata/dg2/undotbs01.dbf
/picclife/app/oracle/oradata/dg2/users01.dbf
/picclife/app/oracle/oradata/dg2/t1.dbf
SQL> alter database open;
Database altered.
recover managed standby database disconnect from session;
                                                    
--
主庫,還原測試環境
drop tablespace t1 including contents and datafiles;
alter system switch logfile;
主庫建立資料檔案,切換日志
SQL>  create tablespace t1 datafile '/picclife/app/oracle/oradata/oracdg/t1.dbf' size 1m;
SQL> alter system switch logfile;                                    
                                                            
備庫查詢一切正常,未發現DG備庫切換後,修改convert參數導緻的資料檔案目錄不正确現象。
      

三、問題總結

總結:
1.如果備庫沒有配置standby_file_management=auto參數,則主庫建立資料檔案,備庫接受應用日志後會報錯且mrp程序停止應用
2.如果備庫與主庫路徑不同,且備庫無法建立與主庫相同的路徑存放檔案,則報錯且mrp程序停止應用
3.配置正确的轉換參數+auto參數,則主庫建立資料檔案,備庫能相應進行轉換
4.dg切換後,配置正确的convert參數,無異常。
5.今後如果還存在dg切換,需要提前查詢name路徑,及配置正确的convert轉換參數      

posted on 2019-03-18 16:34 綠茶有點甜 閱讀(...) 評論(...) 編輯 收藏