[oracle]Oracle 11g DG搭建(备库使用ASM)
配置信息: 主库 主机名: r5 ip: 192.168.0.5 ORACLE_SID: r5
备库 (注: 备库使用了ASM) 主机名: r5standby ip: 192.168.0.9 ORACLE_SID:r5standby
1. 确保两台机器ping主机名能互通(即配置好网络和/etc/hosts解析) 主库/etc/hosts (备库应保持一致) 127.0.0.1 localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 192.168.0.5 R5.localdomain R5 192.168.0.9 r5standby.localdomain r5standby 2. 创建好主库、备库数据库,配置好监听,确保两台数据库之间可通过tnsname互相连接 主库tnsname.ora(备库应保持一致) r5 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = R5.localdomain)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = r5) ) ) r5standby= (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = r5standby.localdomain)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = r5standby) (UR=A) ) ) 3. 主备库开启强制日志模式和归档 两库开启强制日志: alter database force logging; 主库开启归档: shutdown immediate; alter database mount; alter system set log_archive_dest_1='LOCATION=/bak2/archivelog'; alter database archive log; alter database open; 备库开启归档: shutdown immediate; alter database mount; alter diskgroup DATA add directory '+DATA/R5STANDBY/ARC1'; alter system set log_archive_dest_1='LOCATION=+DATA/R5STANDBY/ARC1'; alter database archive log; alter database open; 4. 设置主库参数 alter system set log_archive_config='dg_config=(r5,r5standby)'; alter system set log_archive_dest_1='LOCATION=/bak2/archivelog VALID_FOR=(ALL_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=r5'; alter system set log_archive_dest_2='SERVICE=r5standby LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=r5standby'; alter system set log_archive_dest_state_1='ENABLE'; alter system set log_archive_dest_state_2='DEFER'; alter system set fal_client='R5'; alter system set fal_server='r5standby'; alter system set db_file_name_convert='/u01/app/oracle/oradata/r5/','+data/r5standby/datafile/','/data2/r5/','/data/r5/','+data/r5standby/datafile/' scope=spfile; alter system set log_file_name_convert='/u01/app/oracle/oradata/r5/','+data/r5standby/onlinelog/' scope=spfile; alter system set standby_file_management='AUTO'; 主库根据spfile创建pfile create pfile='/u01/r5_0107.ora' from spfile; 将pfile和密码文件scp到备库: scp $ORACLE_HOME/dbs/orapwr5 192.168.0.9:~
5. 关闭备库后,同时备份主库 主库: rman target / run { allocate channel c0 device type disk; allocate channel c1 device type disk; CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/bak2/backupset/%F'; backup database format '/bak2/backupset/ora11g_full_db_%d_%T_%u.bak'; BACKUP ARCHIVELOG ALL FORMAT '/bak2/backupset/ora11g_arc_%s_%p_%t.bak'; } 这里一般需要较长时间 完成后,scp到备库对应目录(注意目录要一致): scp -r /bak2/backupset/ 192.168.0.9:/bak2
备库: 备份原密码文件 cd $ORACLE_HOME/dbs mvorapwr5standbyorapwr5standby.bk mvorapwr5orapwr5standby
修改传送过来的参数文件r5_0107.ora r5standby.__db_cache_size=12952010752 r5standby.__java_pool_size=67108864 r5standby.__large_pool_size=67108864 r5standby.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment r5standby.__pga_aggregate_target=10200547328 r5standby.__sga_target=15166603264 r5standby.__shared_io_pool_size=0 r5standby.__shared_pool_size=1946157056 r5standby.__streams_pool_size=0
*._system_trig_enabled=FALSE *.audit_file_dest='/u01/app/oracle/admin/r5standby/adump' *.audit_trail='db' *.compatible='11.2.0.0.0' *.control_files='+DATA/r5standby/controlfile/current.260.932432629'#Restore Controlfile *.db_block_size=8192 *.db_create_file_dest='+DATA' *.db_domain='' *.db_file_name_convert='/u01/app/oracle/oradata/r5/','+data/r5standby/datafile/' *.db_name='r5' *.db_recovery_file_dest_size=10737418240 *.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area' *.db_unique_name='r5standby' *.diagnostic_dest='/u01/app/oracle' *.dispatchers='(PROTOCOL=TCP) (SERVICE=r5standbyXDB)' *.fal_client='r5standby' *.fal_server='r5' *.log_archive_config='dg_config=(r5,r5standby)' *.log_archive_dest_1='LOCATION=+DATA/R5STANDBY/ARC1 VALID_FOR=(ALL_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=r5standby' *.log_archive_dest_2='SERVICE=r5 LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=r5' *.log_archive_dest_state_1='enable' *.log_archive_dest_state_2='enable' *.log_file_name_convert='/u01/app/oracle/oradata/r5/','+data/r5standby/onlinelog/' *.memory_target=25321013248 *.open_cursors=300*.processes=150 *.remote_login_passwordfile='EXCLUSIVE' *.standby_archive_dest='+DATA/R5STANDBY/ARC1' *.standby_file_management='AUTO'
注意对比红色字的参数, 其中隐式参数_system_trig_enabled=FALSE之所以设为FALSE,是因为我这边主库存在SYS的登录触发器,备库需要禁用,否则打开备库时会报错: ORA-00604: error occurred at recursive SQL level 1
备库启动到nomount状态: startup pfile=?/dbs/r5_0107.ora nomount; 然后 create spfile from pfile; 退出sqlplus,确保主库的所有备份文件已传输到备库对应目录
6. 进入主库,进行RMAN恢复 主库上: rman target / connect auxiliary sys/mellson@r5standby duplicate target database for standby nofilenamecheck; 完成后在主库里设置下参数LOG_ARCHIVE_DEST_STATE_2: ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2='ENABLE';
7. 添加备库日志 在主库上执行: ALTER DATABASE ADD STANDBY LOGFILE GROUP 9 '/u01/app/oracle/oradata/r5/sredo06.log' size 50M; ALTER DATABASE ADD STANDBY LOGFILE GROUP 10 '/u01/app/oracle/oradata/r5/sredo08.log' size 50M; 此处应注意日志大小应与主库其原有的日志大小保持一致,否则后面备库日志可能出现下面的信息: RFS[3]: No standby redo logfiles available for thread 1 ...
备库上增加同样多的日志: alter database add STANDBY logfile group 9('+DATA/r5standby/onlinelog/sredo06.log') size 50M; alter database add STANDBY logfile group 10 ('+DATA/r5standby/onlinelog/sredo08.log') size 50M; 8. 备库打开,并启用实时应用日志同步服务 alter database open; ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION; 最后检查: 主库: SQL> select protection_mode,database_role,protection_level,open_mode from v$database; PROTECTION_MODE DATABASE_ROLE PROTECTION_LEVEL OPEN_MODE -------------------- ---------------- -------------------- -------------------- MAXIMUM PERFORMANCE PRIMARY MAXIMUM PERFORMANCE READ WRITE 备库: SQL> select protection_mode,open_mode from v$database; PROTECTION_MODE DATABASE_ROLE PROTECTION_LEVEL OPEN_MODE -------------------- ---------------- -------------------- -------------------- MAXIMUM PERFORMANCE PHYSICAL STANDBY MAXIMUM PERFORMANCE READ ONLY WITH APPLY SQL> select group#,thread#,sequence#,status from v$standby_log; GROUP# THREAD# SEQUENCE# STATUS ---------- ---------- ---------- ---------- 9 1 1062 ACTIVE 10 1 0 UNASSIGNED 在主库的某表里增加条数据,备库里能查询到. 或者主库执行alter system switch logfile;后,观察主备库的日志,是否有异常信息
附我当前备库的日志信息: Sat Jan 07 20:24:34 2017 ... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |