• Oracle12c Data Guard搭建手册


    Oracle12c Data Guard搭建手册

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





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

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

    1 环境说明

      1 OS Version:
      2 
      3 [root@dave etc]# cat /etc/oracle-release
      4 
      5 Oracle Linux Server release 6.3
      6 
      7 [root@dave 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 [root@dave 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 [root@dave 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.log' size 50M;
      2 
      3 Database altered.
      4 
      5 
      6 
      7 SQL> alter database add standby logfile '/home/ora12c/app/oracle/oradata/CNDBA/onlinelog/stdredo02.log' size 50M;
      8 
      9 Database altered.
     10 
     11 
     12 
     13 SQL> alter database add standby logfile '/home/ora12c/app/oracle/oradata/CNDBA/onlinelog/stdredo03.log' size 50M;
     14 
     15 Database altered.
     16 
     17 
     18 
     19 SQL> alter database add standby logfile '/home/ora12c/app/oracle/oradata/CNDBA/onlinelog/stdredo04.log' size 50M;
     20 
     21 Database altered.


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

      1 --这里直接使用netmgr工具生成:注意静态监听注册中配置的pdb。
      2 
      3 [ora12c@dave 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 [ora12c@dave 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 [ora12c@dave 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 [ora12c@dave admin]$ tnsping cndba_s
     50 
     51 [ora12c@dave admin]$ tnsping cndba_p

    7 在备库创建必要的目录

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

      1 [ora12c@dave admin]$ mkdir -p /home/ora12c/app/oracle/fast_recovery_area
      2 
      3 [ora12c@dave admin]$ mkdir -p/home/ora12c/app/oracle/oradata
      4 
      5 [ora12c@dave 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 [ora12c@dave dbs]$ scp orapwcndba192.168.56.4:`pwd`
      2 
      3 ora12c@192.168.56.4's password:
      4 
      5 orapwcndba 100% 7680 7.5KB/s 00:00
      6 
      7 [ora12c@dave dbs]$

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

      1 [ora12c@dave dbs]$ scp initcndba.ora192.168.56.4:`pwd`
      2 
      3 ora12c@192.168.56.4's password:
      4 
      5 initcndba.ora 100% 1593 1.6KB/s 00:00
      6 
      7 [ora12c@dave 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 [ora12c@dave network-scripts]$ rman targetsys/oracle@cndba_p auxiliary sys/oracle@cndba_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 [ora12c@dave network-scripts]$ rman targetsys/oracle@cndba_p auxiliary sys/oracle@cndba_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 sql 'alter 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_p'
    356 
    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
  • 相关阅读:
    NEO从入门到开窗(4)
    NEO从入门到开窗(3)
    NEO从入门到开窗(2)
    NEO从入门到开窗(1)
    重读大型网站技术架构
    c#并行编程
    关于使用CPU缓存的一个小栗子
    Visual Studio中从应用程序中调试SQL脚本
    JavaScript启示录
    LabVIEW工控二进制数据存储
  • 原文地址:https://www.cnblogs.com/ios9/p/8227662.html
Copyright © 2020-2023  润新知