【DATAGUARD 学习】使用duplicate 创建物理standby 数据库

简介: 使用手工建立物理standby 多少有些费事,利用oracle提供的duplicate 可以简单的完成创建物理standby 的工作!一 环境:同一台主机 主库 orcl  备库 orcldg 二 使用rman 备份主库C:\Documents and Settings\Administrator>rman target /复管理器: Release 11.

使用手工建立物理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

密码文件这里使用的是主库拷贝。这样保存所有的密码一致

监听文件:
# 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
 

目录
相关文章
|
Oracle 关系型数据库 数据库
dbca 创建standby 数据库
dbca -silent -createDuplicateDB
1429 0