1. 测试环境
VMWare Server 1.0.6: Virtual PC*2
OS: Red Hat Enterprise Linux AS release 4 (Nahant Update 5)
Oracle: 10g Enterprise Edition Release 10.2.0.1.0
Network: host-only
Target Database(sid=oldyang, 169.254.0.11)
Auxiliary Database(sid=duptest, 169.254.0.12)
2. 配置Auxiliary Database
首先,建立相关的目录:
[oracle@rhel ~]$ mkdir /opt/ora10g/admin/duptest/
[oracle@rhel ~]$ mkdir /opt/ora10g/admin/duptest/adump
[oracle@rhel ~]$ mkdir /opt/ora10g/admin/duptest/bdump
[oracle@rhel ~]$ mkdir /opt/ora10g/admin/duptest/cdump
[oracle@rhel ~]$ mkdir /opt/ora10g/admin/duptest/dpdump
[oracle@rhel ~]$ mkdir /opt/ora10g/admin/duptest/pfile
[oracle@rhel ~]$ mkdir /opt/ora10g/admin/duptest/udump
[oracle@rhel ~]$ mkdir /opt/ora10g/logarchive/duptest
[oracle@rhel ~]$ mkdir /opt/ora10g/oradata/duptest
[oracle@rhel ~]$ mkdir /opt/ora10g/flash_recovery_area/DUPTEST
然后创建口令文件:
[oracle@rhel dbs]$ orapwd file=$ORACLE_HOME\dbs\orapwduptest password=orcl entries=30
口令文件的命名格式应为orapwsid,并且sid是区分大小写的。由于Target Database连接Auxiliary Database时需要验证口令,如果违反了以上规则,将会提示ORA-01031: insufficient privileges。
接着,编辑并建立参数文件:
[oracle@rhel dbs]$ vi initduptest.ora
control_files = '/opt/ora10g/oradata/duptest/CONTROL01.CTL',
'/opt/ora10g/oradata/duptest/CONTROL02.CTL',
'/opt/ora10g/oradata/duptest/CONTROL03.CTL'
db_recovery_file_dest = '/opt/ora10g/flash_recovery_area'
db_recovery_file_dest_size = 2147483648
audit_file_dest = '/opt/ora10g/admin/duptest/adump'
background_dump_dest = '/opt/ora10g/admin/duptest/bdump'
user_dump_dest = '/opt/ora10g/admin/duptest/udump'
core_dump_dest = '/opt/ora10g/admin/duptest/cdump'
db_name = 'DUPTEST'
shared_pool_size = 62914560
large_pool_size = 4194304
java_pool_size = 4194304
streams_pool_size = 0
db_cache_size = 130023424
sga_target = 205520896
db_block_size = 8192
log_archive_dest_1 = 'LOCATION=/opt/ora10g/logarchive/duptest'
log_archive_format = 'ARC%S_%R.%T'
db_file_multiblock_read_count = 16
undo_management = 'AUTO'
undo_tablespace = 'UNDOTBS1'
pga_aggregate_target = 68157440
compatible = 10.2.0.1.0
需要特别注意的是,除了基本的参数之外,还必须加上compatible=10.2.0.1.0这条参数,否则在随后的复制过程中会发生以下错误:
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 12/30/2008 05:03:02
RMAN-06136: ORACLE error from auxiliary database: ORA-01503: CREATE CONTROLFILE failed
ORA-01130: database file version 10.2.0.1.0 incompatible with ORACLE version 10.2.0.0.0
ORA-01110: data file 1: '/opt/ora10g/oradata/duptest/system01.dbf'
启动Auxiliary实例到nomount状态,创建SPFILE:
[oracle@rhel dbs]$ export $ORACLE_SID=duptest
[oracle@rhel dbs]$ sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on Mon Dec 29 22:54:51 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup force nomount;
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> create spfile from pfile;File created.
以nomount方式启动Auxiliary实例之后,应关闭会话,因为在随后的复制过程当中,Oracle将会shutdown
Auxiliary实例,如果相关会话没有断开,将会阻止DUPLICATE的操作。
最后,编辑listener.ora并启动监听器,Auxiliary Database的配置也就大体上完成了,收工之前再婆妈一句:注意listener.ora中SID_NAME的大小写。
[oracle@rhel admin]$ vi listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /opt/ora10g/product/10.2.0/db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GOLBAL_DBNAME = DUPTEST)
(ORACLE_HOME = /opt/ora10g/product/10.2.0/db_1)
(SID_NAME = duptest)
)
)LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
)[oracle@rhel admin]$ lsnrctl start
3. 配置Target Database
先执行一个查询,以便复制完成后核对结果:
SQL> select count(*) from oldyang.eempb;
COUNT(*)
--------
71
接下来,确认目标数据库的RMAN备份状况:
[oracle@rhel dbs]$ rman target /
Recovery Manager: Release 10.2.0.1.0 - Production on Tue Dec 30 03:15:03 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database: OLDYANG (DBID=1658465560)
RMAN> list backup of database;
using target database control file instead of recovery catalog
List of Backup Sets
===================BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
22 Full 796.38M DISK 00:02:11 30-DEC-08
BP Key: 22 Status: AVAILABLE Compressed: NO Tag: TAG20081230T042128
Piece Name:
/opt/ora10g/flash_recovery_area/OLDYANG/backupset/2008_12_30/o1_mf_nnndf_TAG20081230T04212
8_4oldb94g_.bkp
List of Datafiles in backup set 22
File LV Type Ckp SCN Ckp Time Name
---- -- ---- ---------- --------- ----
1 Full 918325 30-DEC-08 /opt/ora10g/oradata/oldyang/system01.dbf
2 Full 918325 30-DEC-08 /opt/ora10g/oradata/oldyang/undotbs01.dbf
3 Full 918325 30-DEC-08 /opt/ora10g/oradata/oldyang/sysaux01.dbf
4 Full 918325 30-DEC-08 /opt/ora10g/oradata/oldyang/users01.dbf
5 Full 918325 30-DEC-08 /opt/ora10g/oradata/oldyang/oldyang.dbf
然后传输Target Database上的备份至Auxiliary Database(需要事先建立好相同的目录结构):
[oracle@rhel admin]$ scp /opt/ora10g/flash_recovery_area/OLDYANG/backupset/2008_12_30/*.*
root@169.254.0.12:/opt/ora10g/flash_recovery_area/OLDYANG/backupset/2008_12_30/
root@169.254.0.12's password:
o1_mf_annnn_TAG20081230T042126_4oldb7b6_.bkp 100% 1380KB 1.4MB/s 00:00
o1_mf_annnn_TAG20081230T042348_4oldgoqn_.bkp 100% 34KB 34.0KB/s 00:00
o1_mf_ncnnf_TAG20081230T042128_4oldgk88_.bkp 100% 6944KB 6.8MB/s 00:01
o1_mf_nnndf_TAG20081230T042128_4oldb94g_.bkp 100% 796MB 4.7MB/s 02:48
编辑tnsname.ora,添加以下内容:
DUPTEST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 169.254.0.12)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = DUPTEST)
)
)
对于陛下的此类博文,微臣就只能膜拜了~~~
Aaron —— 2008年12月30日@16:42
。。。。。。
鄙人目前只是照着一堆文档葫芦画瓢,暂处于甲骨文主义初级阶段。。。此类BO文也只是为了给朕年轻时风轻云淡、山高水长的花样年华留个纪念。。。
老杨 —— 2008年12月30日@17:33
臣观此文,突悟:臣不畏死,奈何以死惧之。阅毕此文,臣可以自豪的说,曾经有一篇BO文令臣几度失襟,几度不省人事,未了以一对联作结:
上联:行云流水吟此文,
下联:日思千里成鬼泣。
横批:陛下饶命
人间美丽 —— 2008年12月30日@20:22
已HEXIE部分评论文字。。。请超爱卿饶朕一命。。。
老杨 —— 2008年12月30日@21:08
Test一下手机进谏,懒得填邮箱,居然还必须填一个Valid才能过
rain —— 2009年01月31日@01:37
太专业了,在进谏史上翻开了新的一页。。。记得俺好像是在后台设置了传说中的邮箱合法值检验
老杨 —— 2009年01月31日@17:01
看我手机留言的时间,那可是01:37,多敬业!唯一美中不足就是没有显示我这是wap手机留的啊
rain —— 2009年02月14日@10:40
爱卿确实很让朕感动:作案手段专业,作案时间敬业。
不过如果还想要智能判断作案渠道,恐怕是要移转开发了。。。
老杨 —— 2009年02月14日@13:18