Oracle12c Data Guard搭建手册

Posted ✧*꧁一品堂.技术学习笔记꧂*✧.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle12c Data Guard搭建手册相关的知识,希望对你有一定的参考价值。

Oracle12c Data Guard搭建手册

注:本文来源: 红黑联盟 《 Oracle12c Data Guard搭建手册





Oracle 12c 的DataGuard 是在CDB 级别进行的,所以我们的配置都是从CDB角度出发。

测试里主备库的数据库CDB名称相同。

1 环境说明

  1 OS Version:
  2 
  3 [[email protected] etc]# cat /etc/oracle-release
  4 
  5 Oracle Linux Server release 6.3
  6 
  7 [[email protected] etc]# uname -r
  8 
  9 2.6.39-200.29.3.el6uek.x86_64
 10 
 11 DB Version:
 12 
 13 SQL> select * from v$version;
 14 
 15 BANNER CON_ID
 16 
 17 ------------------------------------------------------------------------------------------
 18 
 19 Oracle Database 12c Enterprise EditionRelease 12.1.0.1.0 - 64bit Production 0
 20 
 21 PL/SQL Release 12.1.0.1.0 - Production 0
 22 
 23 CORE 12.1.0.1.0 Production 0
 24 
 25 TNS for Linux: Version 12.1.0.1.0 -Production 0
 26 
 27 NLSRTL Version 12.1.0.1.0 - Production 0
 28 
 29 
 30 
 31 SQL> show pdbs
 32 
 33 
 34 
 35 CON_ID CON_NAME OPEN MODE RESTRICTED
 36 
 37 ---------- ---------------------------------------- ----------
 38 
 39 2 PDB$SEED READ ONLY NO
 40 
 41 3 PCNDBA READ WRITE NO
 42 
 43 SQL>


实例名:

Database

DB_UNIQUE_NAME

Oracle Net Service Name

Primary

PCNDBA_P

PCNDBA_P

Physical standby

PCNDBA_S

PCNDBA_S


IP 地址:

  1 [[email protected] network-scripts]# cat /etc/hosts
  2 
  3 127.0.0.1 localhost dave
  4 
  5 192.168.56.3 dg1
  6 
  7 192.168.56.4 dg2
  8 
  9 [[email protected] network-scripts]#


这里用主库上的PDB:PCNDBA 做我们的主库。

2 主库启动FORCE LOGGING

  1 SQL> select name,open_mode from v$pdbs;
  2 
  3 
  4 
  5 NAME OPEN_MODE
  6 
  7 ------------------------------ ----------
  8 
  9 PDB$SEED READ ONLY
 10 
 11 PCNDBA READ WRITE
 12 
 13 
 14 
 15 SQL> alter database force logging;
 16 
 17 Database altered.
 18 
 19 
 20 
 21 SQL> select force_logging fromv$database;
 22 
 23 FORCE_LOGGING
 24 
 25 ---------------------------------------
 26 
 27 YES

3 启动归档模式


  1 SQL> show con_name
  2 
  3 
  4 
  5 CON_NAME
  6 
  7 ------------------------------
  8 
  9 CDB$ROOT
 10 
 11 SQL> archive log list;
 12 
 13 Database log mode No Archive Mode
 14 
 15 Automatic archival Disabled
 16 
 17 Archive destination USE_DB_RECOVERY_FILE_DEST
 18 
 19 Oldest online log sequence 14
 20 
 21 Current log sequence 16
 22 
 23 SQL> shutdown immediate
 24 
 25 Database closed.
 26 
 27 Database dismounted.
 28 
 29 ORACLE instance shut down.
 30 
 31 SQL> startup mount
 32 
 33 ORACLE instance started.
 34 
 35 
 36 
 37 Total System Global Area 1620115456 bytes
 38 
 39 Fixed Size 2288920 bytes
 40 
 41 Variable Size 1040188136 bytes
 42 
 43 Database Buffers 570425344 bytes
 44 
 45 Redo Buffers 7213056 bytes
 46 
 47 Database mounted.
 48 
 49 SQL> alter database archivelog;
 50 
 51 
 52 
 53 Database altered.
 54 
 55 
 56 
 57 SQL>


这里归档直接放在FRA里了:

  1 SQL> show parameter recovery
  2 
  3 
  4 
  5 NAME TYPE VALUE
  6 
  7 ------------------------------------ -----------------------------------------
  8 
  9 db_recovery_file_dest string /home/ora12c/app/oracle/fast_recovery_area
 10 
 11 db_recovery_file_dest_size big integer 4800M
 12 
 13 recovery_parallelism integer 0
 14 
 15 
 16 
 17 SQL> alter system setdb_recovery_file_dest_size=10G;
 18 
 19 System altered.
 20 
 21 
 22 
 23 SQL> show parameter recovery
 24 
 25 NAME TYPE VALUE
 26 
 27 ----------------------------------------------- ------------------------------
 28 
 29 db_recovery_file_dest string /home/ora12c/app/oracle/fast_recovery_area
 30 
 31 db_recovery_file_dest_size biginteger 10G
 32 
 33 recovery_parallelism integer 0
 34 
 35 SQL>
 36 
 37 
 38 
 39 SQL> alter database open;
 40 
 41 
 42 
 43 Database altered.
 44 
 45 
 46 
 47 SQL> select name,open_mode from v$pdbs;
 48 
 49 
 50 
 51 NAME OPEN_MODE
 52 
 53 ------------------------------ ----------
 54 
 55 PDB$SEED READ ONLY
 56 
 57 PCNDBA MOUNTED
 58 
 59 
 60 
 61 SQL> alter pluggable database pcndbaopen;
 62 
 63 Pluggable database altered.
 64 
 65 
 66 
 67 SQL> select name,open_mode from v$pdbs;
 68 
 69 NAME OPEN_MODE
 70 
 71 ------------------------------ ----------
 72 
 73 PDB$SEED READ ONLY
 74 
 75 PCNDBA READ WRITE

4 在主库添加 standby redo logfile

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

查看 Primary 库的 REDO 相关信息:

  1 SQL> show con_name
  2 
  3 
  4 
  5 CON_NAME
  6 
  7 ------------------------------
  8 
  9 CDB$ROOT
 10 
 11 SQL> select group#, members, bytes from v$log;
 12 
 13 
 14 
 15 GROUP# MEMBERS BYTES
 16 
 17 ---------- ---------- ----------
 18 
 19 1 2 52428800
 20 
 21 2 2 52428800
 22 
 23 3 2 52428800
 24 
 25 
 26 
 27 SQL> select member from v$logfile;
 28 
 29 
 30 
 31 MEMBER
 32 
 33 -----------------------------------------------------------------------------------------
 34 
 35 /home/ora12c/app/oracle/oradata/CNDBA/onlinelog/o1_mf_3_9y3rrb3v_.log
 36 
 37 /home/ora12c/app/oracle/fast_recovery_area/CNDBA/onlinelog/o1_mf_3_9y3rrb9n_.log
 38 
 39 /home/ora12c/app/oracle/oradata/CNDBA/onlinelog/o1_mf_2_9y3rr54v_.log
 40 
 41 /home/ora12c/app/oracle/fast_recovery_area/CNDBA/onlinelog/o1_mf_2_9y3rr5b2_.log
 42 
 43 /home/ora12c/app/oracle/oradata/CNDBA/onlinelog/o1_mf_1_9y3rqznr_.log
 44 
 45 /home/ora12c/app/oracle/fast_recovery_area/CNDBA/onlinelog/o1_mf_1_9y3rr09s_

添加 4(3+1)个standby logfile:

  1 SQL> alter database add standby logfile ‘/home/ora12c/app/oracle/oradata/CNDBA/onlinelog/stdredo01.logsize 50M;
  2 
  3 Database altered.
  4 
  5 
  6 
  7 SQL> alter database add standby logfile ‘/home/ora12c/app/oracle/oradata/CNDBA/onlinelog/stdredo02.logsize 50M;
  8 
  9 Database altered.
 10 
 11 
 12 
 13 SQL> alter database add standby logfile ‘/home/ora12c/app/oracle/oradata/CNDBA/onlinelog/stdredo03.logsize 50M;
 14 
 15 Database altered.
 16 
 17 
 18 
 19 SQL> alter database add standby logfile ‘/home/ora12c/app/oracle/oradata/CNDBA/onlinelog/stdredo04.logsize 50M;
 20 
 21 Database altered.


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

  1 --这里直接使用netmgr工具生成:注意静态监听注册中配置的pdb。
  2 
  3 [[email protected] admin]$ cat listener.ora
  4 
  5 # listener.ora Network Configuration File:/home/ora12c/app/oracle/product/12.1.0/db_1/network/admin/listener.ora
  6 
  7 # Generated by Oracle configuration tools.
  8 
  9 
 10 
 11 SID_LIST_LISTENER =
 12 
 13 (SID_LIST =
 14 
 15 (SID_DESC =
 16 
 17 (GLOBAL_DBNAME = cndba)
 18 
 19 (ORACLE_HOME = /home/ora12c/app/oracle/product/12.1.0/db_1)
 20 
 21 (SID_NAME = cndba)
 22 
 23 )
 24 
 25 )
 26 
 27 
 28 
 29 LISTENER =
 30 
 31 (DESCRIPTION_LIST =
 32 
 33 (DESCRIPTION =
 34 
 35 (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
 36 
 37 )
 38 
 39 (DESCRIPTION =
 40 
 41 (ADDRESS = (PROTOCOL = TCP)(HOST = dave)(PORT = 1521))
 42 
 43 )
 44 
 45 )
 46 
 47 
 48 
 49 ADR_BASE_LISTENER = /home/ora12c/app/oracle
 50 
 51 
 52 
 53 [[email protected] admin]$ lsnrctl reload
 54 
 55 
 56 
 57 LSNRCTL for Linux: Version 12.1.0.1.0 -Production on 06-AUG-2014 19:26:50
 58 
 59 
 60 
 61 Copyright (c) 1991, 2013, Oracle. All rights reserved.
 62 
 63 
 64 
 65 Connecting to(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
 66 
 67 The command completed successfully

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

  1 [[email protected] admin]$ cat tnsnames.ora
  2 
  3 # tnsnames.ora Network Configuration File: /home/ora12c/app/oracle/product/12.1.0/db_1/network/admin/tnsnames.ora
  4 
  5 # Generated by Oracle configuration tools.
  6 
  7 
  8 
  9 CNDBA_S =
 10 
 11 (DESCRIPTION =
 12 
 13 (ADDRESS_LIST =
 14 
 15 (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.4)(PORT = 1521))
 16 
 17 )
 18 
 19 (CONNECT_DATA =
 20 
 21 (SERVICE_NAME = cndba)
 22 
 23 )
 24 
 25 )
 26 
 27 
 28 
 29 CNDBA_P =
 30 
 31 (DESCRIPTION =
 32 
 33 (ADDRESS_LIST =
 34 
 35 (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.3)(PORT = 1521))
 36 
 37 )
 38 
 39 (CONNECT_DATA =
 40 
 41 (SERVICE_NAME = cndba)
 42 
 43 )
 44 
 45 )
 46 
 47 
 48 
 49 [[email protected] admin]$ tnsping cndba_s
 50 
 51 [[email protected] admin]$ tnsping cndba_p

7 在备库创建必要的目录

可以参考主库的pfile中的路径:

  1 [[email protected] admin]$ mkdir -p /home/ora12c/app/oracle/fast_recovery_area
  2 
  3 [[email protected] admin]$ mkdir -p/home/ora12c/app/oracle/oradata
  4 
  5 [[email protected] admin]$ mkdir -p/home/ora12c/app/oracle/admin/cndba/adump

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


  1 SQL> create pfile from spfile;
  2 
  3 File created.

在pfile中添加如下内容:

  1 #add for primary dg
  2 
  3 *.db_name=‘cndba  4 
  5 *.db_unique_name=‘cndba_p  6 
  7 *.log_archive_config=‘dg_config=(cndba_p,cndba_s)  8 
  9 *.log_archive_dest_1=‘location=USE_DB_RECOVERY_FILE_DESTvalid_for=(all_logfiles,all_roles) db_unique_name=cndba_p 10 
 11 *.log_archive_dest_2=‘service=cndba_s valid_for=(online_logfiles,primary_role) lgwr affirmsync db_unique_name=cndba_s 12 
 13 *.log_archive_dest_state_1=enable
 14 
 15 *.log_archive_dest_state_2=enable
 16 
 17 *.standby_file_management=‘auto 18 
 19 *.fal_server=‘cndba_s

如果主备库CDB名称不同,还需要加如下参数:

  1 *.DB_FILE_NAME_CONVERT=‘cndba‘,‘dave  2 
  3 *.LOG_FILE_NAME_CONVERT=‘cndba‘,‘dave

用新参数重启数据库:

  1 SQL> shutdown immediate
  2 
  3 Database closed.
  4 
  5 Database dismounted.
  6 
  7 ORACLE instance shut down.
  8 
  9 
 10 
 11 SQL> create spfile from pfile;
 12 
 13 File created.
 14 
 15 
 16 
 17 SQL> startup
 18 
 19 ORACLE instance started.
 20 
 21 
 22 
 23 Total System Global Area 1620115456 bytes
 24 
 25 Fixed Size 2288920 bytes
 26 
 27 Variable Size 1040188136 bytes
 28 
 29 Database Buffers 570425344 bytes
 30 
 31 Redo Buffers 7213056 bytes
 32 
 33 Database mounted.
 34 
 35 Database opened.
 36 
 37 SQL>
 38 9 将主库的口


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

我这里主备库的CDB实例相同,如果不同,可以使用orapwd命令重建。

  1 [[email protected] dbs]$ scp orapwcndba192.168.56.4:`pwd`
  2 
  3 [email protected]s password:
  4 
  5 orapwcndba 100% 7680 7.5KB/s 00:00
  6 
  7 [[email protected] dbs]$

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

  1 [[email protected] dbs]$ scp initcndba.ora192.168.56.4:`pwd`
  2 
  3 [email protected]s password:
  4 
  5 initcndba.ora 100% 1593 1.6KB/s 00:00
  6 
  7 [[email protected] dbs]$
  8 
  9 
 10 
 11 修改如下内容,在重新生成spfile:
 12 
 13 #add for standby dg
 14 
 15 *.db_unique_name=‘cndba_s 16 
 17 *.log_archive_config=‘dg_config=(cndba_p,cndba_s) 18 
 19 *.log_archive_dest_1=‘location=USE_DB_RECOVERY_FILE_DESTvalid_for=(all_logfiles,all_roles) db_unique_name=cndba_s 20 
 21 *.log_archive_dest_2=‘service=cndba_pvalid_for=(online_logfiles,primary_role) lgwr affirm sync db_unique_name=cndba_p 22 
 23 *.log_archive_dest_state_1=enable
 24 
 25 *.log_archive_dest_state_2=enable
 26 
 27 *.standby_file_management=‘auto 28 
 29 *.fal_server=‘cndba_p

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

  1 SQL> create spfile from pfile;
  2 
  3 File created.

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

  1 SQL> startup nomount
  2 
  3 ORACLE instance started.
  4 
  5 
  6 
  7 Total System Global Area 1620115456 bytes
  8 
  9 Fixed Size 2288920 bytes
 10 
 11 Variable Size 1040188136 bytes
 12 
 13 Database Buffers 570425344 bytes
 14 
 15 Redo Buffers 7213056 bytes
 16 
 17 SQL>


12 开始进行Active duplicate

  1 [[email protected] network-scripts]$ rman targetsys/[email protected]_p auxiliary sys/[email protected]_s;
  2 
  3 
  4 
  5 Recovery Manager: Release 12.1.0.1.0 -Production on Wed Aug 6 20:41:02 2014
  6 
  7 
  8 
  9 Copyright (c) 1982, 2013, Oracle and/or itsaffiliates. All rights reserved.
 10 
 11 
 12 
 13 connected to target database: CNDBA(DBID=119362621)
 14 
 15 connected to auxiliary database: CNDBA (notmounted)
 16 
 17 
 18 
 19 
 20 
 21 RMAN>duplicatetarget database for standby from active database nofilenamecheck dorecover;
 22 
 23 
 24 
 25 [[email protected] network-scripts]$ rman targetsys/[email protected]_p auxiliary sys/[email protected]_s;
 26 
 27 
 28 
 29 Recovery Manager: Release 12.1.0.1.0 -Production on Wed Aug 6 20:41:02 2014
 30 
 31 
 32 
 33 Copyright (c) 1982, 2013, Oracle and/or itsaffiliates. All rights reserved.
 34 
 35 
 36 
 37 connected to target database: CNDBA(DBID=119362621)
 38 
 39 connected to auxiliary database: CNDBA (notmounted)
 40 
 41 
 42 
 43 RMAN> duplicate target database forstandby from active database nofilenamecheck dorecover;
 44 
 45 
 46 
 47 Starting Duplicate Db at 06-AUG-14
 48 
 49 using target database control file insteadof recovery catalog
 50 
 51 allocated channel: ORA_AUX_DISK_1
 52 
 53 channel ORA_AUX_DISK_1: SID=21 devicetype=DISK
 54 
 55 current log archived
 56 
 57 
 58 
 59 contents of Memory Script:
 60 
 61 {
 62 
 63 backup as copy reuse
 64 
 65 targetfile ‘/home/ora12c/app/oracle/product/12.1.0/db_1/dbs/orapwcndba‘ auxiliaryformat
 66 
 67/home/ora12c/app/oracle/product/12.1.0/db_1/dbs/orapwcndba‘ ;
 68 
 69 }
 70 
 71 executing Memory Script
 72 
 73 
 74 
 75 Starting backup at 06-AUG-14
 76 
 77 allocated channel: ORA_DISK_1
 78 
 79 channel ORA_DISK_1: SID=48 device type=DISK
 80 
 81 Finished backup at 06-AUG-14
 82 
 83 
 84 
 85 contents of Memory Script:
 86 
 87 {
 88 
 89 sql clone "alter system set control_files =
 90 
 91‘/home/ora12c/app/oracle/oradata/CNDBA/controlfile/o1_mf_9y3rqtn9_.ctl‘‘,‘‘/home/ora12c/app/oracle/fast_recovery_area/CNDBA/controlfile/o1_mf_9y3rqvky_.ctl‘‘comment=
 92 
 93‘Set by RMAN‘‘ scope=spfile";
 94 
 95 restore clone from service ‘cndba_p‘ standby controlfile;
 96 
 97 }
 98 
 99 executing Memory Script
100 
101 
102 
103 sql statement: alter system set control_files = ‘‘/home/ora12c/app/oracle/oradata/CNDBA/controlfile/o1_mf_9y3rqtn9_.ctl‘‘,‘‘/home/ora12c/app/oracle/fast_recovery_area/CNDBA/controlfile/o1_mf_9y3rqvky_.ctl‘‘comment= ‘‘Set by RMAN‘‘ scope=spfile
104 
105 
106 
107 Starting restore at 06-AUG-14
108 
109 using channel ORA_AUX_DISK_1
110 
111 
112 
113 channel ORA_AUX_DISK_1: starting datafilebackup set restore
114 
115 channel ORA_AUX_DISK_1: using networkbackup set from service cndba_p
116 
117 channel ORA_AUX_DISK_1: restoring controlfile
118 
119 channel ORA_AUX_DISK_1: restore complete,elapsed time: 00:00:07
120 
121 output file name=/home/ora12c/app/oracle/oradata/CNDBA/controlfile/o1_mf_9y3rqtn9_.ctl
122 
123 output filename=/home/ora12c/app/oracle/fast_recovery_area/CNDBA/controlfile/o1_mf_9y3rqvky_.ctl
124 
125 Finished restore at 06-AUG-14
126 
127 
128 
129 contents of Memory Script:
130 
131 {
132 
133 sql clone ‘alter database mount standby database‘;
134 
135 }
136 
137 executing Memory Script
138 
139 
140 
141 sql statement: alter database mount standbydatabase
142 
143 
144 
145 contents of Memory Script:
146 
147 {
148 
149 set newname for clone tempfile 1to new;
150 
151 set newname for clone tempfile 2to new;
152 
153 set newname for clone tempfile 3to new;
154 
155 switchclone tempfile all;
156 
157 set newname for clone datafile 1to new;
158 
159 set newname for clone datafile 3to new;
160 
161 set newname for clone datafile 4to new;
162 
163 set newname for clone datafile 5to new;
164 
165 set newname for clone datafile 6to new;
166 
167 set newname for clone datafile 7to new;
168 
169 set newname for clone datafile 8to new;
170 
171 set newname for clone datafile 9to new;
172 
173 set newname for clone datafile 10to new;
174 
175 restore
176 
177 from service ‘cndba_p‘ clone database
178 
179 ;
180 
181 sqlalter system archive log current‘;
182 
183 }
184 
185 executing Memory Script
186 
187 
188 
189 executing command: SET NEWNAME
190 
191 
192 
193 executing command: SET NEWNAME
194 
195 
196 
197 executing command: SET NEWNAME
198 
199 
200 
201 renamed tempfile 1 to/home/ora12c/app/oracle/oradata/CNDBA_S/datafile/o1_mf_temp_%u_.tmp in controlfile
202 
203 renamed tempfile 2 to/home/ora12c/app/oracle/oradata/CNDBA_S/datafile/o1_mf_temp_%u_.tmp in controlfile
204 
205 renamed tempfile 3 to/home/ora12c/app/oracle/oradata/CNDBA_S/datafile/o1_mf_temp_%u_.tmp in controlfile
206 
207 
208 
209 executing command: SET NEWNAME
210 
211 
212 
213 executing command: SET NEWNAME
214 
215 
216 
217 executing command: SET NEWNAME
218 
219 
220 
221 executing command: SET NEWNAME
222 
223 
224 
225 executing command: SET NEWNAME
226 
227 
228 
229 executing command: SET NEWNAME
230 
231 
232 
233 executing command: SET NEWNAME
234 
235 
236 
237 executing command: SET NEWNAME
238 
239 
240 
241 executing command: SET NEWNAME
242 
243 
244 
245 Starting restore at 06-AUG-14
246 
247 using channel ORA_AUX_DISK_1
248 
249 
250 
251 channel ORA_AUX_DISK_1: starting datafilebackup set restore
252 
253 channel ORA_AUX_DISK_1: using networkbackup set from service cndba_p
254 
255 channel ORA_AUX_DISK_1: specifyingdatafile(s) to restore from backup set
256 
257 channel ORA_AUX_DISK_1: restoring datafile00001 to /home/ora12c/app/oracle/oradata/CNDBA_S/datafile/o1_mf_system_%u_.dbf
258 
259 channel ORA_AUX_DISK_1: restore complete,elapsed time: 00:01:37
260 
261 channel ORA_AUX_DISK_1: starting datafilebackup set restore
262 
263 channel ORA_AUX_DISK_1: using networkbackup set from service cndba_p
264 
265 channel ORA_AUX_DISK_1: specifyingdatafile(s) to restore from backup set
266 
267 channel ORA_AUX_DISK_1: restoring datafile00003 to /home/ora12c/app/oracle/oradata/CNDBA_S/datafile/o1_mf_sysaux_%u_.dbf
268 
269 channel ORA_AUX_DISK_1: restore complete,elapsed time: 00:01:25
270 
271 channel ORA_AUX_DISK_1: starting datafilebackup set restore
272 
273 channel ORA_AUX_DISK_1: using networkbackup set from service cndba_p
274 
275 channel ORA_AUX_DISK_1: specifying datafile(s)to restore from backup set
276 
277 channel ORA_AUX_DISK_1: restoring datafile00004 to/home/ora12c/app/oracle/oradata/CNDBA_S/datafile/o1_mf_undotbs1_%u_.dbf
278 
279 channel ORA_AUX_DISK_1: restore complete,elapsed time: 00:00:25
280 
281 channel ORA_AUX_DISK_1: starting datafilebackup set restore
282 
283 channel ORA_AUX_DISK_1: using networkbackup set from service cndba_p
284 
285 channel ORA_AUX_DISK_1: specifyingdatafile(s) to restore from backup set
286 
287 channel ORA_AUX_DISK_1: restoring datafile00005 to /home/ora12c/app/oracle/oradata/CNDBA_S/datafile/o1_mf_system_%u_.dbf
288 
289 channel ORA_AUX_DISK_1: restore complete,elapsed time: 00:00:35
290 
291 channel ORA_AUX_DISK_1: starting datafilebackup set restore
292 
293 channel ORA_AUX_DISK_1: using networkbackup set from service cndba_p
294 
295 channel ORA_AUX_DISK_1: specifyingdatafile(s) to restore from backup set
296 
297 channel ORA_AUX_DISK_1: restoring datafile00006 to /home/ora12c/app/oracle/oradata/CNDBA_S/datafile/o1_mf_users_%u_.dbf
298 
299 channel ORA_AUX_DISK_1: restore complete,elapsed time: 00:00:01
300 
301 channel ORA_AUX_DISK_1: starting datafilebackup set restore
302 
303 channel ORA_AUX_DISK_1: using networkbackup set from service cndba_p
304 
305 channel ORA_AUX_DISK_1: specifyingdatafile(s) to restore from backup set
306 
307 channel ORA_AUX_DISK_1: restoring datafile00007 to /home/ora12c/app/oracle/oradata/CNDBA_S/datafile/o1_mf_sysaux_%u_.dbf
308 
309 channel ORA_AUX_DISK_1: restore complete,elapsed time: 00:01:15
310 
311 channel ORA_AUX_DISK_1: starting datafilebackup set restore
312 
313 channel ORA_AUX_DISK_1: using networkbackup set from service cndba_p
314 
315 channel ORA_AUX_DISK_1: specifyingdatafile(s) to restore from backup set
316 
317 channel ORA_AUX_DISK_1: restoring datafile00008 to /home/ora12c/app/oracle/oradata/CNDBA_S/datafile/o1_mf_system_%u_.dbf
318 
319 channel ORA_AUX_DISK_1: restore complete,elapsed time: 00:00:35
320 
321 channel ORA_AUX_DISK_1: starting datafilebackup set restore
322 
323 channel ORA_AUX_DISK_1: using networkbackup set from service cndba_p
324 
325 channel ORA_AUX_DISK_1: specifyingdatafile(s) to restore from backup set
326 
327 channel ORA_AUX_DISK_1: restoring datafile00009 to /home/ora12c/app/oracle/oradata/CNDBA_S/datafile/o1_mf_sysaux_%u_.dbf
328 
329 channel ORA_AUX_DISK_1: restore complete,elapsed time: 00:01:15
330 
331 channel ORA_AUX_DISK_1: starting datafilebackup set restore
332 
333 channel ORA_AUX_DISK_1: using networkbackup set from service cndba_p
334 
335 channel ORA_AUX_DISK_1: specifyingdatafile(s) to restore from backup set
336 
337 channel ORA_AUX_DISK_1: restoring datafile00010 to /home/ora12c/app/oracle/oradata/CNDBA_S/datafile/o1_mf_users_%u_.dbf
338 
339 channel ORA_AUX_DISK_1: restore complete,elapsed time: 00:00:03
340 
341 Finished restore at 06-AUG-14
342 
343 
344 
345 sql statement: alter system archive logcurrent
346 
347 current log archived
348 
349 
350 
351 contents of Memory Script:
352 
353 {
354 
355 restore clone force from service ‘cndba_p356 
357 archivelog from scn 1922781;
358 
359 switch clone datafile all;
360 
361 }
362 
363 executing Memory Script
364 
365 
366 
367 Starting restore at 06-AUG-14
368 
369 using channel ORA_AUX_DISK_1
370 
371 
372 
373 channel ORA_AUX_DISK_1: starting archivedlog restore to default destination
374 
375 channel ORA_AUX_DISK_1: using networkbackup set from service cndba_p
376 
377 channel ORA_AUX_DISK_1: restoring archivedlog
378 
379 archived log thread=1 sequence=18
380 
381 channel ORA_AUX_DISK_1: restore complete,elapsed time: 00:00:01
382 
383 channel ORA_AUX_DISK_1: starting archivedlog restore to default destination
384 
385 channel ORA_AUX_DISK_1: using networkbackup set from service cndba_p
386 
387 channel ORA_AUX_DISK_1: restoring archivedlog
388 
389 archived log thread=1 sequence=19
390 
391 channel ORA_AUX_DISK_1: restore complete,elapsed time: 00:00:02
392 
393 channel ORA_AUX_DISK_1: starting archivedlog restore to default destination
394 
395 channel ORA_AUX_DISK_1: using networkbackup set from service cndba_p
396 
397 channel ORA_AUX_DISK_1: restoring archivedlog
398 
399 archived log thread=1 sequence=20
400 
401 channel ORA_AUX_DISK_1: restore complete,elapsed time: 00:00:01
402 
403 Finished restore at 06-AUG-14
404 
405 
406 
407 datafile 1 switched to datafile copy
408 
409 input datafile copy RECID=12STAMP=854916586 filename=/home/ora12c/app/oracle/oradata/CNDBA_S/datafile/o1_mf_system_9y48opp7_.dbf
410 
411 datafile 3 switched to datafile copy
412 
413 input datafile copy RECID=13STAMP=854916586 filename=/home/ora12c/app/oracle/oradata/CNDBA_S/datafile/o1_mf_sysaux_9y48rr3z_.dbf
414 
415 datafile 4 switched to datafile copy
416 
417 input datafile copy RECID=14STAMP=854916586 file name=/home/ora12c/app/oracle/oradata/CNDBA_S/datafile/o1_mf_undotbs1_9y48vf5v_.dbf
418 
419 datafile 5 switched to datafile copy
420 
421 input datafile copy RECID=15STAMP=854916586 filename=/home/ora12c/app/oracle/oradata/CNDBA_S/datafile/o1_mf_system_9y48w6bx_.dbf
422 
423 datafile 6 switched to datafile copy
424 
425 input datafile copy RECID=16STAMP=854916586 filename=/home/ora12c/app/oracle/oradata/CNDBA_S/datafile/o1_mf_users_9y48x8jb_.dbf
426 
427 datafile 7 switched to datafile copy
428 
429 input datafile copy RECID=17STAMP=854916586 file name=/home/ora12c/app/oracle/oradata/CNDBA_S/datafile/o1_mf_sysaux_9y48xb36_.dbf
430 
431 datafile 8 switched to datafile copy
432 
433 input datafile copy RECID=18STAMP=854916586 filename=/home/ora12c/app/oracle/oradata/CNDBA_S/datafile/o1_mf_system_9y48zp0f_.dbf
434 
435 datafile 9 switched to datafile copy
436 
437 input datafile copy RECID=19STAMP=854916586 filename=/home/ora12c/app/oracle/oradata/CNDBA_S/datafile/o1_mf_sysaux_9y490r5z_.dbf
438 
439 datafile 10 switched to datafile copy
440 
441 input datafile copy RECID=20STAMP=854916586 file name=/home/ora12c/app/oracle/oradata/CNDBA_S/datafile/o1_mf_users_9y493301_.dbf
442 
443 
444 
445 contents of Memory Script:
446 
447 {
448 
449 set until scn 1923489;
450 
451 recover
452 
453 standby
454 
455 clone database
456 
457 delete archivelog
458 
459 ;
460 
461 }
462 
463 executing Memory Script
464 
465 
466 
467 executing command: SET until clause
468 
469 
470 
471 Starting recover at 06-AUG-14
472 
473 using channel ORA_AUX_DISK_1
474 
475 
476 
477 starting media recovery
478 
479 
480 
481 archived log for thread 1 with sequence 18is already on disk as file/home/ora12c/app/oracle/fast_recovery_area/CNDBA_S/archivelog/2014_08_06/o1_mf_1_18_9y49378o_.arc
482 
483 archived log for thread 1 with sequence 19is already on disk as file/home/ora12c/app/oracle/fast_recovery_area/CNDBA_S/archivelog/2014_08_06/o1_mf_1_19_9y49387d_.arc
484 
485 archived log for thread 1 with sequence 20is already on disk as file/home/ora12c/app/oracle/fast_recovery_area/CNDBA_S/archivelog/2014_08_06/o1_mf_1_20_9y493976_.arc
486 
487 archived log filename=/home/ora12c/app/oracle/fast_recovery_area/CNDBA_S/archivelog/2014_08_06/o1_mf_1_18_9y49378o_.arcthread=1 sequence=18
488 
489 archived log filename=/home/ora12c/app/oracle/fast_recovery_area/CNDBA_S/archivelog/2014_08_06/o1_mf_1_19_9y49387d_.arcthread=1 sequence=19
490 
491 archived log filename=/home/ora12c/app/oracle/fast_recovery_area/CNDBA_S/archivelog/2014_08_06/o1_mf_1_20_9y493976_.arcthread=1 sequence=20
492 
493 media recovery complete, elapsed time:00:00:01
494 
495 Finished recover at 06-AUG-14
496 
497 Finished Duplicate Db at 06-AUG-14
498 
499 
500 
501 RMAN>

13 打开备库并并启动apply

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

  1 SQL> select open_mode from v$database;
  2 
  3 
  4 
  5 OPEN_MODE
  6 
  7 ----------------------------------------
  8 
  9 MOUNTED
 10 
 11 
 12 
 13 SQL> show pdbs
 14 
 15 
 16 
 17 CON_ID CON_NAME OPEN MODE RESTRICTED
 18 
 19 ---------- ---------------------------------------- ----------
 20 
 21 2 PDB$SEED MOUNTED
 22 
 23 3 PCNDBA MOUNTED
 24 
 25 SQL> alter database open;
 26 
 27 
 28 
 29 Database altered.
 30 
 31 
 32 
 33 SQL> show pdbs
 34 
 35 
 36 
 37 CON_ID CON_NAME OPEN MODE RESTRICTED
 38 
 39 ---------- ---------------------------------------- ----------
 40 
 41 2 PDB$SEED READ ONLY NO
 42 
 43 3 PCNDBA MOUNTED
 44 
 45 
 46 
 47 SQL> alter pluggable database pcndbaopen;
 48 
 49 
 50 
 51 Pluggable database altered.
 52 
 53 
 54 
 55 SQL> show pdbs
 56 
 57 
 58 
 59 CON_ID CON_NAME OPEN MODE RESTRICTED
 60 
 61 ---------- ---------------------------------------- ----------
 62 
 63 2 PDB$SEED READ ONLY NO
 64 
 65 3 PCNDBA READ ONLY NO


备库是只读的。

  1 --查看主库:
  2 
  3 SQL> select log_mode,open_mode ,database_role from v$database;
  4 
  5 
  6 
  7 LOG_MODE OPEN_MODE DATABASE_ROLE
  8 
  9 ------------ ------------------------------------
 10 
 11 ARCHIVELOG READ WRITE PRIMARY
 12 
 13 
 14 
 15 --备库:
 16 
 17 SQL> select log_mode,open_mode ,database_role from v$database;
 18 
 19 
 20 
 21 LOG_MODE OPEN_MODE DATABASE_ROLE
 22 
 23 ------------ ------------------------------------
 24 
 25 ARCHIVELOG READ ONLY PHYSICAL STANDBY
 26 
 27 
 28 
 29 
 30 
 31 --启动real-time apply:
 32 
 33 SQL> alter database recover managedstandby database using current logfile disconnect from session;
 34 
 35 Database altered.
 36 
 37 
 38 
 39 SQL> select open_mode from v$database;
 40 
 41 
 42 
 43 OPEN_MODE
 44 
 45 --------------------
 46 
 47 READ ONLY WITH APPLY

14 验证DG

  1 --在主库创建一个table:
  2 
  3 
  4 
  5 SQL> alter session set container=pcndba;
  6 
  7 Session altered.
  8 
  9 
 10 
 11 SQL> create table cndba as select * fromdba_users;
 12 
 13 create table cndba as select * fromdba_users
 14 
 15 *
 16 
 17 ERROR at line 1:
 18 
 19 ORA-01109: database not open
 20 
 21 
 22 
 23 
 24 
 25 SQL> show pdbs
 26 
 27 
 28 
 29 CON_ID CON_NAME OPEN MODE RESTRICTED
 30 
 31 ---------- ---------------------------------------- ----------
 32 
 33 3 PCNDBA MOUNTED
 34 
 35 SQL> alter database open;
 36 
 37 Database altered.
 38 
 39 
 40 
 41 SQL> create table cndba as select * fromdba_users;
 42 
 43 Table created.
 44 
 45 
 46 
 47 SQL> alter system switch logfile;
 48 
 49 alter system switch logfile
 50 
 51 *
 52 
 53 ERROR at line 1:
 54 
 55 ORA-65040: operation not allowed fromwithin a pluggable database

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

  1 SQL> alter system switch logfile;
  2 
  3 System altered.

备库查询:

  1 SQL> select count(1) from cndba;
  2 
  3 select count(1) from cndba
  4 
  5 *
  6 
  7 ERROR at line 1:
  8 
  9 ORA-00942: table or view does not exist

提示表不存在,实际上,我们是在PDB里创建的,切换到对应的PDB下,就可以查询到了:

  1 SQL> alter session container=pcndba;
  2 
  3 alter session container=pcndba
  4 
  5 *
  6 
  7 ERROR at line 1:
  8 
  9 ORA-00922: missing or invalid option
 10 
 11 
 12 
 13 
 14 
 15 SQL> alter session set container=pcndba;
 16 
 17 Session altered.
 18 
 19 
 20 
 21 SQL> select count(1) from cndba;
 22 
 23 
 24 
 25 COUNT(1)
 26 
 27 ----------
 28 
 29 36















以上是关于Oracle12c Data Guard搭建手册的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 12C R2 on Linux 7.X Data Guard 搭建文档

Data Guard:Oracle 12c –新增和更新的功能 (Doc ID 1558256.1)

Oracle 12c RAC 搭建手册

Oracle LiveLabs实验:Oracle Database Hybrid Active Data Guard

Oracle data guard 10g 搭建

Oracle RAC + Data Guard 环境搭建