创建测试主项目

根据您需要更新信息的频率和快速度,确定克隆每个开发和测试环境的数据的最佳方法。

请查看以下数据刷新频率准则,以帮助您确定克隆生产数据库的最佳方法以创建测试主项目:

  • 频繁刷新(每天、每周):将测试主数据库创建为物理备用数据库
  • 常规刷新(每两周,每月):使用 RMAN DUPLICATE 从活动数据库创建测试主项目
  • 临时刷新(每半年):使用 RMAN 完整数据库备份创建测试主项目

将测试主项目创建为物理备用数据库

创建在需要始终与生产同步时物理备用数据库的测试主项目。

物理备用数据库是用于创建快照的测试主项目,不要将测试主项目用于灾难恢复。快照是在与Oracle ACFS 上的测试主项目相同的服务器上创建的。

此示例使用Oracle Database 版本 12.1.0.2,其名称如下:

  • 源生产数据库实例 : PRODDB (PDB 名称为 PDB1)
  • 测试主项目数据库实例 : TSTMSTR (PDB 名称为 pd1)
将测试主数据库主机名条目添加到生产数据库的 /etc/hosts 目录中,配置测试主数据库上的端口,以及在生产和测试主数据库之间配置Oracle Data Guard
  1. 克隆生产数据库以将测试主项目创建为物理备用数据库。

    使用以下 gDBClone 选项可以创建物理备用数据库:

    • -sdbname:源数据库名称
    • -sdbscan:源数据库主机 SCAN 名称
    • -sdbport:源 SCAN 监听程序端口(默认值 1521)
    • -tdbname:目标数据库名称
    • -tdbhome:目标数据库主目录
    • -tdbport:目标 SCAN 监听程序端口(默认值 1521)
    • -racmodOracle RAC 类型,对于 Oracle Single Instance 数据库,使用 0
    • -dataacfs: 数据库数据文件目标Oracle ACFS 存储
    • -redoacfs:数据库重做日志目标Oracle ACFS 存储(默认 dataacfs
    • -recoacfs:数据库恢复目标Oracle ACFS 存储(默认 dataacfs
    • -channelsRMAN 已分配通道(默认值为 3)
    • -standby:克隆(Snap)是物理备用数据库
    • -pmode:备用模式选项包括 maxperfmaxavailmaxprot(默认值 maxperf
    • -activedg:启用 Active Data Guard
    • -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 Wallet 状态。
    Wallet 状态应为 OPEN, 并且 wallet 类型应为 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) 活动复制从联机生产数据库创建数据库克隆。

此示例使用Oracle Database 版本 12.1.0.2,其名称如下:

  • 源生产数据库实例 : PRODDB (PDB 名称为 PDB1)
  • 测试主项目数据库实例 : TSTMSTR (PDB 名称为 pd1)
将测试主项目添加到目录中,配置端口,然后在正式版数据库实例上配置Oracle Data Guard
  1. 使用 RMAN 活动的复制创建测试主项目。

    使用以下 gDBClone 选项可以创建物理备用数据库:

    • -sdbname:源数据库名称
    • -sdbscan:源数据库主机 SCAN 名称
    • -sdbport:源 SCAN 监听程序端口(默认值 1521)
    • -tdbname:目标数据库名称
    • -tdbhome:目标数据库主目录
    • -tdbport:目标 SCAN 监听程序端口(默认值 1521)
    • -racmodOracle RAC 类型,对于 Oracle Single Instance 数据库,使用 0
    • -dataacfs: 数据库数据文件目标Oracle ACFS 存储
    • -redoacfs:数据库重做日志目标Oracle ACFS 存储(默认 dataacfs
    • -recoacfs:数据库恢复目标Oracle ACFS 存储(默认 dataacfs
    • -channelsRMAN 已分配通道(默认值为 3)
    • -standby:克隆(snap)是物理备用数据库
    • -pmode:备用模式选项包括 maxperfmaxavailmaxprot (默认值 maxperf
    • -activedg:启用 Active Data Guard
    • -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) Wallet 状态。
    Wallet 状态应为 OPEN, 并且 wallet 类型应为 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 Recovery Manager (RMAN) 活动复制创建备份 , 并在测试主服务器上装载备份。

此示例使用 Oracle Database 版本 12.1.0.2,其名称如下:

  • 源生产数据库实例 : PRODDB (PDB 名称为 PDB1)
  • 测试主项目数据库实例 : TSTMSTR (PDB 名称为 pd1)
  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) Wallet 状态。
    Wallet 应该以 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
    
测试主项目是源生产数据库的完整备份副本。
创建数据库的快照。当测试主项目已到期时,请在创建快照之前从生产数据库刷新备份测试主项目数据库。