环境:RHEL 4 U5+Oracle 11.1.0.6 主库SID:ora11g 备用库SID:standby 主库数据文件存放目录:/home/oracle/opt/oradata/ora11g/ 备用库数据文件存放目录:/home/oracle/opt/oradata/standby/ 1、 验证主库是否归档,如果是未归档模式的话必须更改为归档模式: Sys@ORA11G> archive log list Database log mode Archive Mode Automatic archival Enabled Archive destination /home/oracle/opt/oradata/ora11g/archive Oldest online log sequence 61 Next log sequence to archive 63 Current log sequence 63 2、 将主库置于FORCE LOGGING模式: Sys@ORA11G> alter database force logging; 3、 对主库做一个全库的RMAN备份,用于STANDBY配置: [oracle@test51 bin]$ ./rman target / Recovery Manager: Release 11.1.0.6.0 - Production on Thu Aug 16 15:51:22 2007 Copyright (c) 1982, 2007, Oracle. All rights reserved. connected to target database: ORA11G (DBID=4026454982) RMAN> backup database format '/home/oracle/liuyun/%U.bak'; Starting backup at 16-AUG-07 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=121 device type=DISK channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set input datafile file number=00004 name=/home/oracle/opt/oradata/ora11g/users01.dbf input datafile file number=00002 name=/home/oracle/opt/oradata/ora11g/sysaux01.dbf input datafile file number=00001 name=/home/oracle/opt/oradata/ora11g/system01.dbf input datafile file number=00005 name=/home/oracle/opt/oradata/ora11g/example01.dbf input datafile file number=00003 name=/home/oracle/opt/oradata/ora11g/undotbs01.dbf channel ORA_DISK_1: starting piece 1 at 16-AUG-07 channel ORA_DISK_1: finished piece 1 at 16-AUG-07 piece handle=/home/oracle/liuyun/03iphp8l_1_1.bak tag=TAG20070816T155148 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:01:45 channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set including current control file in backup set including current SPFILE in backup set channel ORA_DISK_1: starting piece 1 at 16-AUG-07 channel ORA_DISK_1: finished piece 1 at 16-AUG-07 piece handle=/home/oracle/liuyun/04iphpc9_1_1.bak tag=TAG20070816T155148 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01 Finished backup at 16-AUG-07 4、 准备STANDBY数据文件路径和其他路径: [oracle@test51 oradata]$ pwd /home/oracle/opt/oradata [oracle@test51 oradata]$ mkdir standby [oracle@test51 oradata]$ ls ora11g orcl standby [oracle@test51 oradata]$ cd $ORACLE_BASE/admin [oracle@test51 admin]$ mkdir standby [oracle@test51 admin]$ ls ora11g orcl standby [oracle@test51 standby]$mkdir adump [oracle@test51 standby]$mkdir dpdump [oracle@test51 standby]$mkdir pfile [oracle@test51 standby]$ ls adump dpdump pfile 5、更改tnsnames配置,添加主库和备用库的连接字: primary = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = test51)(PORT = 1522)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ora11g) ) ) standby = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = test51)(PORT = 1522)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = standby) ) ) 6、生成STANDBY控制文件: Sys@ORA11G> alter database create standby controlfile as '/home/oracle/opt/oradata/standby/control01.ctl'; Database altered. [oracle@test51 standby]$ cp control01.ctl control02.ctl [oracle@test51 standby]$ cp control01.ctl control03.ctl [oracle@test51 standby]$ ls archive control01.ctl control02.ctl control03.ctl 6、生成standby 初始化参数文件: Sys@ORA11G> create pfile='$ORACLE_BASE/admin/standby/pfile/init.ora' from spfile; File created. 添 加以下几个参数,需要注意的是从11G开始原来备用库归档参数standby_archive_dest这个参数已经废除了,STANDBY的归档路径改 为常规的归档路径log_archive_dest_n。还有原来单机配置STANDBY需要的参数lock_name_space也废除了: *.log_archive_config='DG_CONFIG=(ora11g,standby)' *.fal_client='standby' *.fal_server='primary' *.db_file_name_convert='ora11g','standby' *.log_file_name_convert='ora11g','standby' *.standby_file_management='auto' *.log_archive_dest_1='location=/home/oracle/opt/oradata/standby/archive VALID_FOR=(STANDBY_LOGFILE,STANDBY_ROLE)' 更改后的参数文件如下,注意db_unique_name要和主库区分,否则无法MOUNT STANDBY: standby.__db_cache_size=234881024 standby.__java_pool_size=12582912 standby.__large_pool_size=4194304 standby.__oracle_base='/home/oracle/opt'#ORACLE_BASE set from environment standby.__pga_aggregate_target=209715200 standby.__sga_target=629145600 standby.__shared_io_pool_size=0 standby.__shared_pool_size=369098752 standby.__streams_pool_size=0 *.audit_file_dest='/home/oracle/opt/admin/standby/adump' *.audit_trail='db' *.compatible='11.1.0.0.0' *.control_files='/home/oracle/opt/oradata/standby/control01.ctl','/home/oracle/opt/oradata/standby/control02.ctl' ,'/home/oracle/opt/oradata/standby/control03.ctl' *.db_block_size=8192 *.db_domain='' *.db_name='ora11g' *.db_recovery_file_dest='/home/oracle/opt/flash_recovery_area' *.db_recovery_file_dest_size=2147483648 *.db_unique_name='standby' *.ddl_lock_timeout=10 *.diagnostic_dest='/home/oracle/opt' *.dispatchers='' *.job_queue_processes=0 *.local_listener='LISTENER_ora11g' *.memory_target=838860800 *.open_cursors=300 *.processes=150 *.remote_login_passwordfile='EXCLUSIVE' *.undo_tablespace='UNDOTBS1' *.log_archive_config='DG_CONFIG=(ora11g,standby)' *.fal_client='standby' *.fal_server='primary' *.db_file_name_convert='ora11g','standby' *.log_file_name_convert='ora11g','standby' *.standby_file_management='auto' *.log_archive_dest_1='location=/home/oracle/opt/oradata/standby/archive VALID_FOR=(STANDBY_LOGFILE,STANDBY_ROLE)' 7、启动STANDBY数据库,进行RESTORE: [oracle@test51 standby]$ export ORACLE_SID=standby [oracle@test51 standby]$ sql SQL*Plus: Release 10.2.0.1.0 - Production on Thu Aug 16 16:27:08 2007 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connected to an idle instance. idle> startup nomount pfile='$ORACLE_BASE/admin/standby/pfile/init.ora' ORACLE instance started. Total System Global Area 836976640 bytes Fixed Size 1303132 bytes Variable Size 595594660 bytes Database Buffers 234881024 bytes Redo Buffers 5197824 bytes idle> alter database mount standby database; Database altered. [oracle@test51 bin]$ ./rman target / Recovery Manager: Release 11.1.0.6.0 - Production on Thu Aug 16 16:30:11 2007 Copyright (c) 1982, 2007, Oracle. All rights reserved. connected to target database: ORA11G (DBID=4026454982, not open) RMAN> restore database; Starting restore at 16-AUG-07 Starting implicit crosscheck backup at 16-AUG-07 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=147 device type=DISK Crosschecked 4 objects Finished implicit crosscheck backup at 16-AUG-07 Starting implicit crosscheck copy at 16-AUG-07 using channel ORA_DISK_1 Crosschecked 2 objects Finished implicit crosscheck copy at 16-AUG-07 searching for all files in the recovery area cataloging files... no files cataloged using channel ORA_DISK_1 channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00001 to /home/oracle/opt/oradata/standby/system01.dbf channel ORA_DISK_1: restoring datafile 00002 to /home/oracle/opt/oradata/standby/sysaux01.dbf channel ORA_DISK_1: restoring datafile 00003 to /home/oracle/opt/oradata/standby/undotbs01.dbf channel ORA_DISK_1: restoring datafile 00004 to /home/oracle/opt/oradata/standby/users01.dbf channel ORA_DISK_1: restoring datafile 00005 to /home/oracle/opt/oradata/standby/example01.dbf channel ORA_DISK_1: reading from backup piece /home/oracle/liuyun/03iphp8l_1_1.bak channel ORA_DISK_1: piece handle=/home/oracle/liuyun/03iphp8l_1_1.bak tag=TAG20070816T155148 channel ORA_DISK_1: restored backup piece 1 channel ORA_DISK_1: restore complete, elapsed time: 00:02:05 Finished restore at 16-AUG-07 8、添加STANDBY LOGFILE,启动STANDBY至恢复管理模式: idle> alter database add standby logfile '/home/oracle/opt/oradata/standby/redo04.log' size 50M; Database altered. Elapsed: 00:00:01.06 idle> alter database add standby logfile '/home/oracle/opt/oradata/standby/redo05.log' size 50M; Database altered. Elapsed: 00:00:01.18 idle> alter database add standby logfile '/home/oracle/opt/oradata/standby/redo06.log' size 50M; Database altered. Elapsed: 00:00:00.85 idle> recover managed standby database disconnect from session; Media recovery complete. 9、主库配置到STANDBY的归档: Sys@ORA11G> alter system set log_archive_dest_state_2=enable; |