oracle 11g duplicate database基于备份复制数据库(三)

不使用目标数据库的基于备份的复制,下面测试将原数据库使用备份复制到远程主机相同目录
1.对原数据库生成备份

RMAN> backup as compressed backupset database plus archivelog;


Starting backup at 2015-06-05 16:44:19
current log archived
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=31 device type=DISK
channel ORA_DISK_1: starting compressed archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=5 RECID=1 STAMP=880996327
input archived log thread=1 sequence=6 RECID=2 STAMP=880996438
input archived log thread=1 sequence=7 RECID=3 STAMP=881014383
input archived log thread=1 sequence=8 RECID=4 STAMP=881014612
input archived log thread=1 sequence=9 RECID=5 STAMP=881015165
input archived log thread=1 sequence=10 RECID=13 STAMP=881233508
input archived log thread=1 sequence=11 RECID=14 STAMP=881233508
channel ORA_DISK_1: starting piece 1 at 2015-06-05 16:44:22
channel ORA_DISK_1: finished piece 1 at 2015-06-05 16:44:29
piece handle=/u02/backup/29q8o8v6_1_1 tag=TAG20150605T164421 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:07
channel ORA_DISK_1: starting compressed archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=1 RECID=12 STAMP=881233507
channel ORA_DISK_1: starting piece 1 at 2015-06-05 16:44:29
channel ORA_DISK_1: finished piece 1 at 2015-06-05 16:44:30
piece handle=/u02/backup/2aq8o8vd_1_1 tag=TAG20150605T164421 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting compressed archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=12 RECID=15 STAMP=881233508
channel ORA_DISK_1: starting piece 1 at 2015-06-05 16:44:30
channel ORA_DISK_1: finished piece 1 at 2015-06-05 16:44:31
piece handle=/u02/backup/2bq8o8ve_1_1 tag=TAG20150605T164421 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting compressed archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=2 RECID=21 STAMP=881233663
input archived log thread=1 sequence=3 RECID=22 STAMP=881233941
input archived log thread=1 sequence=4 RECID=23 STAMP=881234587
input archived log thread=1 sequence=5 RECID=24 STAMP=881235045
input archived log thread=1 sequence=6 RECID=25 STAMP=881235180
input archived log thread=1 sequence=7 RECID=26 STAMP=881272559
channel ORA_DISK_1: starting piece 1 at 2015-06-05 16:44:31
channel ORA_DISK_1: finished piece 1 at 2015-06-05 16:44:34
piece handle=/u02/backup/2cq8o8vf_1_1 tag=TAG20150605T164421 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
channel ORA_DISK_1: starting compressed archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=13 RECID=16 STAMP=881233508
input archived log thread=1 sequence=14 RECID=17 STAMP=881233508
input archived log thread=1 sequence=15 RECID=18 STAMP=881233508
input archived log thread=1 sequence=16 RECID=19 STAMP=881233508
input archived log thread=1 sequence=17 RECID=20 STAMP=881233508
input archived log thread=1 sequence=18 RECID=11 STAMP=881232587
input archived log thread=1 sequence=19 RECID=9 STAMP=881232587
input archived log thread=1 sequence=20 RECID=10 STAMP=881232587
channel ORA_DISK_1: starting piece 1 at 2015-06-05 16:44:34
channel ORA_DISK_1: finished piece 1 at 2015-06-05 16:44:35
piece handle=/u02/backup/2dq8o8vi_1_1 tag=TAG20150605T164421 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting compressed archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=8 RECID=27 STAMP=881273112
input archived log thread=1 sequence=9 RECID=28 STAMP=881273363
input archived log thread=1 sequence=10 RECID=29 STAMP=881274168
input archived log thread=1 sequence=11 RECID=30 STAMP=881309835
input archived log thread=1 sequence=12 RECID=31 STAMP=881310058
input archived log thread=1 sequence=13 RECID=32 STAMP=881310212
input archived log thread=1 sequence=14 RECID=33 STAMP=881396520
input archived log thread=1 sequence=15 RECID=34 STAMP=881534563
input archived log thread=1 sequence=16 RECID=35 STAMP=881570186
input archived log thread=1 sequence=17 RECID=36 STAMP=881577860
input archived log thread=1 sequence=18 RECID=37 STAMP=881578662
input archived log thread=1 sequence=19 RECID=38 STAMP=881579588
input archived log thread=1 sequence=20 RECID=39 STAMP=881582326
input archived log thread=1 sequence=21 RECID=40 STAMP=881594537
input archived log thread=1 sequence=22 RECID=41 STAMP=881599459
channel ORA_DISK_1: starting piece 1 at 2015-06-05 16:44:36
channel ORA_DISK_1: finished piece 1 at 2015-06-05 16:44:51
piece handle=/u02/backup/2eq8o8vk_1_1 tag=TAG20150605T164421 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:15
Finished backup at 2015-06-05 16:44:51

Starting backup at 2015-06-05 16:44:51
using channel ORA_DISK_1
channel ORA_DISK_1: starting compressed full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u03/app/oracle/oradata/db/system01.dbf
input datafile file number=00002 name=/u03/app/oracle/oradata/db/sysaux01.dbf
input datafile file number=00003 name=/u03/app/oracle/oradata/db/undotbs01.dbf
input datafile file number=00005 name=/u03/app/oracle/oradata/db/test01.dbf
input datafile file number=00004 name=/u03/app/oracle/oradata/db/users01.dbf
channel ORA_DISK_1: starting piece 1 at 2015-06-05 16:44:52
channel ORA_DISK_1: finished piece 1 at 2015-06-05 16:46:37
piece handle=/u02/backup/2fq8o904_1_1 tag=TAG20150605T164451 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:01:45
Finished backup at 2015-06-05 16:46:37

Starting backup at 2015-06-05 16:46:37
current log archived
using channel ORA_DISK_1
channel ORA_DISK_1: starting compressed archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=23 RECID=42 STAMP=881599598
channel ORA_DISK_1: starting piece 1 at 2015-06-05 16:46:39
channel ORA_DISK_1: finished piece 1 at 2015-06-05 16:46:40
piece handle=/u02/backup/2gq8o93f_1_1 tag=TAG20150605T164639 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 2015-06-05 16:46:40

Starting Control File and SPFILE Autobackup at 2015-06-05 16:46:40
piece handle=/u02/backup/c-1644809111-20150605-00 comment=NONE
Finished Control File and SPFILE Autobackup at 2015-06-05 16:46:44

RMAN> list backup;


List of Backup Sets
===================


BS Key  Size       Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ -------------------
16127   946.50K    DISK        00:00:00     2015-06-05 16:44:29
        BP Key: 16133   Status: AVAILABLE  Compressed: YES  Tag: TAG20150605T164421
        Piece Name: /u02/backup/2aq8o8vd_1_1

  List of Archived Logs in backup set 16127
  Thrd Seq     Low SCN    Low Time            Next SCN   Next Time
  ---- ------- ---------- ------------------- ---------- ---------
  1    1       703711     2015-06-01 10:49:47 704659     2015-06-01 11:05:07

BS Key  Size       Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ -------------------
16129   5.37M      DISK        00:00:01     2015-06-05 16:44:32
        BP Key: 16135   Status: AVAILABLE  Compressed: YES  Tag: TAG20150605T164421
        Piece Name: /u02/backup/2cq8o8vf_1_1

  List of Archived Logs in backup set 16129
  Thrd Seq     Low SCN    Low Time            Next SCN   Next Time
  ---- ------- ---------- ------------------- ---------- ---------
  1    2       704659     2015-06-01 11:05:07 705159     2015-06-01 11:07:43
  1    3       705159     2015-06-01 11:07:43 705443     2015-06-01 11:12:21
  1    4       705443     2015-06-01 11:12:21 707134     2015-06-01 11:23:07
  1    5       707134     2015-06-01 11:23:07 707879     2015-06-01 11:30:45
  1    6       707879     2015-06-01 11:30:45 707956     2015-06-01 11:33:00
  1    7       707956     2015-06-01 11:33:00 739261     2015-06-01 21:55:54

BS Key  Size       Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ -------------------
16131   25.64M     DISK        00:00:08     2015-06-05 16:44:44
        BP Key: 16137   Status: AVAILABLE  Compressed: YES  Tag: TAG20150605T164421
        Piece Name: /u02/backup/2eq8o8vk_1_1

  List of Archived Logs in backup set 16131
  Thrd Seq     Low SCN    Low Time            Next SCN   Next Time
  ---- ------- ---------- ------------------- ---------- ---------
  1    8       739261     2015-06-01 21:55:54 746801     2015-06-01 22:05:12
  1    9       746801     2015-06-01 22:05:12 750015     2015-06-01 22:09:21
  1    10      750015     2015-06-01 22:09:21 751675     2015-06-01 22:22:48
  1    11      751675     2015-06-01 22:22:48 773357     2015-06-02 08:17:13
  1    12      773357     2015-06-02 08:17:13 773904     2015-06-02 08:20:58
  1    13      773904     2015-06-02 08:20:58 773991     2015-06-02 08:23:32
  1    14      773991     2015-06-02 08:23:32 811036     2015-06-03 08:21:54
  1    15      811036     2015-06-03 08:21:54 848751     2015-06-04 22:42:38
  1    16      848751     2015-06-04 22:42:38 878559     2015-06-05 08:36:20
  1    17      878559     2015-06-05 08:36:20 882947     2015-06-05 10:44:20
  1    18      882947     2015-06-05 10:44:20 883808     2015-06-05 10:57:41
  1    19      883808     2015-06-05 10:57:41 884702     2015-06-05 11:13:08
  1    20      884702     2015-06-05 11:13:08 886070     2015-06-05 11:58:46
  1    21      886070     2015-06-05 11:58:46 892378     2015-06-05 15:22:17
  1    22      892378     2015-06-05 15:22:17 894752     2015-06-05 16:44:19

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ -------------------
16184   Full    271.73M    DISK        00:01:43     2015-06-05 16:46:35
        BP Key: 16200   Status: AVAILABLE  Compressed: YES  Tag: TAG20150605T164451
        Piece Name: /u02/backup/2fq8o904_1_1
  List of Datafiles in backup set 16184
  File LV Type Ckp SCN    Ckp Time            Name
  ---- -- ---- ---------- ------------------- ----
  1       Full 894791     2015-06-05 16:44:52 /u03/app/oracle/oradata/db/system01.dbf
  2       Full 894791     2015-06-05 16:44:52 /u03/app/oracle/oradata/db/sysaux01.dbf
  3       Full 894791     2015-06-05 16:44:52 /u03/app/oracle/oradata/db/undotbs01.dbf
  4       Full 894791     2015-06-05 16:44:52 /u03/app/oracle/oradata/db/users01.dbf
  5       Full 894791     2015-06-05 16:44:52 /u03/app/oracle/oradata/db/test01.dbf

BS Key  Size       Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ -------------------
16213   7.50K      DISK        00:00:00     2015-06-05 16:46:39
        BP Key: 16219   Status: AVAILABLE  Compressed: YES  Tag: TAG20150605T164639
        Piece Name: /u02/backup/2gq8o93f_1_1

  List of Archived Logs in backup set 16213
  Thrd Seq     Low SCN    Low Time            Next SCN   Next Time
  ---- ------- ---------- ------------------- ---------- ---------
  1    23      894752     2015-06-05 16:44:19 894834     2015-06-05 16:46:37

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ -------------------
16228   Full    9.48M      DISK        00:00:02     2015-06-05 16:46:43
        BP Key: 16230   Status: AVAILABLE  Compressed: NO  Tag: TAG20150605T164641
        Piece Name: /u02/backup/c-1644809111-20150605-00
  SPFILE Included: Modification time: 2015-06-05 16:01:17
  SPFILE db_unique_name: DB
  Control File Included: Ckp SCN: 894861       Ckp time: 2015-06-05 16:46:41

2.将备份文件传输到目的主机上

[oracle11@jingyong1 backup]$ scp oracle11@192.168.56.2:/u02/backup/* /u02/backup/
oracle11@192.168.56.2's password:
29q8o8v6_1_1                                                                                                                         100%   17MB  16.8MB/s   00:01
2aq8o8vd_1_1                                                                                                                         100%  947KB 947.0KB/s   00:00
2bq8o8ve_1_1                                                                                                                         100% 2916KB   2.9MB/s   00:00
2cq8o8vf_1_1                                                                                                                         100% 5504KB   5.4MB/s   00:01
2dq8o8vi_1_1                                                                                                                         100% 1992KB   1.9MB/s   00:00
2eq8o8vk_1_1                                                                                                                         100%   26MB  12.8MB/s   00:02
2fq8o904_1_1                                                                                                                         100%  272MB   8.5MB/s   00:32
2gq8o93f_1_1                                                                                                                         100% 8192     8.0KB/s   00:00
c-1644809111-20150605-00                                                                                                             100% 9728KB   9.5MB/s   00:00
[oracle11@jingyong1 backup]$ ls -lrt
total 343140
-rw-r----- 1 oracle11 oinstall   2985472 Jun  5 17:07 2bq8o8ve_1_1
-rw-r----- 1 oracle11 oinstall    969728 Jun  5 17:07 2aq8o8vd_1_1
-rw-r----- 1 oracle11 oinstall  17567232 Jun  5 17:07 29q8o8v6_1_1
-rw-r----- 1 oracle11 oinstall   2039296 Jun  5 17:07 2dq8o8vi_1_1
-rw-r----- 1 oracle11 oinstall   5636096 Jun  5 17:07 2cq8o8vf_1_1
-rw-r----- 1 oracle11 oinstall  26888192 Jun  5 17:07 2eq8o8vk_1_1
-rw-r----- 1 oracle11 oinstall   9961472 Jun  5 17:07 c-1644809111-20150605-00
-rw-r----- 1 oracle11 oinstall      8192 Jun  5 17:07 2gq8o93f_1_1
-rw-r----- 1 oracle11 oinstall 284934144 Jun  5 17:07 2fq8o904_1_1

3.创建辅助实例的密码文件(这里辅助实例名为dup) ,在目的主机上为辅助实例创建密码文件可以有以下选项:
.手动创建密码文件,对于duplicate … from active database有额外的要求。必须使用SYS用户ID并且密码必须与原数据库的密码相匹配。当想要使用单独的密码来创建密码文件时因此可以启动辅助实例并使用它来连接原数据库。

.在执行duplicate … from active database命令时指定password file选项,在这种情况下,RMAN将原数据库的密码文件复制到目的主机上并且覆盖辅助实例已经存在的密码文件。如果原数据库密码文件有多个密码且你想让它们在副本数据库中使用时这种技术是非常有用的。

[oracle11@jingyong1 dbs]$ orapwd file=/u03/app/oracle/11.2.0/db/dbs/orapwdup password=system entries=10;

[oracle11@jingyong1 dbs]$ ls -lrt orapwdup
-rw-r----- 1 oracle11 oinstall 2560 Jun  5 09:40 orapwdup

4.创建辅助实例网络连接,修改监听文件,使用静态监听来监听辅助实例

[oracle11@jingyong1 admin]$ vi listener.ora


# listener.ora Network Configuration File: /u03/app/oracle/11.2.0/db/network/admin/listener.ora
# Generated by Oracle configuration tools.

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

SID_LIST_LISTENER =
  (SID_LIST =

    (SID_DESC =
     (SID_NAME = dup)
      (ORACLE_HOME =/u03/app/oracle/11.2.0/db)
    )
  )

[oracle11@jingyong1 admin]$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 05-JUN-2015 11:25:35

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

Starting /u03/app/oracle/11.2.0/db/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.4.0 - Production
System parameter file is /u03/app/oracle/11.2.0/db/network/admin/listener.ora
Log messages written to /u03/app/oracle/diag/tnslsnr/jingyong1/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=jingyong1)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=jingyong1)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date                05-JUN-2015 11:25:35
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u03/app/oracle/11.2.0/db/network/admin/listener.ora
Listener Log File         /u03/app/oracle/diag/tnslsnr/jingyong1/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=jingyong1)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "cs" has 1 instance(s).
  Instance "cs", status UNKNOWN, has 1 handler(s) for this service...
Service "dup" has 1 instance(s).
  Instance "dup", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

给辅助实例增加网络服务名

[oracle11@jingyong1 admin]$ vi tnsnames.ora
# tnsnames.ora Network Configuration File: /u03/app/oracle/11.2.0/db/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

dup =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.11)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = dup)
      (UR = A)
    )
  )

5.创建辅助实例的参数文件,初始化参数文件的目录和内容依赖于给复制文件命名选择的策略。可以选择建议的技术来对原主机和目的主机使用相同的命名策略。因此对于Oracle RAC环境,对于原主机和目的主机可以使用相同的ORACLE_SID。在参数文件中将db_name设置为任意值,db_name是唯一必须设置的参数。创建参数文件有以下选项:
.为辅助实例来创建文本参数文件,初始化参数文件的存储目录是在主机上操作系统特定的缺省目录。例如,在Linux和UNIX中缺省参数文件名是ORACLE_HOME/dbs/initORACLE_SID.ora,在Windows平台上参数文件名是ORACLE_HOME\database\initORACLE_SID.ora

.在执行duplicate命令时指定spfile子句。duplicate … spfile技术最简单,因为在执行复制时RMAN自动将原数据库的spfile文件复制到辅助实例或从备份中还原spfile文件。如果在辅助实例上存在spfile文件,那么RMAN就会覆盖它。

[oracle11@jingyong1 dbs]$ vi initdup.ora
db_name=dup
db_unique_name=dup
control_files= /u03/app/oracle/oradata/db/control01.ctl
remote_login_passwordfile=exclusive
compatible = 11.2.0.4.0
db_block_size=8192
sga_target=300M
sga_max_size=300M
pga_aggregate_target=32M

6.启动辅助实例,启动SQL*Plus并使用sysdba权限连接到辅助实例。将辅助实例启动到nomount状态(如果参数文件在缺省目录中startup命令不需要pfile参数)。注意:确保辅助实例使用文本参数文件来启动而不是SPFILE参数文件。不要创建控制文件或试图mount或open辅助实例。

[oracle11@jingyong1 dbs]$ export ORACLE_SID=dup
[oracle11@jingyong1 dbs]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Fri Jun 5 09:58:16 2015

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

Connected to an idle instance.

SQL> startup nomount
ORACLE instance started.

Total System Global Area  313860096 bytes
Fixed Size                  1364340 bytes
Variable Size             104861324 bytes
Database Buffers          201326592 bytes
Redo Buffers                6307840 bytes

7.在目标主机(运行被复制数据库的主机)配置辅助实例的网络服务名

[oracle11@oracle11g admin]$ vi tnsnames.ora
dup =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.56.11)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME =dup)
      (UR=A)
    )
  )

[oracle11@oracle11g admin]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.4.0 Production on Fri Jun 5 10:05:14 2015

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

SQL> conn sys/system@dup as sysdba
Connected.

8.加载或打开目标数据库,如果RMAN连接到原数据库作为目标数据库,那么原数据库为了执行复制必须设置为合适的状态。如果原数据库实例没有mount或open,那么将原数据库mount或open。如果执行active database复制,那么确保满足下面额外的条件:
-如果原数据库open,那么必须启用归档
-如果原数据库没有open,那么数据库不需要执行实例恢复
由于原数据库启用了归档所以可以将原数据库启动到open状态

[oracle11@oracle11g ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Fri Jun 5 08:35:45 2015

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

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area  422670336 bytes
Fixed Size                  1365068 bytes
Variable Size             310381492 bytes
Database Buffers          104857600 bytes
Redo Buffers                6066176 bytes
Database mounted.
Database opened.

9.执行duplicate命令,如果没有配置自动通道,那么至少手动分配一个辅助实例。给duplicate命令指定nofilenamecheck参数。如果是使用PFILE参数文件启动辅助实例需要指定pfile参数文件,且pfile参数文件必须存储在运行RMAN执行复制的主机上。这里辅助实例使用SPFILE参数文件来启动,并使用自动通道和指定nofilenamecheck选项:

[oracle11@oracle11g ~]$ rman  catalog rman/rman@cs auxiliary sys/system@dup

Recovery Manager: Release 11.2.0.4.0 - Production on Fri Jun 5 19:13:12 2015

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

connected to recovery catalog database
connected to auxiliary database: DUP (not mounted)

RMAN> duplicate database db to dup   until time '2015-06-05 16:46:37'  nofilenamecheck;

Starting Duplicate Db at 2015-06-05 19:13:16
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=20 device type=DISK

contents of Memory Script:
{
   sql clone "create spfile from memory";
}
executing Memory Script

sql statement: create spfile from memory

contents of Memory Script:
{
   shutdown clone immediate;
   startup clone nomount;
}
executing Memory Script

Oracle instance shut down

connected to auxiliary database (not started)
Oracle instance started

Total System Global Area     313860096 bytes

Fixed Size                     1364340 bytes
Variable Size                109055628 bytes
Database Buffers             197132288 bytes
Redo Buffers                   6307840 bytes

contents of Memory Script:
{
   set until scn  894834;
   sql clone "alter system set  db_name =
 ''DB'' comment=
 ''Modified by RMAN duplicate'' scope=spfile";
   sql clone "alter system set  db_unique_name =
 ''DUP'' comment=
 ''Modified by RMAN duplicate'' scope=spfile";
   shutdown clone immediate;
   startup clone force nomount
   restore clone primary controlfile;
   alter clone database mount;
}
executing Memory Script

executing command: SET until clause

sql statement: alter system set  db_name =  ''DB'' comment= ''Modified by RMAN duplicate'' scope=spfile

sql statement: alter system set  db_unique_name =  ''DUP'' comment= ''Modified by RMAN duplicate'' scope=spfile

Oracle instance shut down

Oracle instance started

Total System Global Area     313860096 bytes

Fixed Size                     1364340 bytes
Variable Size                109055628 bytes
Database Buffers             197132288 bytes
Redo Buffers                   6307840 bytes

Starting restore at 2015-06-05 19:13:29
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=18 device type=DISK

channel ORA_AUX_DISK_1: restoring control file
channel ORA_AUX_DISK_1: copied control file copy
input file name=/u03/app/oracle/11.2.0/db/dbs/snapcf_db.f
output file name=/u03/app/oracle/oradata/db/control01.ctl
Finished restore at 2015-06-05 19:13:33

database mounted

contents of Memory Script:
{
   set until scn  894834;
   set newname for datafile  1 to
 "/u03/app/oracle/oradata/db/system01.dbf";
   set newname for datafile  2 to
 "/u03/app/oracle/oradata/db/sysaux01.dbf";
   set newname for datafile  3 to
 "/u03/app/oracle/oradata/db/undotbs01.dbf";
   set newname for datafile  4 to
 "/u03/app/oracle/oradata/db/users01.dbf";
   set newname for datafile  5 to
 "/u03/app/oracle/oradata/db/test01.dbf";
   restore
   clone database
   ;
}
executing Memory Script

executing command: SET until clause

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

Starting restore at 2015-06-05 19:13:37
using channel ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00001 to /u03/app/oracle/oradata/db/system01.dbf
channel ORA_AUX_DISK_1: restoring datafile 00002 to /u03/app/oracle/oradata/db/sysaux01.dbf
channel ORA_AUX_DISK_1: restoring datafile 00003 to /u03/app/oracle/oradata/db/undotbs01.dbf
channel ORA_AUX_DISK_1: restoring datafile 00004 to /u03/app/oracle/oradata/db/users01.dbf
channel ORA_AUX_DISK_1: restoring datafile 00005 to /u03/app/oracle/oradata/db/test01.dbf
channel ORA_AUX_DISK_1: reading from backup piece /u02/backup/2fq8o904_1_1
channel ORA_AUX_DISK_1: piece handle=/u02/backup/2fq8o904_1_1 tag=TAG20150605T164451
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:02:16
Finished restore at 2015-06-05 19:15:54

contents of Memory Script:
{
   switch clone datafile all;
}
executing Memory Script

datafile 1 switched to datafile copy
input datafile copy RECID=7 STAMP=881608554 file name=/u03/app/oracle/oradata/db/system01.dbf
datafile 2 switched to datafile copy
input datafile copy RECID=8 STAMP=881608554 file name=/u03/app/oracle/oradata/db/sysaux01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=9 STAMP=881608554 file name=/u03/app/oracle/oradata/db/undotbs01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=10 STAMP=881608554 file name=/u03/app/oracle/oradata/db/users01.dbf
datafile 5 switched to datafile copy
input datafile copy RECID=11 STAMP=881608554 file name=/u03/app/oracle/oradata/db/test01.dbf

contents of Memory Script:
{
   set until time  "to_date('JUN 05 2015 16:46:37', 'MON DD YYYY HH24:MI:SS')";
   recover
   clone database
    delete archivelog
   ;
}
executing Memory Script

executing command: SET until clause

Starting recover at 2015-06-05 19:15:55
using channel ORA_AUX_DISK_1

starting media recovery

channel ORA_AUX_DISK_1: starting archived log restore to default destination
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=23
channel ORA_AUX_DISK_1: reading from backup piece /u02/backup/2gq8o93f_1_1
channel ORA_AUX_DISK_1: piece handle=/u02/backup/2gq8o93f_1_1 tag=TAG20150605T164639
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
archived log file name=/u03/app/oracle/11.2.0/db/dbs/arch1_23_881232587.dbf thread=1 sequence=23
channel clone_default: deleting archived log(s)
archived log file name=/u03/app/oracle/11.2.0/db/dbs/arch1_23_881232587.dbf RECID=43 STAMP=881608557
media recovery complete, elapsed time: 00:00:00
Finished recover at 2015-06-05 19:15:59
Oracle instance started

Total System Global Area     313860096 bytes

Fixed Size                     1364340 bytes
Variable Size                109055628 bytes
Database Buffers             197132288 bytes
Redo Buffers                   6307840 bytes

contents of Memory Script:
{
   sql clone "alter system set  db_name =
 ''DUP'' comment=
 ''Reset to original value by RMAN'' scope=spfile";
   sql clone "alter system reset  db_unique_name scope=spfile";
   shutdown clone immediate;
   startup clone nomount;
}
executing Memory Script

sql statement: alter system set  db_name =  ''DUP'' comment= ''Reset to original value by RMAN'' scope=spfile

sql statement: alter system reset  db_unique_name scope=spfile

Oracle instance shut down

connected to auxiliary database (not started)
Oracle instance started

Total System Global Area     313860096 bytes

Fixed Size                     1364340 bytes
Variable Size                109055628 bytes
Database Buffers             197132288 bytes
Redo Buffers                   6307840 bytes
sql statement: CREATE CONTROLFILE REUSE SET DATABASE "DUP" RESETLOGS ARCHIVELOG
  MAXLOGFILES     16
  MAXLOGMEMBERS      3
  MAXDATAFILES      100
  MAXINSTANCES     8
  MAXLOGHISTORY      292
 LOGFILE
  GROUP   1 ( '/u03/app/oracle/oradata/db/redo01.log' ) SIZE 50 M  REUSE,
  GROUP   2 ( '/u03/app/oracle/oradata/db/redo02.log' ) SIZE 50 M  REUSE,
  GROUP   3 ( '/u03/app/oracle/oradata/db/redo03.log' ) SIZE 50 M  REUSE
 DATAFILE
  '/u03/app/oracle/oradata/db/system01.dbf'
 CHARACTER SET ZHS16GBK


contents of Memory Script:
{
   set newname for tempfile  1 to
 "/u03/app/oracle/oradata/db/temp01.dbf";
   switch clone tempfile all;
   catalog clone datafilecopy  "/u03/app/oracle/oradata/db/sysaux01.dbf",
 "/u03/app/oracle/oradata/db/undotbs01.dbf",
 "/u03/app/oracle/oradata/db/users01.dbf",
 "/u03/app/oracle/oradata/db/test01.dbf";
   switch clone datafile all;
}
executing Memory Script

executing command: SET NEWNAME

renamed tempfile 1 to /u03/app/oracle/oradata/db/temp01.dbf in control file

cataloged datafile copy
datafile copy file name=/u03/app/oracle/oradata/db/sysaux01.dbf RECID=1 STAMP=881608574
cataloged datafile copy
datafile copy file name=/u03/app/oracle/oradata/db/undotbs01.dbf RECID=2 STAMP=881608574
cataloged datafile copy
datafile copy file name=/u03/app/oracle/oradata/db/users01.dbf RECID=3 STAMP=881608574
cataloged datafile copy
datafile copy file name=/u03/app/oracle/oradata/db/test01.dbf RECID=4 STAMP=881608574

datafile 2 switched to datafile copy
input datafile copy RECID=1 STAMP=881608574 file name=/u03/app/oracle/oradata/db/sysaux01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=2 STAMP=881608574 file name=/u03/app/oracle/oradata/db/undotbs01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=3 STAMP=881608574 file name=/u03/app/oracle/oradata/db/users01.dbf
datafile 5 switched to datafile copy
input datafile copy RECID=4 STAMP=881608574 file name=/u03/app/oracle/oradata/db/test01.dbf

contents of Memory Script:
{
   Alter clone database open resetlogs;
}
executing Memory Script

database opened
Finished Duplicate Db at 2015-06-05 19:16:35

oracle 11g duplicate database基于备份复制数据库(二)

使用目标数据库的基于备份的复制,下面测试将原数据库使用备份复制到远程主机不同目录
1.对原数据库生成备份

RMAN> backup as compressed backupset database plus archivelog;


Starting backup at 2015-06-05 16:44:19
current log archived
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=31 device type=DISK
channel ORA_DISK_1: starting compressed archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=5 RECID=1 STAMP=880996327
input archived log thread=1 sequence=6 RECID=2 STAMP=880996438
input archived log thread=1 sequence=7 RECID=3 STAMP=881014383
input archived log thread=1 sequence=8 RECID=4 STAMP=881014612
input archived log thread=1 sequence=9 RECID=5 STAMP=881015165
input archived log thread=1 sequence=10 RECID=13 STAMP=881233508
input archived log thread=1 sequence=11 RECID=14 STAMP=881233508
channel ORA_DISK_1: starting piece 1 at 2015-06-05 16:44:22
channel ORA_DISK_1: finished piece 1 at 2015-06-05 16:44:29
piece handle=/u02/backup/29q8o8v6_1_1 tag=TAG20150605T164421 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:07
channel ORA_DISK_1: starting compressed archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=1 RECID=12 STAMP=881233507
channel ORA_DISK_1: starting piece 1 at 2015-06-05 16:44:29
channel ORA_DISK_1: finished piece 1 at 2015-06-05 16:44:30
piece handle=/u02/backup/2aq8o8vd_1_1 tag=TAG20150605T164421 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting compressed archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=12 RECID=15 STAMP=881233508
channel ORA_DISK_1: starting piece 1 at 2015-06-05 16:44:30
channel ORA_DISK_1: finished piece 1 at 2015-06-05 16:44:31
piece handle=/u02/backup/2bq8o8ve_1_1 tag=TAG20150605T164421 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting compressed archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=2 RECID=21 STAMP=881233663
input archived log thread=1 sequence=3 RECID=22 STAMP=881233941
input archived log thread=1 sequence=4 RECID=23 STAMP=881234587
input archived log thread=1 sequence=5 RECID=24 STAMP=881235045
input archived log thread=1 sequence=6 RECID=25 STAMP=881235180
input archived log thread=1 sequence=7 RECID=26 STAMP=881272559
channel ORA_DISK_1: starting piece 1 at 2015-06-05 16:44:31
channel ORA_DISK_1: finished piece 1 at 2015-06-05 16:44:34
piece handle=/u02/backup/2cq8o8vf_1_1 tag=TAG20150605T164421 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
channel ORA_DISK_1: starting compressed archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=13 RECID=16 STAMP=881233508
input archived log thread=1 sequence=14 RECID=17 STAMP=881233508
input archived log thread=1 sequence=15 RECID=18 STAMP=881233508
input archived log thread=1 sequence=16 RECID=19 STAMP=881233508
input archived log thread=1 sequence=17 RECID=20 STAMP=881233508
input archived log thread=1 sequence=18 RECID=11 STAMP=881232587
input archived log thread=1 sequence=19 RECID=9 STAMP=881232587
input archived log thread=1 sequence=20 RECID=10 STAMP=881232587
channel ORA_DISK_1: starting piece 1 at 2015-06-05 16:44:34
channel ORA_DISK_1: finished piece 1 at 2015-06-05 16:44:35
piece handle=/u02/backup/2dq8o8vi_1_1 tag=TAG20150605T164421 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting compressed archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=8 RECID=27 STAMP=881273112
input archived log thread=1 sequence=9 RECID=28 STAMP=881273363
input archived log thread=1 sequence=10 RECID=29 STAMP=881274168
input archived log thread=1 sequence=11 RECID=30 STAMP=881309835
input archived log thread=1 sequence=12 RECID=31 STAMP=881310058
input archived log thread=1 sequence=13 RECID=32 STAMP=881310212
input archived log thread=1 sequence=14 RECID=33 STAMP=881396520
input archived log thread=1 sequence=15 RECID=34 STAMP=881534563
input archived log thread=1 sequence=16 RECID=35 STAMP=881570186
input archived log thread=1 sequence=17 RECID=36 STAMP=881577860
input archived log thread=1 sequence=18 RECID=37 STAMP=881578662
input archived log thread=1 sequence=19 RECID=38 STAMP=881579588
input archived log thread=1 sequence=20 RECID=39 STAMP=881582326
input archived log thread=1 sequence=21 RECID=40 STAMP=881594537
input archived log thread=1 sequence=22 RECID=41 STAMP=881599459
channel ORA_DISK_1: starting piece 1 at 2015-06-05 16:44:36
channel ORA_DISK_1: finished piece 1 at 2015-06-05 16:44:51
piece handle=/u02/backup/2eq8o8vk_1_1 tag=TAG20150605T164421 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:15
Finished backup at 2015-06-05 16:44:51

Starting backup at 2015-06-05 16:44:51
using channel ORA_DISK_1
channel ORA_DISK_1: starting compressed full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u03/app/oracle/oradata/db/system01.dbf
input datafile file number=00002 name=/u03/app/oracle/oradata/db/sysaux01.dbf
input datafile file number=00003 name=/u03/app/oracle/oradata/db/undotbs01.dbf
input datafile file number=00005 name=/u03/app/oracle/oradata/db/test01.dbf
input datafile file number=00004 name=/u03/app/oracle/oradata/db/users01.dbf
channel ORA_DISK_1: starting piece 1 at 2015-06-05 16:44:52
channel ORA_DISK_1: finished piece 1 at 2015-06-05 16:46:37
piece handle=/u02/backup/2fq8o904_1_1 tag=TAG20150605T164451 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:01:45
Finished backup at 2015-06-05 16:46:37

Starting backup at 2015-06-05 16:46:37
current log archived
using channel ORA_DISK_1
channel ORA_DISK_1: starting compressed archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=23 RECID=42 STAMP=881599598
channel ORA_DISK_1: starting piece 1 at 2015-06-05 16:46:39
channel ORA_DISK_1: finished piece 1 at 2015-06-05 16:46:40
piece handle=/u02/backup/2gq8o93f_1_1 tag=TAG20150605T164639 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 2015-06-05 16:46:40

Starting Control File and SPFILE Autobackup at 2015-06-05 16:46:40
piece handle=/u02/backup/c-1644809111-20150605-00 comment=NONE
Finished Control File and SPFILE Autobackup at 2015-06-05 16:46:44

RMAN> list backup;


List of Backup Sets
===================


BS Key  Size       Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ -------------------
16127   946.50K    DISK        00:00:00     2015-06-05 16:44:29
        BP Key: 16133   Status: AVAILABLE  Compressed: YES  Tag: TAG20150605T164421
        Piece Name: /u02/backup/2aq8o8vd_1_1

  List of Archived Logs in backup set 16127
  Thrd Seq     Low SCN    Low Time            Next SCN   Next Time
  ---- ------- ---------- ------------------- ---------- ---------
  1    1       703711     2015-06-01 10:49:47 704659     2015-06-01 11:05:07

BS Key  Size       Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ -------------------
16129   5.37M      DISK        00:00:01     2015-06-05 16:44:32
        BP Key: 16135   Status: AVAILABLE  Compressed: YES  Tag: TAG20150605T164421
        Piece Name: /u02/backup/2cq8o8vf_1_1

  List of Archived Logs in backup set 16129
  Thrd Seq     Low SCN    Low Time            Next SCN   Next Time
  ---- ------- ---------- ------------------- ---------- ---------
  1    2       704659     2015-06-01 11:05:07 705159     2015-06-01 11:07:43
  1    3       705159     2015-06-01 11:07:43 705443     2015-06-01 11:12:21
  1    4       705443     2015-06-01 11:12:21 707134     2015-06-01 11:23:07
  1    5       707134     2015-06-01 11:23:07 707879     2015-06-01 11:30:45
  1    6       707879     2015-06-01 11:30:45 707956     2015-06-01 11:33:00
  1    7       707956     2015-06-01 11:33:00 739261     2015-06-01 21:55:54

BS Key  Size       Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ -------------------
16131   25.64M     DISK        00:00:08     2015-06-05 16:44:44
        BP Key: 16137   Status: AVAILABLE  Compressed: YES  Tag: TAG20150605T164421
        Piece Name: /u02/backup/2eq8o8vk_1_1

  List of Archived Logs in backup set 16131
  Thrd Seq     Low SCN    Low Time            Next SCN   Next Time
  ---- ------- ---------- ------------------- ---------- ---------
  1    8       739261     2015-06-01 21:55:54 746801     2015-06-01 22:05:12
  1    9       746801     2015-06-01 22:05:12 750015     2015-06-01 22:09:21
  1    10      750015     2015-06-01 22:09:21 751675     2015-06-01 22:22:48
  1    11      751675     2015-06-01 22:22:48 773357     2015-06-02 08:17:13
  1    12      773357     2015-06-02 08:17:13 773904     2015-06-02 08:20:58
  1    13      773904     2015-06-02 08:20:58 773991     2015-06-02 08:23:32
  1    14      773991     2015-06-02 08:23:32 811036     2015-06-03 08:21:54
  1    15      811036     2015-06-03 08:21:54 848751     2015-06-04 22:42:38
  1    16      848751     2015-06-04 22:42:38 878559     2015-06-05 08:36:20
  1    17      878559     2015-06-05 08:36:20 882947     2015-06-05 10:44:20
  1    18      882947     2015-06-05 10:44:20 883808     2015-06-05 10:57:41
  1    19      883808     2015-06-05 10:57:41 884702     2015-06-05 11:13:08
  1    20      884702     2015-06-05 11:13:08 886070     2015-06-05 11:58:46
  1    21      886070     2015-06-05 11:58:46 892378     2015-06-05 15:22:17
  1    22      892378     2015-06-05 15:22:17 894752     2015-06-05 16:44:19

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ -------------------
16184   Full    271.73M    DISK        00:01:43     2015-06-05 16:46:35
        BP Key: 16200   Status: AVAILABLE  Compressed: YES  Tag: TAG20150605T164451
        Piece Name: /u02/backup/2fq8o904_1_1
  List of Datafiles in backup set 16184
  File LV Type Ckp SCN    Ckp Time            Name
  ---- -- ---- ---------- ------------------- ----
  1       Full 894791     2015-06-05 16:44:52 /u03/app/oracle/oradata/db/system01.dbf
  2       Full 894791     2015-06-05 16:44:52 /u03/app/oracle/oradata/db/sysaux01.dbf
  3       Full 894791     2015-06-05 16:44:52 /u03/app/oracle/oradata/db/undotbs01.dbf
  4       Full 894791     2015-06-05 16:44:52 /u03/app/oracle/oradata/db/users01.dbf
  5       Full 894791     2015-06-05 16:44:52 /u03/app/oracle/oradata/db/test01.dbf

BS Key  Size       Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ -------------------
16213   7.50K      DISK        00:00:00     2015-06-05 16:46:39
        BP Key: 16219   Status: AVAILABLE  Compressed: YES  Tag: TAG20150605T164639
        Piece Name: /u02/backup/2gq8o93f_1_1

  List of Archived Logs in backup set 16213
  Thrd Seq     Low SCN    Low Time            Next SCN   Next Time
  ---- ------- ---------- ------------------- ---------- ---------
  1    23      894752     2015-06-05 16:44:19 894834     2015-06-05 16:46:37

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ -------------------
16228   Full    9.48M      DISK        00:00:02     2015-06-05 16:46:43
        BP Key: 16230   Status: AVAILABLE  Compressed: NO  Tag: TAG20150605T164641
        Piece Name: /u02/backup/c-1644809111-20150605-00
  SPFILE Included: Modification time: 2015-06-05 16:01:17
  SPFILE db_unique_name: DB
  Control File Included: Ckp SCN: 894861       Ckp time: 2015-06-05 16:46:41

2.将备份文件传输到目的主机上

[oracle11@jingyong1 backup]$ scp oracle11@192.168.56.2:/u02/backup/* /u02/backup/
oracle11@192.168.56.2's password:
29q8o8v6_1_1                                                                                                                         100%   17MB  16.8MB/s   00:01
2aq8o8vd_1_1                                                                                                                         100%  947KB 947.0KB/s   00:00
2bq8o8ve_1_1                                                                                                                         100% 2916KB   2.9MB/s   00:00
2cq8o8vf_1_1                                                                                                                         100% 5504KB   5.4MB/s   00:01
2dq8o8vi_1_1                                                                                                                         100% 1992KB   1.9MB/s   00:00
2eq8o8vk_1_1                                                                                                                         100%   26MB  12.8MB/s   00:02
2fq8o904_1_1                                                                                                                         100%  272MB   8.5MB/s   00:32
2gq8o93f_1_1                                                                                                                         100% 8192     8.0KB/s   00:00
c-1644809111-20150605-00                                                                                                             100% 9728KB   9.5MB/s   00:00
[oracle11@jingyong1 backup]$ ls -lrt
total 343140
-rw-r----- 1 oracle11 oinstall   2985472 Jun  5 17:07 2bq8o8ve_1_1
-rw-r----- 1 oracle11 oinstall    969728 Jun  5 17:07 2aq8o8vd_1_1
-rw-r----- 1 oracle11 oinstall  17567232 Jun  5 17:07 29q8o8v6_1_1
-rw-r----- 1 oracle11 oinstall   2039296 Jun  5 17:07 2dq8o8vi_1_1
-rw-r----- 1 oracle11 oinstall   5636096 Jun  5 17:07 2cq8o8vf_1_1
-rw-r----- 1 oracle11 oinstall  26888192 Jun  5 17:07 2eq8o8vk_1_1
-rw-r----- 1 oracle11 oinstall   9961472 Jun  5 17:07 c-1644809111-20150605-00
-rw-r----- 1 oracle11 oinstall      8192 Jun  5 17:07 2gq8o93f_1_1
-rw-r----- 1 oracle11 oinstall 284934144 Jun  5 17:07 2fq8o904_1_1

3.创建辅助实例的密码文件(这里辅助实例名为dup) ,在目的主机上为辅助实例创建密码文件可以有以下选项:
.手动创建密码文件,对于duplicate … from active database有额外的要求。必须使用SYS用户ID并且密码必须与原数据库的密码相匹配。当想要使用单独的密码来创建密码文件时因此可以启动辅助实例并使用它来连接原数据库。

.在执行duplicate … from active database命令时指定password file选项,在这种情况下,RMAN将原数据库的密码文件复制到目的主机上并且覆盖辅助实例已经存在的密码文件。如果原数据库密码文件有多个密码且你想让它们在副本数据库中使用时这种技术是非常有用的。

[oracle11@jingyong1 dbs]$ orapwd file=/u03/app/oracle/11.2.0/db/dbs/orapwdup password=system entries=10;

[oracle11@jingyong1 dbs]$ ls -lrt orapwdup
-rw-r----- 1 oracle11 oinstall 2560 Jun  5 09:40 orapwdup

4.创建辅助实例网络连接,修改监听文件,使用静态监听来监听辅助实例

[oracle11@jingyong1 admin]$ vi listener.ora


# listener.ora Network Configuration File: /u03/app/oracle/11.2.0/db/network/admin/listener.ora
# Generated by Oracle configuration tools.

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

SID_LIST_LISTENER =
  (SID_LIST =

    (SID_DESC =
     (SID_NAME = dup)
      (ORACLE_HOME =/u03/app/oracle/11.2.0/db)
    )
  )

[oracle11@jingyong1 admin]$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 05-JUN-2015 11:25:35

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

Starting /u03/app/oracle/11.2.0/db/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.4.0 - Production
System parameter file is /u03/app/oracle/11.2.0/db/network/admin/listener.ora
Log messages written to /u03/app/oracle/diag/tnslsnr/jingyong1/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=jingyong1)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=jingyong1)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date                05-JUN-2015 11:25:35
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u03/app/oracle/11.2.0/db/network/admin/listener.ora
Listener Log File         /u03/app/oracle/diag/tnslsnr/jingyong1/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=jingyong1)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "cs" has 1 instance(s).
  Instance "cs", status UNKNOWN, has 1 handler(s) for this service...
Service "dup" has 1 instance(s).
  Instance "dup", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

给辅助实例增加网络服务名

[oracle11@jingyong1 admin]$ vi tnsnames.ora
# tnsnames.ora Network Configuration File: /u03/app/oracle/11.2.0/db/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

dup =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.11)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = dup)
      (UR = A)
    )
  )

5.创建辅助实例的参数文件,初始化参数文件的目录和内容依赖于给复制文件命名选择的策略。可以选择建议的技术来对原主机和目的主机使用相同的命名策略。因此对于Oracle RAC环境,对于原主机和目的主机可以使用相同的ORACLE_SID。在参数文件中将db_name设置为任意值,db_name是唯一必须设置的参数。创建参数文件有以下选项:
.为辅助实例来创建文本参数文件,初始化参数文件的存储目录是在主机上操作系统特定的缺省目录。例如,在Linux和UNIX中缺省参数文件名是ORACLE_HOME/dbs/initORACLE_SID.ora,在Windows平台上参数文件名是ORACLE_HOME\database\initORACLE_SID.ora

.在执行duplicate命令时指定spfile子句。duplicate … spfile技术最简单,因为在执行复制时RMAN自动将原数据库的spfile文件复制到辅助实例或从备份中还原spfile文件。如果在辅助实例上存在spfile文件,那么RMAN就会覆盖它。

[oracle11@jingyong1 dbs]$ vi initdup.ora
db_name=dup
db_unique_name=dup
control_files= /u03/app/oracle/oradata/dup/control01.ctl
remote_login_passwordfile=exclusive
compatible = 11.2.0.4.0
db_block_size=8192
sga_target=300M
sga_max_size=300M
pga_aggregate_target=32M
db_file_name_convert=('/u03/app/oracle/oradata/db/','/u03/app/oracle/oradata/dup/')
log_file_name_convert=('/u03/app/oracle/oradata/db/','/u03/app/oracle/oradata/dup/')

6.启动辅助实例,启动SQL*Plus并使用sysdba权限连接到辅助实例。将辅助实例启动到nomount状态(如果参数文件在缺省目录中startup命令不需要pfile参数)。注意:确保辅助实例使用文本参数文件来启动而不是SPFILE参数文件。不要创建控制文件或试图mount或open辅助实例。

[oracle11@jingyong1 dbs]$ export ORACLE_SID=dup
[oracle11@jingyong1 dbs]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Fri Jun 5 09:58:16 2015

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

Connected to an idle instance.

SQL> startup nomount
ORACLE instance started.

Total System Global Area  313860096 bytes
Fixed Size                  1364340 bytes
Variable Size             104861324 bytes
Database Buffers          201326592 bytes
Redo Buffers                6307840 bytes

7.在目标主机(运行被复制数据库的主机)配置辅助实例的网络服务名

[oracle11@oracle11g admin]$ vi tnsnames.ora
dup =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.56.11)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME =dup)
      (UR=A)
    )
  )

[oracle11@oracle11g admin]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.4.0 Production on Fri Jun 5 10:05:14 2015

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

SQL> conn sys/system@dup as sysdba
Connected.

8.加载或打开目标数据库,如果RMAN连接到原数据库作为目标数据库,那么原数据库为了执行复制必须设置为合适的状态。如果原数据库实例没有mount或open,那么将原数据库mount或open。如果执行active database复制,那么确保满足下面额外的条件:
-如果原数据库open,那么必须启用归档
-如果原数据库没有open,那么数据库不需要执行实例恢复
由于原数据库启用了归档所以可以将原数据库启动到open状态

[oracle11@oracle11g ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Fri Jun 5 08:35:45 2015

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

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area  422670336 bytes
Fixed Size                  1365068 bytes
Variable Size             310381492 bytes
Database Buffers          104857600 bytes
Redo Buffers                6066176 bytes
Database mounted.
Database opened.

9.执行duplicate命令,如果没有配置自动通道,那么至少手动分配一个辅助实例。给duplicate命令指定nofilenamecheck参数。如果是使用PFILE参数文件启动辅助实例需要指定pfile参数文件,且pfile参数文件必须存储在运行RMAN执行复制的主机上。这里辅助实例使用SPFILE参数文件来启动,并使用自动通道和指定nofilenamecheck选项:

[oracle11@oracle11g ~]$ rman target sys/system catalog rman/rman@cs auxiliary sys/system@dup

Recovery Manager: Release 11.2.0.4.0 - Production on Fri Jun 5 18:56:30 2015

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

connected to target database: DB (DBID=1644809111)
connected to recovery catalog database
connected to auxiliary database: DUP (not mounted)

RMAN> duplicate target database to dup until time '2015-06-05 16:46:37'  nofilenamecheck;

Starting Duplicate Db at 2015-06-05 18:57:59
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=20 device type=DISK

contents of Memory Script:
{
   sql clone "create spfile from memory";
}
executing Memory Script

sql statement: create spfile from memory

contents of Memory Script:
{
   shutdown clone immediate;
   startup clone nomount;
}
executing Memory Script

Oracle instance shut down

connected to auxiliary database (not started)
Oracle instance started

Total System Global Area     313860096 bytes

Fixed Size                     1364340 bytes
Variable Size                109055628 bytes
Database Buffers             197132288 bytes
Redo Buffers                   6307840 bytes

contents of Memory Script:
{
   set until scn  894834;
   sql clone "alter system set  db_name =
 ''DB'' comment=
 ''Modified by RMAN duplicate'' scope=spfile";
   sql clone "alter system set  db_unique_name =
 ''DUP'' comment=
 ''Modified by RMAN duplicate'' scope=spfile";
   shutdown clone immediate;
   startup clone force nomount
   restore clone primary controlfile;
   alter clone database mount;
}
executing Memory Script

executing command: SET until clause

sql statement: alter system set  db_name =  ''DB'' comment= ''Modified by RMAN duplicate'' scope=spfile

sql statement: alter system set  db_unique_name =  ''DUP'' comment= ''Modified by RMAN duplicate'' scope=spfile

Oracle instance shut down

Oracle instance started

Total System Global Area     313860096 bytes

Fixed Size                     1364340 bytes
Variable Size                109055628 bytes
Database Buffers             197132288 bytes
Redo Buffers                   6307840 bytes

Starting restore at 2015-06-05 18:58:19
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=18 device type=DISK

channel ORA_AUX_DISK_1: restoring control file
channel ORA_AUX_DISK_1: copied control file copy
input file name=/u03/app/oracle/11.2.0/db/dbs/snapcf_db.f
output file name=/u03/app/oracle/oradata/dup/control01.ctl
Finished restore at 2015-06-05 18:58:22

database mounted

contents of Memory Script:
{
   set until scn  894834;
   set newname for datafile  1 to
 "/u03/app/oracle/oradata/dup/system01.dbf";
   set newname for datafile  2 to
 "/u03/app/oracle/oradata/dup/sysaux01.dbf";
   set newname for datafile  3 to
 "/u03/app/oracle/oradata/dup/undotbs01.dbf";
   set newname for datafile  4 to
 "/u03/app/oracle/oradata/dup/users01.dbf";
   set newname for datafile  5 to
 "/u03/app/oracle/oradata/dup/test01.dbf";
   restore
   clone database
   ;
}
executing Memory Script

executing command: SET until clause

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

Starting restore at 2015-06-05 18:58:27
using channel ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00001 to /u03/app/oracle/oradata/dup/system01.dbf
channel ORA_AUX_DISK_1: restoring datafile 00002 to /u03/app/oracle/oradata/dup/sysaux01.dbf
channel ORA_AUX_DISK_1: restoring datafile 00003 to /u03/app/oracle/oradata/dup/undotbs01.dbf
channel ORA_AUX_DISK_1: restoring datafile 00004 to /u03/app/oracle/oradata/dup/users01.dbf
channel ORA_AUX_DISK_1: restoring datafile 00005 to /u03/app/oracle/oradata/dup/test01.dbf
channel ORA_AUX_DISK_1: reading from backup piece /u02/backup/2fq8o904_1_1
channel ORA_AUX_DISK_1: piece handle=/u02/backup/2fq8o904_1_1 tag=TAG20150605T164451
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:02:56
Finished restore at 2015-06-05 19:01:23

contents of Memory Script:
{
   switch clone datafile all;
}
executing Memory Script

datafile 1 switched to datafile copy
input datafile copy RECID=12 STAMP=881607684 file name=/u03/app/oracle/oradata/dup/system01.dbf
datafile 2 switched to datafile copy
input datafile copy RECID=13 STAMP=881607685 file name=/u03/app/oracle/oradata/dup/sysaux01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=14 STAMP=881607685 file name=/u03/app/oracle/oradata/dup/undotbs01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=15 STAMP=881607685 file name=/u03/app/oracle/oradata/dup/users01.dbf
datafile 5 switched to datafile copy
input datafile copy RECID=16 STAMP=881607685 file name=/u03/app/oracle/oradata/dup/test01.dbf

contents of Memory Script:
{
   set until time  "to_date('JUN 05 2015 16:46:37', 'MON DD YYYY HH24:MI:SS')";
   recover
   clone database
    delete archivelog
   ;
}
executing Memory Script

executing command: SET until clause

Starting recover at 2015-06-05 19:01:27
using channel ORA_AUX_DISK_1

starting media recovery

channel ORA_AUX_DISK_1: starting archived log restore to default destination
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=23
channel ORA_AUX_DISK_1: reading from backup piece /u02/backup/2gq8o93f_1_1
channel ORA_AUX_DISK_1: piece handle=/u02/backup/2gq8o93f_1_1 tag=TAG20150605T164639
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
archived log file name=/u03/app/oracle/11.2.0/db/dbs/arch1_23_881232587.dbf thread=1 sequence=23
channel clone_default: deleting archived log(s)
archived log file name=/u03/app/oracle/11.2.0/db/dbs/arch1_23_881232587.dbf RECID=43 STAMP=881607690
media recovery complete, elapsed time: 00:00:02
Finished recover at 2015-06-05 19:01:33
Oracle instance started

Total System Global Area     313860096 bytes

Fixed Size                     1364340 bytes
Variable Size                109055628 bytes
Database Buffers             197132288 bytes
Redo Buffers                   6307840 bytes

contents of Memory Script:
{
   sql clone "alter system set  db_name =
 ''DUP'' comment=
 ''Reset to original value by RMAN'' scope=spfile";
   sql clone "alter system reset  db_unique_name scope=spfile";
   shutdown clone immediate;
   startup clone nomount;
}
executing Memory Script

sql statement: alter system set  db_name =  ''DUP'' comment= ''Reset to original value by RMAN'' scope=spfile

sql statement: alter system reset  db_unique_name scope=spfile

Oracle instance shut down

connected to auxiliary database (not started)
Oracle instance started

Total System Global Area     313860096 bytes

Fixed Size                     1364340 bytes
Variable Size                109055628 bytes
Database Buffers             197132288 bytes
Redo Buffers                   6307840 bytes
sql statement: CREATE CONTROLFILE REUSE SET DATABASE "DUP" RESETLOGS ARCHIVELOG
  MAXLOGFILES     16
  MAXLOGMEMBERS      3
  MAXDATAFILES      100
  MAXINSTANCES     8
  MAXLOGHISTORY      292
 LOGFILE
  GROUP   1 ( '/u03/app/oracle/oradata/dup/redo01.log' ) SIZE 50 M  REUSE,
  GROUP   2 ( '/u03/app/oracle/oradata/dup/redo02.log' ) SIZE 50 M  REUSE,
  GROUP   3 ( '/u03/app/oracle/oradata/dup/redo03.log' ) SIZE 50 M  REUSE
 DATAFILE
  '/u03/app/oracle/oradata/dup/system01.dbf'
 CHARACTER SET ZHS16GBK


contents of Memory Script:
{
   set newname for tempfile  1 to
 "/u03/app/oracle/oradata/dup/temp01.dbf";
   switch clone tempfile all;
   catalog clone datafilecopy  "/u03/app/oracle/oradata/dup/sysaux01.dbf",
 "/u03/app/oracle/oradata/dup/undotbs01.dbf",
 "/u03/app/oracle/oradata/dup/users01.dbf",
 "/u03/app/oracle/oradata/dup/test01.dbf";
   switch clone datafile all;
}
executing Memory Script

executing command: SET NEWNAME

renamed tempfile 1 to /u03/app/oracle/oradata/dup/temp01.dbf in control file

cataloged datafile copy
datafile copy file name=/u03/app/oracle/oradata/dup/sysaux01.dbf RECID=1 STAMP=881607711
cataloged datafile copy
datafile copy file name=/u03/app/oracle/oradata/dup/undotbs01.dbf RECID=2 STAMP=881607711
cataloged datafile copy
datafile copy file name=/u03/app/oracle/oradata/dup/users01.dbf RECID=3 STAMP=881607711
cataloged datafile copy
datafile copy file name=/u03/app/oracle/oradata/dup/test01.dbf RECID=4 STAMP=881607711

datafile 2 switched to datafile copy
input datafile copy RECID=1 STAMP=881607711 file name=/u03/app/oracle/oradata/dup/sysaux01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=2 STAMP=881607711 file name=/u03/app/oracle/oradata/dup/undotbs01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=3 STAMP=881607711 file name=/u03/app/oracle/oradata/dup/users01.dbf
datafile 5 switched to datafile copy
input datafile copy RECID=4 STAMP=881607711 file name=/u03/app/oracle/oradata/dup/test01.dbf

contents of Memory Script:
{
   Alter clone database open resetlogs;
}
executing Memory Script

database opened
Finished Duplicate Db at 2015-06-05 19:02:13

oracle 11g duplicate database基于备份复制数据库(一)

使用目标数据库的基于备份的复制,下面测试将原数据库使用备份复制到远程主机相同目录。
1.对原数据库生成备份

RMAN> backup as compressed backupset database plus archivelog;


Starting backup at 2015-06-05 16:44:19
current log archived
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=31 device type=DISK
channel ORA_DISK_1: starting compressed archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=5 RECID=1 STAMP=880996327
input archived log thread=1 sequence=6 RECID=2 STAMP=880996438
input archived log thread=1 sequence=7 RECID=3 STAMP=881014383
input archived log thread=1 sequence=8 RECID=4 STAMP=881014612
input archived log thread=1 sequence=9 RECID=5 STAMP=881015165
input archived log thread=1 sequence=10 RECID=13 STAMP=881233508
input archived log thread=1 sequence=11 RECID=14 STAMP=881233508
channel ORA_DISK_1: starting piece 1 at 2015-06-05 16:44:22
channel ORA_DISK_1: finished piece 1 at 2015-06-05 16:44:29
piece handle=/u02/backup/29q8o8v6_1_1 tag=TAG20150605T164421 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:07
channel ORA_DISK_1: starting compressed archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=1 RECID=12 STAMP=881233507
channel ORA_DISK_1: starting piece 1 at 2015-06-05 16:44:29
channel ORA_DISK_1: finished piece 1 at 2015-06-05 16:44:30
piece handle=/u02/backup/2aq8o8vd_1_1 tag=TAG20150605T164421 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting compressed archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=12 RECID=15 STAMP=881233508
channel ORA_DISK_1: starting piece 1 at 2015-06-05 16:44:30
channel ORA_DISK_1: finished piece 1 at 2015-06-05 16:44:31
piece handle=/u02/backup/2bq8o8ve_1_1 tag=TAG20150605T164421 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting compressed archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=2 RECID=21 STAMP=881233663
input archived log thread=1 sequence=3 RECID=22 STAMP=881233941
input archived log thread=1 sequence=4 RECID=23 STAMP=881234587
input archived log thread=1 sequence=5 RECID=24 STAMP=881235045
input archived log thread=1 sequence=6 RECID=25 STAMP=881235180
input archived log thread=1 sequence=7 RECID=26 STAMP=881272559
channel ORA_DISK_1: starting piece 1 at 2015-06-05 16:44:31
channel ORA_DISK_1: finished piece 1 at 2015-06-05 16:44:34
piece handle=/u02/backup/2cq8o8vf_1_1 tag=TAG20150605T164421 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
channel ORA_DISK_1: starting compressed archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=13 RECID=16 STAMP=881233508
input archived log thread=1 sequence=14 RECID=17 STAMP=881233508
input archived log thread=1 sequence=15 RECID=18 STAMP=881233508
input archived log thread=1 sequence=16 RECID=19 STAMP=881233508
input archived log thread=1 sequence=17 RECID=20 STAMP=881233508
input archived log thread=1 sequence=18 RECID=11 STAMP=881232587
input archived log thread=1 sequence=19 RECID=9 STAMP=881232587
input archived log thread=1 sequence=20 RECID=10 STAMP=881232587
channel ORA_DISK_1: starting piece 1 at 2015-06-05 16:44:34
channel ORA_DISK_1: finished piece 1 at 2015-06-05 16:44:35
piece handle=/u02/backup/2dq8o8vi_1_1 tag=TAG20150605T164421 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting compressed archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=8 RECID=27 STAMP=881273112
input archived log thread=1 sequence=9 RECID=28 STAMP=881273363
input archived log thread=1 sequence=10 RECID=29 STAMP=881274168
input archived log thread=1 sequence=11 RECID=30 STAMP=881309835
input archived log thread=1 sequence=12 RECID=31 STAMP=881310058
input archived log thread=1 sequence=13 RECID=32 STAMP=881310212
input archived log thread=1 sequence=14 RECID=33 STAMP=881396520
input archived log thread=1 sequence=15 RECID=34 STAMP=881534563
input archived log thread=1 sequence=16 RECID=35 STAMP=881570186
input archived log thread=1 sequence=17 RECID=36 STAMP=881577860
input archived log thread=1 sequence=18 RECID=37 STAMP=881578662
input archived log thread=1 sequence=19 RECID=38 STAMP=881579588
input archived log thread=1 sequence=20 RECID=39 STAMP=881582326
input archived log thread=1 sequence=21 RECID=40 STAMP=881594537
input archived log thread=1 sequence=22 RECID=41 STAMP=881599459
channel ORA_DISK_1: starting piece 1 at 2015-06-05 16:44:36
channel ORA_DISK_1: finished piece 1 at 2015-06-05 16:44:51
piece handle=/u02/backup/2eq8o8vk_1_1 tag=TAG20150605T164421 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:15
Finished backup at 2015-06-05 16:44:51

Starting backup at 2015-06-05 16:44:51
using channel ORA_DISK_1
channel ORA_DISK_1: starting compressed full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u03/app/oracle/oradata/db/system01.dbf
input datafile file number=00002 name=/u03/app/oracle/oradata/db/sysaux01.dbf
input datafile file number=00003 name=/u03/app/oracle/oradata/db/undotbs01.dbf
input datafile file number=00005 name=/u03/app/oracle/oradata/db/test01.dbf
input datafile file number=00004 name=/u03/app/oracle/oradata/db/users01.dbf
channel ORA_DISK_1: starting piece 1 at 2015-06-05 16:44:52
channel ORA_DISK_1: finished piece 1 at 2015-06-05 16:46:37
piece handle=/u02/backup/2fq8o904_1_1 tag=TAG20150605T164451 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:01:45
Finished backup at 2015-06-05 16:46:37

Starting backup at 2015-06-05 16:46:37
current log archived
using channel ORA_DISK_1
channel ORA_DISK_1: starting compressed archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=23 RECID=42 STAMP=881599598
channel ORA_DISK_1: starting piece 1 at 2015-06-05 16:46:39
channel ORA_DISK_1: finished piece 1 at 2015-06-05 16:46:40
piece handle=/u02/backup/2gq8o93f_1_1 tag=TAG20150605T164639 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 2015-06-05 16:46:40

Starting Control File and SPFILE Autobackup at 2015-06-05 16:46:40
piece handle=/u02/backup/c-1644809111-20150605-00 comment=NONE
Finished Control File and SPFILE Autobackup at 2015-06-05 16:46:44

RMAN> list backup;


List of Backup Sets
===================


BS Key  Size       Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ -------------------
16127   946.50K    DISK        00:00:00     2015-06-05 16:44:29
        BP Key: 16133   Status: AVAILABLE  Compressed: YES  Tag: TAG20150605T164421
        Piece Name: /u02/backup/2aq8o8vd_1_1

  List of Archived Logs in backup set 16127
  Thrd Seq     Low SCN    Low Time            Next SCN   Next Time
  ---- ------- ---------- ------------------- ---------- ---------
  1    1       703711     2015-06-01 10:49:47 704659     2015-06-01 11:05:07

BS Key  Size       Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ -------------------
16129   5.37M      DISK        00:00:01     2015-06-05 16:44:32
        BP Key: 16135   Status: AVAILABLE  Compressed: YES  Tag: TAG20150605T164421
        Piece Name: /u02/backup/2cq8o8vf_1_1

  List of Archived Logs in backup set 16129
  Thrd Seq     Low SCN    Low Time            Next SCN   Next Time
  ---- ------- ---------- ------------------- ---------- ---------
  1    2       704659     2015-06-01 11:05:07 705159     2015-06-01 11:07:43
  1    3       705159     2015-06-01 11:07:43 705443     2015-06-01 11:12:21
  1    4       705443     2015-06-01 11:12:21 707134     2015-06-01 11:23:07
  1    5       707134     2015-06-01 11:23:07 707879     2015-06-01 11:30:45
  1    6       707879     2015-06-01 11:30:45 707956     2015-06-01 11:33:00
  1    7       707956     2015-06-01 11:33:00 739261     2015-06-01 21:55:54

BS Key  Size       Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ -------------------
16131   25.64M     DISK        00:00:08     2015-06-05 16:44:44
        BP Key: 16137   Status: AVAILABLE  Compressed: YES  Tag: TAG20150605T164421
        Piece Name: /u02/backup/2eq8o8vk_1_1

  List of Archived Logs in backup set 16131
  Thrd Seq     Low SCN    Low Time            Next SCN   Next Time
  ---- ------- ---------- ------------------- ---------- ---------
  1    8       739261     2015-06-01 21:55:54 746801     2015-06-01 22:05:12
  1    9       746801     2015-06-01 22:05:12 750015     2015-06-01 22:09:21
  1    10      750015     2015-06-01 22:09:21 751675     2015-06-01 22:22:48
  1    11      751675     2015-06-01 22:22:48 773357     2015-06-02 08:17:13
  1    12      773357     2015-06-02 08:17:13 773904     2015-06-02 08:20:58
  1    13      773904     2015-06-02 08:20:58 773991     2015-06-02 08:23:32
  1    14      773991     2015-06-02 08:23:32 811036     2015-06-03 08:21:54
  1    15      811036     2015-06-03 08:21:54 848751     2015-06-04 22:42:38
  1    16      848751     2015-06-04 22:42:38 878559     2015-06-05 08:36:20
  1    17      878559     2015-06-05 08:36:20 882947     2015-06-05 10:44:20
  1    18      882947     2015-06-05 10:44:20 883808     2015-06-05 10:57:41
  1    19      883808     2015-06-05 10:57:41 884702     2015-06-05 11:13:08
  1    20      884702     2015-06-05 11:13:08 886070     2015-06-05 11:58:46
  1    21      886070     2015-06-05 11:58:46 892378     2015-06-05 15:22:17
  1    22      892378     2015-06-05 15:22:17 894752     2015-06-05 16:44:19

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ -------------------
16184   Full    271.73M    DISK        00:01:43     2015-06-05 16:46:35
        BP Key: 16200   Status: AVAILABLE  Compressed: YES  Tag: TAG20150605T164451
        Piece Name: /u02/backup/2fq8o904_1_1
  List of Datafiles in backup set 16184
  File LV Type Ckp SCN    Ckp Time            Name
  ---- -- ---- ---------- ------------------- ----
  1       Full 894791     2015-06-05 16:44:52 /u03/app/oracle/oradata/db/system01.dbf
  2       Full 894791     2015-06-05 16:44:52 /u03/app/oracle/oradata/db/sysaux01.dbf
  3       Full 894791     2015-06-05 16:44:52 /u03/app/oracle/oradata/db/undotbs01.dbf
  4       Full 894791     2015-06-05 16:44:52 /u03/app/oracle/oradata/db/users01.dbf
  5       Full 894791     2015-06-05 16:44:52 /u03/app/oracle/oradata/db/test01.dbf

BS Key  Size       Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ -------------------
16213   7.50K      DISK        00:00:00     2015-06-05 16:46:39
        BP Key: 16219   Status: AVAILABLE  Compressed: YES  Tag: TAG20150605T164639
        Piece Name: /u02/backup/2gq8o93f_1_1

  List of Archived Logs in backup set 16213
  Thrd Seq     Low SCN    Low Time            Next SCN   Next Time
  ---- ------- ---------- ------------------- ---------- ---------
  1    23      894752     2015-06-05 16:44:19 894834     2015-06-05 16:46:37

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ -------------------
16228   Full    9.48M      DISK        00:00:02     2015-06-05 16:46:43
        BP Key: 16230   Status: AVAILABLE  Compressed: NO  Tag: TAG20150605T164641
        Piece Name: /u02/backup/c-1644809111-20150605-00
  SPFILE Included: Modification time: 2015-06-05 16:01:17
  SPFILE db_unique_name: DB
  Control File Included: Ckp SCN: 894861       Ckp time: 2015-06-05 16:46:41

2.将备份文件传输到目的主机上

[oracle11@jingyong1 backup]$ scp oracle11@192.168.56.2:/u02/backup/* /u02/backup/
oracle11@192.168.56.2's password:
29q8o8v6_1_1                                                                                                                         100%   17MB  16.8MB/s   00:01
2aq8o8vd_1_1                                                                                                                         100%  947KB 947.0KB/s   00:00
2bq8o8ve_1_1                                                                                                                         100% 2916KB   2.9MB/s   00:00
2cq8o8vf_1_1                                                                                                                         100% 5504KB   5.4MB/s   00:01
2dq8o8vi_1_1                                                                                                                         100% 1992KB   1.9MB/s   00:00
2eq8o8vk_1_1                                                                                                                         100%   26MB  12.8MB/s   00:02
2fq8o904_1_1                                                                                                                         100%  272MB   8.5MB/s   00:32
2gq8o93f_1_1                                                                                                                         100% 8192     8.0KB/s   00:00
c-1644809111-20150605-00                                                                                                             100% 9728KB   9.5MB/s   00:00
[oracle11@jingyong1 backup]$ ls -lrt
total 343140
-rw-r----- 1 oracle11 oinstall   2985472 Jun  5 17:07 2bq8o8ve_1_1
-rw-r----- 1 oracle11 oinstall    969728 Jun  5 17:07 2aq8o8vd_1_1
-rw-r----- 1 oracle11 oinstall  17567232 Jun  5 17:07 29q8o8v6_1_1
-rw-r----- 1 oracle11 oinstall   2039296 Jun  5 17:07 2dq8o8vi_1_1
-rw-r----- 1 oracle11 oinstall   5636096 Jun  5 17:07 2cq8o8vf_1_1
-rw-r----- 1 oracle11 oinstall  26888192 Jun  5 17:07 2eq8o8vk_1_1
-rw-r----- 1 oracle11 oinstall   9961472 Jun  5 17:07 c-1644809111-20150605-00
-rw-r----- 1 oracle11 oinstall      8192 Jun  5 17:07 2gq8o93f_1_1
-rw-r----- 1 oracle11 oinstall 284934144 Jun  5 17:07 2fq8o904_1_1

3.创建辅助实例的密码文件(这里辅助实例名为dup) ,在目的主机上为辅助实例创建密码文件可以有以下选项:
.手动创建密码文件,对于duplicate … from active database有额外的要求。必须使用SYS用户ID并且密码必须与原数据库的密码相匹配。当想要使用单独的密码来创建密码文件时因此可以启动辅助实例并使用它来连接原数据库。

.在执行duplicate … from active database命令时指定password file选项,在这种情况下,RMAN将原数据库的密码文件复制到目的主机上并且覆盖辅助实例已经存在的密码文件。如果原数据库密码文件有多个密码且你想让它们在副本数据库中使用时这种技术是非常有用的。

[oracle11@jingyong1 dbs]$ orapwd file=/u03/app/oracle/11.2.0/db/dbs/orapwdup password=system entries=10;

[oracle11@jingyong1 dbs]$ ls -lrt orapwdup
-rw-r----- 1 oracle11 oinstall 2560 Jun  5 09:40 orapwdup

4.创建辅助实例网络连接,修改监听文件,使用静态监听来监听辅助实例

[oracle11@jingyong1 admin]$ vi listener.ora


# listener.ora Network Configuration File: /u03/app/oracle/11.2.0/db/network/admin/listener.ora
# Generated by Oracle configuration tools.

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

SID_LIST_LISTENER =
  (SID_LIST =

    (SID_DESC =
     (SID_NAME = dup)
      (ORACLE_HOME =/u03/app/oracle/11.2.0/db)
    )
  )

[oracle11@jingyong1 admin]$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 05-JUN-2015 11:25:35

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

Starting /u03/app/oracle/11.2.0/db/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.4.0 - Production
System parameter file is /u03/app/oracle/11.2.0/db/network/admin/listener.ora
Log messages written to /u03/app/oracle/diag/tnslsnr/jingyong1/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=jingyong1)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=jingyong1)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date                05-JUN-2015 11:25:35
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u03/app/oracle/11.2.0/db/network/admin/listener.ora
Listener Log File         /u03/app/oracle/diag/tnslsnr/jingyong1/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=jingyong1)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "cs" has 1 instance(s).
  Instance "cs", status UNKNOWN, has 1 handler(s) for this service...
Service "dup" has 1 instance(s).
  Instance "dup", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

给辅助实例增加网络服务名

[oracle11@jingyong1 admin]$ vi tnsnames.ora
# tnsnames.ora Network Configuration File: /u03/app/oracle/11.2.0/db/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

dup =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.11)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = dup)
      (UR = A)
    )
  )

5.创建辅助实例的参数文件,初始化参数文件的目录和内容依赖于给复制文件命名选择的策略。可以选择建议的技术来对原主机和目的主机使用相同的命名策略。因此对于Oracle RAC环境,对于原主机和目的主机可以使用相同的ORACLE_SID。在参数文件中将db_name设置为任意值,db_name是唯一必须设置的参数。创建参数文件有以下选项:
.为辅助实例来创建文本参数文件,初始化参数文件的存储目录是在主机上操作系统特定的缺省目录。例如,在Linux和UNIX中缺省参数文件名是ORACLE_HOME/dbs/initORACLE_SID.ora,在Windows平台上参数文件名是ORACLE_HOME\database\initORACLE_SID.ora

.在执行duplicate命令时指定spfile子句。duplicate … spfile技术最简单,因为在执行复制时RMAN自动将原数据库的spfile文件复制到辅助实例或从备份中还原spfile文件。如果在辅助实例上存在spfile文件,那么RMAN就会覆盖它。

[oracle11@jingyong1 dbs]$ vi initdup.ora
db_name=dup
db_unique_name=dup
control_files= /u03/app/oracle/oradata/db/control01.ctl
remote_login_passwordfile=exclusive
compatible = 11.2.0.4.0
db_block_size=8192
sga_target=300M
sga_max_size=300M
pga_aggregate_target=32M

6.启动辅助实例,启动SQL*Plus并使用sysdba权限连接到辅助实例。将辅助实例启动到nomount状态(如果参数文件在缺省目录中startup命令不需要pfile参数)。注意:确保辅助实例使用文本参数文件来启动而不是SPFILE参数文件。不要创建控制文件或试图mount或open辅助实例。

[oracle11@jingyong1 dbs]$ export ORACLE_SID=dup
[oracle11@jingyong1 dbs]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Fri Jun 5 09:58:16 2015

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

Connected to an idle instance.

SQL> startup nomount
ORACLE instance started.

Total System Global Area  313860096 bytes
Fixed Size                  1364340 bytes
Variable Size             104861324 bytes
Database Buffers          201326592 bytes
Redo Buffers                6307840 bytes

7.在目标主机(运行被复制数据库的主机)配置辅助实例的网络服务名

[oracle11@oracle11g admin]$ vi tnsnames.ora
dup =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.56.11)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME =dup)
      (UR=A)
    )
  )

[oracle11@oracle11g admin]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.4.0 Production on Fri Jun 5 10:05:14 2015

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

SQL> conn sys/system@dup as sysdba
Connected.

8.加载或打开目标数据库,如果RMAN连接到原数据库作为目标数据库,那么原数据库为了执行复制必须设置为合适的状态。如果原数据库实例没有mount或open,那么将原数据库mount或open。如果执行active database复制,那么确保满足下面额外的条件:
-如果原数据库open,那么必须启用归档
-如果原数据库没有open,那么数据库不需要执行实例恢复
由于原数据库启用了归档所以可以将原数据库启动到open状态


[oracle11@oracle11g ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Fri Jun 5 08:35:45 2015

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

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area  422670336 bytes
Fixed Size                  1365068 bytes
Variable Size             310381492 bytes
Database Buffers          104857600 bytes
Redo Buffers                6066176 bytes
Database mounted.
Database opened.

9.执行duplicate命令,如果没有配置自动通道,那么至少手动分配一个辅助实例。给duplicate命令指定nofilenamecheck参数。如果是使用PFILE参数文件启动辅助实例需要指定pfile参数文件,且pfile参数文件必须存储在运行RMAN执行复制的主机上。这里辅助实例使用SPFILE参数文件来启动,并使用自动通道和指定nofilenamecheck选项:

[oracle11@oracle11g ~]$ rman target sys/system@db catalog rman/rman@cs auxiliary sys/system@dup

Recovery Manager: Release 11.2.0.4.0 - Production on Fri Jun 5 17:50:46 2015

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

connected to target database: DB (DBID=1644809111)
connected to recovery catalog database
connected to auxiliary database: DUP (not mounted)

RMAN>

RMAN> duplicate target database  to dup   until time '2015-06-05 16:46:37'  nofilenamecheck;

Starting Duplicate Db at 2015-06-05 17:50:49
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=20 device type=DISK

contents of Memory Script:
{
   sql clone "create spfile from memory";
}
executing Memory Script

sql statement: create spfile from memory

contents of Memory Script:
{
   shutdown clone immediate;
   startup clone nomount;
}
executing Memory Script

Oracle instance shut down

connected to auxiliary database (not started)
Oracle instance started

Total System Global Area     313860096 bytes

Fixed Size                     1364340 bytes
Variable Size                109055628 bytes
Database Buffers             197132288 bytes
Redo Buffers                   6307840 bytes

contents of Memory Script:
{
   set until scn  894791;
   sql clone "alter system set  db_name =
 ''DB'' comment=
 ''Modified by RMAN duplicate'' scope=spfile";
   sql clone "alter system set  db_unique_name =
 ''DUP'' comment=
 ''Modified by RMAN duplicate'' scope=spfile";
   shutdown clone immediate;
   startup clone force nomount
   restore clone primary controlfile;
   alter clone database mount;
}
executing Memory Script

executing command: SET until clause

sql statement: alter system set  db_name =  ''DB'' comment= ''Modified by RMAN duplicate'' scope=spfile

sql statement: alter system set  db_unique_name =  ''DUP'' comment= ''Modified by RMAN duplicate'' scope=spfile

Oracle instance shut down

Oracle instance started

Total System Global Area     313860096 bytes

Fixed Size                     1364340 bytes
Variable Size                109055628 bytes
Database Buffers             197132288 bytes
Redo Buffers                   6307840 bytes

Starting restore at 2015-06-05 17:51:06
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=18 device type=DISK

channel ORA_AUX_DISK_1: restoring control file
channel ORA_AUX_DISK_1: copied control file copy
input file name=/u03/app/oracle/11.2.0/db/dbs/snapcf_db.f
output file name=/u03/app/oracle/oradata/db/control01.ctl
Finished restore at 2015-06-05 17:51:08

database mounted

contents of Memory Script:
{
   set until scn  894791;
   set newname for datafile  1 to
 "/u03/app/oracle/oradata/db/system01.dbf";
   set newname for datafile  2 to
 "/u03/app/oracle/oradata/db/sysaux01.dbf";
   set newname for datafile  3 to
 "/u03/app/oracle/oradata/db/undotbs01.dbf";
   set newname for datafile  4 to
 "/u03/app/oracle/oradata/db/users01.dbf";
   set newname for datafile  5 to
 "/u03/app/oracle/oradata/db/test01.dbf";
   restore
   clone database
   ;
}
executing Memory Script

executing command: SET until clause

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

Starting restore at 2015-06-05 17:51:12
using channel ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00001 to /u03/app/oracle/oradata/db/system01.dbf
channel ORA_AUX_DISK_1: restoring datafile 00002 to /u03/app/oracle/oradata/db/sysaux01.dbf
channel ORA_AUX_DISK_1: restoring datafile 00003 to /u03/app/oracle/oradata/db/undotbs01.dbf
channel ORA_AUX_DISK_1: restoring datafile 00004 to /u03/app/oracle/oradata/db/users01.dbf
channel ORA_AUX_DISK_1: restoring datafile 00005 to /u03/app/oracle/oradata/db/test01.dbf
channel ORA_AUX_DISK_1: reading from backup piece /u02/backup/2fq8o904_1_1
channel ORA_AUX_DISK_1: piece handle=/u02/backup/2fq8o904_1_1 tag=TAG20150605T164451
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:02:15
Finished restore at 2015-06-05 17:53:29

contents of Memory Script:
{
   switch clone datafile all;
}
executing Memory Script

datafile 1 switched to datafile copy
input datafile copy RECID=7 STAMP=881603617 file name=/u03/app/oracle/oradata/db/system01.dbf
datafile 2 switched to datafile copy
input datafile copy RECID=8 STAMP=881603617 file name=/u03/app/oracle/oradata/db/sysaux01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=9 STAMP=881603617 file name=/u03/app/oracle/oradata/db/undotbs01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=10 STAMP=881603617 file name=/u03/app/oracle/oradata/db/users01.dbf
datafile 5 switched to datafile copy
input datafile copy RECID=11 STAMP=881603617 file name=/u03/app/oracle/oradata/db/test01.dbf
Oracle instance started

Total System Global Area     313860096 bytes

Fixed Size                     1364340 bytes
Variable Size                109055628 bytes
Database Buffers             197132288 bytes
Redo Buffers                   6307840 bytes

contents of Memory Script:
{
   sql clone "alter system set  db_name =
 ''DUP'' comment=
 ''Reset to original value by RMAN'' scope=spfile";
   sql clone "alter system reset  db_unique_name scope=spfile";
   shutdown clone immediate;
   startup clone nomount;
}
executing Memory Script

sql statement: alter system set  db_name =  ''DUP'' comment= ''Reset to original value by RMAN'' scope=spfile

sql statement: alter system reset  db_unique_name scope=spfile

Oracle instance shut down

connected to auxiliary database (not started)
Oracle instance started

Total System Global Area     313860096 bytes

Fixed Size                     1364340 bytes
Variable Size                109055628 bytes
Database Buffers             197132288 bytes
Redo Buffers                   6307840 bytes
sql statement: CREATE CONTROLFILE REUSE SET DATABASE "DUP" RESETLOGS ARCHIVELOG
  MAXLOGFILES     16
  MAXLOGMEMBERS      3
  MAXDATAFILES      100
  MAXINSTANCES     8
  MAXLOGHISTORY      292
 LOGFILE
  GROUP   1 ( '/u03/app/oracle/oradata/db/redo01.log' ) SIZE 50 M  REUSE,
  GROUP   2 ( '/u03/app/oracle/oradata/db/redo02.log' ) SIZE 50 M  REUSE,
  GROUP   3 ( '/u03/app/oracle/oradata/db/redo03.log' ) SIZE 50 M  REUSE
 DATAFILE
  '/u03/app/oracle/oradata/db/system01.dbf'
 CHARACTER SET ZHS16GBK


contents of Memory Script:
{
   set newname for tempfile  1 to
 "/u03/app/oracle/oradata/db/temp01.dbf";
   switch clone tempfile all;
   catalog clone datafilecopy  "/u03/app/oracle/oradata/db/sysaux01.dbf",
 "/u03/app/oracle/oradata/db/undotbs01.dbf",
 "/u03/app/oracle/oradata/db/users01.dbf",
 "/u03/app/oracle/oradata/db/test01.dbf";
   switch clone datafile all;
}
executing Memory Script

executing command: SET NEWNAME

renamed tempfile 1 to /u03/app/oracle/oradata/db/temp01.dbf in control file

cataloged datafile copy
datafile copy file name=/u03/app/oracle/oradata/db/sysaux01.dbf RECID=1 STAMP=881603636
cataloged datafile copy
datafile copy file name=/u03/app/oracle/oradata/db/undotbs01.dbf RECID=2 STAMP=881603636
cataloged datafile copy
datafile copy file name=/u03/app/oracle/oradata/db/users01.dbf RECID=3 STAMP=881603636
cataloged datafile copy
datafile copy file name=/u03/app/oracle/oradata/db/test01.dbf RECID=4 STAMP=881603636

datafile 2 switched to datafile copy
input datafile copy RECID=1 STAMP=881603636 file name=/u03/app/oracle/oradata/db/sysaux01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=2 STAMP=881603636 file name=/u03/app/oracle/oradata/db/undotbs01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=3 STAMP=881603636 file name=/u03/app/oracle/oradata/db/users01.dbf
datafile 5 switched to datafile copy
input datafile copy RECID=4 STAMP=881603636 file name=/u03/app/oracle/oradata/db/test01.dbf

contents of Memory Script:
{
   Alter clone database open resetlogs;
}
executing Memory Script

database opened
Finished Duplicate Db at 2015-06-05 17:54:11

oracle 11g duplicate from active database 复制数据库(四)

下面介绍将数据库复制到相同主机相同目录结构的操作步骤
1.创建辅助实例的密码文件(这里辅助实例名为tt) ,在目的主机上为辅助实例创建密码文件可以有以下选项:
.手动创建密码文件,对于duplicate … from active database有额外的要求。必须使用SYS用户ID并且密码必须与原数据库的密码相匹配。当想要使用单独的密码来创建密码文件时因此可以启动辅助实例并使用它来连接原数据库。

.在执行duplicate … from active database命令时指定password file选项,在这种情况下,RMAN将原数据库的密码文件复制到目的主机上并且覆盖辅助实例已经存在的密码文件。如果原数据库密码文件有多个密码且你想让它们在副本数据库中使用时这种技术是非常有用的。

[oracle11@oracle11g dbs]$ orapwd file=/u03/app/oracle/11.2.0/db/dbs/orapwtt password=system entries=10;

2.创建辅助实例网络连接,修改监听文件,使用静态监听来监听辅助实例并启动监听

[oracle11@jingyong1 admin]$ vi listener.ora


# listener.ora Network Configuration File: /u03/app/oracle/11.2.0/db/network/admin/listener.ora
# Generated by Oracle configuration tools.

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

SID_LIST_LISTENER =
  (SID_LIST =

    (SID_DESC =
     (SID_NAME = tt)
      (ORACLE_HOME =/u03/app/oracle/11.2.0/db)
    )
  )

[oracle11@oracle11g admin]$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 05-JUN-2015 14:40:20

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

Starting /u03/app/oracle/11.2.0/db/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.4.0 - Production
System parameter file is /u03/app/oracle/11.2.0/db/network/admin/listener.ora
Log messages written to /u03/app/oracle/diag/tnslsnr/oracle11g/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle11g)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle11g)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date                05-JUN-2015 14:40:20
Uptime                    0 days 0 hr. 0 min. 20 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u03/app/oracle/11.2.0/db/network/admin/listener.ora
Listener Log File         /u03/app/oracle/diag/tnslsnr/oracle11g/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle11g)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "db" has 1 instance(s).
  Instance "db", status UNKNOWN, has 1 handler(s) for this service...
Service "test" has 1 instance(s).
  Instance "tt", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

给辅助实例增加网络服务名

[oracle11@jingyong1 admin]$ vi tnsnames.ora
# tnsnames.ora Network Configuration File: /u03/app/oracle/11.2.0/db/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

tt =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.2)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = tt)
      (UR = A)
    )
  )

3.创建辅助实例的参数文件,初始化参数文件的目录和内容依赖于给复制文件命名选择的策略。可以选择建议的技术来对原主机和目的主机使用相同的命名策略。因此对于Oracle RAC环境,对于原主机和目的主机可以使用相同的ORACLE_SID。在参数文件中将db_name设置为任意值,db_name是唯一必须设置的参数。创建参数文件有以下选项:
.为辅助实例来创建文本参数文件,初始化参数文件的存储目录是在主机上操作系统特定的缺省目录。例如,在Linux和UNIX中缺省参数文件名是ORACLE_HOME/dbs/initORACLE_SID.ora,在Windows平台上参数文件名是ORACLE_HOME\database\initORACLE_SID.ora

.在执行duplicate命令时指定spfile子句。duplicate … spfile技术最简单,因为在执行复制时RMAN自动将原数据库的spfile文件复制到辅助实例或从备份中还原spfile文件。如果在辅助实例上存在spfile文件,那么RMAN就会覆盖它。

[oracle11@jingyong1 dbs]$ vi inittest.ora
db_name=test
db_unique_name=test
control_files= /u03/app/oracle/oradata/test/control01.ctl
remote_login_passwordfile=exclusive
compatible = 11.2.0.4.0
db_block_size=8192
sga_target=300M
sga_max_size=300M
pga_aggregate_target=32M
db_file_name_convert=('/u03/app/oracle/oradata/db/','/u03/app/oracle/oradata/test/')
log_file_name_convert=('/u03/app/oracle/oradata/db/','/u03/app/oracle/oradata/test/')

4.启动辅助实例,启动SQL*Plus并使用sysdba权限连接到辅助实例。将辅助实例启动到nomount状态(如果参数文件在缺省目录中startup命令不需要pfile参数)。注意:确保辅助实例使用文本参数文件来启动而不是SPFILE参数文件。不要创建控制文件或试图mount或open辅助实例。

[oracle11@oracle11g dbs]$ export ORACLE_SID=test
[oracle11@oracle11g dbs]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Fri Jun 5 15:01:58 2015

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

Connected to an idle instance.

SQL> startup nomount
ORACLE instance started.

Total System Global Area  313860096 bytes
Fixed Size                  1364340 bytes
Variable Size             104861324 bytes
Database Buffers          201326592 bytes
Redo Buffers                6307840 bytes

5.加载或打开目标数据库,如果RMAN连接到原数据库作为目标数据库,那么原数据库为了执行复制必须设置为合适的状态。如果原数据库实例没有mount或open,那么将原数据库mount或open。如果执行active database复制,那么确保满足下面额外的条件:
-如果原数据库open,那么必须启用归档
-如果原数据库没有open,那么数据库不需要执行实例恢复
由于原数据库启用了归档所以可以将原数据库启动到open状态
[oracle11@jingyong1 dbs]$ export ORACLE_SID=db
[oracle11@jingyong1 dbs]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Fri Jun 5 11:36:03 2015

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

Connected to an idle instance.

SQL> startup nomount
ORACLE instance started.

Total System Global Area  150654976 bytes
Fixed Size                  1363216 bytes
Variable Size              96469744 bytes
Database Buffers           50331648 bytes
Redo Buffers                2490368 bytes

6.使用duplicate命令来执行数据库复制。因为我们这里复制后数据库名为dup与原数据库名不相同,所以不用指定spfile子句从原数据库复制SPFILE参数文件。因为复制后的副本数据库与原数据库的文件拥有相同文件名,所以在执行duplicate命令时要使用nofilenamecheck选项。如果目录不同,在pfile里加这个2个参数进行转换:db_file_name_convert,log_file_name_convert。如果指定password file选项那么RMAN将会从原数据库复制密码文件到目的主机上。RMAN会自动复制SPFILE参数文件到目的主机,使用SPFILE文件来启动辅助实例,复制所有需要的数据库文件和归档重做日志文件到目的主机,并恢复数据库。最终,RMAN将使用resetlogs选项来创建联机重做日志。

[oracle11@oracle11g ~]$ rman target sys/system@db catalog rman/rman@cs auxiliary sys/system@tt

Recovery Manager: Release 11.2.0.4.0 - Production on Fri Jun 5 15:18:29 2015

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

connected to target database: DB (DBID=1644809111)
connected to recovery catalog database
connected to auxiliary database: TT (not mounted)

RMAN> duplicate target database to tt from active database nofilenamecheck;

Starting Duplicate Db at 2015-06-05 15:19:02
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=19 device type=DISK

contents of Memory Script:
{
   sql clone "create spfile from memory";
}
executing Memory Script

sql statement: create spfile from memory

contents of Memory Script:
{
   shutdown clone immediate;
   startup clone nomount;
}
executing Memory Script

Oracle instance shut down

connected to auxiliary database (not started)
Oracle instance started

Total System Global Area     313860096 bytes

Fixed Size                     1364340 bytes
Variable Size                109055628 bytes
Database Buffers             197132288 bytes
Redo Buffers                   6307840 bytes

contents of Memory Script:
{
   sql clone "alter system set  db_name =
 ''DB'' comment=
 ''Modified by RMAN duplicate'' scope=spfile";
   sql clone "alter system set  db_unique_name =
 ''TT'' comment=
 ''Modified by RMAN duplicate'' scope=spfile";
   shutdown clone immediate;
   startup clone force nomount
   backup as copy current controlfile auxiliary format  '/u03/app/oracle/oradata/tt/control01.ctl';
   alter clone database mount;
}
executing Memory Script

sql statement: alter system set  db_name =  ''DB'' comment= ''Modified by RMAN duplicate'' scope=spfile

sql statement: alter system set  db_unique_name =  ''TT'' comment= ''Modified by RMAN duplicate'' scope=spfile

Oracle instance shut down

Oracle instance started

Total System Global Area     313860096 bytes

Fixed Size                     1364340 bytes
Variable Size                109055628 bytes
Database Buffers             197132288 bytes
Redo Buffers                   6307840 bytes

Starting backup at 2015-06-05 15:19:16
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=33 device type=DISK
channel ORA_DISK_1: starting datafile copy
copying current control file
output file name=/u03/app/oracle/11.2.0/db/dbs/snapcf_db.f tag=TAG20150605T151916 RECID=6 STAMP=881594358
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
Finished backup at 2015-06-05 15:19:20

database mounted

contents of Memory Script:
{
   set newname for datafile  1 to
 "/u03/app/oracle/oradata/tt/system01.dbf";
   set newname for datafile  2 to
 "/u03/app/oracle/oradata/tt/sysaux01.dbf";
   set newname for datafile  3 to
 "/u03/app/oracle/oradata/tt/undotbs01.dbf";
   set newname for datafile  4 to
 "/u03/app/oracle/oradata/tt/users01.dbf";
   set newname for datafile  5 to
 "/u03/app/oracle/oradata/tt/test01.dbf";
   backup as copy reuse
   datafile  1 auxiliary format
 "/u03/app/oracle/oradata/tt/system01.dbf"   datafile
 2 auxiliary format
 "/u03/app/oracle/oradata/tt/sysaux01.dbf"   datafile
 3 auxiliary format
 "/u03/app/oracle/oradata/tt/undotbs01.dbf"   datafile
 4 auxiliary format
 "/u03/app/oracle/oradata/tt/users01.dbf"   datafile
 5 auxiliary format
 "/u03/app/oracle/oradata/tt/test01.dbf"   ;
   sql 'alter system archive log current';
}
executing Memory Script

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

Starting backup at 2015-06-05 15:19:25
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile file number=00001 name=/u03/app/oracle/oradata/db/system01.dbf
output file name=/u03/app/oracle/oradata/tt/system01.dbf tag=TAG20150605T151925
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:01:37
channel ORA_DISK_1: starting datafile copy
input datafile file number=00002 name=/u03/app/oracle/oradata/db/sysaux01.dbf
output file name=/u03/app/oracle/oradata/tt/sysaux01.dbf tag=TAG20150605T151925
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:55
channel ORA_DISK_1: starting datafile copy
input datafile file number=00003 name=/u03/app/oracle/oradata/db/undotbs01.dbf
output file name=/u03/app/oracle/oradata/tt/undotbs01.dbf tag=TAG20150605T151925
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07
channel ORA_DISK_1: starting datafile copy
input datafile file number=00005 name=/u03/app/oracle/oradata/db/test01.dbf
output file name=/u03/app/oracle/oradata/tt/test01.dbf tag=TAG20150605T151925
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07
channel ORA_DISK_1: starting datafile copy
input datafile file number=00004 name=/u03/app/oracle/oradata/db/users01.dbf
output file name=/u03/app/oracle/oradata/tt/users01.dbf tag=TAG20150605T151925
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
Finished backup at 2015-06-05 15:22:16

sql statement: alter system archive log current

contents of Memory Script:
{
   backup as copy reuse
   archivelog like  "/u03/archivelog/1_21_881232587.dbf" auxiliary format
 "/u03/app/oracle/11.2.0/db/dbs/arch1_21_881232587.dbf"   ;
   catalog clone archivelog  "/u03/app/oracle/11.2.0/db/dbs/arch1_21_881232587.dbf";
   switch clone datafile all;
}
executing Memory Script

Starting backup at 2015-06-05 15:22:19
using channel ORA_DISK_1
channel ORA_DISK_1: starting archived log copy
input archived log thread=1 sequence=21 RECID=40 STAMP=881594537
output file name=/u03/app/oracle/11.2.0/db/dbs/arch1_21_881232587.dbf RECID=0 STAMP=0
channel ORA_DISK_1: archived log copy complete, elapsed time: 00:00:01
Finished backup at 2015-06-05 15:22:20

cataloged archived log
archived log file name=/u03/app/oracle/11.2.0/db/dbs/arch1_21_881232587.dbf RECID=40 STAMP=881594540

datafile 1 switched to datafile copy
input datafile copy RECID=6 STAMP=881594541 file name=/u03/app/oracle/oradata/tt/system01.dbf
datafile 2 switched to datafile copy
input datafile copy RECID=7 STAMP=881594541 file name=/u03/app/oracle/oradata/tt/sysaux01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=8 STAMP=881594541 file name=/u03/app/oracle/oradata/tt/undotbs01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=9 STAMP=881594541 file name=/u03/app/oracle/oradata/tt/users01.dbf
datafile 5 switched to datafile copy
input datafile copy RECID=10 STAMP=881594541 file name=/u03/app/oracle/oradata/tt/test01.dbf

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

executing command: SET until clause

Starting recover at 2015-06-05 15:22:21
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=18 device type=DISK

starting media recovery

archived log for thread 1 with sequence 21 is already on disk as file /u03/app/oracle/11.2.0/db/dbs/arch1_21_881232587.dbf
archived log file name=/u03/app/oracle/11.2.0/db/dbs/arch1_21_881232587.dbf thread=1 sequence=21
media recovery complete, elapsed time: 00:00:01
Finished recover at 2015-06-05 15:22:25
Oracle instance started

Total System Global Area     313860096 bytes

Fixed Size                     1364340 bytes
Variable Size                109055628 bytes
Database Buffers             197132288 bytes
Redo Buffers                   6307840 bytes

contents of Memory Script:
{
   sql clone "alter system set  db_name =
 ''TT'' comment=
 ''Reset to original value by RMAN'' scope=spfile";
   sql clone "alter system reset  db_unique_name scope=spfile";
   shutdown clone immediate;
   startup clone nomount;
}
executing Memory Script

sql statement: alter system set  db_name =  ''TT'' comment= ''Reset to original value by RMAN'' scope=spfile

sql statement: alter system reset  db_unique_name scope=spfile

Oracle instance shut down

connected to auxiliary database (not started)
Oracle instance started

Total System Global Area     313860096 bytes

Fixed Size                     1364340 bytes
Variable Size                109055628 bytes
Database Buffers             197132288 bytes
Redo Buffers                   6307840 bytes
sql statement: CREATE CONTROLFILE REUSE SET DATABASE "TT" RESETLOGS ARCHIVELOG
  MAXLOGFILES     16
  MAXLOGMEMBERS      3
  MAXDATAFILES      100
  MAXINSTANCES     8
  MAXLOGHISTORY      292
 LOGFILE
  GROUP   1 ( '/u03/app/oracle/oradata/tt/redo01.log' ) SIZE 50 M  REUSE,
  GROUP   2 ( '/u03/app/oracle/oradata/tt/redo02.log' ) SIZE 50 M  REUSE,
  GROUP   3 ( '/u03/app/oracle/oradata/tt/redo03.log' ) SIZE 50 M  REUSE
 DATAFILE
  '/u03/app/oracle/oradata/tt/system01.dbf'
 CHARACTER SET ZHS16GBK


contents of Memory Script:
{
   set newname for tempfile  1 to
 "/u03/app/oracle/oradata/tt/temp01.dbf";
   switch clone tempfile all;
   catalog clone datafilecopy  "/u03/app/oracle/oradata/tt/sysaux01.dbf",
 "/u03/app/oracle/oradata/tt/undotbs01.dbf",
 "/u03/app/oracle/oradata/tt/users01.dbf",
 "/u03/app/oracle/oradata/tt/test01.dbf";
   switch clone datafile all;
}
executing Memory Script

executing command: SET NEWNAME

renamed tempfile 1 to /u03/app/oracle/oradata/tt/temp01.dbf in control file

cataloged datafile copy
datafile copy file name=/u03/app/oracle/oradata/tt/sysaux01.dbf RECID=1 STAMP=881594560
cataloged datafile copy
datafile copy file name=/u03/app/oracle/oradata/tt/undotbs01.dbf RECID=2 STAMP=881594560
cataloged datafile copy
datafile copy file name=/u03/app/oracle/oradata/tt/users01.dbf RECID=3 STAMP=881594560
cataloged datafile copy
datafile copy file name=/u03/app/oracle/oradata/tt/test01.dbf RECID=4 STAMP=881594560

datafile 2 switched to datafile copy
input datafile copy RECID=1 STAMP=881594560 file name=/u03/app/oracle/oradata/tt/sysaux01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=2 STAMP=881594560 file name=/u03/app/oracle/oradata/tt/undotbs01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=3 STAMP=881594560 file name=/u03/app/oracle/oradata/tt/users01.dbf
datafile 5 switched to datafile copy
input datafile copy RECID=4 STAMP=881594560 file name=/u03/app/oracle/oradata/tt/test01.dbf

contents of Memory Script:
{
   Alter clone database open resetlogs;
}
executing Memory Script

database opened
Finished Duplicate Db at 2015-06-05 15:23:02

oracle 11g duplicate from active database 复制数据库(三)

下面介绍将数据库复制到远程主机相同目录结构(且数据库名与原数据库名相同)的操作步骤
1.创建辅助实例的密码文件(这里辅助实例名为db) ,在目的主机上为辅助实例创建密码文件可以有以下选项:
.手动创建密码文件,对于duplicate … from active database有额外的要求。必须使用SYS用户ID并且密码必须与原数据库的密码相匹配。当想要使用单独的密码来创建密码文件时因此可以启动辅助实例并使用它来连接原数据库。

.在执行duplicate … from active database命令时指定password file选项,在这种情况下,RMAN将原数据库的密码文件复制到目的主机上并且覆盖辅助实例已经存在的密码文件。如果原数据库密码文件有多个密码且你想让它们在副本数据库中使用时这种技术是非常有用的。

[oracle11@jingyong1 dbs]$ orapwd file=/u03/app/oracle/11.2.0/db/dbs/orapwdb password=system entries=10;

2.创建辅助实例网络连接,修改监听文件,使用静态监听来监听辅助实例

[oracle11@jingyong1 admin]$ vi listener.ora


# listener.ora Network Configuration File: /u03/app/oracle/11.2.0/db/network/admin/listener.ora
# Generated by Oracle configuration tools.

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

SID_LIST_LISTENER =
  (SID_LIST =

    (SID_DESC =
     (SID_NAME = db)
      (ORACLE_HOME =/u03/app/oracle/11.2.0/db)
    )
  )
[oracle11@jingyong1 admin]$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 05-JUN-2015 11:25:35

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

Starting /u03/app/oracle/11.2.0/db/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.4.0 - Production
System parameter file is /u03/app/oracle/11.2.0/db/network/admin/listener.ora
Log messages written to /u03/app/oracle/diag/tnslsnr/jingyong1/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=jingyong1)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=jingyong1)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date                05-JUN-2015 11:25:35
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u03/app/oracle/11.2.0/db/network/admin/listener.ora
Listener Log File         /u03/app/oracle/diag/tnslsnr/jingyong1/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=jingyong1)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "cs" has 1 instance(s).
  Instance "cs", status UNKNOWN, has 1 handler(s) for this service...
Service "db" has 1 instance(s).
  Instance "db", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

给辅助实例增加网络服务名

[oracle11@jingyong1 admin]$ vi tnsnames.ora
# tnsnames.ora Network Configuration File: /u03/app/oracle/11.2.0/db/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

db =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.11)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = db)
      (UR = A)
    )
  )

3.创建辅助实例的参数文件,初始化参数文件的目录和内容依赖于给复制文件命名选择的策略。可以选择建议的技术来对原主机和目的主机使用相同的命名策略。因此对于Oracle RAC环境,对于原主机和目的主机可以使用相同的ORACLE_SID。在参数文件中将db_name设置为任意值,db_name是唯一必须设置的参数。创建参数文件有以下选项:
.为辅助实例来创建文本参数文件,初始化参数文件的存储目录是在主机上操作系统特定的缺省目录。例如,在Linux和UNIX中缺省参数文件名是ORACLE_HOME/dbs/initORACLE_SID.ora,在Windows平台上参数文件名是ORACLE_HOME\database\initORACLE_SID.ora

.在执行duplicate命令时指定spfile子句。duplicate … spfile技术最简单,因为在执行复制时RMAN自动将原数据库的spfile文件复制到辅助实例或从备份中还原spfile文件。如果在辅助实例上存在spfile文件,那么RMAN就会覆盖它。
[oracle11@jingyong1 dbs]$ vi initdb.ora
db_name=db

上面只设置了db_name参数,因为我们在复制时使用spfile选项来复制原数据库的SPFILE参数文件

4.启动辅助实例,启动SQL*Plus并使用sysdba权限连接到辅助实例。将辅助实例启动到nomount状态(如果参数文件在缺省目录中startup命令不需要pfile参数)。注意:确保辅助实例使用文本参数文件来启动而不是SPFILE参数文件。不要创建控制文件或试图mount或open辅助实例。

[oracle11@jingyong1 dbs]$ export ORACLE_SID=db
[oracle11@jingyong1 dbs]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Fri Jun 5 11:30:03 2015

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

Connected to an idle instance.

SQL> startup nomount
ORACLE instance started.

Total System Global Area  150654976 bytes
Fixed Size                  1363216 bytes
Variable Size              96469744 bytes
Database Buffers           50331648 bytes
Redo Buffers                2490368 bytes


5.在目标主机(运行被复制数据库的主机)配置辅助实例的网络服务名
[oracle11@oracle11g admin]$ vi tnsnames.ora
db =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.56.11)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME =db)
      (UR=A)
    )
  )

[oracle11@oracle11g admin]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.4.0 Production on Fri Jun 5 11:35:55 2015

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

SQL> conn sys/system@dest_db as sysdba
Connected.

6.加载或打开目标数据库,如果RMAN连接到原数据库作为目标数据库,那么原数据库为了执行复制必须设置为合适的状态。如果原数据库实例没有mount或open,那么将原数据库mount或open。如果执行active database复制,那么确保满足下面额外的条件:
-如果原数据库open,那么必须启用归档
-如果原数据库没有open,那么数据库不需要执行实例恢复
由于原数据库启用了归档所以可以将原数据库启动到open状态

[oracle11@jingyong1 dbs]$ export ORACLE_SID=db
[oracle11@jingyong1 dbs]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Fri Jun 5 11:36:03 2015

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

Connected to an idle instance.

SQL> startup nomount
ORACLE instance started.

Total System Global Area  150654976 bytes
Fixed Size                  1363216 bytes
Variable Size              96469744 bytes
Database Buffers           50331648 bytes
Redo Buffers                2490368 bytes

7.使用duplicate命令来执行数据库复制。因为我们这里复制后数据库名为dup与原数据库名不相同,所以不用指定spfile子句从原数据库复制SPFILE参数文件。因为复制后的副本数据库与原数据库的文件拥有相同文件名,所以在执行duplicate命令时要使用nofilenamecheck选项。如果目录不同,在pfile里加这个2个参数进行转换:db_file_name_convert,log_file_name_convert。如果指定password file选项那么RMAN将会从原数据库复制密码文件到目的主机上。RMAN会自动复制SPFILE参数文件到目的主机,使用SPFILE文件来启动辅助实例,复制所有需要的数据库文件和归档重做日志文件到目的主机,并恢复数据库。最终,RMAN将使用resetlogs选项来创建联机重做日志。

[oracle11@oracle11g ~]$ rman target sys/system@db catalog rman/rman@cs auxiliary sys/system@dest_db

Recovery Manager: Release 11.2.0.4.0 - Production on Fri Jun 5 11:55:56 2015

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

connected to target database: DB (DBID=1644809111)
connected to recovery catalog database
connected to auxiliary database: DB (not mounted)

RMAN> duplicate target database to db from active database password file spfile nofilenamecheck;

Starting Duplicate Db at 2015-06-05 11:56:10
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=19 device type=DISK

contents of Memory Script:
{
   backup as copy reuse
   targetfile  '/u03/app/oracle/11.2.0/db/dbs/orapwdb' auxiliary format
 '/u03/app/oracle/11.2.0/db/dbs/orapwdb'   targetfile
 '/u03/app/oracle/11.2.0/db/dbs/spfiledb.ora' auxiliary format
 '/u03/app/oracle/11.2.0/db/dbs/spfiledb.ora'   ;
   sql clone "alter system set spfile= ''/u03/app/oracle/11.2.0/db/dbs/spfiledb.ora''";
}
executing Memory Script

Starting backup at 2015-06-05 11:56:10
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=33 device type=DISK
Finished backup at 2015-06-05 11:56:13

sql statement: alter system set spfile= ''/u03/app/oracle/11.2.0/db/dbs/spfiledb.ora''

contents of Memory Script:
{
   sql clone "alter system set  db_name =
 ''DB'' comment=
 ''duplicate'' scope=spfile";
   shutdown clone immediate;
   startup clone nomount;
}
executing Memory Script

sql statement: alter system set  db_name =  ''DB'' comment= ''duplicate'' scope=spfile

Oracle instance shut down

connected to auxiliary database (not started)
Oracle instance started

Total System Global Area     422670336 bytes

Fixed Size                     1365068 bytes
Variable Size                318770100 bytes
Database Buffers              96468992 bytes
Redo Buffers                   6066176 bytes

contents of Memory Script:
{
   sql clone "alter system set  db_name =
 ''DB'' comment=
 ''Modified by RMAN duplicate'' scope=spfile";
   sql clone "alter system set  db_unique_name =
 ''DB'' comment=
 ''Modified by RMAN duplicate'' scope=spfile";
   shutdown clone immediate;
   startup clone force nomount
   backup as copy current controlfile auxiliary format  '/u03/app/oracle/oradata/db/control01.ctl';
   restore clone controlfile to  '/u03/app/oracle/fast_recovery_area/db/control02.ctl' from
 '/u03/app/oracle/oradata/db/control01.ctl';
   alter clone database mount;
}
executing Memory Script

sql statement: alter system set  db_name =  ''DB'' comment= ''Modified by RMAN duplicate'' scope=spfile

sql statement: alter system set  db_unique_name =  ''DB'' comment= ''Modified by RMAN duplicate'' scope=spfile

Oracle instance shut down

Oracle instance started

Total System Global Area     422670336 bytes

Fixed Size                     1365068 bytes
Variable Size                318770100 bytes
Database Buffers              96468992 bytes
Redo Buffers                   6066176 bytes

Starting backup at 2015-06-05 11:56:26
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
copying current control file
output file name=/u03/app/oracle/11.2.0/db/dbs/snapcf_db.f tag=TAG20150605T115626 RECID=5 STAMP=881582188
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
Finished backup at 2015-06-05 11:56:29

Starting restore at 2015-06-05 11:56:29
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=19 device type=DISK

channel ORA_AUX_DISK_1: copied control file copy
Finished restore at 2015-06-05 11:56:31

database mounted
RMAN-05538: WARNING: implicitly using DB_FILE_NAME_CONVERT

contents of Memory Script:
{
   set newname for datafile  1 to
 "/u03/app/oracle/oradata/db/system01.dbf";
   set newname for datafile  2 to
 "/u03/app/oracle/oradata/db/sysaux01.dbf";
   set newname for datafile  3 to
 "/u03/app/oracle/oradata/db/undotbs01.dbf";
   set newname for datafile  4 to
 "/u03/app/oracle/oradata/db/users01.dbf";
   set newname for datafile  5 to
 "/u03/app/oracle/oradata/db/test01.dbf";
   backup as copy reuse
   datafile  1 auxiliary format
 "/u03/app/oracle/oradata/db/system01.dbf"   datafile
 2 auxiliary format
 "/u03/app/oracle/oradata/db/sysaux01.dbf"   datafile
 3 auxiliary format
 "/u03/app/oracle/oradata/db/undotbs01.dbf"   datafile
 4 auxiliary format
 "/u03/app/oracle/oradata/db/users01.dbf"   datafile
 5 auxiliary format
 "/u03/app/oracle/oradata/db/test01.dbf"   ;
   sql 'alter system archive log current';
}
executing Memory Script

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

Starting backup at 2015-06-05 11:56:36
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile file number=00001 name=/u03/app/oracle/oradata/db/system01.dbf
output file name=/u03/app/oracle/oradata/db/system01.dbf tag=TAG20150605T115636
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:55
channel ORA_DISK_1: starting datafile copy
input datafile file number=00002 name=/u03/app/oracle/oradata/db/sysaux01.dbf
output file name=/u03/app/oracle/oradata/db/sysaux01.dbf tag=TAG20150605T115636
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:55
channel ORA_DISK_1: starting datafile copy
input datafile file number=00003 name=/u03/app/oracle/oradata/db/undotbs01.dbf
output file name=/u03/app/oracle/oradata/db/undotbs01.dbf tag=TAG20150605T115636
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07
channel ORA_DISK_1: starting datafile copy
input datafile file number=00005 name=/u03/app/oracle/oradata/db/test01.dbf
output file name=/u03/app/oracle/oradata/db/test01.dbf tag=TAG20150605T115636
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07
channel ORA_DISK_1: starting datafile copy
input datafile file number=00004 name=/u03/app/oracle/oradata/db/users01.dbf
output file name=/u03/app/oracle/oradata/db/users01.dbf tag=TAG20150605T115636
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
Finished backup at 2015-06-05 11:58:45

sql statement: alter system archive log current

contents of Memory Script:
{
   backup as copy reuse
   archivelog like  "/u03/archivelog/1_20_881232587.dbf" auxiliary format
 "/u03/archivelog/1_20_881232587.dbf"   ;
   catalog clone archivelog  "/u03/archivelog/1_20_881232587.dbf";
   switch clone datafile all;
}
executing Memory Script

Starting backup at 2015-06-05 11:58:47
using channel ORA_DISK_1
channel ORA_DISK_1: starting archived log copy
input archived log thread=1 sequence=20 RECID=39 STAMP=881582326
output file name=/u03/archivelog/1_20_881232587.dbf RECID=0 STAMP=0
channel ORA_DISK_1: archived log copy complete, elapsed time: 00:00:01
Finished backup at 2015-06-05 11:58:49

cataloged archived log
archived log file name=/u03/archivelog/1_20_881232587.dbf RECID=39 STAMP=881582332

datafile 1 switched to datafile copy
input datafile copy RECID=5 STAMP=881582333 file name=/u03/app/oracle/oradata/db/system01.dbf
datafile 2 switched to datafile copy
input datafile copy RECID=6 STAMP=881582333 file name=/u03/app/oracle/oradata/db/sysaux01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=7 STAMP=881582333 file name=/u03/app/oracle/oradata/db/undotbs01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=8 STAMP=881582333 file name=/u03/app/oracle/oradata/db/users01.dbf
datafile 5 switched to datafile copy
input datafile copy RECID=9 STAMP=881582333 file name=/u03/app/oracle/oradata/db/test01.dbf

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

executing command: SET until clause

Starting recover at 2015-06-05 11:58:50
using channel ORA_AUX_DISK_1

starting media recovery

archived log for thread 1 with sequence 20 is already on disk as file /u03/archivelog/1_20_881232587.dbf
archived log file name=/u03/archivelog/1_20_881232587.dbf thread=1 sequence=20
media recovery complete, elapsed time: 00:00:01
Finished recover at 2015-06-05 11:58:53
Oracle instance started

Total System Global Area     422670336 bytes

Fixed Size                     1365068 bytes
Variable Size                318770100 bytes
Database Buffers              96468992 bytes
Redo Buffers                   6066176 bytes

contents of Memory Script:
{
   sql clone "alter system set  db_name =
 ''DB'' comment=
 ''Reset to original value by RMAN'' scope=spfile";
   sql clone "alter system reset  db_unique_name scope=spfile";
   shutdown clone immediate;
   startup clone nomount;
}
executing Memory Script

sql statement: alter system set  db_name =  ''DB'' comment= ''Reset to original value by RMAN'' scope=spfile

sql statement: alter system reset  db_unique_name scope=spfile

Oracle instance shut down

connected to auxiliary database (not started)
Oracle instance started

Total System Global Area     422670336 bytes

Fixed Size                     1365068 bytes
Variable Size                318770100 bytes
Database Buffers              96468992 bytes
Redo Buffers                   6066176 bytes
sql statement: CREATE CONTROLFILE REUSE SET DATABASE "DB" RESETLOGS ARCHIVELOG
  MAXLOGFILES     16
  MAXLOGMEMBERS      3
  MAXDATAFILES      100
  MAXINSTANCES     8
  MAXLOGHISTORY      292
 LOGFILE
  GROUP   1  SIZE 50 M ,
  GROUP   2  SIZE 50 M ,
  GROUP   3  SIZE 50 M
 DATAFILE
  '/u03/app/oracle/oradata/db/system01.dbf'
 CHARACTER SET ZHS16GBK


contents of Memory Script:
{
   set newname for tempfile  1 to
 "/u03/app/oracle/oradata/db/temp01.dbf";
   switch clone tempfile all;
   catalog clone datafilecopy  "/u03/app/oracle/oradata/db/sysaux01.dbf",
 "/u03/app/oracle/oradata/db/undotbs01.dbf",
 "/u03/app/oracle/oradata/db/users01.dbf",
 "/u03/app/oracle/oradata/db/test01.dbf";
   switch clone datafile all;
}
executing Memory Script

executing command: SET NEWNAME

renamed tempfile 1 to /u03/app/oracle/oradata/db/temp01.dbf in control file

cataloged datafile copy
datafile copy file name=/u03/app/oracle/oradata/db/sysaux01.dbf RECID=1 STAMP=881582350
cataloged datafile copy
datafile copy file name=/u03/app/oracle/oradata/db/undotbs01.dbf RECID=2 STAMP=881582350
cataloged datafile copy
datafile copy file name=/u03/app/oracle/oradata/db/users01.dbf RECID=3 STAMP=881582350
cataloged datafile copy
datafile copy file name=/u03/app/oracle/oradata/db/test01.dbf RECID=4 STAMP=881582350

datafile 2 switched to datafile copy
input datafile copy RECID=1 STAMP=881582350 file name=/u03/app/oracle/oradata/db/sysaux01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=2 STAMP=881582350 file name=/u03/app/oracle/oradata/db/undotbs01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=3 STAMP=881582350 file name=/u03/app/oracle/oradata/db/users01.dbf
datafile 5 switched to datafile copy
input datafile copy RECID=4 STAMP=881582350 file name=/u03/app/oracle/oradata/db/test01.dbf

contents of Memory Script:
{
   Alter clone database open resetlogs;
}
executing Memory Script

database opened
Finished Duplicate Db at 2015-06-05 11:59:32

oracle 11g duplicate from active database 复制数据库(二)

下面介绍将数据库复制到远程主机相同目录结构的操作步骤
1.创建辅助实例的密码文件(这里辅助实例名为dup) ,在目的主机上为辅助实例创建密码文件可以有以下选项:
.手动创建密码文件,对于duplicate … from active database有额外的要求。必须使用SYS用户ID并且密码必须与原数据库的密码相匹配。当想要使用单独的密码来创建密码文件时因此可以启动辅助实例并使用它来连接原数据库。

.在执行duplicate … from active database命令时指定password file选项,在这种情况下,RMAN将原数据库的密码文件复制到目的主机上并且覆盖辅助实例已经存在的密码文件。如果原数据库密码文件有多个密码且你想让它们在副本数据库中使用时这种技术是非常有用的。

[oracle11@jingyong1 dbs]$ orapwd file=/u03/app/oracle/11.2.0/db/dbs/orapwdup password=system entries=10;

[oracle11@jingyong1 dbs]$ ls -lrt orapwdup
-rw-r----- 1 oracle11 oinstall 2560 Jun  5 09:40 orapwdup

2.创建辅助实例网络连接,修改监听文件,使用静态监听来监听辅助实例

[oracle11@jingyong1 admin]$ vi listener.ora


# listener.ora Network Configuration File: /u03/app/oracle/11.2.0/db/network/admin/listener.ora
# Generated by Oracle configuration tools.

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

SID_LIST_LISTENER =
  (SID_LIST =

    (SID_DESC =
     (SID_NAME = dup)
      (ORACLE_HOME =/u03/app/oracle/11.2.0/db)
    )
  )

[oracle11@jingyong1 admin]$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 05-JUN-2015 11:25:35

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

Starting /u03/app/oracle/11.2.0/db/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.4.0 - Production
System parameter file is /u03/app/oracle/11.2.0/db/network/admin/listener.ora
Log messages written to /u03/app/oracle/diag/tnslsnr/jingyong1/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=jingyong1)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=jingyong1)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date                05-JUN-2015 11:25:35
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u03/app/oracle/11.2.0/db/network/admin/listener.ora
Listener Log File         /u03/app/oracle/diag/tnslsnr/jingyong1/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=jingyong1)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "cs" has 1 instance(s).
  Instance "cs", status UNKNOWN, has 1 handler(s) for this service...
Service "dup" has 1 instance(s).
  Instance "dup", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

给辅助实例增加网络服务名

[oracle11@jingyong1 admin]$ vi tnsnames.ora
# tnsnames.ora Network Configuration File: /u03/app/oracle/11.2.0/db/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

dup =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.11)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = dup)
      (UR = A)
    )
  )

3.创建辅助实例的参数文件,初始化参数文件的目录和内容依赖于给复制文件命名选择的策略。可以选择建议的技术来对原主机和目的主机使用相同的命名策略。因此对于Oracle RAC环境,对于原主机和目的主机可以使用相同的ORACLE_SID。在参数文件中将db_name设置为任意值,db_name是唯一必须设置的参数。创建参数文件有以下选项:
.为辅助实例来创建文本参数文件,初始化参数文件的存储目录是在主机上操作系统特定的缺省目录。例如,在Linux和UNIX中缺省参数文件名是ORACLE_HOME/dbs/initORACLE_SID.ora,在Windows平台上参数文件名是ORACLE_HOME\database\initORACLE_SID.ora

.在执行duplicate命令时指定spfile子句。duplicate … spfile技术最简单,因为在执行复制时RMAN自动将原数据库的spfile文件复制到辅助实例或从备份中还原spfile文件。如果在辅助实例上存在spfile文件,那么RMAN就会覆盖它。

[oracle11@jingyong1 dbs]$ vi initdup.ora
db_name=dup
db_unique_name=dup
control_files= /u03/app/oracle/oradata/db/control01.ctl
remote_login_passwordfile=exclusive
compatible = 11.2.0.4.0
db_block_size=8192
sga_target=300M
sga_max_size=300M
pga_aggregate_target=32M

4.启动辅助实例,启动SQL*Plus并使用sysdba权限连接到辅助实例。将辅助实例启动到nomount状态(如果参数文件在缺省目录中startup命令不需要pfile参数)。注意:确保辅助实例使用文本参数文件来启动而不是SPFILE参数文件。不要创建控制文件或试图mount或open辅助实例。

[oracle11@jingyong1 dbs]$ export ORACLE_SID=dup
[oracle11@jingyong1 dbs]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Fri Jun 5 09:58:16 2015

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

Connected to an idle instance.

SQL> startup nomount
ORACLE instance started.

Total System Global Area  313860096 bytes
Fixed Size                  1364340 bytes
Variable Size             104861324 bytes
Database Buffers          201326592 bytes
Redo Buffers                6307840 bytes



5.在目标主机(运行被复制数据库的主机)配置辅助实例的网络服务名
[oracle11@oracle11g admin]$ vi tnsnames.ora
dup =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.56.11)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME =dup)
      (UR=A)
    )
  )

[oracle11@oracle11g admin]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.4.0 Production on Fri Jun 5 10:05:14 2015

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

SQL> conn sys/system@dup as sysdba
Connected.

6.加载或打开目标数据库,如果RMAN连接到原数据库作为目标数据库,那么原数据库为了执行复制必须设置为合适的状态。如果原数据库实例没有mount或open,那么将原数据库mount或open。如果执行active database复制,那么确保满足下面额外的条件:
-如果原数据库open,那么必须启用归档
-如果原数据库没有open,那么数据库不需要执行实例恢复
由于原数据库启用了归档所以可以将原数据库启动到open状态

[oracle11@oracle11g ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Fri Jun 5 08:35:45 2015

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

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area  422670336 bytes
Fixed Size                  1365068 bytes
Variable Size             310381492 bytes
Database Buffers          104857600 bytes
Redo Buffers                6066176 bytes
Database mounted.
Database opened.

7.使用duplicate命令来执行数据库复制。因为我们这里复制后数据库名为dup与原数据库名不相同,所以不用指定spfile子句从原数据库复制SPFILE参数文件。因为复制后的副本数据库与原数据库的文件拥有相同文件名,所以在执行duplicate命令时要使用nofilenamecheck选项。如果目录不同,在pfile里加这个2个参数进行转换:db_file_name_convert,log_file_name_convert。如果指定password file选项那么RMAN将会从原数据库复制密码文件到目的主机上。RMAN会自动复制SPFILE参数文件到目的主机,使用SPFILE文件来启动辅助实例,复制所有需要的数据库文件和归档重做日志文件到目的主机,并恢复数据库。最终,RMAN将使用resetlogs选项来创建联机重做日志。

[oracle11@oracle11g ~]$ rman target sys/system@db catalog rman/rman@cs auxiliary sys/system@dup

Recovery Manager: Release 11.2.0.4.0 - Production on Fri Jun 5 10:54:38 2015

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

connected to target database: DB (DBID=1644809111)
connected to recovery catalog database
connected to auxiliary database: DUP (not mounted)

[oracle11@oracle11g ~]$ rman target sys/system@db catalog rman/rman@cs auxiliary sys/system@dup

Recovery Manager: Release 11.2.0.4.0 - Production on Fri Jun 5 11:09:58 2015

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

connected to target database: DB (DBID=1644809111)
connected to recovery catalog database
connected to auxiliary database: DUP (not mounted)

RMAN> duplicate target database to dup from active database nofilenamecheck;

Starting Duplicate Db at 2015-06-05 11:10:13
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=20 device type=DISK

contents of Memory Script:
{
   sql clone "create spfile from memory";
}
executing Memory Script

sql statement: create spfile from memory

contents of Memory Script:
{
   shutdown clone immediate;
   startup clone nomount;
}
executing Memory Script

Oracle instance shut down

connected to auxiliary database (not started)
Oracle instance started

Total System Global Area     313860096 bytes

Fixed Size                     1364340 bytes
Variable Size                109055628 bytes
Database Buffers             197132288 bytes
Redo Buffers                   6307840 bytes

contents of Memory Script:
{
   sql clone "alter system set  db_name =
 ''DB'' comment=
 ''Modified by RMAN duplicate'' scope=spfile";
   sql clone "alter system set  db_unique_name =
 ''DUP'' comment=
 ''Modified by RMAN duplicate'' scope=spfile";
   shutdown clone immediate;
   startup clone force nomount
   backup as copy current controlfile auxiliary format  '/u03/app/oracle/oradata/db/control01.ctl';
   alter clone database mount;
}
executing Memory Script

sql statement: alter system set  db_name =  ''DB'' comment= ''Modified by RMAN duplicate'' scope=spfile

sql statement: alter system set  db_unique_name =  ''DUP'' comment= ''Modified by RMAN duplicate'' scope=spfile

Oracle instance shut down

Oracle instance started

Total System Global Area     313860096 bytes

Fixed Size                     1364340 bytes
Variable Size                109055628 bytes
Database Buffers             197132288 bytes
Redo Buffers                   6307840 bytes

Starting backup at 2015-06-05 11:10:32
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=32 device type=DISK
channel ORA_DISK_1: starting datafile copy
copying current control file
output file name=/u03/app/oracle/11.2.0/db/dbs/snapcf_db.f tag=TAG20150605T111033 RECID=4 STAMP=881579434
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
Finished backup at 2015-06-05 11:10:36

database mounted

contents of Memory Script:
{
   set newname for datafile  1 to
 "/u03/app/oracle/oradata/db/system01.dbf";
   set newname for datafile  2 to
 "/u03/app/oracle/oradata/db/sysaux01.dbf";
   set newname for datafile  3 to
 "/u03/app/oracle/oradata/db/undotbs01.dbf";
   set newname for datafile  4 to
 "/u03/app/oracle/oradata/db/users01.dbf";
   set newname for datafile  5 to
 "/u03/app/oracle/oradata/db/test01.dbf";
   backup as copy reuse
   datafile  1 auxiliary format
 "/u03/app/oracle/oradata/db/system01.dbf"   datafile
 2 auxiliary format
 "/u03/app/oracle/oradata/db/sysaux01.dbf"   datafile
 3 auxiliary format
 "/u03/app/oracle/oradata/db/undotbs01.dbf"   datafile
 4 auxiliary format
 "/u03/app/oracle/oradata/db/users01.dbf"   datafile
 5 auxiliary format
 "/u03/app/oracle/oradata/db/test01.dbf"   ;
   sql 'alter system archive log current';
}
executing Memory Script

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

Starting backup at 2015-06-05 11:10:42
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile file number=00001 name=/u03/app/oracle/oradata/db/system01.dbf
output file name=/u03/app/oracle/oradata/db/system01.dbf tag=TAG20150605T111042
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:56
channel ORA_DISK_1: starting datafile copy
input datafile file number=00002 name=/u03/app/oracle/oradata/db/sysaux01.dbf
output file name=/u03/app/oracle/oradata/db/sysaux01.dbf tag=TAG20150605T111042
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:01:05
channel ORA_DISK_1: starting datafile copy
input datafile file number=00003 name=/u03/app/oracle/oradata/db/undotbs01.dbf
output file name=/u03/app/oracle/oradata/db/undotbs01.dbf tag=TAG20150605T111042
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15
channel ORA_DISK_1: starting datafile copy
input datafile file number=00005 name=/u03/app/oracle/oradata/db/test01.dbf
output file name=/u03/app/oracle/oradata/db/test01.dbf tag=TAG20150605T111042
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07
channel ORA_DISK_1: starting datafile copy
input datafile file number=00004 name=/u03/app/oracle/oradata/db/users01.dbf
output file name=/u03/app/oracle/oradata/db/users01.dbf tag=TAG20150605T111042
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 2015-06-05 11:13:07

sql statement: alter system archive log current

contents of Memory Script:
{
   backup as copy reuse
   archivelog like  "/u03/archivelog/1_19_881232587.dbf" auxiliary format
 "/u03/app/oracle/11.2.0/db/dbs/arch1_19_881232587.dbf"   ;
   catalog clone archivelog  "/u03/app/oracle/11.2.0/db/dbs/arch1_19_881232587.dbf";
   switch clone datafile all;
}
executing Memory Script

Starting backup at 2015-06-05 11:13:11
using channel ORA_DISK_1
channel ORA_DISK_1: starting archived log copy
input archived log thread=1 sequence=19 RECID=38 STAMP=881579588
output file name=/u03/app/oracle/11.2.0/db/dbs/arch1_19_881232587.dbf RECID=0 STAMP=0
channel ORA_DISK_1: archived log copy complete, elapsed time: 00:00:01
Finished backup at 2015-06-05 11:13:12

cataloged archived log
archived log file name=/u03/app/oracle/11.2.0/db/dbs/arch1_19_881232587.dbf RECID=38 STAMP=881579595

datafile 1 switched to datafile copy
input datafile copy RECID=4 STAMP=881579595 file name=/u03/app/oracle/oradata/db/system01.dbf
datafile 2 switched to datafile copy
input datafile copy RECID=5 STAMP=881579595 file name=/u03/app/oracle/oradata/db/sysaux01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=6 STAMP=881579595 file name=/u03/app/oracle/oradata/db/undotbs01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=7 STAMP=881579595 file name=/u03/app/oracle/oradata/db/users01.dbf
datafile 5 switched to datafile copy
input datafile copy RECID=8 STAMP=881579595 file name=/u03/app/oracle/oradata/db/test01.dbf

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

executing command: SET until clause

Starting recover at 2015-06-05 11:13:13
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=18 device type=DISK

starting media recovery

archived log for thread 1 with sequence 19 is already on disk as file /u03/app/oracle/11.2.0/db/dbs/arch1_19_881232587.dbf
archived log file name=/u03/app/oracle/11.2.0/db/dbs/arch1_19_881232587.dbf thread=1 sequence=19
media recovery complete, elapsed time: 00:00:00
Finished recover at 2015-06-05 11:13:17
Oracle instance started

Total System Global Area     313860096 bytes

Fixed Size                     1364340 bytes
Variable Size                109055628 bytes
Database Buffers             197132288 bytes
Redo Buffers                   6307840 bytes

contents of Memory Script:
{
   sql clone "alter system set  db_name =
 ''DUP'' comment=
 ''Reset to original value by RMAN'' scope=spfile";
   sql clone "alter system reset  db_unique_name scope=spfile";
   shutdown clone immediate;
   startup clone nomount;
}
executing Memory Script

sql statement: alter system set  db_name =  ''DUP'' comment= ''Reset to original value by RMAN'' scope=spfile

sql statement: alter system reset  db_unique_name scope=spfile

Oracle instance shut down

connected to auxiliary database (not started)
Oracle instance started

Total System Global Area     313860096 bytes

Fixed Size                     1364340 bytes
Variable Size                109055628 bytes
Database Buffers             197132288 bytes
Redo Buffers                   6307840 bytes
sql statement: CREATE CONTROLFILE REUSE SET DATABASE "DUP" RESETLOGS ARCHIVELOG
  MAXLOGFILES     16
  MAXLOGMEMBERS      3
  MAXDATAFILES      100
  MAXINSTANCES     8
  MAXLOGHISTORY      292
 LOGFILE
  GROUP   1 ( '/u03/app/oracle/oradata/db/redo01.log' ) SIZE 50 M  REUSE,
  GROUP   2 ( '/u03/app/oracle/oradata/db/redo02.log' ) SIZE 50 M  REUSE,
  GROUP   3 ( '/u03/app/oracle/oradata/db/redo03.log' ) SIZE 50 M  REUSE
 DATAFILE
  '/u03/app/oracle/oradata/db/system01.dbf'
 CHARACTER SET ZHS16GBK


contents of Memory Script:
{
   set newname for tempfile  1 to
 "/u03/app/oracle/oradata/db/temp01.dbf";
   switch clone tempfile all;
   catalog clone datafilecopy  "/u03/app/oracle/oradata/db/sysaux01.dbf",
 "/u03/app/oracle/oradata/db/undotbs01.dbf",
 "/u03/app/oracle/oradata/db/users01.dbf",
 "/u03/app/oracle/oradata/db/test01.dbf";
   switch clone datafile all;
}
executing Memory Script

executing command: SET NEWNAME

renamed tempfile 1 to /u03/app/oracle/oradata/db/temp01.dbf in control file

cataloged datafile copy
datafile copy file name=/u03/app/oracle/oradata/db/sysaux01.dbf RECID=1 STAMP=881579617
cataloged datafile copy
datafile copy file name=/u03/app/oracle/oradata/db/undotbs01.dbf RECID=2 STAMP=881579617
cataloged datafile copy
datafile copy file name=/u03/app/oracle/oradata/db/users01.dbf RECID=3 STAMP=881579617
cataloged datafile copy
datafile copy file name=/u03/app/oracle/oradata/db/test01.dbf RECID=4 STAMP=881579617

datafile 2 switched to datafile copy
input datafile copy RECID=1 STAMP=881579617 file name=/u03/app/oracle/oradata/db/sysaux01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=2 STAMP=881579617 file name=/u03/app/oracle/oradata/db/undotbs01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=3 STAMP=881579617 file name=/u03/app/oracle/oradata/db/users01.dbf
datafile 5 switched to datafile copy
input datafile copy RECID=4 STAMP=881579617 file name=/u03/app/oracle/oradata/db/test01.dbf

contents of Memory Script:
{
   Alter clone database open resetlogs;
}
executing Memory Script

database opened
Finished Duplicate Db at 2015-06-05 11:13:55

oracle 11g duplicate from active database 复制数据库(一)

使用duplicate from active database复制数据库
在oracle 11g中复制数据库有了两种方法,一是使用基于备份的复制,一种是active database方式来复制。执行active database复制,RMAN连接到原数据库实例作为target,连接到辅助实例作为auxiliary。RMAN将通过网络将active database复制到辅助实例,从而创建副本数据库并且不需要原数据库的备份。在复制数据时可以将数据库复制到与原数据库相同的主机,也可以将数据库复制到远程主机。

下面介绍将数据库复制到远程主机不同目录结构的操作步骤
1.创建辅助实例的密码文件(这里辅助实例名为dup) ,在目的主机上为辅助实例创建密码文件可以有以下选项:
.手动创建密码文件,对于duplicate … from active database有额外的要求。必须使用SYS用户ID并且密码必须与原数据库的密码相匹配。当想要使用单独的密码来创建密码文件时因此可以启动辅助实例并使用它来连接原数据库。

.在执行duplicate … from active database命令时指定password file选项,在这种情况下,RMAN将原数据库的密码文件复制到目的主机上并且覆盖辅助实例已经存在的密码文件。如果原数据库密码文件有多个密码且你想让它们在副本数据库中使用时这种技术是非常有用的。

[oracle11@jingyong1 dbs]$ orapwd file=/u03/app/oracle/11.2.0/db/dbs/orapwdup password=system entries=10;

[oracle11@jingyong1 dbs]$ ls -lrt orapwdup
-rw-r----- 1 oracle11 oinstall 2560 Jun  5 09:40 orapwdup

2.创建辅助实例网络连接,修改监听文件,使用静态监听来监听辅助实例

[oracle11@jingyong1 admin]$ vi listener.ora


# listener.ora Network Configuration File: /u03/app/oracle/11.2.0/db/network/admin/listener.ora
# Generated by Oracle configuration tools.

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

SID_LIST_LISTENER =
  (SID_LIST =

    (SID_DESC =
     (SID_NAME = dup)
      (ORACLE_HOME =/u03/app/oracle/11.2.0/db)
    )
  )

[oracle11@jingyong1 admin]$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 05-JUN-2015 11:25:35

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

Starting /u03/app/oracle/11.2.0/db/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.4.0 - Production
System parameter file is /u03/app/oracle/11.2.0/db/network/admin/listener.ora
Log messages written to /u03/app/oracle/diag/tnslsnr/jingyong1/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=jingyong1)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=jingyong1)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date                05-JUN-2015 11:25:35
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u03/app/oracle/11.2.0/db/network/admin/listener.ora
Listener Log File         /u03/app/oracle/diag/tnslsnr/jingyong1/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=jingyong1)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "cs" has 1 instance(s).
  Instance "cs", status UNKNOWN, has 1 handler(s) for this service...
Service "dup" has 1 instance(s).
  Instance "dup", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

给辅助实例增加网络服务名

[oracle11@jingyong1 admin]$ vi tnsnames.ora
# tnsnames.ora Network Configuration File: /u03/app/oracle/11.2.0/db/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

dup =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.11)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = dup)
      (UR = A)
    )
  )

3.创建辅助实例的参数文件,初始化参数文件的目录和内容依赖于给复制文件命名选择的策略。可以选择建议的技术来对原主机和目的主机使用相同的命名策略。因此对于Oracle RAC环境,对于原主机和目的主机可以使用相同的ORACLE_SID。在参数文件中将db_name设置为任意值,db_name是唯一必须设置的参数。创建参数文件有以下选项:
.为辅助实例来创建文本参数文件,初始化参数文件的存储目录是在主机上操作系统特定的缺省目录。例如,在Linux和UNIX中缺省参数文件名是ORACLE_HOME/dbs/initORACLE_SID.ora,在Windows平台上参数文件名是ORACLE_HOME\database\initORACLE_SID.ora

.在执行duplicate命令时指定spfile子句。duplicate … spfile技术最简单,因为在执行复制时RMAN自动将原数据库的spfile文件复制到辅助实例或从备份中还原spfile文件。如果在辅助实例上存在spfile文件,那么RMAN就会覆盖它。

[oracle11@jingyong1 dbs]$ vi initdup.ora
db_name=dup
db_unique_name=dup
control_files= /u03/app/oracle/oradata/dup/control01.ctl
remote_login_passwordfile=exclusive
compatible = 11.2.0.4.0
db_block_size=8192
sga_target=300M
sga_max_size=300M
pga_aggregate_target=32M
db_file_name_convert=('/u03/app/oracle/oradata/db/','/u03/app/oracle/oradata/dup/')
log_file_name_convert=('/u03/app/oracle/oradata/db/','/u03/app/oracle/oradata/dup/')

4.启动辅助实例,启动SQL*Plus并使用sysdba权限连接到辅助实例。将辅助实例启动到nomount状态(如果参数文件在缺省目录中startup命令不需要pfile参数)。注意:确保辅助实例使用文本参数文件来启动而不是SPFILE参数文件。不要创建控制文件或试图mount或open辅助实例。

[oracle11@jingyong1 dbs]$ export ORACLE_SID=dup
[oracle11@jingyong1 dbs]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Fri Jun 5 09:58:16 2015

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

Connected to an idle instance.

SQL> startup nomount
ORACLE instance started.

Total System Global Area  313860096 bytes
Fixed Size                  1364340 bytes
Variable Size             104861324 bytes
Database Buffers          201326592 bytes
Redo Buffers                6307840 bytes

5.在目标主机(运行被复制数据库的主机)配置辅助实例的网络服务名
[oracle11@oracle11g admin]$ vi tnsnames.ora
dup =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.56.11)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME =dup)
      (UR=A)
    )
  )

[oracle11@oracle11g admin]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.4.0 Production on Fri Jun 5 10:05:14 2015

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

SQL> conn sys/system@dup as sysdba
Connected.

6.加载或打开目标数据库,如果RMAN连接到原数据库作为目标数据库,那么原数据库为了执行复制必须设置为合适的状态。如果原数据库实例没有mount或open,那么将原数据库mount或open。如果执行active database复制,那么确保满足下面额外的条件:
-如果原数据库open,那么必须启用归档
-如果原数据库没有open,那么数据库不需要执行实例恢复
由于原数据库启用了归档所以可以将原数据库启动到open状态

[oracle11@oracle11g ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Fri Jun 5 08:35:45 2015

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

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area  422670336 bytes
Fixed Size                  1365068 bytes
Variable Size             310381492 bytes
Database Buffers          104857600 bytes
Redo Buffers                6066176 bytes
Database mounted.
Database opened.

7.使用duplicate命令来执行数据库复制。因为我们这里复制后数据库名为dup与原数据库名不相同,所以不用指定spfile子句从原数据库复制SPFILE参数文件。因为复制后的副本数据库与原数据库的文件拥有相同文件名,所以在执行duplicate命令时要使用nofilenamecheck选项。如果目录不同,在pfile里加这个2个参数进行转换:db_file_name_convert,log_file_name_convert。如果指定password file选项那么RMAN将会从原数据库复制密码文件到目的主机上。RMAN会自动复制SPFILE参数文件到目的主机,使用SPFILE文件来启动辅助实例,复制所有需要的数据库文件和归档重做日志文件到目的主机,并恢复数据库。最终,RMAN将使用resetlogs选项来创建联机重做日志。

[oracle11@oracle11g ~]$ rman target sys/system@db catalog rman/rman@cs auxiliary sys/system@dup

Recovery Manager: Release 11.2.0.4.0 - Production on Fri Jun 5 10:54:38 2015

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

connected to target database: DB (DBID=1644809111)
connected to recovery catalog database
connected to auxiliary database: DUP (not mounted)

RMAN> duplicate target database to dup from active database nofilenamecheck;

Starting Duplicate Db at 2015-06-05 10:54:43
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=20 device type=DISK

contents of Memory Script:
{
   sql clone "create spfile from memory";
}
executing Memory Script

sql statement: create spfile from memory

contents of Memory Script:
{
   shutdown clone immediate;
   startup clone nomount;
}
executing Memory Script

Oracle instance shut down

connected to auxiliary database (not started)
Oracle instance started

Total System Global Area     313860096 bytes

Fixed Size                     1364340 bytes
Variable Size                109055628 bytes
Database Buffers             197132288 bytes
Redo Buffers                   6307840 bytes

contents of Memory Script:
{
   sql clone "alter system set  db_name =
 ''DB'' comment=
 ''Modified by RMAN duplicate'' scope=spfile";
   sql clone "alter system set  db_unique_name =
 ''DUP'' comment=
 ''Modified by RMAN duplicate'' scope=spfile";
   shutdown clone immediate;
   startup clone force nomount
   backup as copy current controlfile auxiliary format  '/u03/app/oracle/oradata/dup/control01.ctl';
   alter clone database mount;
}
executing Memory Script

sql statement: alter system set  db_name =  ''DB'' comment= ''Modified by RMAN duplicate'' scope=spfile

sql statement: alter system set  db_unique_name =  ''DUP'' comment= ''Modified by RMAN duplicate'' scope=spfile

Oracle instance shut down

Oracle instance started

Total System Global Area     313860096 bytes

Fixed Size                     1364340 bytes
Variable Size                109055628 bytes
Database Buffers             197132288 bytes
Redo Buffers                   6307840 bytes

Starting backup at 2015-06-05 10:55:02
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=38 device type=DISK
channel ORA_DISK_1: starting datafile copy
copying current control file
output file name=/u03/app/oracle/11.2.0/db/dbs/snapcf_db.f tag=TAG20150605T105502 RECID=3 STAMP=881578506
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07
Finished backup at 2015-06-05 10:55:11

database mounted

contents of Memory Script:
{
   set newname for datafile  1 to
 "/u03/app/oracle/oradata/dup/system01.dbf";
   set newname for datafile  2 to
 "/u03/app/oracle/oradata/dup/sysaux01.dbf";
   set newname for datafile  3 to
 "/u03/app/oracle/oradata/dup/undotbs01.dbf";
   set newname for datafile  4 to
 "/u03/app/oracle/oradata/dup/users01.dbf";
   set newname for datafile  5 to
 "/u03/app/oracle/oradata/dup/test01.dbf";
   backup as copy reuse
   datafile  1 auxiliary format
 "/u03/app/oracle/oradata/dup/system01.dbf"   datafile
 2 auxiliary format
 "/u03/app/oracle/oradata/dup/sysaux01.dbf"   datafile
 3 auxiliary format
 "/u03/app/oracle/oradata/dup/undotbs01.dbf"   datafile
 4 auxiliary format
 "/u03/app/oracle/oradata/dup/users01.dbf"   datafile
 5 auxiliary format
 "/u03/app/oracle/oradata/dup/test01.dbf"   ;
   sql 'alter system archive log current';
}
executing Memory Script

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

Starting backup at 2015-06-05 10:55:16
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile file number=00001 name=/u03/app/oracle/oradata/db/system01.dbf
output file name=/u03/app/oracle/oradata/dup/system01.dbf tag=TAG20150605T105516
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:01:05
channel ORA_DISK_1: starting datafile copy
input datafile file number=00002 name=/u03/app/oracle/oradata/db/sysaux01.dbf
output file name=/u03/app/oracle/oradata/dup/sysaux01.dbf tag=TAG20150605T105516
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:55
channel ORA_DISK_1: starting datafile copy
input datafile file number=00003 name=/u03/app/oracle/oradata/db/undotbs01.dbf
output file name=/u03/app/oracle/oradata/dup/undotbs01.dbf tag=TAG20150605T105516
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15
channel ORA_DISK_1: starting datafile copy
input datafile file number=00005 name=/u03/app/oracle/oradata/db/test01.dbf
output file name=/u03/app/oracle/oradata/dup/test01.dbf tag=TAG20150605T105516
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07
channel ORA_DISK_1: starting datafile copy
input datafile file number=00004 name=/u03/app/oracle/oradata/db/users01.dbf
output file name=/u03/app/oracle/oradata/dup/users01.dbf tag=TAG20150605T105516
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 2015-06-05 10:57:41

sql statement: alter system archive log current

contents of Memory Script:
{
   backup as copy reuse
   archivelog like  "/u03/archivelog/1_18_881232587.dbf" auxiliary format
 "/u03/app/oracle/11.2.0/db/dbs/arch1_18_881232587.dbf"   ;
   catalog clone archivelog  "/u03/app/oracle/11.2.0/db/dbs/arch1_18_881232587.dbf";
   switch clone datafile all;
}
executing Memory Script

Starting backup at 2015-06-05 10:57:44
using channel ORA_DISK_1
channel ORA_DISK_1: starting archived log copy
input archived log thread=1 sequence=18 RECID=37 STAMP=881578662
output file name=/u03/app/oracle/11.2.0/db/dbs/arch1_18_881232587.dbf RECID=0 STAMP=0
channel ORA_DISK_1: archived log copy complete, elapsed time: 00:00:01
Finished backup at 2015-06-05 10:57:45

cataloged archived log
archived log file name=/u03/app/oracle/11.2.0/db/dbs/arch1_18_881232587.dbf RECID=37 STAMP=881578668

datafile 1 switched to datafile copy
input datafile copy RECID=3 STAMP=881578668 file name=/u03/app/oracle/oradata/dup/system01.dbf
datafile 2 switched to datafile copy
input datafile copy RECID=4 STAMP=881578668 file name=/u03/app/oracle/oradata/dup/sysaux01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=5 STAMP=881578668 file name=/u03/app/oracle/oradata/dup/undotbs01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=6 STAMP=881578668 file name=/u03/app/oracle/oradata/dup/users01.dbf
datafile 5 switched to datafile copy
input datafile copy RECID=7 STAMP=881578668 file name=/u03/app/oracle/oradata/dup/test01.dbf

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

executing command: SET until clause

Starting recover at 2015-06-05 10:57:46
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=18 device type=DISK

starting media recovery

archived log for thread 1 with sequence 18 is already on disk as file /u03/app/oracle/11.2.0/db/dbs/arch1_18_881232587.dbf
archived log file name=/u03/app/oracle/11.2.0/db/dbs/arch1_18_881232587.dbf thread=1 sequence=18
media recovery complete, elapsed time: 00:00:00
Finished recover at 2015-06-05 10:57:50
Oracle instance started

Total System Global Area     313860096 bytes

Fixed Size                     1364340 bytes
Variable Size                109055628 bytes
Database Buffers             197132288 bytes
Redo Buffers                   6307840 bytes

contents of Memory Script:
{
   sql clone "alter system set  db_name =
 ''DUP'' comment=
 ''Reset to original value by RMAN'' scope=spfile";
   sql clone "alter system reset  db_unique_name scope=spfile";
   shutdown clone immediate;
   startup clone nomount;
}
executing Memory Script

sql statement: alter system set  db_name =  ''DUP'' comment= ''Reset to original value by RMAN'' scope=spfile

sql statement: alter system reset  db_unique_name scope=spfile

Oracle instance shut down

connected to auxiliary database (not started)
Oracle instance started

Total System Global Area     313860096 bytes

Fixed Size                     1364340 bytes
Variable Size                109055628 bytes
Database Buffers             197132288 bytes
Redo Buffers                   6307840 bytes
sql statement: CREATE CONTROLFILE REUSE SET DATABASE "DUP" RESETLOGS ARCHIVELOG
  MAXLOGFILES     16
  MAXLOGMEMBERS      3
  MAXDATAFILES      100
  MAXINSTANCES     8
  MAXLOGHISTORY      292
 LOGFILE
  GROUP   1 ( '/u03/app/oracle/oradata/dup/redo01.log' ) SIZE 50 M  REUSE,
  GROUP   2 ( '/u03/app/oracle/oradata/dup/redo02.log' ) SIZE 50 M  REUSE,
  GROUP   3 ( '/u03/app/oracle/oradata/dup/redo03.log' ) SIZE 50 M  REUSE
 DATAFILE
  '/u03/app/oracle/oradata/dup/system01.dbf'
 CHARACTER SET ZHS16GBK


contents of Memory Script:
{
   set newname for tempfile  1 to
 "/u03/app/oracle/oradata/dup/temp01.dbf";
   switch clone tempfile all;
   catalog clone datafilecopy  "/u03/app/oracle/oradata/dup/sysaux01.dbf",
 "/u03/app/oracle/oradata/dup/undotbs01.dbf",
 "/u03/app/oracle/oradata/dup/users01.dbf",
 "/u03/app/oracle/oradata/dup/test01.dbf";
   switch clone datafile all;
}
executing Memory Script

executing command: SET NEWNAME

renamed tempfile 1 to /u03/app/oracle/oradata/dup/temp01.dbf in control file

cataloged datafile copy
datafile copy file name=/u03/app/oracle/oradata/dup/sysaux01.dbf RECID=1 STAMP=881578689
cataloged datafile copy
datafile copy file name=/u03/app/oracle/oradata/dup/undotbs01.dbf RECID=2 STAMP=881578689
cataloged datafile copy
datafile copy file name=/u03/app/oracle/oradata/dup/users01.dbf RECID=3 STAMP=881578689
cataloged datafile copy
datafile copy file name=/u03/app/oracle/oradata/dup/test01.dbf RECID=4 STAMP=881578689

datafile 2 switched to datafile copy
input datafile copy RECID=1 STAMP=881578689 file name=/u03/app/oracle/oradata/dup/sysaux01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=2 STAMP=881578689 file name=/u03/app/oracle/oradata/dup/undotbs01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=3 STAMP=881578689 file name=/u03/app/oracle/oradata/dup/users01.dbf
datafile 5 switched to datafile copy
input datafile copy RECID=4 STAMP=881578689 file name=/u03/app/oracle/oradata/dup/test01.dbf

contents of Memory Script:
{
   Alter clone database open resetlogs;
}
executing Memory Script

database opened
Finished Duplicate Db at 2015-06-05 10:58:31

HP服务器控制台输出设置造成的启动故障

今天单位的HP数据库容灾服务器在启动时出错,错误信息如下图所示:Warning:multiple console coutput devices are configured.If this message remains on the screen for more than a few miutes,then this is not the device in use by HP-UX as the console output device.If you would like this device to be the one used by HP-UX as the console output device,reboot and use the EFI boot manager or the EFI ‘conconfig’ command to select this device and deconfigure the others.错误信息说这台服务器已经配置了多个控制台输出设备。如果这个提示信息在屏幕上显示超过几分钟,那么这个输出设备没有被HP-UX作为控制输出设备。如果想让HP-UX使用这个设备作为控制台输出设备,重启服务器并使用EFI boot manager或者EFI的’conconfig’命令来选择这个设备并取消其它设备的配置。
IMG_20150507_083709

而这台HP服务器之前是能够正常启动,最近也没人进行设置,很奇怪,根据错误信息的提示重启并进行设置。

首先在启动时进入EFI boot manager设置界面
IMG_20150512_122943

选择Boot Configuration
IMG_20150512_122956

选择Console Configuration
IMG_20150512_123016

从上图中可以看到HP服务器现在主控制台输出配置为Serial Acpi,辅助输出设备为VGA,因为我这里配置的是KVM所以应该主控制台输出要设置为VGA才对,但之前同事说能正常启动,这里不再讨论原因,现在将VGA作为主控制台输出设备。
IMG_20150512_123039

IMG_20150512_123126

保存更改,服务器会自动重启
IMG_20150512_123404

IMG_20150512_123440

IMG_20150512_123452

IMG_20150512_123614
在将控制台输出设置为VGA后服务器可以正常启动了可以做容灾演验了

Oracle 11g创建虚拟私有目录RMAN-06004 ORA-00942错误的处理

一个网友在linux下的11.2.0.4 中创建RMAN的虚拟私有目录报错:

[oracle@jb ~]$ rman

Recovery Manager: Release 11.2.0.4.0 - Production on Sun May 10 17:23:25 2015

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

RMAN> connect catalog vpc1/vpc1@cs

connected to recovery catalog database

RMAN> create virtual catalog;

found eligible base catalog owned by RMAN
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-06004: ORACLE error from recovery catalog database: ORA-00942: table or view does not exist

从上面信息可以看到found eligible base catalog owned by RMAN,说明已经找到了合格的基本恢复目录用户,由于使用的基本恢复目录用户rman已经注册了数据库,于是新建一个基本恢复目录用户cat1,虚拟私有目录用户 virtcat

1.创建基本恢复目录用户cat1,虚拟私有目录用户virtcat

SQL> create user cat1 identified by cat1
  2       default tablespace sysaux
  3       quota unlimited on sysaux;

User created.

SQL> grant recovery_catalog_owner to cat1;

Grant succeeded.

SQL> create user virtcat identified by virtcat
  2       default tablespace sysaux
  3       quota unlimited on sysaux;

User created.

SQL> grant recovery_catalog_owner to virtcat;

Grant succeeded.

2.创建基本恢复目录

[oracle@jb ~]$ rman catalog cat1/cat1@cs

Recovery Manager: Release 11.2.0.4.0 - Production on Sun May 10 17:24:50 2015

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

connected to recovery catalog database

RMAN> create catalog;

recovery catalog created

RMAN> grant register database to virtcat;

Grant succeeded.

3.创建虚拟私有恢复目录

[oracle@jb cs]$ rman catalog virtcat/virtcat@cs

Recovery Manager: Release 11.2.0.4.0 - Production on Sun May 10 17:25:40 2015

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

connected to recovery catalog database

RMAN> create virtual catalog;

found ineligible base catalog owned by RMAN
found eligible base catalog owned by CAT1
created virtual catalog against base catalog owned by CAT1

4.在虚拟私有目录中注册目标数据库

[oracle@jb cs]$ rman target sys/system@db catalog virtcat/virtcat@cs

Recovery Manager: Release 11.2.0.4.0 - Production on Sun May 10 17:46:51 2015

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

connected to target database: DB (DBID=1640573015)
connected to recovery catalog database

RMAN> register database;

database registered in recovery catalog
starting full resync of recovery catalog
full resync complete

总结:在创建与使用虚拟私有恢复目录时,基本恢复目录中不能注册目标数据库,否则会出现RMAN-06004, ORA-00942错误信息。

oracle 还原点

正常还原点
创建正常还原点是给一个SCN或指定时间点指定一个还原点名称。因此,还原点实际上可以看作是SCN的标记或别名。在执行任何操作之前你可能想要撤消该操作,你可以创建一个正常还原点。控制文件会存储还原点名称与SCN,创建还原点可以消除提前记录SCN或在使用闪回时需要判断正确的SCN操作。

如果使用闪回或按时间点恢复,那么你可以使用还原点名称来代夫时间表达式或SCN。下面的命令支持使用还原点:
1.RMAN中的recover database与flashback database命令
2.SQL中的flashback table语句

正常的还原点是轻量级的。控制文件可以维护上千个正常还原点而不会影响数据库性能。正常还原点如果不手动删除,当执行恢复不再需要它们时会从控制文件中将其删除。
下面举例说明:
1.创建正常还原点

SQL> create restore point insert_point;

Restore point created.


SQL> set long 200
SQL> set linesize 200
SQL> SELECT NAME, SCN, TIME, DATABASE_INCARNATION#,
  2  GUARANTEE_FLASHBACK_DATABASE,STORAGE_SIZE
  3  FROM V$RESTORE_POINT;

NAME                        SCN TIME                                                                        DATABASE_INCARNATION# GUA STORAGE_SIZE
-------------------- ---------- --------------------------------------------------------------------------- --------------------- --- ------------
INSERT_POINT            1187948 23-APR-15 05.18.21.000000000 PM                                                                 3 NO             0

SQL> alter system checkpoint;

System altered.

SQL> alter system switch logfile;

System altered.

SQL> select current_scn,to_char(scn_to_timestamp(current_scn),'yyyy-mm-dd hh24:mi:ss') from v$database;

CURRENT_SCN TO_CHAR(SCN_TO_TIME
----------- -------------------
    1187983 2015-04-23 17:18:59

2.新创建一个表test:

SQL> create table test as select * from dba_objects;

Table created.

SQL> select current_scn,to_char(scn_to_timestamp(current_scn),'yyyy-mm-dd hh24:mi:ss') from v$database;

CURRENT_SCN TO_CHAR(SCN_TO_TIME
----------- -------------------
    1188096 2015-04-23 17:20:20

3.将数据库闪回到创建正常还原点的时间点

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

Total System Global Area  188313600 bytes
Fixed Size                  1363496 bytes
Variable Size             150995416 bytes
Database Buffers           33554432 bytes
Redo Buffers                2400256 bytes
Database mounted.
SQL> flashback database to scn 1187983;

Flashback complete.

SQL> alter database open read only;

Database altered.

4.检查表test是否存在,因为表test是在创建还原点之后所创建,当将数据库闪回到还原点后表test也就不存了:

SQL> select count(*) from test;
select count(*) from test
                     *
ERROR at line 1:
ORA-00942: table or view does not exist

受保护还原点
像正常还原点一样,受保护的还原点也是恢复操作中所指定SCN的一个别名。唯一的区别是受保护的还原点除了显式删除之外是不会从控制文件中删除的。通常来说,使用正常还原点执行的命令也可以使用受保护还原点来作为SCN的别名,除了另有说明之外,使用正常还原点与受保护还原点的使用方法是一样的

即使生成闪回日志被禁用,受保护还原点确保你能使用闪回数据库将数据文件恢复到还原点SCN所对应的状态。如果启用闪回日志,那么受保护的还原点会强制保留将数据库闪回到在最早创建的受保护还原点后的任意SCN所需要的闪回日志。因此,如果启用了闪回日志,可以将数据库闪回到受保护还原点后的任意SCN而不只是单个SCN。如果禁用了闪回日志,那么在执行flashback database命令时不能直接指定受保护还原点与当前时间之间的SCN。然后可以先闪回到受保护还原点再恢复到受保护还原点与当前时间之前的SCN。

闪回数据库的命令是flashback database to PIT,PIT可以是SCN、时间或还原点,顾名思义,就是将整个数据库回退到指定的一个时间点,实际上是数据库不完全恢复的另一种方式。真正的不完全恢复需要消耗的时间与数据库的大小有密切联系,数据库越庞大,需要的时间就越多。

闪回数据库技术改变了这个窘境,其处理问题方式可以着重于如何将相对较短的时间内发生的变更去除,而不是如何还原足够旧的备份(很花时间了),再利用归档日志前滚至指定时间。.

闪回数据库需要使用两种日志:闪回日志和重做日志。其中重做日志已为大家所知,而闪回日志就像是重做日志的反作用力,闪回日志的记载正好与重做日志的记载相反。比如,逻辑上重做日志记录insert命令的重做记录,闪回日志就记录delete命令的重做记录(当然实际上没那么简单)。在发起闪回操作时,只要根据写入闪回日志的相反顺序,即后写先读的顺序,将闪回记录从闪回日志读出并执行其记录的变更就能够将数据库在时间轴上倒推。

闪回日志的保存路径一定是快速恢复区的子目录,保存的期限则由参数db_flashback_ retention_target控制(单位为分钟),凡是超出保存期限的闪回日志将会在快速恢复区空间紧张的时候被自动删除。比如,指定数据库保留两天的闪回日志和归档日志:

SQL> alter system set db_flashback_retention_target=2880;

System altered.

使用v$database.FLASHBACK_ON可以查看闪回日志是否已启用,现在是“NO”,表示尚未启用:

SQL> select flashback_on from v$database;

FLASHBACK_ON
------------------
NO

在确保启用了归档模式之后,使用以下命令可以启用闪回日志,即闪回数据库功能:

SQL> alter database flashback on;

Database altered.

从此,在快速恢复区的flashback子目录下将会出现扩展名为.flb的文件,它们就是闪回日志。

SQL> select flashback_on from v$database;

FLASHBACK_ON
------------------
YES

闪回数据库命令的语法很简单:在进入MOUNT状态后执行flashback database to scn …或flashback database to timestamp …。

受保护还原点与存储快照
在实践中,受保护还原点可以替代存储快照。存储快照通常被用来在执行危险操作之前来保护数据库,比如大范围的数据库更新或应用打补丁或升级。相对于创建快照或复制一个数据库进行测试操作来说,你可以在主库或物理备库中创建一个受保护还原点。

闪回数据库与受保护还原点日志
闪回数据库日志与受保护还原点调用改变之前的数据文件块镜像,flashback database命令可以使用这些镜像来将数据文件还原到之前的状态。正常闪回日志与受保护还原点日志最主要的差别是当闪回区出现空间压力时是否这些日志会被删除。这种差异会影响日志的空间使用和数据库性能。你的恢复目录部分决定了是否启用闪回日志或者还原点,或都两者都使用。当单独或一起使用这些功能时对空间使用和性能的影响是需要考虑的。

受保护还原点与闪回区空间之关的系
当创建,保留,覆盖与删除闪回区中的闪回日志时存在以下规则:
1.如果闪回区有足够空间,那么当需要满足闪回保留目标时生成闪回日志。
2.如果闪回日志过旧不再满足闪回保留目标,那么可以重用这些闪回日志。
3.如果数据库必须创建闪回日志并且闪回区已经被使用完或者没有磁盘空间,那么旧的闪回日志会被重用。重用旧的闪回日志会缩短闪回数据库窗口。如果因为空间压力问题有过多的闪回日志被重用,那么闪回保留目标可能不会被满足。
4.如果闪回区填满,那么概括闪回区规则当闪回区要为其它文件提供空间时会自动删除归档重做日志来回收空间。在这种情况下,flashback database命令需要使用的重做日志的任何闪回日志也会被删除。概括闪回区规则,当出现以下情况下文件使用的空间会被回收。
a.文件被报告为过期并且闪回数据库不需要该文件。例如该文件保留的时间超过了db_flashback_retention_target参数设置
b.文件已经备份磁带
5.如果为了满足受保护还原点闪回区中没有文件满足删除条件。因为,闪回日志和其它为了满足受保护还原点的其它文件,额外的为了满足备份保留策略所需要的文件都可能会造成闪回区被填满。

当创建受保护还原点可以考虑不完全启动闪回日志,但需要监控闪回区的可用空间。如果为了满足你的保留策略和受保护还原点,闪回区中没有满足删除条件的文件,如果遇到磁盘空间被填满的情况时,数据库会执行删除。

禁用闪回日志与受保护还原点
假设在数据库禁用闪回日志的情况下创建了受保护还原点。在这种情况下,在受保护还原点创建时第一次被修改的数据文件块,数据库会将被修改前的数据块镜像存储在闪回日志中。因此闪回日志保留了每一个被修改的数据块在创建受保护还原点时的内容。后面对相同数据块的修改将不会被捕获除非在数据块最后被之前之前又创建了一个受保护还原点。

这种记录日志方法有以下重要的结果:
1.flashback database可以通过使用数据块镜像重新构造在创建受保护还原点时数据文件中的内容。
2.对于反复修改相同的数据,相比对正常的闪回日志受保护还原点所要使用的空间更少,因为每一个被修改的数据块只会被记录一次。应用程序有较少插入操作可能从节省磁盘空间中受益。当应用程序有大量插入或批量插入操作时这种优势就没有了。受保护还原点的日志开锁在禁用闪回日志时是很小的。

假如你的主要目标是要能将数据库恢复到受保护还原点所创建的时间点,那么在这种情况下,禁用闪回日志而只使用受保护还原点更有效。例如假设要对数据库执行升级,可以在启动升级之前创建一个受保护还原点,如果升级失败,那么可以执行flashback database来恢复数据库。

启用闪回日志与受保护还原点
如果启用闪回日志并定义一个或多个受保护还原点,那么数据库会执行正常的闪回日志操作。在这种情况下,闪回区将会保留将数据库恢复到受保护还原点与当前时间之间任何时间点所需要的所有闪回日志。闪回日志如果满足受保护还原点的要求在出现空间压力时是不会被删除的。启用闪回日志会占用一些性能开销。依赖于数据库的工作负载,可能会对闪回区造成极大的空间压力。因此应该要监控闪回区的空间使用情况。

使用闪回数据库与受保护还原点的条件
为了能成功执行闪回数据库和受保护还原点操作,必须首先设置一些关键的数据库选项。在启用闪回数据库之前进行以下数据库设置:
1.你的数据库必须运行在archivelog模式下,因为闪回数据库需要使用归档重做日志。
2.必须设置了闪回区,因为闪回日志只能存储在闪回区中。
3.对于RAC数据库,闪回区必须是集群文件系统或ASM

为了使用受保护还原点,数据库必须满足compatible参数必须设置为10.2.0或更高版本。但在使用正常还原点之前没有任何特定要求。

下面是举例来说明:
在启用闪回日志的情况下,创建受保护还原点
1.创建受保护还原点

SQL> select flashback_on from v$database;

FLASHBACK_ON
------------------
YES

SQL> select current_scn,to_char(scn_to_timestamp(current_scn),'yyyy-mm-dd hh24:mi:ss') from v$database;

CURRENT_SCN TO_CHAR(SCN_TO_TIME
----------- -------------------
    1187919 2015-04-23 17:17:26

SQL> create restore point  create_point guarantee flashback database;

Restore point created.

SQL> set long 200
SQL> set linesize 200
SQL> SELECT NAME, SCN, TIME, DATABASE_INCARNATION#,
  2  GUARANTEE_FLASHBACK_DATABASE,STORAGE_SIZE
  3  FROM V$RESTORE_POINT;

NAME                        SCN TIME                                                                        DATABASE_INCARNATION# GUA STORAGE_SIZE
-------------------- ---------- --------------------------------------------------------------------------- --------------------- --- ------------
CREATE_POINT            1187948 23-APR-15 05.18.21.000000000 PM                                                                 3 YES     52428800

SQL> alter system checkpoint;

System altered.

SQL> alter system switch logfile;

System altered.

SQL> select current_scn,to_char(scn_to_timestamp(current_scn),'yyyy-mm-dd hh24:mi:ss') from v$database;

CURRENT_SCN TO_CHAR(SCN_TO_TIME
----------- -------------------
    1187983 2015-04-23 17:18:59

2.新建表test

SQL> create table test as select * from dba_objects;

Table created.

SQL> select current_scn,to_char(scn_to_timestamp(current_scn),'yyyy-mm-dd hh24:mi:ss') from v$database;

CURRENT_SCN TO_CHAR(SCN_TO_TIME
----------- -------------------
    1188096 2015-04-23 17:20:20

因为我们启用了闪回日志,所以可以将数据库闪回到受保护还原点(create_point)SCN:1187948与当前时间2015-04-23 17:20:20 SCN:1188096之间的任意SCN所对应的状态。那么我们将数据库闪回到SCN为1187983,这时表test是还没有创建的。

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

Total System Global Area  188313600 bytes
Fixed Size                  1363496 bytes
Variable Size             150995416 bytes
Database Buffers           33554432 bytes
Redo Buffers                2400256 bytes
Database mounted.
SQL> flashback database to scn 1187983;

Flashback complete.

SQL> alter database open read only;

Database altered.

SQL> select count(*) from test;
select count(*) from test
                     *
ERROR at line 1:
ORA-00942: table or view does not exist

在确认之前不要以resetlogs选项open数据库,这样可以多次执行闪回数据库操作,也可以撤消闪回数据库操作,下面是撤消闪回数据库操作是通过执行完全恢复来实现的:

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

Total System Global Area  188313600 bytes
Fixed Size                  1363496 bytes
Variable Size             150995416 bytes
Database Buffers           33554432 bytes
Redo Buffers                2400256 bytes
Database mounted.
SQL> recover database;
Media recovery complete.
SQL> alter database open;

Database altered.

SQL> select count(*) from test;

  COUNT(*)
----------
     86741

下面我们在禁用闪回日志的情况下执行闪回数据库操作:
1.禁用闪回日志并创建受保护还原点

SQL> select flashback_on from v$database;

FLASHBACK_ON
------------------
YES

SQL> alter database flashback off;

Database altered.

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

Total System Global Area  188313600 bytes
Fixed Size                  1363496 bytes
Variable Size             150995416 bytes
Database Buffers           33554432 bytes
Redo Buffers                2400256 bytes
Database mounted.

SQL> create restore point delete_point guarantee flashback database;


Restore point created.

SQL> alter database open;

Database altered.


SQL> select flashback_on from v$database;

FLASHBACK_ON
------------------
RESTORE POINT ONLY



SQL> SELECT NAME, SCN, TIME, DATABASE_INCARNATION#,
  2  GUARANTEE_FLASHBACK_DATABASE,STORAGE_SIZE
  3  FROM V$RESTORE_POINT;

NAME                        SCN TIME                                                                        DATABASE_INCARNATION# GUA STORAGE_SIZE
-------------------- ---------- --------------------------------------------------------------------------- --------------------- --- ------------
DELETE_POINT            1192464 23-APR-15 07.36.16.000000000 PM                                                                 3 YES     52428800

SQL> alter system switch logfile;

System altered.

SQL> alter system checkpoint;

System altered.

SQL> select current_scn,to_char(scn_to_timestamp(current_scn),'yyyy-mm-dd hh24:mi:ss') from v$database;

CURRENT_SCN TO_CHAR(SCN_TO_TIME
----------- -------------------
    1192860 2015-04-23 19:37:51

2.删除表test

SQL> delete from test;

86743 rows deleted.

SQL> commit;

Commit complete.

SQL> select count(*) from test;

  COUNT(*)
----------
         0

SQL> select current_scn,to_char(scn_to_timestamp(current_scn),'yyyy-mm-dd hh24:mi:ss') from v$database;

CURRENT_SCN TO_CHAR(SCN_TO_TIME
----------- -------------------
    1193268 2015-04-23 19:38:57

现在我们来测试看在禁用闪回日志的情况下能不能将数据库闪回到受保护还原点(delete_point)scn:1192464与当前时间SCN:1193268之间的任意SCN,这里我们闪回到SCN:1192860,这里表test的记录还没有被删除

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

Total System Global Area  188313600 bytes
Fixed Size                  1363496 bytes
Variable Size             150995416 bytes
Database Buffers           33554432 bytes
Redo Buffers                2400256 bytes
Database mounted.
SQL> flashback database to scn 1192860;
flashback database to scn 1192860
*
ERROR at line 1:
ORA-38726: Flashback database logging is not on.

错误提示已经说明了没有闪回日志,所以不能将数据库闪回到受保护还原点与当前时间之间的任意SCN。

下面将表test闪回到受保护还原点SCN:1192464

SQL> flashback database to restore point delete_point;

Flashback complete.

SQL> alter database open read only;

Database altered.

SQL> select count(*) from test;

  COUNT(*)
----------
     86743

从执行结果可知,已经恢复到受保护还原点所对应的状态,表test的数据恢复回来了。

从上面的执行结果可以看到在没有启用闪回日志的情况可以将数据库闪回到受保护还原点。如果要想在没有启用闪回日志的情况下将数据库闪回到受保护还原点与当前时间点之间的SCN:1192860,可以先将数据库闪加到受保护还原点,再执行恢复将数据库恢复到SCN:1192860。

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

Total System Global Area  188313600 bytes
Fixed Size                  1363496 bytes
Variable Size             150995416 bytes
Database Buffers           33554432 bytes
Redo Buffers                2400256 bytes
Database mounted.
SQL> flashback database to restore point delete_point;

Flashback complete.

SQL> alter  session  set  nls_date_format  =  'yyyy-mm-dd  hh24:mi:ss';

Session altered.

因为SCN:1192860,对应的时间就是2015-04-23 19:37:51,这里如果直接用SCN:1192860执行恢复会报以下错误 :

SQL> recover database until scn 1192860;
ORA-00277: illegal option to the UNTIL recovery flag SCN



SQL> recover database until time '2015-04-23 19:37:51';
Media recovery complete.
SQL> alter database open read only;

Database altered.

SQL> select count(*) from test;

  COUNT(*)
----------
     86743

从执行结果可知,已经恢复到受保护还原点所对应的状态,表test的数据恢复回来了。