实验目的:同一台服务器上,复制数据库ORCL到副本数据库GROW,复制完后,服务器就同时有两个数据库。
实验环境:oracle安装的主目录:D:\oracle\product\10.2.0\db_1
只有一个数据库ORCL
一、首先要创建备份集,这样才能用duplicate复制出新的数据库
检查是否处于归档模式
SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 1
下一个存档日志序列 3
当前日志序列 3
C:\Documents and Settings\Administrator>rman target /
RMAN> configure controlfile autobackup on;
RMAN> backup database plus archivelog delete input;
RMAN> list backupset;
D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2013_11_13\O1_MF_ANNNN_TAG20131113T171117_986JKQ2G_.BKP
D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2013_11_13\O1_M
F_NNNDF_TAG20131113T171120_986JKRN0_.BKP
D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2013_11_13\O1_M
F_ANNNN_TAG20131113T171245_986JNGSW_.BKP
D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\AUTOBACKUP\2013_11_13\O1_
MF_S_831402768_986JNJY8_.BKP
多出了4个备份集。
二、创建以下目录
D:\oracle\product\10.2.0\admin>mkdir grow
D:\oracle\product\10.2.0\admin>cd grow
D:\oracle\product\10.2.0\admin\grow>mkdir adump bdump cdump dpdump pfile udump
D:\oracle\product\10.2.0\oradata>mkdir grow
D:\oracle\product\10.2.0\flash_recovery_area>mkdir GROW
创建init.ora,内容如下:
db_name='grow'
control_files='D:\oracle\product\10.2.0\oradata\grow\control01.ctl','D:\oracle\product\10.2.0\oradata\grow\control02.ctl','D:\oracle\product\10.2.0\oradata\grow\control03.ctl'
Shared_Pool_size=200000000
db_block_size=8192
DB_FILE_NAME_CONVERT=('D:\oracle\product\10.2.0\oradata\orcl','D:\oracle\product\10.2.0\oradata\grow')
LOG_FILE_NAME_CONVERT=('D:\oracle\product\10.2.0\oradata\orcl','D:\oracle\product\10.2.0\oradata\grow')
audit_file_dest='D:\oracle\product\10.2.0\admin\grow\adump'
background_dump_dest='D:\oracle\product\10.2.0\admin\grow\bdump'
compatible='10.2.0.1.0'
core_dump_dest='D:\oracle\product\10.2.0\admin\grow\cdump'
user_dump_dest='D:\oracle\product\10.2.0\admin\grow\udump'
把文件init.ora保存到F:\oracle\product\10.2.0\admin\grow\pfile目录下:
三、创建辅助实例的密码文件
C:\Documents and Settings\Administrator>orapwd file=d:\oracle\product\10.2.0\db_1\database\PWDgrow.ora password=oracle entries=30
C:\Documents and Settings\Administrator>oradim -new -sid grow
实例已创建。
C:\Documents and Settings\Administrator>set oracle_sid=grow
C:\Documents and Settings\Administrator>sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on 星期四10 月18 17:26:03 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
已连接到空闲例程。
SQL> create spfile from pfile='d:\oracle\product\10.2.0\admin\grow\pfile\init.ora';
四、启动辅助实例(Start the Auxiliary Instance)
接着上一步,创建完spfile 之后:
SQL> startup nomount;
ORACLE 例程
五、修改文件listener.ora,最后内容如下
# listener.ora Network Configuration File: D:\oracle\product\10.2.0\db_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = grow)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(global_name = grow)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = PC--20130531WUF)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
在tnsnames.ora添加如下内容
grow =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = PC--20130531WUF)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = grow )
)
)
重新启动监听服务器
六、
C:\Documents and Settings\Administrator>set oracle_sid=orcl
###目标数据库使用操作系统认证,所以首先设置SID
C:\Documents and Settings\Administrator>rman target / auxiliary sys/oracle@grow
恢复管理器: Release 10.2.0.1.0 - Production on 星期三 11月 13 17:25:56 2013
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到目标数据库: ORCL (DBID=1359182307)
已连接到辅助数据库: GROW (未装载)
RMAN> duplicate target database to grow;
启动 Duplicate Db 于 13-11月-13
使用通道 ORA_AUX_DISK_1
内存脚本的内容:
{
set until scn 577831;
set newname for datafile 1 to
"D:\ORACLE\PRODUCT\10.2.0\ORADATA\GROW\SYSTEM01.DBF";
set newname for datafile 2 to
"D:\ORACLE\PRODUCT\10.2.0\ORADATA\GROW\UNDOTBS01.DBF";
set newname for datafile 3 to
"D:\ORACLE\PRODUCT\10.2.0\ORADATA\GROW\SYSAUX01.DBF";
set newname for datafile 4 to
"D:\ORACLE\PRODUCT\10.2.0\ORADATA\GROW\USERS01.DBF";
set newname for datafile 5 to
"D:\ORACLE\PRODUCT\10.2.0\ORADATA\GROW\EXAMPLE01.DBF";
restore
check readonly
clone database
;
}
正在执行内存脚本
正在执行命令: SET until clause
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
启动 restore 于 13-11月-13
使用通道 ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_AUX_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\GROW\SYSTEM01.DBF
正将数据文件00002恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\GROW\UNDOTBS01.DBF
正将数据文件00003恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\GROW\SYSAUX01.DBF
正将数据文件00004恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\GROW\USERS01.DBF
正将数据文件00005恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\GROW\EXAMPLE01.DBF
通道 ORA_AUX_DISK_1: 正在读取备份段 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA
\ORCL\BACKUPSET\2013_11_13\O1_MF_NNNDF_TAG20131113T171120_986JKRN0_.BKP
通道 ORA_AUX_DISK_1: 已恢复备份段 1
段句柄 = D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2013_11_13\
O1_MF_NNNDF_TAG20131113T171120_986JKRN0_.BKP 标记 = TAG20131113T171120
通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:01:05
完成 restore 于 13-11月-13
sql 语句: CREATE CONTROLFILE REUSE SET DATABASE "GROW" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 ( 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\GROW\REDO01.LOG' ) SIZE 50 M REU
SE,
GROUP 2 ( 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\GROW\REDO02.LOG' ) SIZE 50 M REU
SE,
GROUP 3 ( 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\GROW\REDO03.LOG' ) SIZE 50 M REU
SE
DATAFILE
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\GROW\SYSTEM01.DBF'
CHARACTER SET ZHS16GBK
内存脚本的内容:
{
switch clone datafile all;
}
正在执行内存脚本
释放的通道: ORA_AUX_DISK_1
数据文件 2 已转换成数据文件副本
输入数据文件副本 recid=1 stamp=831403905 文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA
\GROW\UNDOTBS01.DBF
数据文件 3 已转换成数据文件副本
输入数据文件副本 recid=2 stamp=831403905 文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA
\GROW\SYSAUX01.DBF
数据文件 4 已转换成数据文件副本
输入数据文件副本 recid=3 stamp=831403905 文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA
\GROW\USERS01.DBF
数据文件 5 已转换成数据文件副本
输入数据文件副本 recid=4 stamp=831403905 文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA
\GROW\EXAMPLE01.DBF
内存脚本的内容:
{
set until scn 577831;
recover
clone database
delete archivelog
;
}
正在执行内存脚本
正在执行命令: SET until clause
启动 recover 于 13-11月-13
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=37 devtype=DISK
正在开始介质的恢复
通道 ORA_AUX_DISK_1: 正在启动到默认目标的存档日志恢复
通道 ORA_AUX_DISK_1: 正在恢复存档日志
存档日志线程 =1 序列=4
通道 ORA_AUX_DISK_1: 正在读取备份段 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA
\ORCL\BACKUPSET\2013_11_13\O1_MF_ANNNN_TAG20131113T171245_986JNGSW_.BKP
通道 ORA_AUX_DISK_1: 已恢复备份段 1
段句柄 = D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2013_11_13\
O1_MF_ANNNN_TAG20131113T171245_986JNGSW_.BKP 标记 = TAG20131113T171245
通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:00:01
存档日志文件名 =D:\ORACLE\PRODUCT\10.2.0\DB_1\RDBMS\ARC00004_0831401573.001 线程
=1 序列 =4
通道 clone_default: 正在删除存档日志
存档日志文件名 =D:\ORACLE\PRODUCT\10.2.0\DB_1\RDBMS\ARC00004_0831401573.001 记录
ID=1 时间戳 =831403907
介质恢复完成, 用时: 00:00:02
完成 recover 于 13-11月-13
内存脚本的内容:
{
shutdown clone;
startup clone nomount ;
}
正在执行内存脚本
数据库已卸载
Oracle 实例已关闭
已连接到辅助数据库 (未启动)
Oracle 实例已启动
系统全局区域总计 285212672 字节
Fixed Size 1248552 字节
Variable Size 226493144 字节
Database Buffers 50331648 字节
Redo Buffers 7139328 字节
sql 语句: CREATE CONTROLFILE REUSE SET DATABASE "GROW" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 ( 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\GROW\REDO01.LOG' ) SIZE 50 M REU
SE,
GROUP 2 ( 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\GROW\REDO02.LOG' ) SIZE 50 M REU
SE,
GROUP 3 ( 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\GROW\REDO03.LOG' ) SIZE 50 M REU
SE
DATAFILE
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\GROW\SYSTEM01.DBF'
CHARACTER SET ZHS16GBK
内存脚本的内容:
{
set newname for tempfile 1 to
"D:\ORACLE\PRODUCT\10.2.0\ORADATA\GROW\TEMP01.DBF";
switch clone tempfile all;
catalog clone datafilecopy "D:\ORACLE\PRODUCT\10.2.0\ORADATA\GROW\UNDOTBS01.
DBF";
catalog clone datafilecopy "D:\ORACLE\PRODUCT\10.2.0\ORADATA\GROW\SYSAUX01.D
BF";
catalog clone datafilecopy "D:\ORACLE\PRODUCT\10.2.0\ORADATA\GROW\USERS01.DB
F";
catalog clone datafilecopy "D:\ORACLE\PRODUCT\10.2.0\ORADATA\GROW\EXAMPLE01.
DBF";
switch clone datafile all;
}
正在执行内存脚本
正在执行命令: SET NEWNAME
临时文件 1 在控制文件中已重命名为 D:\ORACLE\PRODUCT\10.2.0\ORADATA\GROW\TEMP01.D
BF
已将数据文件副本列入目录
数据文件副本 filename=D:\ORACLE\PRODUCT\10.2.0\ORADATA\GROW\UNDOTBS01.DBF recid=
1 stamp=831403917
已将数据文件副本列入目录
数据文件副本 filename=D:\ORACLE\PRODUCT\10.2.0\ORADATA\GROW\SYSAUX01.DBF recid=2
stamp=831403917
已将数据文件副本列入目录
数据文件副本 filename=D:\ORACLE\PRODUCT\10.2.0\ORADATA\GROW\USERS01.DBF recid=3
stamp=831403917
已将数据文件副本列入目录
数据文件副本 filename=D:\ORACLE\PRODUCT\10.2.0\ORADATA\GROW\EXAMPLE01.DBF recid=
4 stamp=831403917
数据文件 2 已转换成数据文件副本
输入数据文件副本 recid=1 stamp=831403917 文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA
\GROW\UNDOTBS01.DBF
数据文件 3 已转换成数据文件副本
输入数据文件副本 recid=2 stamp=831403917 文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA
\GROW\SYSAUX01.DBF
数据文件 4 已转换成数据文件副本
输入数据文件副本 recid=3 stamp=831403917 文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA
\GROW\USERS01.DBF
数据文件 5 已转换成数据文件副本
输入数据文件副本 recid=4 stamp=831403917 文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA
\GROW\EXAMPLE01.DBF
内存脚本的内容:
{
Alter clone database open resetlogs;
}
正在执行内存脚本
数据库已打开
完成 Duplicate Db 于 13-11月-13
RMAN>exit;