签到成功

知道了

CNDBA社区CNDBA社区

Redhat 7.4 平台下 Oracle 12cR2 Data Guard 搭建手册

2017-08-06 01:13 4197 0 原创 Oracle 18c
作者: dave

1 操作系统

Oracle 12c 建议部署在Redhat 7.x上,我们这里选择最新的Redhat 7.4 。 
[dave@www.cndba.cn ~]# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 7.4 (Maipo)
[dave@www.cndba.cn ~]#

[dave@www.cndba.cn ~]# cat /etc/hosts
127.0.0.1   localhost 
192.168.56.130 12cR2DG1
192.168.56.131 12cR2DG2

2 安装单实例的Oracle

在节点1上安装单实例的Oracle 12cR2. 具体描述参考如下博客:
Oracle 12c 单实例安装 示例

这里注意需要在主备库上同时安装响应的依赖包。 这里可以使用yum直接安装。Yum的使用参考:
Linux 平台下 yum 源 配置 手册

[dave@www.cndba.cn ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Sat Aug 5 22:41:29 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 DAVE 			  READ WRITE NO
SQL>

Oracle 12c 的Data Guard 是在CDB 级别进行的,所以我们的配置都是从CDB 角度出发。
测试里主备库的数据库CDB名称相同。

3 主库启动FORCE LOGGING
SQL> col name for a20
SQL> select name,open_mode from v$pdbs;
NAME		     OPEN_MODE
-------------------- --------------------
PDB$SEED	     READ ONLY
DAVE		     READ WRITE

SQL> alter database force logging;
Database altered.

SQL> select force_logging from v$database;
FORCE_LOGGING
---------------------------------------
YES
4 启动归档模式

SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> archive log list;
Database log mode	       No Archive Mode
Automatic archival	       Disabled
Archive destination	       USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     1
Current log sequence	       2

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area 1620115456 bytes
Fixed Size		    2288920 bytes
Variable Size		 1040188136 bytes
Database Buffers	  570425344 bytes
Redo Buffers		    7213056 bytes
Database mounted.
SQL> alter database archivelog;
Database altered.

这里归档直接放在FRA里了:
SQL> show  parameter  recovery
NAME				     TYPE		    VALUE
------------------------------------ ---------------------- ------------------------------
db_recovery_file_dest		     string		    /u01/app/oracle/recovery_area
db_recovery_file_dest_size	     big integer	    12780M
recovery_parallelism		     integer		    0
remote_recovery_file_dest	     string

SQL> alter database open;
Database altered.

SQL> select name,open_mode from v$pdbs;
NAME		     OPEN_MODE
-------------------- --------------------
PDB$SEED	     READ ONLY
DAVE		     MOUNTED

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

SQL> select name,open_mode from v$pdbs;
NAME		     OPEN_MODE
-------------------- --------------------
PDB$SEED	     READ ONLY
DAVE		     READ WRITE

5 在主库添加 standby redo logfile 

在Oracle 12c的架构里,online redo log 和控制文件是保存在CDB中的,PDB中只有运行需要的数据文件,所以我们这里加standby redo log,也是在CDB中加。

另外要注意的就是在Oracle 12cR2中,默认的online redo logfile 大小改成200M了。 所以我们创建的standby redo log 也要对应成200M。

Oracle 12cR2 默认 online redo log 的大小从50M 增加到 200M

查看 Primary 库的 REDO 相关信息:
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT

SQL> select  group#,  members,  bytes  from  v$log;
    GROUP#    MEMBERS	   BYTES
---------- ---------- ----------
	 1	    1  209715200
	 2	    1  209715200
	 3	    1  209715200

SQL> select  member  from  v$logfile;
MEMBER
-----------------------------------------------
/u01/app/oracle/oradata/cndba/redo03.log
/u01/app/oracle/oradata/cndba/redo02.log
/u01/app/oracle/oradata/cndba/redo01.log

添加 4(3+1)个 standby  logfile:
SQL>alter database add standby logfile '/u01/app/oracle/oradata/cndba/stdredo01.log' size 200M;
SQL>alter database add standby logfile '/u01/app/oracle/oradata/cndba/stdredo02.log' size 200M;
SQL>alter database add standby logfile '/u01/app/oracle/oradata/cndba/stdredo03.log' size 200M;
SQL>alter database add standby logfile '/u01/app/oracle/oradata/cndba/stdredo04.log' size 200M;

6 分别在主备库配置监听并启动

--这里直接使用netmgr工具生成:注意静态监听注册中配置的pdb。
[dave@www.cndba.cn admin]$ cat listener.ora 
# listener.ora Network Configuration File: /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = cndba)
      (ORACLE_HOME = /u01/app/oracle/product/12.2.0/dbhome_1)
      (SID_NAME = cndba)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 12cR2DG1)(PORT = 1521))
    )
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

ADR_BASE_LISTENER = /u01/app/oracle

[dave@www.cndba.cn admin]$

[dave@www.cndba.cn admin]$ lsnrctl status

LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 06-AUG-2017 00:19:09

Copyright (c) 1991, 2016, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=12cR2DG1)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date                05-AUG-2017 21:44:53
Uptime                    0 days 2 hr. 34 min. 17 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/12cR2DG1/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=12cR2DG1)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=12cR2DG1)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/admin/cndba/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "5603064bac1f2f4de0538238a8c016ee" has 1 instance(s).
  Instance "cndba", status READY, has 1 handler(s) for this service...
Service "cndba" has 1 instance(s).
  Instance "cndba", status READY, has 1 handler(s) for this service...
Service "cndbaXDB" has 1 instance(s).
  Instance "cndba", status READY, has 1 handler(s) for this service...
Service "dave" has 1 instance(s).
  Instance "cndba", status READY, has 1 handler(s) for this service...
The command completed successfully
[dave@www.cndba.cn admin]$

7 分别在主备库配置tnsnames.ora 

[dave@www.cndba.cn admin]$ cat tnsnames.ora 
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

LISTENER_CNDBA =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 12cR2DG1)(PORT = 1521))


CNDBA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 12cR2DG1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = cndba)
    )
  )

CNDBA_S =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.131)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = cndba)
    )
  )

CNDBA_P =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.130)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = cndba)
    )
  )

[dave@www.cndba.cn admin]$

[dave@www.cndba.cn admin]$tnsping cndba_s
[dave@www.cndba.cn admin]$tnsping cndba_p

8 在备库创建必要的目录

参考主库的pfile中的路径,在备库创建相同的路径:
[dave@www.cndba.cn oracle]$ mkdir -p /u01/app/oracle/admin/cndba/adump
[dave@www.cndba.cn oracle]$ mkdir -p /u01/app/oracle/oradata/cndba/
[dave@www.cndba.cn oracle]$ mkdir -p /u01/app/oracle/recovery_area

9 在主库创建pfile 文件并修改pfile 内容

SQL> create pfile from spfile;
File created.

在pfile中添加如下内容:

#add for primary dg
*.db_name='cndba'
*.db_unique_name='cndba_p'
*.log_archive_config='dg_config=(cndba_p,cndba_s)'
*.log_archive_dest_1='location=USE_DB_RECOVERY_FILE_DEST valid_for=(all_logfiles,all_roles) db_unique_name=cndba_p'
*.log_archive_dest_2='service=cndba_s valid_for=(online_logfiles,primary_role)  lgwr affirm sync db_unique_name=cndba_s'
*.log_archive_dest_state_1=enable 
*.log_archive_dest_state_2=enable 
*.standby_file_management='auto'
*.fal_server='cndba_s'


如果主备库CDB名称不同,还需要加如下参数:
*.DB_FILE_NAME_CONVERT='cndba','dave'
*.LOG_FILE_NAME_CONVERT='cndba','dave'

用新参数重启数据库:
[dave@www.cndba.cn dbs]$ sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Sun Aug 6 00:30:41 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> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> create spfile from pfile;

File created.

SQL>  startup
ORACLE instance started.

Total System Global Area 4815060992 bytes
Fixed Size		    8802496 bytes
Variable Size		 1023414080 bytes
Database Buffers	 3774873600 bytes
Redo Buffers		    7970816 bytes
Database mounted.
Database opened.
SQL>

10 将主库的口令文件copy到备库

我这里主备库的CDB实例相同,如果不同,可以使用orapwd命令重建。
[dave@www.cndba.cn dbs]$ scp orapwcndba 192.168.56.131:`pwd`
oracle@192.168.56.131's password: 
orapwcndba                                                                                                                                                 100% 3584     3.5MB/s   00:00    
[dave@www.cndba.cn dbs]$

11 将主库的参数文件copy到备库并修改

[dave@www.cndba.cn dbs]$ scp initcndba.ora 192.168.56.131:`pwd`
oracle@192.168.56.131's password: 
initcndba.ora                                                                                                                                              100% 1594     1.6MB/s   00:00    
[dave@www.cndba.cn dbs]$

修改如下内容,在重新生成spfile:
#add for standby dg
*.db_unique_name='cndba_s'
*.log_archive_config='dg_config=(cndba_p,cndba_s)'
*.log_archive_dest_1='location=USE_DB_RECOVERY_FILE_DEST valid_for=(all_logfiles,all_roles) db_unique_name=cndba_s'
*.log_archive_dest_2='service=cndba_p valid_for=(online_logfiles,primary_role)  lgwr affirm sync db_unique_name=cndba_p'
*.log_archive_dest_state_1=enable 
*.log_archive_dest_state_2=enable 
*.standby_file_management='auto'
*.fal_server='cndba_p'

注意修改控制文件的路径,也使用新路径。

[dave@www.cndba.cn dbs]$ sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Sun Aug 6 00:34:32 2017

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

Connected to an idle instance.

SQL>  create spfile from pfile;

File created.

SQL> exit
Disconnected
[dave@www.cndba.cn dbs]$ ls
initcndba.ora  init.ora  orapwcndba  spfilecndba.ora
[dave@www.cndba.cn dbs]$

12 用spfile 将备库启动到nomount 状态

[dave@www.cndba.cn dbs]$ sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Sun Aug 6 00:35:11 2017

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup nomount
ORACLE instance started.

Total System Global Area 4815060992 bytes
Fixed Size		    8802496 bytes
Variable Size		 1023414080 bytes
Database Buffers	 3774873600 bytes
Redo Buffers		    7970816 bytes
SQL>

13 开始进行Active duplicate

[dave@www.cndba.cn dbs]$ rman target sys/oracle@cndba_p auxiliary sys/oracle@cndba_s;

Recovery Manager: Release 12.2.0.1.0 - Production on Sun Aug 6 00:39:52 2017

Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.

connected to target database: CNDBA (DBID=215718876)
connected to auxiliary database: CNDBA (not mounted)

RMAN>

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

Starting Duplicate Db at 2017:08:0600:40:25
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=261 device type=DISK
current log archived

contents of Memory Script:
{
   backup as copy reuse
   targetfile  '/u01/app/oracle/product/12.2.0/dbhome_1/dbs/orapwcndba' auxiliary format 
 '/u01/app/oracle/product/12.2.0/dbhome_1/dbs/orapwcndba'   ;
}
executing Memory Script

Starting backup at 2017:08:0600:40:26
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=393 device type=DISK
Finished backup at 2017:08:0600:40:27

contents of Memory Script:
{
   restore clone from service  'cndba_p' standby controlfile;
}
executing Memory Script

Starting restore at 2017:08:0600:40:27
using channel ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service cndba_p
channel ORA_AUX_DISK_1: restoring control file
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03
output file name=/u01/app/oracle/oradata/cndba/control01.ctl
output file name=/u01/app/oracle/recovery_area/cndba/control02.ctl
Finished restore at 2017:08:0600:40:31

contents of Memory Script:
{
   sql clone 'alter database mount standby database';
}
executing Memory Script

sql statement: alter database mount standby database

contents of Memory Script:
{
   set newname for tempfile  1 to 
 "/u01/app/oracle/oradata/cndba/temp01.dbf";
   set newname for tempfile  2 to 
 "/u01/app/oracle/oradata/cndba/pdbseed/temp012017-08-05_21-49-24-990-PM.dbf";
   set newname for tempfile  3 to 
 "/u01/app/oracle/oradata/cndba/dave/temp01.dbf";
   switch clone tempfile all;
   set newname for datafile  1 to 
 "/u01/app/oracle/oradata/cndba/system01.dbf";
   set newname for datafile  3 to 
 "/u01/app/oracle/oradata/cndba/sysaux01.dbf";
   set newname for datafile  4 to 
 "/u01/app/oracle/oradata/cndba/undotbs01.dbf";
   set newname for datafile  5 to 
 "/u01/app/oracle/oradata/cndba/pdbseed/system01.dbf";
   set newname for datafile  6 to 
 "/u01/app/oracle/oradata/cndba/pdbseed/sysaux01.dbf";
   set newname for datafile  7 to 
 "/u01/app/oracle/oradata/cndba/users01.dbf";
   set newname for datafile  8 to 
 "/u01/app/oracle/oradata/cndba/pdbseed/undotbs01.dbf";
   set newname for datafile  9 to 
 "/u01/app/oracle/oradata/cndba/dave/system01.dbf";
   set newname for datafile  10 to 
 "/u01/app/oracle/oradata/cndba/dave/sysaux01.dbf";
   set newname for datafile  11 to 
 "/u01/app/oracle/oradata/cndba/dave/undotbs01.dbf";
   set newname for datafile  12 to 
 "/u01/app/oracle/oradata/cndba/dave/users01.dbf";
   restore
   from  nonsparse   from service 
 'cndba_p'   clone database
   ;
   sql 'alter system archive log current';
}
executing Memory Script

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

renamed tempfile 1 to /u01/app/oracle/oradata/cndba/temp01.dbf in control file
renamed tempfile 2 to /u01/app/oracle/oradata/cndba/pdbseed/temp012017-08-05_21-49-24-990-PM.dbf in control file
renamed tempfile 3 to /u01/app/oracle/oradata/cndba/dave/temp01.dbf in control file

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

Starting restore at 2017:08:0600:40:36
using channel ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service cndba_p
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00001 to /u01/app/oracle/oradata/cndba/system01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:45
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service cndba_p
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00003 to /u01/app/oracle/oradata/cndba/sysaux01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:25
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service cndba_p
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00004 to /u01/app/oracle/oradata/cndba/undotbs01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service cndba_p
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00005 to /u01/app/oracle/oradata/cndba/pdbseed/system01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:16
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service cndba_p
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00006 to /u01/app/oracle/oradata/cndba/pdbseed/sysaux01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:15
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service cndba_p
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00007 to /u01/app/oracle/oradata/cndba/users01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service cndba_p
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00008 to /u01/app/oracle/oradata/cndba/pdbseed/undotbs01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:07
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service cndba_p
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00009 to /u01/app/oracle/oradata/cndba/dave/system01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:15
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service cndba_p
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00010 to /u01/app/oracle/oradata/cndba/dave/sysaux01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:16
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service cndba_p
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00011 to /u01/app/oracle/oradata/cndba/dave/undotbs01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:07
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service cndba_p
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00012 to /u01/app/oracle/oradata/cndba/dave/users01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 2017:08:0600:43:08

sql statement: alter system archive log current
current log archived

contents of Memory Script:
{
   restore clone force from service  'cndba_p' 
           archivelog from scn  1455086;
   switch clone datafile all;
}
executing Memory Script

Starting restore at 2017:08:0600:43:08
using channel ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: starting archived log restore to default destination
channel ORA_AUX_DISK_1: using network backup set from service cndba_p
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=4
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:02
channel ORA_AUX_DISK_1: starting archived log restore to default destination
channel ORA_AUX_DISK_1: using network backup set from service cndba_p
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=5
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
channel ORA_AUX_DISK_1: starting archived log restore to default destination
channel ORA_AUX_DISK_1: using network backup set from service cndba_p
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=6
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 2017:08:0600:43:12

datafile 1 switched to datafile copy
input datafile copy RECID=4 STAMP=951266591 file name=/u01/app/oracle/oradata/cndba/system01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=5 STAMP=951266591 file name=/u01/app/oracle/oradata/cndba/sysaux01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=6 STAMP=951266591 file name=/u01/app/oracle/oradata/cndba/undotbs01.dbf
datafile 5 switched to datafile copy
input datafile copy RECID=7 STAMP=951266591 file name=/u01/app/oracle/oradata/cndba/pdbseed/system01.dbf
datafile 6 switched to datafile copy
input datafile copy RECID=8 STAMP=951266591 file name=/u01/app/oracle/oradata/cndba/pdbseed/sysaux01.dbf
datafile 7 switched to datafile copy
input datafile copy RECID=9 STAMP=951266591 file name=/u01/app/oracle/oradata/cndba/users01.dbf
datafile 8 switched to datafile copy
input datafile copy RECID=10 STAMP=951266591 file name=/u01/app/oracle/oradata/cndba/pdbseed/undotbs01.dbf
datafile 9 switched to datafile copy
input datafile copy RECID=11 STAMP=951266591 file name=/u01/app/oracle/oradata/cndba/dave/system01.dbf
datafile 10 switched to datafile copy
input datafile copy RECID=12 STAMP=951266591 file name=/u01/app/oracle/oradata/cndba/dave/sysaux01.dbf
datafile 11 switched to datafile copy
input datafile copy RECID=13 STAMP=951266591 file name=/u01/app/oracle/oradata/cndba/dave/undotbs01.dbf
datafile 12 switched to datafile copy
input datafile copy RECID=14 STAMP=951266591 file name=/u01/app/oracle/oradata/cndba/dave/users01.dbf

contents of Memory Script:
{
   set until scn  1455477;
   recover
   standby
   clone database
    delete archivelog
   ;
}
executing Memory Script

executing command: SET until clause

Starting recover at 2017:08:0600:43:12
using channel ORA_AUX_DISK_1

starting media recovery

archived log for thread 1 with sequence 4 is already on disk as file /u01/app/oracle/recovery_area/CNDBA_S/archivelog/2017_08_06/o1_mf_1_4_drcxdw3v_.arc
archived log for thread 1 with sequence 5 is already on disk as file /u01/app/oracle/recovery_area/CNDBA_S/archivelog/2017_08_06/o1_mf_1_5_drcxdx61_.arc
archived log for thread 1 with sequence 6 is already on disk as file /u01/app/oracle/recovery_area/CNDBA_S/archivelog/2017_08_06/o1_mf_1_6_drcxdy8n_.arc
archived log file name=/u01/app/oracle/recovery_area/CNDBA_S/archivelog/2017_08_06/o1_mf_1_4_drcxdw3v_.arc thread=1 sequence=4
archived log file name=/u01/app/oracle/recovery_area/CNDBA_S/archivelog/2017_08_06/o1_mf_1_5_drcxdx61_.arc thread=1 sequence=5
archived log file name=/u01/app/oracle/recovery_area/CNDBA_S/archivelog/2017_08_06/o1_mf_1_6_drcxdy8n_.arc thread=1 sequence=6
media recovery complete, elapsed time: 00:00:01
Finished recover at 2017:08:0600:43:15
Finished Duplicate Db at 2017:08:0600:44:05

RMAN> 

14 打开备库并并启动apply 

duplicate 完成之后,备库是mount的。

SQL> select open_mode from v$database;

OPEN_MODE
----------------------------------------
MOUNTED

SQL>  show pdbs

    CON_ID CON_NAME			  OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
	 2 PDB$SEED			  MOUNTED
	 3 DAVE 			  MOUNTED 

SQL> alter database open;

Database altered.

SQL>  alter pluggable database  dave open;

Pluggable database altered.

SQL> show pdbs

    CON_ID CON_NAME			  OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
	 2 PDB$SEED			  READ ONLY  NO
	 3 DAVE 			  READ ONLY  NO
SQL>

备库是只读的。


--查看主库:
SQL> set lines 120
SQL> select log_mode,open_mode , database_role from v$database;

LOG_MODE		 OPEN_MODE				  DATABASE_ROLE
-------------   -------------------    -----------------
ARCHIVELOG		 READ WRITE				  PRIMARY

SQL>

--备库:
SQL> select log_mode,open_mode , database_role from v$database;

LOG_MODE     OPEN_MODE		  DATABASE_ROLE
------------ -------------------- ----------------
ARCHIVELOG   READ ONLY		  PHYSICAL STANDBY


--启动real-time apply:
SQL> alter database recover managed standby database using current logfile disconnect from session;
Database altered.

SQL> select open_mode from v$database;

OPEN_MODE
--------------------
READ ONLY WITH APPLY

15 验证DG

--在主库创建一个table:
SQL> alter session set container=pcndba;
Session altered.

SQL> create table cndba as select * from dba_users;
create table cndba as select * from dba_users
*
ERROR at line 1:
ORA-01109: database not open


SQL> show pdbs   

    CON_ID CON_NAME			  OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
	 3 DAVE			  MOUNTED
SQL> alter database open;
Database altered.

SQL> create table cndba as select * from dba_users;
Table created.

SQL> alter system switch logfile;
alter system switch logfile
*
ERROR at line 1:
ORA-65040: operation not allowed from within a pluggable database

注意:这里可以看到,对于12c的库,日志的切换只能在CDB中进行,也就是我们前面讲的,DG 是在CDB 级别进行的。

SQL> alter system switch logfile;
System altered.

备库查询:
SQL> alter session set container=dave;
Session altered.

SQL> select count(1) from cndba;

  COUNT(1)
----------
	38

基于Redhat 7.4 的Oracle 12.2.0.1的Data Guard 搭建完成。


http://www.cndba.cn/cndba/dave/article/2056
http://www.cndba.cn/cndba/dave/article/2056
http://www.cndba.cn/cndba/dave/article/2056 http://www.cndba.cn/cndba/dave/article/2056 http://www.cndba.cn/cndba/dave/article/2056
http://www.cndba.cn/cndba/dave/article/2056
http://www.cndba.cn/cndba/dave/article/2056
http://www.cndba.cn/cndba/dave/article/2056
http://www.cndba.cn/cndba/dave/article/2056
http://www.cndba.cn/cndba/dave/article/2056

版权声明:本文为博主原创文章,未经博主允许不得转载。

Redhat 7.4 平台下 Oracle 12cR2 Data Guard 搭建手册

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2283
    原创
  • 3
    翻译
  • 579
    转载
  • 196
    评论
  • 访问:8179618次
  • 积分:4428
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ