使用RMAN duplicate搭建12C的Data Guard环境


1. 实验环境

 

主端

备端

主机名

12cr2

oracle

IP地址

192.168.16.81

192.168.16.130

db_unique_name

newcdb

newcdbdg


2. 主端的数据库环境

[oracle@12cr2 ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Sat Jun 24 22:50:48 2017
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 DGPDB1                         READ WRITE NO
         4 DGPDB2                         READ WRITE NO
         5 DGPDB3                         READ WRITE NO

3. 添加hosts文件

主备端添加以下内容

[root@oracle ~]# vi /etc/hosts
192.168.16.81   12cr2
192.168.16.130  oracle

4. 主端开启force logging

SQL> select name,log_mode,force_logging from gv$database;
NAME      LOG_MODE     FORCE_LOGGING
--------- ------------ ---------------------------------------
NEWCDB    ARCHIVELOG   NO

SQL> alter database force logging;
Database altered.

SQL> select name,log_mode,force_logging from gv$database;
NAME      LOG_MODE     FORCE_LOGGING
--------- ------------ ---------------------------------------
NEWCDB    ARCHIVELOG   YES

5. 主端提前添加standby redo,备端会自动添加

SQL> col member format a50
SQL> select a.GROUP#,BYTES/1024/1024STATUS,TYPE,MEMBER from v$log a,v$logfile b where a.GROUP#=b.GROUP#;
    GROUP#     STATUS TYPE    MEMBER
---------- ---------- ------- -------------------------------------------------
         3        200 ONLINE  /u01/app/oracle/oradata/newcdb/redo03.log
         2        200 ONLINE  /u01/app/oracle/oradata/newcdb/redo02.log
         1        200 ONLINE  /u01/app/oracle/oradata/newcdb/redo01.log

SQL> alter database add standby logfile
  2  group 4 ('/u01/app/oracle/oradata/newcdb/stdbyredo01.log') size 200M,
  3  group 5 ('/u01/app/oracle/oradata/newcdb/stdbyredo02.log') size 200M,
  4  group 6 ('/u01/app/oracle/oradata/newcdb/stdbyredo03.log') size 200M,
  5  group 7 ('/u01/app/oracle/oradata/newcdb/stdbyredo04.log') size 200M;

6. 主端配置静态监听

配置listener.ora文件,添加newcdb的静态监听条目

[oracle@12cr2 admin]$ vi listener.ora 
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = newcdb)
      (ORACLE_HOME = /u01/app/oracle/product/12.2.0/db_1)
      (SID_NAME = newcdb)
    )
   )

LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.16.81)(PORT = 1521))
  )

ADR_BASE_LISTENER = /u01/app/oracle

配置tnsnames.ora文件,添加备端的监听连接串

[oracle@12cr2 admin]$ vi tnsnames.ora 
LISTENER_NEWCDB =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.16.81)(PORT = 1521))

newcdb =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.16.81)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = newcdb)
    )
  )

newcdbdg =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.16.130)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = newcdb)
    )
  )

7. 备端配置静态监听

配置listener.ora文件,添加newcdb的静态监听条目

[oracle@oracle admin]$ cat listener.ora 
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = newcdb)
      (ORACLE_HOME = /u01/app/oracle/product/12.2.0/db_1)
      (SID_NAME = newcdb)
    )
  )

LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.16.130)(PORT = 1521))
  )

ADR_BASE_LISTENER = /u01/app/oracle

配置tnsnames.ora文件,添加主端的监听连接串

[oracle@oracle admin]$ cat tnsnames.ora 
LISTENER_NEWCDB =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.16.81)(PORT = 1521))


newcdb =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.16.81)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = newcdb)
    )
  )

newcdbdg =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.16.130)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = newcdb)
    )
  )

8. tnsping测试网络连通性

备端tnsping主端

[oracle@oracle ~]$ tnsping newcdb
主端tnsping备端
[oracle@12cr2 ~]$ tnsping newcdbdg

9. 主端创建pfile文件并将pfile和密码文件传输到备端

SQL> create pfile='/home/oracle/pfile.ora' from spfile;

[oracle@12cr2 ~]$ scp /home/oracle/pfile.ora 192.168.16.130:`pwd`
[oracle@12cr2 dbs]$ scp orapwnewcdb 192.168.16.130:`pwd`

10. 备端修改主端传输的pfile文件

添加db_unique_name,要不同于主库

[oracle@oracle ~]$ cat pfile.ora 
newcdb.__data_transfer_cache_size=0
newcdb.__db_cache_size=541065216
newcdb.__inmemory_ext_roarea=0
newcdb.__inmemory_ext_rwarea=0
newcdb.__java_pool_size=4194304
newcdb.__large_pool_size=8388608
newcdb.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
newcdb.__pga_aggregate_target=264241152
newcdb.__sga_target=838860800
newcdb.__shared_io_pool_size=33554432
newcdb.__shared_pool_size=239075328
newcdb.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/newcdb/adump'
*.audit_trail='db'
*.compatible='12.2.0'
*.control_files='/u01/app/oracle/oradata/newcdb/control01.ctl','/u01/app/oracle/oradata/newcdb/control02.ctl'
*.db_block_size=8192
*.db_name='newcdb'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=newcdbXDB)'
*.enable_pluggable_database=true
*.local_listener='LISTENER_NEWCDB'
*.log_archive_dest_1='LOCATION=/archive'
*.log_archive_format='%t_%s_%r.dbf'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.pga_aggregate_target=250m
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=800m
*.undo_tablespace='UNDOTBS1'
*.db_unique_name='newcdbdg'
*.LOG_FILE_NAME_CONVERT=('/u01/app/oracle/oradata/newcdb','/u01/app/oracle/oradata/newcdb')
注意:备库参数文件加上LOG_FILE_NAME_CONVERT参数,不然duplicate过程会出现以下错误
RMAN> duplicate target database for standby from active database nofilenamecheck;
input datafile copy RECID=22 STAMP=947550530 file name=/u01/app/oracle/oradata/newcdb/dgpdb3/users01.dbf
ORACLE error from auxiliary database: ORA-19527: physical standby redo log must be renamed
ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/newcdb/redo01.log'
RMAN-05535: warning: All redo log files were not defined properly.
ORACLE error from auxiliary database: ORA-19527: physical standby redo log must be renamed
ORA-00312: online log 2 thread 1: '/u01/app/oracle/oradata/newcdb/redo02.log'
RMAN-05535: warning: All redo log files were not defined properly.
ORACLE error from auxiliary database: ORA-19527: physical standby redo log must be renamed
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/newcdb/redo03.log'
RMAN-05535: warning: All redo log files were not defined properly.
Finished Duplicate Db at 25-JUN-17
参考文档:
Duplicate for Standby fails with RMAN-05535 when directory path is the same as primary (文档 ID 783113.1)


11. 备端创建参数文件所需目录

[root@oracle ~]# mkdir /archive
[root@oracle ~]# chown oracle:oinstall /archive/
[oracle@oracle ~]$ mkdir -p /u01/app/oracle/admin/newcdb/adump
[oracle@oracle ~]$ mkdir -p /u01/app/oracle/oradata/newcdb

12. 启动备库到nomount状态

[oracle@oracle ~]$ export ORACLE_SID=newcdb
[oracle@oracle ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Sat Jun 24 23:59:36 2017
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
Connected to an idle instance.
SQL> create spfile from pfile='/home/oracle/pfile.ora';
File created.

SQL> startup nomount;
ORACLE instance started.
Total System Global Area  838860800 bytes
Fixed Size                  8798312 bytes
Variable Size             322965400 bytes
Database Buffers          503316480 bytes
Redo Buffers                3780608 bytes

SQL> show parameter db_unique_name
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_unique_name                       string      newcdbdg

13. 测试主备库之间的连通性

[oracle@oracle ~]$ sqlplus sys/oracle@newcdbdg as sysdba
[oracle@oracle ~]$ sqlplus sys/oracle@newcdb as sysdba

[oracle@12cr2 dbs]$ sqlplus sys/oracle@newcdbdg as sysdba
[oracle@12cr2 dbs]$ sqlplus sys/oracle@newcdb as sysdba

14. 备库执行RMAN duplicate

[oracle@oracle ~]$ rman target sys/oracle@newcdb auxiliary sys/oracle@newcdbdg nocatalog
Recovery Manager: Release 12.2.0.1.0 - Production on Sun Jun 25 00:12:14 2017
Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.
connected to target database: NEWCDB (DBID=36700136)
using target database control file instead of recovery catalog
connected to auxiliary database: NEWCDB (not mounted)

RMAN> duplicate target database for standby from active database nofilenamecheck;

15. 主端和备端启动data guard broker

如果使用data guard broker,需要先修改主备库的local_listener参数,不然broker添加备库报以下错:

DGMGRL> enable database newcdbdg
Enabled.
DGMGRL> show configuration;
Configuration - dg_newcdb
  Protection Mode: MaxPerformance
  Members:
  newcdb   - Primary database
    newcdbdg - Physical standby database 
      Error: ORA-16810: multiple errors or warnings detected for the member
Fast-Start Failover: DISABLED
Configuration Status:
ERROR   (status updated 17 seconds ago)

修改主备库的local_listener参数

SQL> show parameter local
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
local_listener                       string      LISTENER_NEWCDB
parallel_force_local                 boolean     FALSE

SQL> alter system set local_listener=newcdb;      ##主端修改
System altered.

SQL> alter system set local_listener=newcdbdg;    ##备端修改
System altered.

SQL> show parameter local
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
local_listener                       string      NEWCDBDG
parallel_force_local                 boolean     FALSE

主端和备端启动data guard broker

SQL> show parameter dg_broker

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
dg_broker_config_file1               string      /u01/app/oracle/product/12.2.0
                                                 /db_1/dbs/dr1newcdb.dat
dg_broker_config_file2               string      /u01/app/oracle/product/12.2.0
                                                 /db_1/dbs/dr2newcdb.dat
dg_broker_start                      boolean     FALSE
SQL> !ps -ef |grep dmon
oracle    7078  7063  0 00:57 pts/0    00:00:00 /bin/bash -c ps -ef |grep dmon
oracle    7080  7078  0 00:57 pts/0    00:00:00 grep dmon

SQL> alter system set dg_broker_start=true;
System altered.

SQL> !ps -ef |grep dmon
oracle    7089     1  0 00:57 ?        00:00:00 ora_dmon_newcdb
oracle    7092  7063  0 00:57 pts/0    00:00:00 /bin/bash -c ps -ef |grep dmon
oracle    7094  7092  0 00:57 pts/0    00:00:00 grep dmon

16. 主端配置data guard broker

[oracle@12cr2 dbs]$ dgmgrl /
DGMGRL for Linux: Release 12.2.0.1.0 - Production on Sun Jun 25 01:00:09 2017
Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.
Welcome to DGMGRL, type "help" for information.
Connected to "newcdb"
Connected as SYSDG.
DGMGRL> help create

Creates a broker configuration
Syntax:
  CREATE CONFIGURATION <configuration name> [AS] 
    PRIMARY DATABASE IS <database name>
    CONNECT IDENTIFIER IS <connect identifier>;

DGMGRL> create configuration dg_newcdb as primary database is newcdb connect identifier is newcdb;          ##添加主端配置
Configuration "dg_newcdb" created with primary database "newcdb"
DGMGRL> show configuration;

Configuration - dg_newcdb
  Protection Mode: MaxPerformance
  Members:
  newcdb - Primary database
Fast-Start Failover: DISABLED
Configuration Status:
DISABLED

DGMGRL> enable configuration        ##使配置生效
Enabled.

DGMGRL> show configuration;

Configuration - dg_newcdb
  Protection Mode: MaxPerformance
  Members:
  newcdb - Primary database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS   (status updated 12 seconds ago)

主端data guard broker添加备端

DGMGRL> help add
Adds a member to the broker configuration
Syntax:
  ADD { RECOVERY_APPLIANCE | DATABASE | FAR_SYNC } <object name>
    [AS CONNECT IDENTIFIER IS <connect identifier>];

DGMGRL> add database newcdbdg as connect identifier is newcdbdg;
Database "newcdbdg" added

DGMGRL> show configuration;
Configuration - dg_newcdb
  Protection Mode: MaxPerformance
  Members:
  newcdb   - Primary database
    newcdbdg - Physical standby database (disabled)
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS   (status updated 53 seconds ago)

DGMGRL> enable database newcdbdg
Enabled.
DGMGRL> show configuration;
Configuration - dg_newcdb
  Protection Mode: MaxPerformance
  Members:
  newcdb   - Primary database
    newcdbdg - Physical standby database 
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS   (status updated 17 seconds ago)

如果出现以下WARNING,可以在主端手动切换redo

DGMGRL> show configuration;
Configuration - dg_newcdb
  Protection Mode: MaxPerformance
  Members:
  newcdb   - Primary database
    newcdbdg - Physical standby database 
      Warning: ORA-16854: apply lag could not be determined
Fast-Start Failover: DISABLED
Configuration Status:
WARNING   (status updated 5 seconds ago)

SQL> alter system switch logfile;
System altered.

DGMGRL> show configuration;
Configuration - dg_newcdb
  Protection Mode: MaxPerformance
  Members:
  newcdb   - Primary database
    newcdbdg - Physical standby database 
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS   (status updated 4 seconds ago)

17. data guard broker的standby_file_management参数

DGMGRL> enable configuration  会自动修改数据库参数

手动修改参数,broker会自动刷回到broker的默认参数,例如

SQL> show parameter standby_file_management
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
standby_file_management              string      MANUAL

SQL> ALTER SYSTEM SET standby_file_management='AUTO' SCOPE=BOTH SID='*';
System altered.

SQL> show parameter standby_file_management
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
standby_file_management              string      AUTO

DGMGRL> enable configuration
Enabled.

SQL>  show parameter standby_file_management
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
standby_file_management              string      MANUAL

Step by Step Guide on Creating Physical Standby Using RMAN DUPLICATE...FROM ACTIVE DATABASE (文档 ID 1075908.1)

Please note if standby_file_management was set to manual. Ensure you set it back to Auto on the standby database once the standby creation is completed

修改方法

DGMGRL> EDIT DATABASE newcdb SET PROPERTY 'StandbyFileManagement' = 'AUTO';
Property "StandbyFileManagement" updated
DGMGRL> EDIT DATABASE newcdbdg SET PROPERTY 'StandbyFileManagement' = 'AUTO';
Property "StandbyFileManagement" updated

测试

SQL> show parameter standby_file_management
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
standby_file_management              string      AUTO

DGMGRL> enable configuration
Enabled.

SQL> show parameter standby_file_management
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
standby_file_management              string      AUTO

参考文档:

How to resolve ORA-01111 ORA-01110 ORA-01157 in a physical standby database (文档 ID 1416554.1)
hen set standby_file_management to AUTO from DGMGRL,
DGMGRL> EDIT DATABASE '<standby db_unique_name>' SET PROPERTY 'StandbyFileManagement' = 'AUTO';

查看数据库参数详细配置信息

DGMGRL> show database verbose newcdb

18. 备端启动只读模式

SQL> show pdbs;
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       MOUNTED
         3 DGPDB1                         MOUNTED
         4 DGPDB2                         MOUNTED
         5 DGPDB3                         MOUNTED

SQL> alter database open;
Database altered.

SQL> select open_mode from v$database;
OPEN_MODE
--------------------
READ ONLY

SQL> /
OPEN_MODE
--------------------
READ ONLY

SQL> /
OPEN_MODE
--------------------
READ ONLY WITH APPLY

SQL> show pdbs
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 DGPDB1                         MOUNTED
         4 DGPDB2                         MOUNTED
         5 DGPDB3                         MOUNTED

SQL> alter pluggable database DGPDB1 open;
Pluggable database altered.

SQL> show pdbs
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 DGPDB1                         READ ONLY  NO
         4 DGPDB2                         MOUNTED
         5 DGPDB3                         MOUNTED

19. 查看主备同步

SQL> col VALUE format a30
SQL> select name,value  from v$dataguard_stats;
NAME                             VALUE
-------------------------------- ------------------------------
transport lag                    +00 00:00:00
apply lag                        +00 00:00:00
apply finish time
estimated startup time           7

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮你解答。以下是Oracle 19c Data Guard物理备库搭建的步骤: 1. 在主库上创建备份 在主库上创建备份,可以使用RMAN或者其他备份工具。备份完成后,将备份拷贝至备库服务器上。 2. 在备库上安装Oracle软件 在备库服务器上安装Oracle软件,确保与主库版本一致。安装过程中需要选择安装“Oracle Database软件”和“Oracle Net Services”组件。 3. 创建pfile或者spfile 在备库上创建pfile或者spfile,确保参数与主库一致。可以将主库的pfile拷贝至备库上,并进行修改。 4. 配置tnsnames.ora 在备库服务器上配置tnsnames.ora文件,确保与主库的配置一致。 5. 创建密码文件 在备库服务器上创建密码文件,使用主库上的orapwd工具即可。 6. 启动实例 在备库服务器上启动实例,可以使用startup nomount命令。启动完成后,使用rman工具恢复备份。 7. 配置Data Guard 修改备库的参数文件,开启Data Guard。在备库上执行以下命令: ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(ORCL_DG)'; ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=ORCL LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ORCL'; 其中,ORCL_DG为Data Guard配置名称,ORCL为备库的DB_UNIQUE_NAME,可以根据实际情况进行修改。 8. 启动Redo Transport 在主库上执行以下命令: ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE; 在备库上执行以下命令: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT; 9. 验证配置 在主库上执行以下命令,查看Data Guard状态: SELECT NAME,OPEN_MODE,DATABASE_ROLE FROM V$DATABASE; 如果备库的DATABASE_ROLE为PHYSICAL STANDBY,说明配置成功。 以上就是Oracle 19c Data Guard物理备库搭建的步骤。希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值