1 操作系统
Oracle 12c 建议部署在Redhat 7.x上,我们这里选择最新的Redhat 7.4 。
3 主库启动FORCE LOGGING
基于Redhat 7.4 的Oracle 12.2.0.1的Data Guard 搭建完成。
[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> 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
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 搭建完成。
版权声明:本文为博主原创文章,未经博主允许不得转载。
Redhat 7.4 平台下 Oracle 12cR2 Data Guard 搭建手册