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 sysdba

SQL*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)
    )
  )

Rand Posts:



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


8 条评论



  1. 对于陛下的此类博文,微臣就只能膜拜了~~~

    [ 引用 ]


  2. 。。。。。。

    鄙人目前只是照着一堆文档葫芦画瓢,暂处于甲骨文主义初级阶段。。。此类BO文也只是为了给朕年轻时风轻云淡、山高水长的花样年华留个纪念。。。

    [ 引用 ]


  3. 臣观此文,突悟:臣不畏死,奈何以死惧之。阅毕此文,臣可以自豪的说,曾经有一篇BO文令臣几度失襟,几度不省人事,未了以一对联作结:
    上联:行云流水吟此文,
    下联:日思千里成鬼泣。
    横批:陛下饶命

    [ 引用 ]


  4. 已HEXIE部分评论文字。。。请超爱卿饶朕一命。。。

    [ 引用 ]


  5. Test一下手机进谏,懒得填邮箱,居然还必须填一个Valid才能过

    [ 引用 ]


  6. 太专业了,在进谏史上翻开了新的一页。。。记得俺好像是在后台设置了传说中的邮箱合法值检验

    [ 引用 ]


  7. 老杨 在 2009年01月31日 17:01 说到:

    太专业了,在进谏史上翻开了新的一页。。。记得俺好像是在后台设置了传说中的邮箱合法值检验

    看我手机留言的时间,那可是01:37,多敬业!唯一美中不足就是没有显示我这是wap手机留的啊 :cry:

    [ 引用 ]


  8. 爱卿确实很让朕感动:作案手段专业,作案时间敬业。

    不过如果还想要智能判断作案渠道,恐怕是要移转开发了。。。

    [ 引用 ]

发表评论

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