4. 使用RMAN DUPLICATE复制数据库
在Target Database上登录RMAN并连接Auxiliary Database:

[oracle@rhel ~]$ rman target / auxiliary sys/orcl@duptest

Recovery Manager: Release 10.2.0.1.0 - Production on Tue Dec 30 05:56:05 2008

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

connected to target database: OLDYANG (DBID=1658465560)
connected to auxiliary database: DUPTEST (not mounted)

此时Auxiliary Database尚未建立,所以DBID为空。接下来就可以使用DUPLICATE命令进行复制了,由于模拟环境是远程主机+不同文件路径,在这边我们使用了db_file_name_convert和logfile两个选项(关于其它的路径转换方法,请参考Oracle说明文档):

RMAN> run{
2> allocate auxiliary channel aux1 device type disk;
3> duplicate target database to duptest
4> db_file_name_convert=('/opt/ora10g/oradata/oldyang','/opt/ora10g/oradata/duptest')
5> logfile
6> '/opt/ora10g/oradata/duptest/redo01.log' size 50m,
7> '/opt/ora10g/oradata/duptest/redo02.log' size 50m,
8> '/opt/ora10g/oradata/duptest/redo03.log' size 50m;
9> }

using target database control file instead of recovery catalog
allocated channel: aux1
channel aux1: sid=36 devtype=DISK

Starting Duplicate Db at 30-DEC-08

contents of Memory Script:
{
set until scn 918362;
set newname for datafile 1 to
"/opt/ora10g/oradata/duptest/system01.dbf";
set newname for datafile 2 to
"/opt/ora10g/oradata/duptest/undotbs01.dbf";
set newname for datafile 3 to
"/opt/ora10g/oradata/duptest/sysaux01.dbf";
set newname for datafile 4 to
"/opt/ora10g/oradata/duptest/users01.dbf";
set newname for datafile 5 to
"/opt/ora10g/oradata/duptest/oldyang.dbf";
restore
check readonly
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 30-DEC-08

channel aux1: starting datafile backupset restore
channel aux1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /opt/ora10g/oradata/duptest/system01.dbf
restoring datafile 00002 to /opt/ora10g/oradata/duptest/undotbs01.dbf
restoring datafile 00003 to /opt/ora10g/oradata/duptest/sysaux01.dbf
restoring datafile 00004 to /opt/ora10g/oradata/duptest/users01.dbf
restoring datafile 00005 to /opt/ora10g/oradata/duptest/oldyang.dbf
channel aux1: reading from backup piece
/opt/ora10g/flash_recovery_area/OLDYANG/backupset/2008_12_30/o1_mf_nnndf_TAG20081230T04212
8_4oldb94g_.bkp
channel aux1: restored backup piece 1
piece
handle=/opt/ora10g/flash_recovery_area/OLDYANG/backupset/2008_12_30/o1_mf_nnndf_TAG2008123
0T042128_4oldb94g_.bkp tag=TAG20081230T042128
channel aux1: restore complete, elapsed time: 00:00:59
Finished restore at 30-DEC-08
sql statement: CREATE CONTROLFILE REUSE SET DATABASE "DUPTEST" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/opt/ora10g/oradata/duptest/redo01.log' SIZE 50 M ,
GROUP 2 '/opt/ora10g/oradata/duptest/redo02.log' SIZE 50 M ,
GROUP 3 '/opt/ora10g/oradata/duptest/redo03.log' SIZE 50 M
DATAFILE
'/opt/ora10g/oradata/duptest/system01.dbf'
CHARACTER SET AL32UTF8

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

datafile 2 switched to datafile copy
input datafile copy recid=1 stamp=674797938
filename=/opt/ora10g/oradata/duptest/undotbs01.dbf
datafile 3 switched to datafile copy
input datafile copy recid=2 stamp=674797938
filename=/opt/ora10g/oradata/duptest/sysaux01.dbf
datafile 4 switched to datafile copy
input datafile copy recid=3 stamp=674797938 filename=/opt/ora10g/oradata/duptest/users01.dbf
datafile 5 switched to datafile copy
input datafile copy recid=4 stamp=674797938 filename=/opt/ora10g/oradata/duptest/oldyang.dbf

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

executing command: SET until clause

Starting recover at 30-DEC-08

starting media recovery

channel aux1: starting archive log restore to default destination
channel aux1: restoring archive log
archive log thread=1 sequence=28
channel aux1: reading from backup piece
/opt/ora10g/flash_recovery_area/OLDYANG/backupset/2008_12_30/o1_mf_annnn_TAG20081230T04234
8_4oldgoqn_.bkp
channel aux1: restored backup piece 1
piece
handle=/opt/ora10g/flash_recovery_area/OLDYANG/backupset/2008_12_30/o1_mf_annnn_TAG2008123
0T042348_4oldgoqn_.bkp tag=TAG20081230T042348
channel aux1: restore complete, elapsed time: 00:00:02
archive log filename=/opt/ora10g/logarchive/duptest/ARC0000000028_0671032283.0001 thread=1
sequence=28
channel clone_default: deleting archive log(s)
archive log filename=/opt/ora10g/logarchive/duptest/ARC0000000028_0671032283.0001 recid=1
stamp=674797940
media recovery complete, elapsed time: 00:00:01
Finished recover at 30-DEC-08

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

database dismounted
Oracle instance shut down

connected to auxiliary database (not started)
Oracle instance started

Total System Global Area 205520896 bytes

Fixed Size 1218532 bytes
Variable Size 71305244 bytes
Database Buffers 130023424 bytes
Redo Buffers 2973696 bytes
sql statement: CREATE CONTROLFILE REUSE SET DATABASE "DUPTEST" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/opt/ora10g/oradata/duptest/redo01.log' SIZE 50 M ,
GROUP 2 '/opt/ora10g/oradata/duptest/redo02.log' SIZE 50 M ,
GROUP 3 '/opt/ora10g/oradata/duptest/redo03.log' SIZE 50 M
DATAFILE
'/opt/ora10g/oradata/duptest/system01.dbf'
CHARACTER SET AL32UTF8

contents of Memory Script:
{
set newname for tempfile 1 to
"/opt/ora10g/oradata/duptest/temp01.dbf";
switch clone tempfile all;
catalog clone datafilecopy "/opt/ora10g/oradata/duptest/undotbs01.dbf";
catalog clone datafilecopy "/opt/ora10g/oradata/duptest/sysaux01.dbf";
catalog clone datafilecopy "/opt/ora10g/oradata/duptest/users01.dbf";
catalog clone datafilecopy "/opt/ora10g/oradata/duptest/oldyang.dbf";
switch clone datafile all;
}
executing Memory Script

executing command: SET NEWNAME

renamed temporary file 1 to /opt/ora10g/oradata/duptest/temp01.dbf in control file

cataloged datafile copy
datafile copy filename=/opt/ora10g/oradata/duptest/undotbs01.dbf recid=1 stamp=674797950

cataloged datafile copy
datafile copy filename=/opt/ora10g/oradata/duptest/sysaux01.dbf recid=2 stamp=674797950

cataloged datafile copy
datafile copy filename=/opt/ora10g/oradata/duptest/users01.dbf recid=3 stamp=674797950

cataloged datafile copy
datafile copy filename=/opt/ora10g/oradata/duptest/oldyang.dbf recid=4 stamp=674797950

datafile 2 switched to datafile copy
input datafile copy recid=1 stamp=674797950
filename=/opt/ora10g/oradata/duptest/undotbs01.dbf
datafile 3 switched to datafile copy
input datafile copy recid=2 stamp=674797950
filename=/opt/ora10g/oradata/duptest/sysaux01.dbf
datafile 4 switched to datafile copy
input datafile copy recid=3 stamp=674797950 filename=/opt/ora10g/oradata/duptest/users01.dbf
datafile 5 switched to datafile copy
input datafile copy recid=4 stamp=674797950 filename=/opt/ora10g/oradata/duptest/oldyang.dbf

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

database opened
Finished Duplicate Db at 30-DEC-08

复制完成,登录Auxiliary Database并核对数据:

[oracle@rhel ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Tue Dec 30 03:54:13 2008

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

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> select instance_name, status from v$instance;

 INSTANCE_NAME   STATUS
 --------------  -------
       duptest     OPEN

SQL> select dbid from v$database;

DBID
----------
608220667

SQL> select count(*) from oldyang.eempb;

COUNT(*)
--------
     71

可以看到,Auxiliary Database生成了新的DBID,对eempb表的查询结果与之前的Target Database保持一致。

Rand Posts:



我们在天上的父
愿人都尊你的名为圣
愿你的国降临
愿你的旨意行在地上如同行在天上
我们将顺着你的指引前行
直至重归你的梯下


10 条评论



  1. 经此前一战,臣闻:一鼓作气,一而再,再而三,趁着神智尚清,精神恍惚之际,赶紧留下遗言:陛下此文堪称:杨家之绝唱,无韵之离骚,可谓:究天人之际,通古今之变,成一家之言。话毕:只见微臣,嘴唇发干,手心出汗,大腿发嘛,竟用去五成功力,明显体力不支,微臣告退。。。

    [ 引用 ]


  2. 。。。。。。

    [ 引用 ]


  3. 测试插件

    [ 引用 ]


  4. 很久没来进谏了

    [ 引用 ]


  5. 来拜年啦,
    祝靓仔牛年牛运亨通,牛气十足! :)

    [ 引用 ]


  6. happy牛year,留个MARK,祝老杨年后子弹不在卡镗用力往前射!

    [ 引用 ]


  7. 我直接昏迷。。。来不及YD。。。

    [ 引用 ]


  8. 找不到地方留言,就这啦~· 高声清唱一句“我恭喜发财,恭喜你精彩,不好的请走开……” :o :o

    [ 引用 ]


  9. 哈哈,新年快乐。。。
    我永远看不懂你在写些虾米东西 :?:

    [ 引用 ]


  10. 诸位爱卿新年快乐!看到大家都在为了社稷殚精竭虑。。。鄙人灰常滴感动。。。

    [ 引用 ]

发表评论

文明上网,共建和谐社会。