之前搭建Data Guard的一般都是在11g或者是12c的非cdb上,那么下面就介绍如何在12c cdb(含有pdb)上搭建Data Guard。
一、测试环境
1、OS Version:
[root@primary ~]# lsb_release -a
LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: CentOS
Description: CentOS release 6.5 (Final)
Release: 6.5
Codename: Final
2、DB Version:
SQL> select * from v$version;
BANNER CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 0
PL/SQL Release 12.2.0.1.0 - Production 0
CORE 12.2.0.1.0 Production 0
TNS for Linux: Version 12.2.0.1.0 - Production 0
NLSRTL Version 12.2.0.1.0 - Production 0
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCLPDB READ WRITE NO
3、实例名
Database DB_UNIQUE_NAME Oracle Net Service Name
Primariy orcl orcl
Primary standby orcls orcls
IP地址:
[root@primary ~]# cat /etc/hosts
127.0.0.1 localhost
192.168.0.30 primary
192.168.0.202 standby
二、具体搭建过程
下面操作都在主库上执行:
1.主库启动FORCE LOGGING
QL> col name for a10
SQL> select name,open_mode from v$pdbs;
NAME OPEN_MODE
---------- ----------
PDB$SEED READ ONLY
ORCLPDB READ WRITE
SQL> alter database force logging;
Database altered.
SQL> select force_logging from v$database;
FORCE_LOGGING
---------------------------------------
YES
2.启动归档模式
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination /u01/app/oracle/product/12.2.0/db_1/dbs/arch
Oldest online log sequence 23
Current log sequence 25
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 419430400 bytes
Fixed Size 8793496 bytes
Variable Size 297796200 bytes
Database Buffers 109051904 bytes
Redo Buffers 3788800 bytes
Database mounted.
SQL> alter database archivelog;
Database altered.
SQL> alter database open;
Database altered.
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/app/oracle/product/12.2.0/db_1/dbs/arch
Oldest online log sequence 23
Next log sequence to archive 25
Current log sequence 25
SQL> alter system set log_archive_dest_1='location=/data/oradata/orcl/archivelog';
System altered.
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /data/oradata/orcl/archivelog
Oldest online log sequence 23
Next log sequence to archive 25
Current log sequence 25
SQL> select name,open_mode from v$pdbs;
NAME OPEN_MODE
---------- ----------
PDB$SEED READ ONLY
ORCLPDB MOUNTED
SQL> alter session set container=orclpdb;
Session altered.
SQL> alter database open;
Database altered.
SQL> select name,open_mode from v$pdbs;
NAME OPEN_MODE
---------- ----------
ORCLPDB READ WRITE
3.在主库添加 standby redo logfile
在Oracle 12c的架构里,online redo log 和控制文件是保存在CDB中的,PDB中只有运行需要的数据文件,所以我们这里加standby redo log,也是在CDB中加。
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
--------------------------------------------------------------------------------
/data/oradata/orcl/redo03.log
/data/oradata/orcl/redo02.log
/data/oradata/orcl/redo01.log
添加 4(3+1)个standby logfile:
SQL> alter database add standby logfile '/data/oradata/orcl/stb_redo10.log' size 200M;
Database altered.
SQL> alter database add standby logfile '/data/oradata/orcl/stb_redo11.log' size 200M;
Database altered.
SQL> alter database add standby logfile '/data/oradata/orcl/stb_redo12.log' size 200M;
Database altered.
SQL> alter database add standby logfile '/data/oradata/orcl/stb_redo13.log' size 200M;
Database altered.
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/data/oradata/orcl/redo03.log
/data/oradata/orcl/redo02.log
/data/oradata/orcl/redo01.log
/data/oradata/orcl/stb_redo10.log
/data/oradata/orcl/stb_redo11.log
/data/oradata/orcl/stb_redo12.log
/data/oradata/orcl/stb_redo13.log
7 rows selected.
4.配置监听并启动
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = primary)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
5.配置tnsnames.ora
orcl =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.30)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
orcls =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.202)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcls)
)
)
6.修改参数文件
SQL> show parameter db_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string orcl
SQL> show parameter db_unique_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_unique_name string orcl
SQL> show parameter log_archive_config
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_config string
SQL> alter system set log_archive_config='dg_config=(orcl,orcls)';
System altered.
SQL> alter system set log_archive_dest_2='service=orcls valid_for=(online_logfiles,primary_role) db_unique_name=orcls';
System altered.
SQL> alter system set log_archive_dest_state_1=enable;
System altered.
SQL> alter system set log_archive_dest_state_2=enable;
System altered.
SQL> alter system set standby_file_management='auto';
System altered.
SQL> alter system set fal_server='orcls';
System altered.
SQL> alter system set db_file_name_convert='/data/oradata/orcls','/data/oradata/orcl' scope=spfile;
System alterd
SQL> alter system set log_file_name_convert='/data/oradata/orcls','/data/oradata/orcl' scope=spfile;
System alterd
7.重启数据库使上面修改的参数生效
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 419430400 bytes
Fixed Size 8793496 bytes
Variable Size 297796200 bytes
Database Buffers 109051904 bytes
Redo Buffers 3788800 bytes
Database mounted.
Database opened.
SQL> alter session set container=orclpdb;
Session altered.
SQL> alter database open;
Database altered.
8.生成pfile
SQL> create pfile from spfile;
File created.
9.将生成的pfile 和密码文件上传到备库相对应的目录下面
orcl:/u01/app/oracle/product/12.2.0/db_1/dbs@primary>scp initorcl.ora orapworcl 192.168.0.202:/u01/app/oracle/product/12.2.0/db_1/dbs
[email protected]'s password:
initorcl.ora 100% 1473 1.4KB/s 00:00
orapworcl
10.将监听和tns文件也上传到备库相对应的目录下
orcl:/u01/app/oracle/product/12.2.0/db_1/network/admin@primary>scp listener.ora tnsnames.ora 192.168.0.202:/u01/app/oracle/product/12.2.0/db_1/network/admin/
[email protected]'s password:
listener.ora 100% 331 0.3KB/s 00:00
tnsnames.ora 100% 508 0.5KB/s 00:00
下面的操作将在备库上执行
1.修改之前从主库拷贝过来的那个参数文件,具体如下:
先将pfile改成备库的pfile
orcls:/u01/app/oracle/product/12.2.0/db_1/dbs@standby>mv initorcl.ora initorcls.ora
修改参数文件
orcls:/u01/app/oracle/product/12.2.0/db_1/dbs@standby>vi initorcls.ora
*.audit_file_dest='/u01/app/oracle/admin/orcls/adump'
*.audit_trail='db'
*.compatible='12.2.0'
*.control_files='/data/oradata/orcls/control01.ctl','/data/oradata/orcls/control02.ctl'
*.db_block_size=8192
*.db_file_name_convert='/data/oradata/orcl','/data/oradata/orcls'
*.db_name='orcl'
*.db_unique_name='orcls'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclsXDB)'
*.enable_pluggable_database=true
*.fal_client=''
*.fal_server='orcl'
*.log_archive_config='dg_config=(orcl,orcls)'
*.log_archive_dest_1='location=/data/oradata/orcls/archivelog'
*.log_archive_dest_2='service=orcl valid_for=(online_logfiles,primary_role) db_unique_name=orcl'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE'
*.log_file_name_convert='/data/oradata/orcl','/data/oradata/orcls'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.pga_aggregate_target=99m
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=397m
*.standby_file_management='auto'
*.star_transformation_enabled='TRUE'
*.undo_tablespace='UNDOTBS1'
2.根据上面修改的参数文件,创建相应的目录文件
orcls:/home/oracle@standby>mkdir -p /u01/app/oracle/admin/orcls/adump
orcls:/home/oracle@standby>mkdir -p /data/oradata/orcls
orcls:/home/oracle@standby>mkdir -p /data/oradata/orcls/archivelog
3.重命名密码文件
orcls:/u01/app/oracle/product/12.2.0/db_1/dbs@standby>mv orapworcl orapworcls
4.修改监听文件(只需在备库上添加静态监听)
orcls:/u01/app/oracle/product/12.2.0/db_1/network/admin@standby>vi listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = standby)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcls)
(ORACLE_HOME = /u01/app/oracle/product/12.2.0/db_1)
(SID_NAME = orcls)
)
)
5.修改tns(如果主库上配置好,直接复制过来即可)
orcls:/u01/app/oracle/product/12.2.0/db_1/network/admin@standby>vi tnsnames.ora
orcl =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.30)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
orcls =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.202)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcls)
)
)
6.将数据库启动到nomount状态
orcls:/home/oracle@standby>sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Mon Apr 9 14:49:50 2018
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup nomount pfile='/u01/app/oracle/product/12.2.0/db_1/dbs/initorcls.ora'
7.验证监听和tns配置(一定要确保此步骤验证成功)
主库上执行:
orcl:/home/oracle@primary>sqlplus sys/oracle@orcl as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Mon Apr 9 15:48:26 2018
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> exit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
orcl:/home/oracle@primary>sqlplus sys/oracle@orcls as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Mon Apr 9 15:48:30 2018
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL>
备库上执行:
orcls:/home/oracle@standby>sqlplus sys/oracle@orcl as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Mon Apr 9 15:49:01 2018
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> exit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
orcls:/home/oracle@standby>sqlplus sys/oracle@orcls as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Mon Apr 9 15:49:04 2018
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
8.开始进行Active duplicate
orcls:/home/oracle@standby>rman target sys/oracle@orcl auxiliary sys/oracle@orcls
Recovery Manager: Release 12.2.0.1.0 - Production on Mon Apr 9 14:51:49 2018
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORCL (DBID=1500334475)
connected to auxiliary database: ORCL (not mounted)
RMAN> duplicate target database for standby from active database;
Starting Duplicate Db at 2018/04/09 14:53:05
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=35 device type=DISK
contents of Memory Script:
{
backup as copy reuse
targetfile '/u01/app/oracle/product/12.2.0/db_1/dbs/orapworcl' auxiliary format
'/u01/app/oracle/product/12.2.0/db_1/dbs/orapworcls' ;
}
executing Memory Script
Starting backup at 2018/04/09 14:53:07
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=64 device type=DISK
Finished backup at 2018/04/09 14:53:09
contents of Memory Script:
{
restore clone from service 'orcl' standby controlfile;
}
executing Memory Script
Starting restore at 2018/04/09 14:53:09
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 orcl
channel ORA_AUX_DISK_1: restoring control file
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:02
output file name=/data/oradata/orcls/control01.ctl
output file name=/data/oradata/orcls/control02.ctl
Finished restore at 2018/04/09 14:53:11
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
"/data/oradata/orcls/temp01.dbf";
set newname for tempfile 2 to
"/data/oradata/orcls/pdbseed/temp012018-04-04_09-49-41-872-AM.dbf";
set newname for tempfile 3 to
"/data/oradata/orcls/orclpdb/temp01.dbf";
switch clone tempfile all;
set newname for datafile 1 to
"/data/oradata/orcls/system01.dbf";
set newname for datafile 3 to
"/data/oradata/orcls/sysaux01.dbf";
set newname for datafile 4 to
"/data/oradata/orcls/undotbs01.dbf";
set newname for datafile 5 to
"/data/oradata/orcls/pdbseed/system01.dbf";
set newname for datafile 6 to
"/data/oradata/orcls/pdbseed/sysaux01.dbf";
set newname for datafile 7 to
"/data/oradata/orcls/users01.dbf";
set newname for datafile 8 to
"/data/oradata/orcls/pdbseed/undotbs01.dbf";
set newname for datafile 9 to
"/data/oradata/orcls/orclpdb/system01.dbf";
set newname for datafile 10 to
"/data/oradata/orcls/orclpdb/sysaux01.dbf";
set newname for datafile 11 to
"/data/oradata/orcls/orclpdb/undotbs01.dbf";
set newname for datafile 12 to
"/data/oradata/orcls/orclpdb/users01.dbf";
restore
from nonsparse from service
'orcl' 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 /data/oradata/orcls/temp01.dbf in control file
renamed tempfile 2 to /data/oradata/orcls/pdbseed/temp012018-04-04_09-49-41-872-AM.dbf in control file
renamed tempfile 3 to /data/oradata/orcls/orclpdb/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 2018/04/09 14:53:17
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 orcl
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00001 to /data/oradata/orcls/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 orcl
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00003 to /data/oradata/orcls/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 orcl
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00004 to /data/oradata/orcls/undotbs01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:02
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service orcl
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00005 to /data/oradata/orcls/pdbseed/system01.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 orcl
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00006 to /data/oradata/orcls/pdbseed/sysaux01.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 orcl
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00007 to /data/oradata/orcls/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 orcl
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00008 to /data/oradata/orcls/pdbseed/undotbs01.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 orcl
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00009 to /data/oradata/orcls/orclpdb/system01.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 orcl
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00010 to /data/oradata/orcls/orclpdb/sysaux01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:08
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service orcl
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00011 to /data/oradata/orcls/orclpdb/undotbs01.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 orcl
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00012 to /data/oradata/orcls/orclpdb/users01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 2018/04/09 14:54:11
sql statement: alter system archive log current
contents of Memory Script:
{
switch clone datafile all;
}
executing Memory Script
datafile 1 switched to datafile copy
input datafile copy RECID=4 STAMP=973004052 file name=/data/oradata/orcls/system01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=5 STAMP=973004052 file name=/data/oradata/orcls/sysaux01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=6 STAMP=973004052 file name=/data/oradata/orcls/undotbs01.dbf
datafile 5 switched to datafile copy
input datafile copy RECID=7 STAMP=973004052 file name=/data/oradata/orcls/pdbseed/system01.dbf
datafile 6 switched to datafile copy
input datafile copy RECID=8 STAMP=973004052 file name=/data/oradata/orcls/pdbseed/sysaux01.dbf
datafile 7 switched to datafile copy
input datafile copy RECID=9 STAMP=973004052 file name=/data/oradata/orcls/users01.dbf
datafile 8 switched to datafile copy
input datafile copy RECID=10 STAMP=973004052 file name=/data/oradata/orcls/pdbseed/undotbs01.dbf
datafile 9 switched to datafile copy
input datafile copy RECID=11 STAMP=973004052 file name=/data/oradata/orcls/orclpdb/system01.dbf
datafile 10 switched to datafile copy
input datafile copy RECID=12 STAMP=973004052 file name=/data/oradata/orcls/orclpdb/sysaux01.dbf
datafile 11 switched to datafile copy
input datafile copy RECID=13 STAMP=973004052 file name=/data/oradata/orcls/orclpdb/undotbs01.dbf
datafile 12 switched to datafile copy
input datafile copy RECID=14 STAMP=973004052 file name=/data/oradata/orcls/orclpdb/users01.dbf
Finished Duplicate Db at 2018/04/09 14:54:21
9.打开备库并并启动apply
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 ORCLPDB MOUNTED
SQL> alter database open;
Database altered.
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCLPDB MOUNTED
SQL> alter pluggable database orclpdb open;
Pluggable database altered.
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCLPDB READ ONLY NO
SQL> select log_mode,open_mode ,database_role from v$database;
LOG_MODE OPEN_MODE DATABASE_ROLE
------------ -------------------- ----------------
ARCHIVELOG READ ONLY PHYSICAL STANDBY
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
10.验证DG
在主库上创建一个table并插入一行数据
SQL> select log_mode,open_mode ,database_role from v$database;
LOG_MODE OPEN_MODE DATABASE_ROLE
------------ -------------------- ----------------
ARCHIVELOG READ ONLY WITH APPLY PHYSICAL STANDBY
QL> alter session set container=orclpdb;
Session altered.
SQL> create table test(id int);
Table created.
SQL> insert into test values(1);
1 row created.
SQL> commit;
Commit complete.
备库上查询
SQL> alter session set container=orclpdb;
Session altered.
SQL> select * from test;
ID
----------
1
至此oracle 12c DG搭建成功
一、测试环境
1、OS Version:
[root@primary ~]# lsb_release -a
LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: CentOS
Description: CentOS release 6.5 (Final)
Release: 6.5
Codename: Final
2、DB Version:
SQL> select * from v$version;
BANNER CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 0
PL/SQL Release 12.2.0.1.0 - Production 0
CORE 12.2.0.1.0 Production 0
TNS for Linux: Version 12.2.0.1.0 - Production 0
NLSRTL Version 12.2.0.1.0 - Production 0
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCLPDB READ WRITE NO
3、实例名
Database DB_UNIQUE_NAME Oracle Net Service Name
Primariy orcl orcl
Primary standby orcls orcls
IP地址:
[root@primary ~]# cat /etc/hosts
127.0.0.1 localhost
192.168.0.30 primary
192.168.0.202 standby
二、具体搭建过程
下面操作都在主库上执行:
1.主库启动FORCE LOGGING
QL> col name for a10
SQL> select name,open_mode from v$pdbs;
NAME OPEN_MODE
---------- ----------
PDB$SEED READ ONLY
ORCLPDB READ WRITE
SQL> alter database force logging;
Database altered.
SQL> select force_logging from v$database;
FORCE_LOGGING
---------------------------------------
YES
2.启动归档模式
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination /u01/app/oracle/product/12.2.0/db_1/dbs/arch
Oldest online log sequence 23
Current log sequence 25
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 419430400 bytes
Fixed Size 8793496 bytes
Variable Size 297796200 bytes
Database Buffers 109051904 bytes
Redo Buffers 3788800 bytes
Database mounted.
SQL> alter database archivelog;
Database altered.
SQL> alter database open;
Database altered.
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/app/oracle/product/12.2.0/db_1/dbs/arch
Oldest online log sequence 23
Next log sequence to archive 25
Current log sequence 25
SQL> alter system set log_archive_dest_1='location=/data/oradata/orcl/archivelog';
System altered.
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /data/oradata/orcl/archivelog
Oldest online log sequence 23
Next log sequence to archive 25
Current log sequence 25
SQL> select name,open_mode from v$pdbs;
NAME OPEN_MODE
---------- ----------
PDB$SEED READ ONLY
ORCLPDB MOUNTED
SQL> alter session set container=orclpdb;
Session altered.
SQL> alter database open;
Database altered.
SQL> select name,open_mode from v$pdbs;
NAME OPEN_MODE
---------- ----------
ORCLPDB READ WRITE
3.在主库添加 standby redo logfile
在Oracle 12c的架构里,online redo log 和控制文件是保存在CDB中的,PDB中只有运行需要的数据文件,所以我们这里加standby redo log,也是在CDB中加。
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
--------------------------------------------------------------------------------
/data/oradata/orcl/redo03.log
/data/oradata/orcl/redo02.log
/data/oradata/orcl/redo01.log
添加 4(3+1)个standby logfile:
SQL> alter database add standby logfile '/data/oradata/orcl/stb_redo10.log' size 200M;
Database altered.
SQL> alter database add standby logfile '/data/oradata/orcl/stb_redo11.log' size 200M;
Database altered.
SQL> alter database add standby logfile '/data/oradata/orcl/stb_redo12.log' size 200M;
Database altered.
SQL> alter database add standby logfile '/data/oradata/orcl/stb_redo13.log' size 200M;
Database altered.
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/data/oradata/orcl/redo03.log
/data/oradata/orcl/redo02.log
/data/oradata/orcl/redo01.log
/data/oradata/orcl/stb_redo10.log
/data/oradata/orcl/stb_redo11.log
/data/oradata/orcl/stb_redo12.log
/data/oradata/orcl/stb_redo13.log
7 rows selected.
4.配置监听并启动
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = primary)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
5.配置tnsnames.ora
orcl =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.30)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
orcls =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.202)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcls)
)
)
6.修改参数文件
SQL> show parameter db_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string orcl
SQL> show parameter db_unique_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_unique_name string orcl
SQL> show parameter log_archive_config
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_config string
SQL> alter system set log_archive_config='dg_config=(orcl,orcls)';
System altered.
SQL> alter system set log_archive_dest_2='service=orcls valid_for=(online_logfiles,primary_role) db_unique_name=orcls';
System altered.
SQL> alter system set log_archive_dest_state_1=enable;
System altered.
SQL> alter system set log_archive_dest_state_2=enable;
System altered.
SQL> alter system set standby_file_management='auto';
System altered.
SQL> alter system set fal_server='orcls';
System altered.
SQL> alter system set db_file_name_convert='/data/oradata/orcls','/data/oradata/orcl' scope=spfile;
System alterd
SQL> alter system set log_file_name_convert='/data/oradata/orcls','/data/oradata/orcl' scope=spfile;
System alterd
7.重启数据库使上面修改的参数生效
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 419430400 bytes
Fixed Size 8793496 bytes
Variable Size 297796200 bytes
Database Buffers 109051904 bytes
Redo Buffers 3788800 bytes
Database mounted.
Database opened.
SQL> alter session set container=orclpdb;
Session altered.
SQL> alter database open;
Database altered.
8.生成pfile
SQL> create pfile from spfile;
File created.
9.将生成的pfile 和密码文件上传到备库相对应的目录下面
orcl:/u01/app/oracle/product/12.2.0/db_1/dbs@primary>scp initorcl.ora orapworcl 192.168.0.202:/u01/app/oracle/product/12.2.0/db_1/dbs
[email protected]'s password:
initorcl.ora 100% 1473 1.4KB/s 00:00
orapworcl
10.将监听和tns文件也上传到备库相对应的目录下
orcl:/u01/app/oracle/product/12.2.0/db_1/network/admin@primary>scp listener.ora tnsnames.ora 192.168.0.202:/u01/app/oracle/product/12.2.0/db_1/network/admin/
[email protected]'s password:
listener.ora 100% 331 0.3KB/s 00:00
tnsnames.ora 100% 508 0.5KB/s 00:00
下面的操作将在备库上执行
1.修改之前从主库拷贝过来的那个参数文件,具体如下:
先将pfile改成备库的pfile
orcls:/u01/app/oracle/product/12.2.0/db_1/dbs@standby>mv initorcl.ora initorcls.ora
修改参数文件
orcls:/u01/app/oracle/product/12.2.0/db_1/dbs@standby>vi initorcls.ora
*.audit_file_dest='/u01/app/oracle/admin/orcls/adump'
*.audit_trail='db'
*.compatible='12.2.0'
*.control_files='/data/oradata/orcls/control01.ctl','/data/oradata/orcls/control02.ctl'
*.db_block_size=8192
*.db_file_name_convert='/data/oradata/orcl','/data/oradata/orcls'
*.db_name='orcl'
*.db_unique_name='orcls'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclsXDB)'
*.enable_pluggable_database=true
*.fal_client=''
*.fal_server='orcl'
*.log_archive_config='dg_config=(orcl,orcls)'
*.log_archive_dest_1='location=/data/oradata/orcls/archivelog'
*.log_archive_dest_2='service=orcl valid_for=(online_logfiles,primary_role) db_unique_name=orcl'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE'
*.log_file_name_convert='/data/oradata/orcl','/data/oradata/orcls'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.pga_aggregate_target=99m
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=397m
*.standby_file_management='auto'
*.star_transformation_enabled='TRUE'
*.undo_tablespace='UNDOTBS1'
2.根据上面修改的参数文件,创建相应的目录文件
orcls:/home/oracle@standby>mkdir -p /u01/app/oracle/admin/orcls/adump
orcls:/home/oracle@standby>mkdir -p /data/oradata/orcls
orcls:/home/oracle@standby>mkdir -p /data/oradata/orcls/archivelog
3.重命名密码文件
orcls:/u01/app/oracle/product/12.2.0/db_1/dbs@standby>mv orapworcl orapworcls
4.修改监听文件(只需在备库上添加静态监听)
orcls:/u01/app/oracle/product/12.2.0/db_1/network/admin@standby>vi listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = standby)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcls)
(ORACLE_HOME = /u01/app/oracle/product/12.2.0/db_1)
(SID_NAME = orcls)
)
)
5.修改tns(如果主库上配置好,直接复制过来即可)
orcls:/u01/app/oracle/product/12.2.0/db_1/network/admin@standby>vi tnsnames.ora
orcl =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.30)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
orcls =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.202)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcls)
)
)
6.将数据库启动到nomount状态
orcls:/home/oracle@standby>sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Mon Apr 9 14:49:50 2018
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup nomount pfile='/u01/app/oracle/product/12.2.0/db_1/dbs/initorcls.ora'
7.验证监听和tns配置(一定要确保此步骤验证成功)
主库上执行:
orcl:/home/oracle@primary>sqlplus sys/oracle@orcl as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Mon Apr 9 15:48:26 2018
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> exit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
orcl:/home/oracle@primary>sqlplus sys/oracle@orcls as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Mon Apr 9 15:48:30 2018
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL>
备库上执行:
orcls:/home/oracle@standby>sqlplus sys/oracle@orcl as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Mon Apr 9 15:49:01 2018
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> exit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
orcls:/home/oracle@standby>sqlplus sys/oracle@orcls as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Mon Apr 9 15:49:04 2018
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
8.开始进行Active duplicate
orcls:/home/oracle@standby>rman target sys/oracle@orcl auxiliary sys/oracle@orcls
Recovery Manager: Release 12.2.0.1.0 - Production on Mon Apr 9 14:51:49 2018
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORCL (DBID=1500334475)
connected to auxiliary database: ORCL (not mounted)
RMAN> duplicate target database for standby from active database;
Starting Duplicate Db at 2018/04/09 14:53:05
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=35 device type=DISK
contents of Memory Script:
{
backup as copy reuse
targetfile '/u01/app/oracle/product/12.2.0/db_1/dbs/orapworcl' auxiliary format
'/u01/app/oracle/product/12.2.0/db_1/dbs/orapworcls' ;
}
executing Memory Script
Starting backup at 2018/04/09 14:53:07
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=64 device type=DISK
Finished backup at 2018/04/09 14:53:09
contents of Memory Script:
{
restore clone from service 'orcl' standby controlfile;
}
executing Memory Script
Starting restore at 2018/04/09 14:53:09
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 orcl
channel ORA_AUX_DISK_1: restoring control file
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:02
output file name=/data/oradata/orcls/control01.ctl
output file name=/data/oradata/orcls/control02.ctl
Finished restore at 2018/04/09 14:53:11
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
"/data/oradata/orcls/temp01.dbf";
set newname for tempfile 2 to
"/data/oradata/orcls/pdbseed/temp012018-04-04_09-49-41-872-AM.dbf";
set newname for tempfile 3 to
"/data/oradata/orcls/orclpdb/temp01.dbf";
switch clone tempfile all;
set newname for datafile 1 to
"/data/oradata/orcls/system01.dbf";
set newname for datafile 3 to
"/data/oradata/orcls/sysaux01.dbf";
set newname for datafile 4 to
"/data/oradata/orcls/undotbs01.dbf";
set newname for datafile 5 to
"/data/oradata/orcls/pdbseed/system01.dbf";
set newname for datafile 6 to
"/data/oradata/orcls/pdbseed/sysaux01.dbf";
set newname for datafile 7 to
"/data/oradata/orcls/users01.dbf";
set newname for datafile 8 to
"/data/oradata/orcls/pdbseed/undotbs01.dbf";
set newname for datafile 9 to
"/data/oradata/orcls/orclpdb/system01.dbf";
set newname for datafile 10 to
"/data/oradata/orcls/orclpdb/sysaux01.dbf";
set newname for datafile 11 to
"/data/oradata/orcls/orclpdb/undotbs01.dbf";
set newname for datafile 12 to
"/data/oradata/orcls/orclpdb/users01.dbf";
restore
from nonsparse from service
'orcl' 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 /data/oradata/orcls/temp01.dbf in control file
renamed tempfile 2 to /data/oradata/orcls/pdbseed/temp012018-04-04_09-49-41-872-AM.dbf in control file
renamed tempfile 3 to /data/oradata/orcls/orclpdb/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 2018/04/09 14:53:17
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 orcl
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00001 to /data/oradata/orcls/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 orcl
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00003 to /data/oradata/orcls/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 orcl
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00004 to /data/oradata/orcls/undotbs01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:02
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service orcl
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00005 to /data/oradata/orcls/pdbseed/system01.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 orcl
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00006 to /data/oradata/orcls/pdbseed/sysaux01.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 orcl
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00007 to /data/oradata/orcls/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 orcl
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00008 to /data/oradata/orcls/pdbseed/undotbs01.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 orcl
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00009 to /data/oradata/orcls/orclpdb/system01.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 orcl
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00010 to /data/oradata/orcls/orclpdb/sysaux01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:08
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service orcl
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00011 to /data/oradata/orcls/orclpdb/undotbs01.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 orcl
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00012 to /data/oradata/orcls/orclpdb/users01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 2018/04/09 14:54:11
sql statement: alter system archive log current
contents of Memory Script:
{
switch clone datafile all;
}
executing Memory Script
datafile 1 switched to datafile copy
input datafile copy RECID=4 STAMP=973004052 file name=/data/oradata/orcls/system01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=5 STAMP=973004052 file name=/data/oradata/orcls/sysaux01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=6 STAMP=973004052 file name=/data/oradata/orcls/undotbs01.dbf
datafile 5 switched to datafile copy
input datafile copy RECID=7 STAMP=973004052 file name=/data/oradata/orcls/pdbseed/system01.dbf
datafile 6 switched to datafile copy
input datafile copy RECID=8 STAMP=973004052 file name=/data/oradata/orcls/pdbseed/sysaux01.dbf
datafile 7 switched to datafile copy
input datafile copy RECID=9 STAMP=973004052 file name=/data/oradata/orcls/users01.dbf
datafile 8 switched to datafile copy
input datafile copy RECID=10 STAMP=973004052 file name=/data/oradata/orcls/pdbseed/undotbs01.dbf
datafile 9 switched to datafile copy
input datafile copy RECID=11 STAMP=973004052 file name=/data/oradata/orcls/orclpdb/system01.dbf
datafile 10 switched to datafile copy
input datafile copy RECID=12 STAMP=973004052 file name=/data/oradata/orcls/orclpdb/sysaux01.dbf
datafile 11 switched to datafile copy
input datafile copy RECID=13 STAMP=973004052 file name=/data/oradata/orcls/orclpdb/undotbs01.dbf
datafile 12 switched to datafile copy
input datafile copy RECID=14 STAMP=973004052 file name=/data/oradata/orcls/orclpdb/users01.dbf
Finished Duplicate Db at 2018/04/09 14:54:21
9.打开备库并并启动apply
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 ORCLPDB MOUNTED
SQL> alter database open;
Database altered.
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCLPDB MOUNTED
SQL> alter pluggable database orclpdb open;
Pluggable database altered.
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCLPDB READ ONLY NO
SQL> select log_mode,open_mode ,database_role from v$database;
LOG_MODE OPEN_MODE DATABASE_ROLE
------------ -------------------- ----------------
ARCHIVELOG READ ONLY PHYSICAL STANDBY
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
10.验证DG
在主库上创建一个table并插入一行数据
SQL> select log_mode,open_mode ,database_role from v$database;
LOG_MODE OPEN_MODE DATABASE_ROLE
------------ -------------------- ----------------
ARCHIVELOG READ ONLY WITH APPLY PHYSICAL STANDBY
QL> alter session set container=orclpdb;
Session altered.
SQL> create table test(id int);
Table created.
SQL> insert into test values(1);
1 row created.
SQL> commit;
Commit complete.
备库上查询
SQL> alter session set container=orclpdb;
Session altered.
SQL> select * from test;
ID
----------
1
至此oracle 12c DG搭建成功