oracle --10g 中Duplicate 复制数据库

本次实验通过duplicate命令,在本机环境中创建一个复制数据库。目标数据库为hongye、复制数据库为catdb。

环境别名设置:
alias sql='rlwrap sqlplus /nolog'
alias rman='rlwrap rman'
alias dbs='cd $ORACLE_HOME/dbs'
alias rdb='cd $ORACLE_HOME/rdbms/admin'
alias udu='cd $ORACLE_BASE/admin/$ORACLE_SID/udump'
alias bdu='cd $ORACLE_BASE/admin/$ORACLE_SID/bdump'
alias rmalert='rm -f $ORACLE_BASE/admin/$ORACLE_SID/bdump/*;rm -f $ORACLE_BASE/admin/$ORACLE_SID/udump/*'


详细步骤如下:

1、构建catdb的初始化参数文件,本次实验使用的参数文件是从hongye数据库中创建出来的,并做了一些修改。
注意参数db_file_name_convert和log_file_name_convert参数,这两个参数控制了数据文件和日志文件的重命名,关于数据文件的重命名也可以使用set newname命令,日志文件的重命名可以在duplicate命令的子句中指定,但均没有init参数中的转换方便。
db_file_name_convert和log_file_name_convert参数都是使用串替换的方式重命名的,通过将目标文件名的指定的字符串替换成指定的字符串,从而生成新的文件名
本次实验中,hongye数据库的数据文件存放在路径为:/oracle/oradata/hongye/,而catdb的数据文件路径为:/oracle/oradata/catdb/,所以只要将所有文件名中的hongye替换成catdb就可以了。

[oracle@ORA10G ~]$ dbs                                                                                   
[oracle@ORA10G dbs]$ echo $ORACLE_SID
hongye
[oracle@ORA10G dbs]$ ll
total 6960
-rw-rw----  1 oracle oinstall    1544 Feb 11 22:13 hc_hongye.dat
-rw-r-----  1 oracle oinstall     848 Feb 17 19:46 initcatdb.ora
-rw-r--r--  1 oracle oinstall   12920 May  3  2001 initdw.ora
-rw-r-----  1 oracle oinstall    1079 Feb 17 19:21 inithongye.ora
-rw-r-----  1 oracle oinstall    2469 Feb 11 20:59 init.ora
-rw-r-----  1 oracle oinstall      24 Feb 11 19:20 lkHONGYE
-rw-r-----  1 oracle oinstall    1536 Feb 17 19:49 orapwcatdb
-rw-r-----  1 oracle oinstall    1536 Feb 15 21:01 orapwhongye
-rw-r-----  1 oracle oinstall 7061504 Feb 17 19:20 snapcf_hongye.f
-rw-r-----  1 oracle oinstall    3584 Feb 17 19:16 spfilehongye.ora
-rw-r-----  1 oracle oinstall     694 Feb 17 19:34 sqlnet.log
[oracle@ORA10G dbs]$ vi initcatdb.ora
*.audit_file_dest='/oracle/admin/catdb/adump'
*.background_dump_dest='/oracle/admin/catdb/bdump'
*.compatible='10.2.0.5.0'
*.control_files='/oracle/oradata/catdb/control01.ctl'
*.core_dump_dest='/oracle/admin/catdb/cdump'
*.db_block_size=8192
*.db_domain='oracle.com'
*.db_file_multiblock_read_count=16
*.db_name='catdb'
*.db_recovery_file_dest='/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.dispatchers='(PROTOCOL=TCP) (SERVICE=catdbXDB)'
*.job_queue_processes=10
*.nls_date_format='yyyy-mm-dd hh24:mi:ss'
*.open_cursors=30
*.pga_aggregate_target=16777216
*.processes=50
*.remote_login_passwordfile='EXCLUSIVE'
*.sessions=70
*.sga_target=80M
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/oracle/admin/catdb/udump'
--文件名的转换参数:
db_file_name_convert=('hongye','catdb')
log_file_name_convert=('hongye','catdb')
~
~
~
~
~
"initcata.ora" 25L, 848C written

2、创建复制数据库的相关目录,包括adump、bdump、cdump、udump、oradata/catdb

[oracle@ORA10G dbs]$ cd /oracle/admin
[oracle@ORA10G dbs]$ mkdir catdb catdb/adump catdb/bdump catdb/cdump catdb/udump
[oracle@ORA10G dbs]$ ll /oracle/admin/
total 8
drwxr-xr-x  7 oracle oinstall 4096 Feb 17 19:29 catdb
drwxr-x---  8 oracle oinstall 4096 Feb 11 19:19 hongye
[oracle@ORA10G dbs]$ mkdir /oracle/oradata/catdb/
[oracle@ORA10G dbs]$ ll /oracle/oradata/catdb/
total 0

3、将ORACLE_SID设置为复制数据库的sid,那么就不需要额外的配置复制数据库的网络文件了,前提是已经配置了目标数据库的网络配置文件,二者必须至少要配其一。

[oracle@ORA10G dbs]$ echo $ORACLE_SID
hongye
[oracle@ORA10G dbs]$ export ORACLE_SID=catdb
[oracle@ORA10G dbs]$ echo $ORACLE_SID
catdb

4、创建复制数据库的密码文件。

[oracle@ORA10G dbs]$ orapwd file=$ORACLE_HOME/dbs/orapwcatdb

Enter password for SYS:

5、登录复制数据库,以nomount方式打开数据库。

[oracle@ORA10G dbs]$ sql

SQL*Plus: Release 10.2.0.5.0 - Production on Thu Feb 17 19:50:57 2011

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.

IDLE > conn /as sysdba
Connected to an idle instance.
IDLE > startup nomount pfile=$ORACLE_HOME/dbs/initcatdb.ora
ORACLE instance started.

Total System Global Area   83886080 bytes
Fixed Size                  1272096 bytes
Variable Size              58722016 bytes
Database Buffers           16777216 bytes
Redo Buffers                7114752 bytes
IDLE > exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

6、在RMAN中执行数据库的复制操作。

[oracle@ORA10G dbs]$ rman

Recovery Manager: Release 10.2.0.5.0 - Production on Thu Feb 17 19:51:50 2011

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

RMAN> connect target sys/hongye50@hongye

connected to target database: HONGYE (DBID=2424037643)

RMAN> connect auxiliary /

connected to auxiliary database: CATDB (not mounted)

RMAN> duplicate target database to catdb;

Starting Duplicate Db at 17-FEB-11
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: sid=56 devtype=DISK

contents of Memory Script:
{
   set until scn  1219581;
   set newname for datafile  1 to
"/oracle/oradata/catdb/system01.dbf";
   set newname for datafile  2 to
"/oracle/oradata/catdb/undotbs01.dbf";
   set newname for datafile  3 to
"/oracle/oradata/catdb/sysaux01.dbf";
   set newname for datafile  4 to
"/oracle/oradata/catdb/users01.dbf";
   set newname for datafile  5 to
"/oracle/oradata/catdb/example01.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 17-FEB-11
using channel ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: starting datafile backupset restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /oracle/oradata/catdb/system01.dbf
restoring datafile 00002 to /oracle/oradata/catdb/undotbs01.dbf
restoring datafile 00003 to /oracle/oradata/catdb/sysaux01.dbf
restoring datafile 00004 to /oracle/oradata/catdb/users01.dbf
restoring datafile 00005 to /oracle/oradata/catdb/example01.dbf
channel ORA_AUX_DISK_1: reading from backup piece /oracle/flash_recovery_area/HONGYE/backupset/2011_02_17/o1_mf_nnndf_TAG20110217T191915_6ot11mbc_.bkp
channel ORA_AUX_DISK_1: restored backup piece 1
piece handle=/oracle/flash_recovery_area/HONGYE/backupset/2011_02_17/o1_mf_nnndf_TAG20110217T191915_6ot11mbc_.bkp tag=TAG20110217T191915
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:01:37
Finished restore at 17-FEB-11

sql statement: CREATE CONTROLFILE REUSE SET DATABASE "CATDB" RESETLOGS ARCHIVELOG
  MAXLOGFILES     16
  MAXLOGMEMBERS      3
  MAXDATAFILES      100
  MAXINSTANCES     8
  MAXLOGHISTORY      292
LOGFILE
  GROUP  1 ( '/oracle/oradata/catdb/redo01.log' ) SIZE 50 M  REUSE,
  GROUP  2 ( '/oracle/oradata/catdb/redo02.log' ) SIZE 50 M  REUSE,
  GROUP  3 ( '/oracle/oradata/catdb/redo03.log' ) SIZE 50 M  REUSE
DATAFILE
  '/oracle/oradata/catdb/system01.dbf'
CHARACTER SET WE8ISO8859P1

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

datafile 2 switched to datafile copy
input datafile copy recid=1 stamp=743370847 filename=/oracle/oradata/catdb/undotbs01.dbf
datafile 3 switched to datafile copy
input datafile copy recid=2 stamp=743370847 filename=/oracle/oradata/catdb/sysaux01.dbf
datafile 4 switched to datafile copy
input datafile copy recid=3 stamp=743370847 filename=/oracle/oradata/catdb/users01.dbf
datafile 5 switched to datafile copy
input datafile copy recid=4 stamp=743370847 filename=/oracle/oradata/catdb/example01.dbf

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

executing command: SET until clause

Starting recover at 17-FEB-11
using channel ORA_AUX_DISK_1

starting media recovery

channel ORA_AUX_DISK_1: starting archive log restore to default destination
channel ORA_AUX_DISK_1: restoring archive log
archive log thread=1 sequence=2
channel ORA_AUX_DISK_1: reading from backup piece /oracle/flash_recovery_area/HONGYE/backupset/2011_02_17/o1_mf_annnn_TAG20110217T192041_6ot14bjm_.bkp
channel ORA_AUX_DISK_1: restored backup piece 1
piece handle=/oracle/flash_recovery_area/HONGYE/backupset/2011_02_17/o1_mf_annnn_TAG20110217T192041_6ot14bjm_.bkp tag=TAG20110217T192041
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:02
archive log filename=/oracle/flash_recovery_area/CATDB/archivelog/2011_02_17/o1_mf_1_2_6ot3332m_.arc thread=1 sequence=2
channel clone_default: deleting archive log(s)
archive log filename=/oracle/flash_recovery_area/CATDB/archivelog/2011_02_17/o1_mf_1_2_6ot3332m_.arc recid=1 stamp=743370851
media recovery complete, elapsed time: 00:00:03
Finished recover at 17-FEB-11

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      83886080 bytes

Fixed Size                     1272096 bytes
Variable Size                 58722016 bytes
Database Buffers              16777216 bytes
Redo Buffers                   7114752 bytes
sql statement: CREATE CONTROLFILE REUSE SET DATABASE "CATDB" RESETLOGS ARCHIVELOG
  MAXLOGFILES     16
  MAXLOGMEMBERS      3
  MAXDATAFILES      100
  MAXINSTANCES     8
  MAXLOGHISTORY      292
LOGFILE
  GROUP  1 ( '/oracle/oradata/catdb/redo01.log' ) SIZE 50 M  REUSE,
  GROUP  2 ( '/oracle/oradata/catdb/redo02.log' ) SIZE 50 M  REUSE,
  GROUP  3 ( '/oracle/oradata/catdb/redo03.log' ) SIZE 50 M  REUSE
DATAFILE
  '/oracle/oradata/catdb/system01.dbf'
CHARACTER SET WE8ISO8859P1


contents of Memory Script:
{
   set newname for tempfile  1 to
"/oracle/oradata/catdb/temp01.dbf";
   set newname for tempfile  2 to
"/oracle/oradata/catdb/temp02.dbf";
   switch clone tempfile all;
   catalog clone datafilecopy  "/oracle/oradata/catdb/undotbs01.dbf";
   catalog clone datafilecopy  "/oracle/oradata/catdb/sysaux01.dbf";
   catalog clone datafilecopy  "/oracle/oradata/catdb/users01.dbf";
   catalog clone datafilecopy  "/oracle/oradata/catdb/example01.dbf";
   switch clone datafile all;
}
executing Memory Script

executing command: SET NEWNAME

executing command: SET NEWNAME

renamed temporary file 1 to /oracle/oradata/catdb/temp01.dbf in control file
renamed temporary file 2 to /oracle/oradata/catdb/temp02.dbf in control file

cataloged datafile copy
datafile copy filename=/oracle/oradata/catdb/undotbs01.dbf recid=1 stamp=743370868

cataloged datafile copy
datafile copy filename=/oracle/oradata/catdb/sysaux01.dbf recid=2 stamp=743370869

cataloged datafile copy
datafile copy filename=/oracle/oradata/catdb/users01.dbf recid=3 stamp=743370869

cataloged datafile copy
datafile copy filename=/oracle/oradata/catdb/example01.dbf recid=4 stamp=743370869

datafile 2 switched to datafile copy
input datafile copy recid=1 stamp=743370868 filename=/oracle/oradata/catdb/undotbs01.dbf
datafile 3 switched to datafile copy
input datafile copy recid=2 stamp=743370869 filename=/oracle/oradata/catdb/sysaux01.dbf
datafile 4 switched to datafile copy
input datafile copy recid=3 stamp=743370869 filename=/oracle/oradata/catdb/users01.dbf
datafile 5 switched to datafile copy
input datafile copy recid=4 stamp=743370869 filename=/oracle/oradata/catdb/example01.dbf

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

database opened
Finished Duplicate Db at 17-FEB-11

RMAN> exit


Recovery Manager complete.

7、登录复制数据库,查看结果。

[oracle@ORA10G dbs]$ sql

SQL*Plus: Release 10.2.0.5.0 - Production on Thu Feb 17 19:55:07 2011

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.

IDLE > conn /as sysdba
Connected.
SYS:57@catdb > select open_mode from v$database;

OPEN_MODE
----------
READ WRITE

SYS:57@catdb > @get_allfile

TYPE                FILE_NAME                                                                 SIZE_MB
------------------- ---------------------------------------------------------------------- ----------
Datafile ........  /oracle/oradata/catdb/system01.dbf                                            600
Datafile ........  /oracle/oradata/catdb/undotbs01.dbf                                           405
Datafile ........  /oracle/oradata/catdb/sysaux01.dbf                                            300
Datafile ........  /oracle/oradata/catdb/users01.dbf                                              20
Datafile ........  /oracle/oradata/catdb/example01.dbf                                           100

TempFile ........  /oracle/oradata/catdb/temp01.dbf                                               30
TempFile ........  /oracle/oradata/catdb/temp02.dbf                                               30

Logfile .........  /oracle/oradata/catdb/redo03.log                                               50
Logfile .........  /oracle/oradata/catdb/redo02.log                                               50
Logfile .........  /oracle/oradata/catdb/redo01.log                                               50

Controlfile .....  /oracle/oradata/catdb/control01.ctl                                             7


11 rows selected.

SYS:57@catdb >

猜你喜欢

转载自tianyihuyidao9.iteye.com/blog/1554605