建立測試主要資料庫

根據開發和測試環境的頻率以及需要更新資訊的頻率,決定為每個開發和測試環境複製資料的最佳方法。

請複查下列資料重新整理頻率準則,以協助您判斷複製生產環境資料庫的最佳方法,以建立您的「測試主要資料庫」:

  • 經常重新整理 (每日,每週):建立「測試主要資料庫」作為實體待命資料庫
  • 一般重新整理 (每週、每月):使用 RMAN DUPLICATE 從作用中資料庫建立測試主要資料庫
  • 臨時重新整理 (每季、每半年):使用 RMAN 完整資料庫備份建立測試主要資料庫

以實體待命資料庫形式建立測試主要資料庫

當您必須一律與實際環境執行同步時,請建立一個作為實體待命資料庫的「測試主要資料庫」。

實體待命是用來建立快照的「測試主要資料庫」,請勿使用「測試主要資料庫」進行災害復原。快照會建立在與Oracle ACFS 上「測試主要資料庫」相同的伺服器上。

本範例使用Oracle Database 版本 12.1.0.2,其名稱如下:

  • 來源生產環境資料庫執行處理:PRODDB (PDB 名稱為 PDB1)
  • 測試主要資料庫執行處理:TSTMSTR (PDB 名稱為 PDB1)
將「測試主要」主機名稱項目新增至實際環境執行資料庫的 /etc/hosts 目錄、設定「測試主要資料庫」的連接埠,以及設定「實際環境執行」和「測試主要資料庫」之間的Oracle Data Guard
  1. 複製生產環境資料庫,將「測試主要資料庫」建立為實體待命資料庫。

    使用下列 gDBClone 選項來建立實體待命資料庫:

    • -sdbname:來源資料庫名稱
    • -sdbscan:來源資料庫主機 SCAN 名稱
    • -sdbport:來源 SCAN 監聽器連接埠 (預設值 1521)
    • -tdbname:目標資料庫名稱
    • -tdbhome:目標資料庫本位目錄
    • -tdbport:目標 SCAN 監聽器連接埠 (預設值 1521)
    • -racmodOracle RAC 類型,在 Oracle 單一執行處理資料庫使用 0
    • -dataacfs:資料庫資料檔目標Oracle ACFS 儲存體
    • -redoacfs:資料庫重做日誌目標Oracle ACFS 儲存體 (預設值 dataacfs)
    • -recoacfs:資料庫復原目標Oracle ACFS 儲存體 (預設值 dataacfs)
    • -channelsRMAN 配置的通道 (預設值 3)
    • -standby:複製 (Snap) 是實體待命資料庫
    • -pmode:待命模式選項包括 maxperfmaxavail 以及 maxprot (預設值 maxperf)
    • -activedg:啟用作用中資料保全
    • -syspwf:SYS 加密的密碼檔案
    [root@tstmstr gDBClone]# /opt/gDBClone/gDBClone clone -sdbname PRODDB_iad1df.bass1.ebsvcn.examplevcn.com -sdbscan proddb.bass1.ebsvcn.examplevcn.com sdbport 1521 -tdbname TSTMSTR -tdbhome OraDB12102_home2 -tdomain bass1.ebsvcn.examplevcn.com -tdbport 1521 -racmod 0 -dataacfs /u02/app/oracle/oradata/TSTMSTR -redoacfs /u03/app/oracle/redo -recoacfs /u03/app/oracle/fast_recovery_area -channels 2 -standby -pmode maxperf -activedg -rtapply -noping -syspwf /opt/gDBClone/SYS.password
  2. 檢查「測試主要資料庫」資訊是否正確。
    [oracle@tstmstr TSTMSTR]$ cat /etc/oratab|grep -i TSTMSTR
  3. 顯示使用 gDBClone listdbs 命令的資料庫清單,以確認待命資料庫的角色和位置正確。
    使用 gDBClone listdbs -tree 命令可顯示父項子項關係。
    [root@tstmstr gDBClone]# /opt/gDBClone/gDBClone listdbs
    Database Name    Database Type   Database Role      Master/Snapshot  Location/Parent
    -------------    -------------   -------------      ---------------  ---------------
    ORCL_iad1hb      SINGLE          PRIMARY            n/a              ASM            
    TSTMSTR          SINGLE          PHYSICAL_STANDBY   Master           /u02/app/oracle/oradata/TSTMSTR/.ACFS/snaps/
    
    [root@tstmstr gDBClone]# /opt/gDBClone/gDBClone listdbs -tree
    Parent	Child
    ------	-----
    TSTMSTR
  4. 設定「測試主要資料庫」的叢集環境變數。
    將「測試主要資料庫」設定為唯讀的實體待命資料庫。
    [oracle@tstmstr ~]$ srvctl getenv database -d TSTMSTR
    TSTMSTR:
    [oracle@tstmstr ~]$ 
    [oracle@tstmstr ~]$ srvctl setenv database -d TSTMSTR -envs "ORACLE_UNQNAME=TSTMSTR,TZ=UTC"
    [oracle@tstmstr ~]$ srvctl getenv database -d TSTMSTR
    TSTMSTR:
    ORACLE_UNQNAME=TSTMSTR
    TZ=UTC
    [oracle@tstmstr ~]$ 
    
    [oracle@tstmstr ~]$ . oraenv
    ORACLE_SID = [oracle] ? TSTMSTR
    The Oracle base has been set to /u01/app/oracle
    [oracle@tstmstr ~]$ srvctl config database -d TSTMSTR
    Database unique name: TSTMSTR
    Database name: 
    Oracle home: /u01/app/oracle/product/12.1.0.2/dbhome_2
    Oracle user: oracle
    Spfile: /u02/app/oracle/oradata/TSTMSTR/.ACFS/snaps/TSTMSTR/TSTMSTR/spfileTSTMSTR.ora
    Password file: 
    Domain: bass1.ebsvcn.examplevcn.com
    Start options: read only
    Stop options: immediate
    Database role: PHYSICAL_STANDBY
    Management policy: AUTOMATIC
    Server pools: 
    Disk Groups: 
    Mount point paths: /u02/app/oracle/oradata/TSTMSTR,/u03/app/oracle/
    Services: 
    Type: SINGLE
    OSDBA group: dba
    OSOPER group: dbaoper
    Database instance: TSTMSTR
    Configured nodes: tstmstr
    Database is administrator managed
    [oracle@tstmstr ~]$
  5. 重新啟動「測試主要資料庫」。
    
    [oracle@tstmstr ~]$ srvctl stop database -d TSTMSTR
    [oracle@tstmstr ~]$ srvctl start database -d TSTMSTR
  6. 檢查「測試主要資料庫」中的 TDE 公事包狀態。
    公事包狀態應為 OPEN,而公事包類型應該是 AUTOLOGIN。
    [oracle@tstmstr ~]$ export 
    ORACLE_UNQNAME=TSTMSTR
    [oracle@tstmstr ~]$ sqlplus / as sysdba
    SQL*Plus: Release 12.1.0.2.0 Production on Thu Sep 30 06:44:14 2019
    Copyright (c) 1982, 2014, Oracle.  All rights reserved.
    
    Connected to:Oracle Database 12c EE High Perf Release 
    12.1.0.2.0 - 64bit Production
    With the Partitioning, Real Application Clusters, OLAP, Advanced Analytics
    and Real Application Testing options
    
    SQL> set linesize 180
    SQL> col wrl_parameter format a80
    SQL> select * from v$encryption_wallet;
    
    WRL_TYPE   WRL_PARAMETER                                      STATUS       WALLET_TYPE  WALLET_OR  FULLY_BAC   CON_ID
    --------  ------------ -------------------------------------  -----------  -----------  ---------  ---------   -------
    FILE      /opt/oracle/dcs/commonstore/wallets/tde/TSTMSTR/    OPEN         AUTOLOGIN    SINGLE     NO         0
    
  7. 檢查「測試主要資料庫」狀態。
    SQL> select name,open_mode,database_role from v$database;
    
    NAME	  OPEN_MODE	       DATABASE_ROLE
    --------- -------------------- ----------------
    PRODDB	  MOUNTED	       PHYSICAL STANDBY
    
    SQL> show pdbs
    
        CON_ID CON_NAME			  OPEN MODE  RESTRICTED
    ---------- ------------------------------ ---------- ----------
    	 2 PDB$SEED			  MOUNTED
    	 3 PDB1 			     MOUNTED
    
  8. 確認實體待命資料庫已與生產環境同步。
    您可以切換到實際環境執行上的某些日誌檔,並檢查 redo 是否在「測試主要資料庫」上傳輸和套用。
    SQL> select sequence#,archived,applied from v$archived_log order by sequence#;
    
「測試主要資料庫」是實體待命資料庫,並且與實際環境執行資料庫同步。您可以隨時建立資料庫的快照。

從作用中資料庫建立測試主要資料庫

當您需要定期重新整理測試環境時,使用Oracle Recovery Manager (RMAN) Active Duplicate,從線上實際執行資料庫建立資料庫複製。

本範例使用Oracle Database 版本 12.1.0.2,其名稱如下:

  • 來源生產環境資料庫執行處理:PRODDB (PDB 名稱為 PDB1)
  • 測試主要資料庫執行處理:TSTMSTR (PDB 名稱為 PDB1)
將「測試主要資料庫」新增至目錄、設定連接埠,以及在「實際環境執行」資料庫執行處理上設定Oracle Data Guard
  1. 使用 RMAN 作用中複製建立測試主要資料庫。

    使用下列 gDBClone 選項來建立實體待命資料庫:

    • -sdbname:來源資料庫名稱
    • -sdbscan:來源資料庫主機 SCAN 名稱
    • -sdbport:來源 SCAN 監聽器連接埠 (預設值 1521)
    • -tdbname:目標資料庫名稱
    • -tdbhome:目標資料庫本位目錄
    • -tdbport:目標 SCAN 監聽器連接埠 (預設值 1521)
    • -racmodOracle RAC 類型,在 Oracle 單一執行處理資料庫使用 0
    • -dataacfs:資料庫資料檔目標Oracle ACFS 儲存體
    • -redoacfs:資料庫重做日誌目標Oracle ACFS 儲存體 (預設值 dataacfs)
    • -recoacfs:資料庫復原目標Oracle ACFS 儲存體 (預設值 dataacfs)
    • -channelsRMAN 配置的通道 (預設值 3)
    • -standby:複製 (快照) 是實體待命資料庫
    • -pmode:待命模式選項包括 maxperfmaxavail 以及 maxprot (預設為 maxperf)
    • -activedg:啟用作用中資料保全
    • -syspwf:SYS 加密的密碼檔案
    root@tstmstr gDBClone]# /opt/gDBClone/gDBClone clone -sdbname PRODDB_iad1df.bassubad1.ebsvcn.oraclevcn.com -sdbscan proddb.bassubad1.ebsvcn.oraclevcn.com sdbport 1521 -tdbname TSTMSTR -tdbhome OraDB12102_home2 -tdomain bassubad1.ebsvcn.oraclevcn.com -tdbport 1521 -racmod 0 -dataacfs /u02/app/oracle/oradata/TSTMSTR -redoacfs /u03/app/oracle/redo -recoacfs /u03/app/oracle/fast_recovery_area -channels 2 -noping -syspwf /opt/gDBClone/SYS.password
    
  2. 檢查「測試主要資料庫」資訊是否正確。
    [oracle@tstmstr TSTMSTR]$ cat /etc/oratab|grep -i TSTMSTR
  3. 顯示使用 gDBClone listdbs 命令的資料庫清單,以確認待命資料庫的角色和位置正確。
    使用 gDBClone listdbs -tree 命令可顯示父項子項關係。
    [root@tstmstr gDBClone]# /opt/gDBClone/gDBClone listdbs
    Database Name    Database Type   Database Role      Master/Snapshot  Location/Parent
    -------------    -------------   -------------      ---------------  ---------------
    ORCL_iad1hb      SINGLE          PRIMARY            n/a              ASM            
    TSTMSTR          SINGLE          PRIMARY            Master           /u02/app/oracle/oradata/TSTMSTR/.ACFS/snaps/
    
    [root@tstmstr gDBClone]# /opt/gDBClone/gDBClone listdbs -tree
    Parent	Child
    ------	-----
    TSTMSTR
  4. 設定「測試主要資料庫」的叢集環境變數。
    將「測試主要資料庫」設定為唯讀的實體待命資料庫。
    
    [oracle@tstmstr ~]$ srvctl getenv database -d TSTMSTR
    TSTMSTR:
    [oracle@tstmstr ~]$ 
    [oracle@tstmstr ~]$ srvctl setenv database -d TSTMSTR -envs "ORACLE_UNQNAME=TSTMSTR,TZ=UTC"
    [oracle@tstmstr ~]$ srvctl getenv database -d TSTMSTR
    TSTMSTR:
    ORACLE_UNQNAME=TSTMSTR
    TZ=UTC
    [oracle@tstmstr ~]$ 
    
    [oracle@tstmstr ~]$ . oraenv
    ORACLE_SID = [oracle] ? TSTMSTR
    The Oracle base has been set to /u01/app/oracle
    [oracle@tstmstr TSTMSTR]$ srvctl getenv database -d TSTMSTR
    TSTMSTR:
    ORACLE_UNQNAME=TSTMSTR
    TZ=UTC
    [oracle@tstmstr TSTMSTR]$ srvctl config database -d TSTMSTR
    Database unique name: TSTMSTR
    Database name: 
    Oracle home: /u01/app/oracle/product/12.1.0.2/dbhome_2
    Oracle user: oracle
    Spfile: /u02/app/oracle/oradata/TSTMSTR/.ACFS/snaps/TSTMSTR/TSTMSTR/spfileTSTMSTR.ora
    Password file: 
    Domain: 
    Start options: open
    Stop options: immediate
    Database role: PRIMARY
    Management policy: AUTOMATIC
    Server pools: 
    Disk Groups: 
    Mount point paths: /u02/app/oracle/oradata/TSTMSTR,/u03/app/oracle/
    Services: 
    Type: SINGLE
    OSDBA group: dba
    OSOPER group: dbaoper
    Database instance: TSTMSTR
    Configured nodes: tstmstr
    Database is administrator managed
    [oracle@tstmstr TSTMSTR]$ 
    
  5. 重新啟動「測試主要資料庫」。
    [oracle@tstmstr ~]$ srvctl stop database -d TSTMSTR
    [oracle@tstmstr ~]$ srvctl start database -d TSTMSTR
  6. 檢查「測試主要資料庫」中的「通透資料加密 (TDE)」公事包狀態。
    公事包狀態應為 OPEN,而公事包類型應該是 AUTOLOGIN。
    [oracle@tstmstr ~]$ export ORACLE_UNQNAME=TSTMSTR
    [oracle@tstmstr ~]$ sqlplus / as sysdba
    SQL*Plus: Release 12.1.0.2.0 Production on Thu Sep 30 06:44:14 2019
    Copyright (c) 1982, 2014, Oracle.  All rights reserved.
    
    Connected to:
    Oracle Database 12c EE High Perf Release 12.1.0.2.0 - 64bit Production
    With the Partitioning, Real Application Clusters, OLAP, Advanced Analytics
    and Real Application Testing options
    
    SQL> set linesize 180
    SQL> col wrl_parameter format a80
    SQL> select * from v$encryption_wallet;
    
    WRL_TYPE   WRL_PARAMETER					   STATUS	WALLET_TYPE   WALLET_OR   FULLY_BAC   CON_ID
    --------   -------------------------------------------------  ----------- -------------  ---------   ----------- -------
    FILE	/opt/oracle/dcs/commonstore/wallets/tde/TSTMSTR/   OPEN	 AUTOLOGIN      SINGLE      NO	   0
    
  7. 檢查「測試主要資料庫」狀態,並確認已掛載可插式資料庫 (Pdb)
    SQL> select name,open_mode,database_role from v$database;
    
    NAME	  OPEN_MODE	       DATABASE_ROLE
    --------- -------------------- ----------------
    TSTMSTR   READ WRITE	       PRIMARY
    
    SQL> show pdbs
    
        CON_ID CON_NAME			  OPEN MODE  RESTRICTED
    ---------- ------------------------------ ---------- ----------
    	 2 PDB$SEED			  MOUNTED
    	 3 PDB1 			     MOUNTED
    
當「測試主要資料庫」可用時,您可以建立精簡型複製 (快照) 資料庫。當「測試主要資料庫」已過期時,請先從實際環境執行資料庫重新整理複製「測試主要資料庫」,再建立快照。

從完整資料庫備份建立測試主要資料庫

測試主要資料庫需要偶爾重新整理時,在Oracle Cloud Infrastructure File Storage 服務上建立來源實際環境執行資料庫的完整備份複本。使用Oracle 復原管理程式 (RMAN) 建立備份,並在測試主要伺服器上掛載備份。

本範例使用 Oracle Database 版本 12.1.0.2,其名稱如下:

  • 來源生產環境資料庫執行處理:PRODDB (PDB 名稱為 PDB1)
  • 測試主要資料庫執行處理:TSTMSTR (PDB 名稱為 PDB1)
  1. 設定複製環境並使用 RMAN 複製資料庫,以建立實際環境執行資料庫備
    請使用下列 gDBClone 選項:
    • -sdbname:來源資料庫名稱
    • -sbckloc:來源 RMAN 完整備份位置
    • -tdbname:目標資料庫名稱
    • -tdbhome:目標資料庫本位目錄
    • -sdbport:來源 SCAN 監聽器連接埠 (預設值 1521)
    • -racmodOracle Real Application Clusters (Oracle RAC) 模型,在「Oracle 單一執行處理」資料庫使用 0
    • -dataacfs:資料庫資料檔目標Oracle ASM 叢集檔案系統 (Oracle ACFS) 儲存體
    • -redoacfs:資料庫 redo 會記錄目標Oracle ACFS 儲存體 (預設為 dataacfs)
    • -recoacfs:資料庫復原目標Oracle ACFS 儲存體 (預設值 dataacfs)
    • -channelsRMAN 配置的通道 (預設值 3)
    • -syspwf:SYS 加密的密碼檔案
    [root@tstmstr gDBClone]# /opt/gDBClone/gDBClone clone -sdbname TSTMSTR -sbckloc '/mnt/fss/dbbackup'  -tdbname TSTDEV -tdbhome OraDB12102_home2 -tdbport 1521 -racmod 0 -dataacfs /u02/app/oracle/oradata/TSTMSTR -redoacfs /u03/app/oracle/redo -recoacfs /u03/app/oracle/fast_recovery_area -channels 2 -noping -syspwf /opt/gDBClone/SYS.password
    命令檔會驗證設定、設定複製環境,以及建立複製資料庫。
  2. 檢查「測試主要資料庫」資訊是否正確。
    [oracle@tstmstr TSTMSTR]$ cat /etc/oratab|grep -i TSTMSTR
    
  3. 顯示使用 gDBClone listdbs 命令的資料庫清單,以確認待命資料庫的角色和位置正確。
    使用 gDBClone listdbs -tree 命令可顯示父項子項關係。
    [root@tstmstr gDBClone]# /opt/gDBClone/gDBClone listdbs
    Database Name    Database Type   Database Role      Master/Snapshot  Location/Parent
    -------------    -------------   -------------      ---------------  ---------------
    ORCL_iad1hb      SINGLE          PRIMARY            n/a              ASM            
    TSTMSTR          SINGLE          PRIMARY            Master           /u02/app/oracle/oradata/TSTMSTR/.ACFS/snaps/
    [root@tstmstr gDBClone]# 
    
    [root@tstmstr gDBClone]# /opt/gDBClone/gDBClone listdbs -tree
    Parent	Child
    ------	-----
    TSTMSTR
    
  4. 設定「測試主要資料庫」的叢集環境參數。
    [oracle@tstmstr ~]$ srvctl getenv database -d TSTMSTR
    TSTMSTR:
    [oracle@tstmstr ~]$ 
    [oracle@tstmstr ~]$ srvctl setenv database -d TSTMSTR -envs "ORACLE_UNQNAME=TSTMSTR,TZ=UTC"
    [oracle@tstmstr ~]$ srvctl getenv database -d TSTMSTR
    TSTMSTR:
    ORACLE_UNQNAME=TSTMSTR
    TZ=UTC
    [oracle@tstmstr ~]$ 
    
    [oracle@tstmstr ~]$ . oraenv
    ORACLE_SID = [oracle] ? TSTMSTR
    The Oracle base has been set to /u01/app/oracle
    [oracle@tstmstr TSTMSTR]$ srvctl getenv database -d TSTMSTR
    TSTMSTR:
    ORACLE_UNQNAME=TSTMSTR
    TZ=UTC
    [oracle@tstmstr TSTMSTR]$ srvctl config database -d TSTMSTR
    Database unique name: TSTMSTR
    Database name: 
    Oracle home: /u01/app/oracle/product/12.1.0.2/dbhome_2
    Oracle user: oracle
    Spfile: /u02/app/oracle/oradata/TSTMSTR/.ACFS/snaps/TSTMSTR/TSTMSTR/spfileTSTMSTR.ora
    Password file: 
    Domain: 
    Start options: open
    Stop options: immediate
    Database role: PRIMARY
    Management policy: AUTOMATIC
    Server pools: 
    Disk Groups: 
    Mount point paths: /u02/app/oracle/oradata/TSTMSTR,/u03/app/oracle/
    Services: 
    Type: SINGLE
    OSDBA group: dba
    OSOPER group: dbaoper
    Database instance: TSTMSTR
    Configured nodes: tstmstr
    Database is administrator managed
    [oracle@tstmstr TSTMSTR]$ 
    
  5. 重新啟動測試主要資料庫
    
    [oracle@tstmstr ~]$ srvctl stop database -d TSTMSTR
    [oracle@tstmstr ~]$ srvctl start database -d TSTMSTR
  6. 檢查「測試主要資料庫」中的「通透資料加密 (TDE)」公事包狀態。
    公事包應使用 AUTOLOGIN 開啟。
    [oracle@tstmstr ~]$ export ORACLE_UNQNAME=TSTMSTR
    [oracle@tstmstr ~]$ sqlplus / as sysdba
    SQL*Plus: Release 12.1.0.2.0 Production on Thu Sep 30 06:44:14 2019
    Copyright (c) 1982, 2014, Oracle.  All rights reserved.
    
    
    Connected to:
    Oracle Database 12c EE High Perf Release 12.1.0.2.0 - 64bit Production
    With the Partitioning, Real Application Clusters, OLAP, Advanced Analytics
    and Real Application Testing options
    
    SQL> set linesize 180
    SQL> col wrl_parameter format a80
    SQL> select * from v$encryption_wallet;
    
    WRL_TYPE    WRL_PARAMETER					    STATUS	WALLET_TYPE	   WALLET_OR  FULLY_BAC   CON_ID
    --------    -------------------------------------------------   ----------- -------------------- ---------   ----------- -------
    FILE	 /opt/oracle/dcs/commonstore/wallets/tde/TSTMSTR/    OPEN	 AUTOLOGIN	      SINGLE     NO	   0
    
  7. 檢查「測試主要資料庫」的狀態,並確認已掛載可插式資料庫 (Pdb)
    TSTMSTR 資料庫應為讀取寫入模式和 MOUNTED 狀態。
    SQL> select name,open_mode,database_role from v$database;
    
    NAME	  OPEN_MODE	  DATABASE_ROLE
    --------- -------------------- ----------------
    TSTMSTR   READ WRITE	    PRIMARY
    SQL> 
    SQL> show pdbs
    
        CON_ID CON_NAME			 OPEN MODE  RESTRICTED
    ---------- ----------------------------- ---------- ----------
    	 2 PDB$SEED			  MOUNTED
    	 3 PDB1 			     MOUNTED
    
測試主要資料庫是來源生產環境資料庫的完整備份複本。
建立資料庫的快照。當「測試主要資料庫」已過期時,請先從實際環境執行資料庫重新整理備份「測試主要資料庫」,再建立快照。