使用手工建立物理standby 多少有些费事,利用oracle提供的duplicate 可以简单的完成创建物理standby 的工作!
一 环境:同一台主机
主库 orcl 备库 orcldg
二 使用rman 备份主库
C:\Documents and Settings\Administrator>rman target /
复管理器: Release 11.1.0.6.0 - Production on 星期一 9月 20 10:56:30 2010
Copyright (c) 1982, 2007, Oracle. All rights reserved.
连接到目标数据库: ORCL (DBID=1256563399)
RMAN>backup database format 'f:\backup\full_%U.bak';
......
RMAN>sql 'alter system switch logfile'
......
RMAN>backup archivelog all;
......
RMAN>
三 为备库建立参数文件,密码文件 ,配置监听文件
1 备库的参数文件:
orcl.__db_cache_size=339738624
orcl.__java_pool_size=12582912
orcl.__large_pool_size=4194304
orcl.__oracle_base='F:\ORCL'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=209715200
orcl.__sga_target=473956352
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=109051904
orcl.__streams_pool_size=0
*.audit_file_dest='F:\ORCL\admin\orcldg\adump'
*.audit_trail='db'
*.compatible='11.1.0.0.0'
*.control_files='D:\oracle\orcldgdata\control01.ctl','D:\oracle\orcldgdata\control02.ctl','D:\oracle\orcldgdata\control03.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.db_unique_name='orcl'
*.log_archive_config='DG_CONFIG=(orcl,orcldg)'
*.log_archive_dest_1='LOCATION=F:\ORCL\archive1'
*.log_archive_dest_2='SERVICE=ORCLDG ARCH VAILD_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME= orcl'
*.log_archive_dest_state_2=defer
*.db_recovery_file_dest='F:\ORCL\flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.diagnostic_dest='F:\ORCL'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.memory_target=681574400
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_max_size=471859200
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
#------- 角色转变-------
*.FAL_SERVER=ORCLDG
*.FAL_CLIENT=ORCL
*.DB_FILE_NAME_CONVERT='F:\ORCL\oradata\orcl','D:\oracle\orcldgdata'
*.LOG_FILE_NAME_CONVERT='F:\ORCL\oradata\orcl','D:\oracle\orcldgdata'
*.STANDBY_FILE_MANAGEMENT=AUTO
2 密码文件这里使用的是主库拷贝。这样保存所有的密码一致
3 监听文件:
# listener.ora 的配置
SID_LIST_LISTENER=
( SID_LIST=
(SID_DESC=
(GLOGBAL_DBNAME=orcl)
(ORCL_HOME= F:\ORCL\product\11.1.0\db_1)
(SID_NAME=orcl)
)
(SID_DESC =
(GLOBAL_NAME = orcldg)
(ORACLE_HOME = F:\ORCL\product\11.1.0\db_1)
(SID_NAME= orcldg)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = yql)(PORT = 1521))
)
)
# tnsnames.ora 的配置
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = yql)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
ORCLDG =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = yql)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcldg)
)
)
四 启动备库到nomount
ORCLDG>startup nomount pfile='f:\initORCLDG.ora'
ORACLE 例程已经启动。
Total System Global Area 472887296 bytes
Fixed Size 1333956 bytes
Variable Size 184550716 bytes
Database Buffers 281018368 bytes
Redo Buffers 5984256 bytes
五 利用duplicate创建standby 数据库
C:\Documents and Settings\Administrator>set oracle_sid=orcl
C:\Documents and Settings\Administrator>rman target / auxiliary sys/yang@orcldg
恢复管理器: Release 11.1.0.6.0 - Production on 星期一 9月 20 10:56:30 2010
Copyright (c) 1982, 2007, Oracle. All rights reserved.
连接到目标数据库: ORCL (DBID=1256563399)
已连接到辅助数据库: ORCL (未装载)
RMAN> duplicate target database for standby;
启动 Duplicate Db 于 20-9月 -10
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: SID=152 设备类型=DISK
内存脚本的内容:
{
restore clone standby controlfile;
sql clone 'alter database mount standby database';
}
正在执行内存脚本
启动 restore 于 20-9月 -10
使用通道 ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: 正在开始还原数据文件备份集
通道 ORA_AUX_DISK_1: 正在还原控制文件
通道 ORA_AUX_DISK_1: 正在读取备份片段 F:\ORCL\FLASH_RECOVERY_AREA\ORCL\AUTOBACKU
P\2010_09_20\O1_MF_S_730205638_69FM6GN0_.BKP
通道 ORA_AUX_DISK_1: 段句柄 = F:\ORCL\FLASH_RECOVERY_AREA\ORCL\AUTOBACKUP\2010_0
9_20\O1_MF_S_730205638_69FM6GN0_.BKP 标记 = TAG20100920T105358
通道 ORA_AUX_DISK_1: 已还原备份片段 1
通道 ORA_AUX_DISK_1: 还原完成, 用时: 00:00:01
输出文件名=D:\ORACLE\ORCLDGDATA\ORCLDG01.CTL
输出文件名=D:\ORACLE\ORCLDGDATA\ORCLDG02.CTL
输出文件名=D:\ORACLE\ORCLDGDATA\ORCLDG03.CTL
完成 restore 于 20-9月 -10
sql 语句: alter database mount standby database
内存脚本的内容:
{
set newname for tempfile 1 to "D:\ORACLE\ORCLDGDATA\TEMP01.DBF";
switch clone tempfile all;
set newname for datafile 1 to "D:\ORACLE\ORCLDGDATA\SYSTEM01.DBF";
set newname for datafile 2 to "D:\ORACLE\ORCLDGDATA\SYSAUX01.DBF";
set newname for datafile 3 to "D:\ORACLE\ORCLDGDATA\UNDOTBS01.DBF";
set newname for datafile 4 to "D:\ORACLE\ORCLDGDATA\USERS01.DBF";
set newname for datafile 5 to "D:\ORACLE\ORCLDGDATA\EXAMPLE01.DBF";
restore clone database;
}
正在执行内存脚本
正在执行命令: SET NEWNAME
临时文件 1 在控制文件中已重命名为 D:\ORACLE\ORCLDGDATA\TEMP01.DBF
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
启动 restore 于 20-9月 -10
使用通道 ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: 正在开始还原数据文件备份集
通道 ORA_AUX_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_AUX_DISK_1: 将数据文件 00001 还原到 D:\ORACLE\ORCLDGDATA\SYSTEM01.DBF
通道 ORA_AUX_DISK_1: 将数据文件 00003 还原到 D:\ORACLE\ORCLDGDATA\UNDOTBS01.DBF
通道 ORA_AUX_DISK_1: 将数据文件 00004 还原到 D:\ORACLE\ORCLDGDATA\USERS01.DBF
通道 ORA_AUX_DISK_1: 正在读取备份片段 F:\BACKUP\FULL_0LLOC0IO_1_1.BAK
通道 ORA_AUX_DISK_1: 段句柄 = F:\BACKUP\FULL_0LLOC0IO_1_1.BAK 标记 = TAG20100920
T100511
通道 ORA_AUX_DISK_1: 已还原备份片段 1
通道 ORA_AUX_DISK_1: 还原完成, 用时: 00:00:45
通道 ORA_AUX_DISK_1: 正在开始还原数据文件备份集
通道 ORA_AUX_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_AUX_DISK_1: 将数据文件 00002 还原到 D:\ORACLE\ORCLDGDATA\SYSAUX01.DBF
通道 ORA_AUX_DISK_1: 将数据文件 00005 还原到 D:\ORACLE\ORCLDGDATA\EXAMPLE01.DBF
通道 ORA_AUX_DISK_1: 正在读取备份片段 F:\BACKUP\FULL_0MLOC0J0_1_1.BAK
通道 ORA_AUX_DISK_1: 段句柄 = F:\BACKUP\FULL_0MLOC0J0_1_1.BAK 标记 = TAG20100920
T100511
通道 ORA_AUX_DISK_1: 已还原备份片段 1
通道 ORA_AUX_DISK_1: 还原完成, 用时: 00:00:45
完成 restore 于 20-9月 -10
内存脚本的内容:
{
switch clone datafile all;
}
正在执行内存脚本
数据文件 1 已转换成数据文件副本
输入数据文件副本 RECID=6 STAMP=730205918 文件名=D:\ORACLE\ORCLDGDATA\SYSTEM01.DBF
数据文件 2 已转换成数据文件副本
输入数据文件副本 RECID=7 STAMP=730205918 文件名=D:\ORACLE\ORCLDGDATA\SYSAUX01.DBF
数据文件 3 已转换成数据文件副本
输入数据文件副本 RECID=8 STAMP=730205918 文件名=D:\ORACLE\ORCLDGDATA\UNDOTBS01.DBF
数据文件 4 已转换成数据文件副本
输入数据文件副本 RECID=9 STAMP=730205918 文件名=D:\ORACLE\ORCLDGDATA\USERS01.DBF
数据文件 5 已转换成数据文件副本
输入数据文件副本 RECID=10 STAMP=730205918 文件名=D:\ORACLE\ORCLDGDATA\EXAMPLE01.DBF
完成 Duplicate Db 于 20-9月 -10
六 验证是否能够应用日志
主库上:
ORCL>select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
21
ORCL>ALTER SYSTEM SWITCH LOGFILE;
系统已更改。
ORCL>select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
22
在备库上
ORCLDG>alter database recover managed standby database disconnect from session;
数据库已更改。
ORCLDG>select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
22