最新Oracle 11g DataGuard 配置详细说明
- 格式:doc
- 大小:72.50 KB
- 文档页数:28
ORACLEG搭建DATAGUARD步骤搭建Oracle11g Data Guard需要以下步骤:1. 确保主/备数据库的版本和配置要求:首先,主数据库和备数据库的Oracle版本必须匹配,且需要安装和配置相同的操作系统。
同时,还需要确保主/备数据库的参数设置和硬件要求是一致的。
2. 创建主数据库:使用Oracle Database ConfigurationAssistant(DBCA)创建主数据库。
在创建数据库过程中,确保将主数据库配置为运行在归档日志模式下,以便能够启用数据保护模式并实现归档日志传送到备库。
3. 备份主数据库:在搭建Data Guard之前,需要对主数据库进行备份。
这样可以确保在搭建过程中出现任何问题时,能够快速还原主数据库。
4. 安装备数据库:在备数据库所在的服务器上安装Oracle软件,并确保配置与主数据库相同的操作系统和Oracle版本。
5. 配置备数据库参数:在备数据库上修改参数文件,以确保与主数据库保持一致。
将数据库配置为运行在归档日志模式下,并启用自动归档和数据保护模式。
还需要配置Log Archive Destination(LAD)和Fast Recovery Area(FRA)。
6. 启动备库模式:在备库上启动数据库,并将数据库模式设置为mount。
执行以下命令启动数据库:```startup mount;```7.创建备数据库控制文件:在备库上创建控制文件的物理副本,以便能够使用这些文件启动和恢复备库。
执行以下命令创建备数据库控制文件副本:```ALTER DATABASE CREATE STANDBY CONTROLFILE AS'path_to_control_file_copy';```8.将备库注册到主数据库:在主数据库上执行以下命令,将备库注册到主数据库:```ALTER SYSTEM SETLOG_ARCHIVE_CONFIG='DG_CONFIG=(primary_database,standby_datbase)';ALTER SYSTEM SETLOG_ARCHIVE_DEST_2='SERVICE=standby_database LGWR ASYNCVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=standby_database';```9.复制主数据库备份到备数据库服务器上:将主数据库备份传输到备数据库所在的服务器。
Oracle 11g Data Guard 物理备库快速配置指南(上)June 26, 2012缘起最近做了10g和11g的物理备库配置实验,发现Data Guard 其实很容易,但是缺少好文档。
我是参考官方文档做的实验,觉得它写的不是很清楚的。
Google 出来两个pdf文档,读了觉得比官方文档强很多。
翻译下,也许会对某些朋友有用。
翻译的同时我也好更熟悉下这两个文档。
好久没翻译过英文了,可以顺便练练手。
原文档下载地址(墙外):Data Guard 是Oracle 数据库的一个功能,能够提供数据库的冗余。
冗余是通过创建一个备用(物理复制)数据库实现,备库最好是在不同的地理位置或者在不同的磁盘上。
备库通过应用主库上的变化来保持数据同步。
备库可以使用重做日志应用(物理备库)或SQL应用同步(逻辑备库)。
本文旨在说明Data Guard 的配置并不复杂,不需要特殊的技能或者培训才能学会搭建。
它将快速展示给读者搭建一个物理备库的过程。
我的目标是,即使你第一次接触Data Guard,刚考虑要使用它或担心它会不会很难配置,本文将帮助你快速搭建起一个正常运行起来的物理备库。
每种Oracle 高可用性工具都有其目的。
使用Data Guard 的理由有:∙整个数据库的冗余∙故障时的快速恢复∙故障后客户端能自动重连∙在备库运行备份∙较好的故障平均修复时间∙并不复杂有一些任何生产库都应该有的基本的设置。
其中一个就是归档模式。
对于生产库,这应该是一个明显的必须配置。
如果你的生产库没有适用归档模式,你要么需要马上开始读点书,要么你得有一个非常非常好的理由。
我不大确定谁真能找出一个理由,但任何准则都有例外。
如何修改你的数据库为归档模式:SQL> shutdown immediateSQL> startup mountSQL> alter database archivelog;SQL> alter database open;SQL> archive log list;))主库的TNS 名字文件配置:JED2 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = dev-db2)(PORT = 1521)) (CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = JED2)))备库的TNS 名字文件配置:JED =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = dev-db1)(PORT = 1521)) (CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = JED)))然后在备库服务器上创建所需目录结构和修改相关文件。
配置Oracle 11g Active Dataguard一直以来都没有正儿八经的记录oracle 11g dataguard物理备库的创建步骤,11g 的logical standby还没有去测试,不过个人认为随着11g adg特性的推出,logical standby其实已经没有什么吸引力了!本文介绍了11g active dataguard的详细配置步骤和数据保护模式的修改!一:环境介绍主库IP地址:192.168.1.61/24操作系统版本:rhel5.4 64bit数据库版本:11.2.0.3 64bit数据库sid名:dg数据库名:dg数据库db_unique_name:dg1备库1 物理备库(只安装oracle数据库软件,无需建库)IP地址:192.168.1.62/24操作系统版本:rhel5.4 64bit数据库版本:11.2.0.3 64bit数据库sid名:dg数据库名:dg数据库db_unique_name:dg2二:修改主备库listener.ora,tnsnames.ora文件如下,备库根据自身情况修改1.[oracle@dg1 ~]$ cat $TNS_ADMIN/listener.ora2.SID_LIST_LISTENER =3. (SID_LIST =4. (SID_DESC =5. (GLOBAL_DBNAME = )6. (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db1)7. (SID_NAME = dg)8. )9. )10.11.LISTENER =12. (DESCRIPTION_LIST =13. (DESCRIPTION =14. (ADDRESS_LIST =15. (ADDRESS = (PROTOCOL = TCP)(HOST = )(PORT = 1521))16. )17. )18. )19.20.[oracle@dg1 ~]$ cat $TNS_ADMIN/tnsnames.ora21.dg1 =22. (DESCRIPTION =23. (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.61)(PORT = 1521))24. (CONNECT_DATA =25. (SERVER = DEDICATED)26. (SERVICE_NAME = )27. )28. )29.30.dg2 =31. (DESCRIPTION =32. (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.62)(PORT = 1521))33. (CONNECT_DATA =34. (SERVER = DEDICATED)35. (SERVICE_NAME = )36. )37. )38.39.for_db =40. (DESCRIPTION =41. (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.61)(PORT = 1521))42. )三:在主库上修改dataguard配置相关的各个参数,各参数的具体含义可以参考oracle 在线文档1.SQL> alter database force logging;2.Database altered.3.4.SQL> alter system set db_unique_name='dg1'scope=spfile;5.System altered.6.7.SQL> alter system set log_archive_config='DG_CONFIG=(dg1,dg2)';8.System altered.9.10.SQL> alter system set log_archive_dest_1='LOCATION=/u01/app/oracle/archivelog valid_for=11.12.(all_logfiles,primary_role) db_unique_name=dg1' scope=spfile;13.System altered.14.15.SQL> alter system set log_archive_dest_2='SERVICE=dg2 lgwr sync valid_for=(online_logfile,primary_role)16.17.db_unique_name=dg2';18.System altered.19.20.SQL> alter system set log_archive_dest_3='LOCATION=/u01/app/oracle/standbylog valid_for=21.22.(standby_logfile,standby_role) db_unique_name=dg1' scope=spfile;23.System altered.24.25.SQL> alter system set fal_client='dg1';26.System altered.27.28.SQL> alter system set fal_server='dg2';29.System altered.30.31.SQL> alter system set standby_file_management=auto;32.System altered.33.34.SQL> alter database add standby logfile group 4 '/u01/app/oracle/oradata/dg/standby04.log' size 50M;35.Database altered.36.37.SQL> alter database add standby logfile group 5 '/u01/app/oracle/oradata/dg/standby05.log' size 50M;38.Database altered.39.40.SQL> alter database add standby logfile group 6 '/u01/app/oracle/oradata/dg/standby06.log' size 50M;41.Database altered.42.43.SQL> alter database add standby logfile group 7 '/u01/app/oracle/oradata/dg/standby07.log' size 50M;44.Database altered.45.46.SQL> shutdown immediate47.Database closed.48.Database dismounted.49.ORACLE instance shut down.50.51.SQL> startup52.ORACLE instance started.53.54.Total System Global Area 417546240 bytes55.Fixed Size 2228944 bytes56.Variable Size 285216048 bytes57.Database Buffers 121634816 bytes58.Redo Buffers 8466432 bytes59.Database mounted.60.Database opened.61.62.SQL> alter system set local_listener='for_db';63.System altered.64.65.SQL> create pfile='/home/oracle/initdg.ora' from spfile;66.File created.三:将生成的pfile文件修改后传递到备库,注意红色字体部分[oracle@dg1 ~]$ cat /home/oracle/initdg.oradg.__db_cache_size=121634816dg.__java_pool_size=4194304dg.__large_pool_size=4194304dg.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environmentdg.__pga_aggregate_target=167772160dg.__sga_target=251658240dg.__shared_io_pool_size=0dg.__shared_pool_size=109051904dg.__streams_pool_size=0*.audit_file_dest='/u01/app/oracle/admin/dg/adump'*.audit_trail='db'*.compatible='11.2.0.0.0'*.control_files='/u01/app/oracle/oradata/dg/control01.ctl','/u01/app/oracle/fast_recovery_area/dg/control02.ctl' *.db_block_size=8192*.db_domain=''*.db_name='dg'*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'*.db_recovery_file_dest_size=4322230272*.db_unique_name='dg2'*.diagnostic_dest='/u01/app/oracle'*.dispatchers='(PROTOCOL=TCP) (SERVICE=dgXDB)'*.fal_client='dg2'*.fal_server='dg1'*.local_listener='for_db'*.log_archive_config='DG_CONFIG=(dg1,dg2)'*.log_archive_dest_1='LOCATION=/u01/app/oracle/archivelogvalid_for=(all_logfiles,primary_role)db_unique_name=dg2'*.log_archive_dest_2='SERVICE=dg1 lgwr sync valid_for=(online_logfile,primary_role)db_unique_name=dg1'*.log_archive_dest_3='LOCATION=/u01/app/oracle/standbylogvalid_for=(standby_logfile,standby_role)db_unique_name=dg2'*.log_archive_format='%t_%s_%r.dbf'*.memory_target=419430400*.open_cursors=300*.processes=150*.remote_login_passwordfile='EXCLUSIVE'*.standby_file_management='AUTO'*.undo_tablespace='UNDOTBS1'[oracle@dg1 ~]$ scp initdg.ora 192.168.1.62:/home/oracle/四:将备库启动到nomount状态,然后连接主库进行duplicate操作1.[oracle@dg2 ~]$ lsnrctl start2.[oracle@dg2 ~]$ orapwd file=$ORACLE_HOME/dbs/orapwdg password=123456entries=53.[oracle@dg2 ~]$ sqlplus /nolog4.SQL*Plus: Release 11.2.0.3.0 Production on Sun Apr 22 13:36:53 20125.Copyright (c) 1982, 2011, Oracle. All rights reserved.6.7.SQL> conn /as sysdba8.Connected to an idle instance.9.SQL> create spfile from pfile='/home/oracle/initdg.ora';10.File created.11.12.SQL> startup nomount13.ORACLE instance started.14.15.Total System Global Area 417546240 bytes16.Fixed Size 2228944 bytes17.Variable Size 285216048 bytes18.Database Buffers 121634816 bytes19.Redo Buffers 8466432 bytes[oracle@dg2 ~]$ rman target sys/123456@dg1 auxiliary sys/123456@dg2Recovery Manager: Release 11.2.0.3.0 - Production on Sun Apr 22 13:38:33 2012Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.connected to target database: DG (DBID=1694605607)connected to auxiliary database: DG (not mounted)RMAN> duplicate target database for standby nofilenamecheck from active database;Starting Duplicate Db at 2012-04-22-13:39:25using target database control file instead of recovery catalogallocated channel: ORA_AUX_DISK_1channel ORA_AUX_DISK_1: SID=134 device type=DISKcontents of Memory Script:{backup as copy reusetargetfile '/u01/app/oracle/product/11.2.0/db1/dbs/orapwdg' auxiliary format'/u01/app/oracle/product/11.2.0/db1/dbs/orapwdg' ;}executing Memory ScriptStarting backup at 2012-04-22-13:39:26allocated channel: ORA_DISK_1channel ORA_DISK_1: SID=19 device type=DISKFinished backup at 2012-04-22-13:39:28contents of Memory Script:{backup as copy current controlfile for standby auxiliary format'/u01/app/oracle/oradata/dg/control01.ctl';restore clone controlfile to '/u01/app/oracle/fast_recovery_area/dg/control02.ctl' from'/u01/app/oracle/oradata/dg/control01.ctl';}executing Memory ScriptStarting backup at 2012-04-22-13:39:29using channel ORA_DISK_1channel ORA_DISK_1: starting datafile copycopying standby control fileoutput file name=/u01/app/oracle/product/11.2.0/db1/dbs/snapcf_dg.f tag=TAG20120422T133929 RECID=1STAMP=781277970channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03Finished backup at 2012-04-22-13:39:32Starting restore at 2012-04-22-13:39:32using channel ORA_AUX_DISK_1channel ORA_AUX_DISK_1: copied control file copyFinished restore at 2012-04-22-13:39:34contents of Memory Script:{sql clone 'alter database mount standby database';}executing Memory Scriptsql statement: alter database mount standby databasecontents of Memory Script:{set newname for tempfile 1 to"/u01/app/oracle/oradata/dg/temp01.dbf";switch clone tempfile all;set newname for datafile 1 to"/u01/app/oracle/oradata/dg/system01.dbf";set newname for datafile 2 to"/u01/app/oracle/oradata/dg/sysaux01.dbf";set newname for datafile 3 to"/u01/app/oracle/oradata/dg/undotbs01.dbf";set newname for datafile 4 to"/u01/app/oracle/oradata/dg/users01.dbf";backup as copy reusedatafile 1 auxiliary format"/u01/app/oracle/oradata/dg/system01.dbf" datafile2 auxiliary format"/u01/app/oracle/oradata/dg/sysaux01.dbf" datafile3 auxiliary format"/u01/app/oracle/oradata/dg/undotbs01.dbf" datafile4 auxiliary format"/u01/app/oracle/oradata/dg/users01.dbf" ;sql 'alter system archive log current';}executing Memory Scriptexecuting command: SET NEWNAMErenamed tempfile 1 to /u01/app/oracle/oradata/dg/temp01.dbf in control fileexecuting command: SET NEWNAMEexecuting command: SET NEWNAMEexecuting command: SET NEWNAMEexecuting command: SET NEWNAMEStarting backup at 2012-04-22-13:39:42using channel ORA_DISK_1channel ORA_DISK_1: starting datafile copyinput datafile file number=00001 name=/u01/app/oracle/oradata/dg/system01.dbf output file name=/u01/app/oracle/oradata/dg/system01.dbf tag=TAG20120422T133943 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:03:06channel ORA_DISK_1: starting datafile copyinput datafile file number=00002 name=/u01/app/oracle/oradata/dg/sysaux01.dbf output file name=/u01/app/oracle/oradata/dg/sysaux01.dbf tag=TAG20120422T133943 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:01:55channel ORA_DISK_1: starting datafile copyinput datafile file number=00003 name=/u01/app/oracle/oradata/dg/undotbs01.dbf output file name=/u01/app/oracle/oradata/dg/undotbs01.dbf tag=TAG20120422T133943 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15channel ORA_DISK_1: starting datafile copyinput datafile file number=00004 name=/u01/app/oracle/oradata/dg/users01.dbfoutput file name=/u01/app/oracle/oradata/dg/users01.dbf tag=TAG20120422T133943channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03Finished backup at 2012-04-22-13:45:05sql statement: alter system archive log currentcontents of Memory Script:{switch clone datafile all;}executing Memory Scriptdatafile 1 switched to datafile copyinput datafile copy RECID=1 STAMP=781278308 file name=/u01/app/oracle/oradata/dg/system01.dbf datafile 2 switched to datafile copyinput datafile copy RECID=2 STAMP=781278308 file name=/u01/app/oracle/oradata/dg/sysaux01.dbf datafile 3 switched to datafile copyinput datafile copy RECID=3 STAMP=781278308 file name=/u01/app/oracle/oradata/dg/undotbs01.dbf datafile 4 switched to datafile copyinput datafile copy RECID=4 STAMP=781278308 file name=/u01/app/oracle/oradata/dg/users01.dbf Finished Duplicate Db at 2012-04-22-13:45:29RMAN> exitRecovery Manager complete.五:将备库置于active dataguard模式下1.[oracle@dg2 ~]$ sqlplus /nolog2.SQL*Plus: Release 11.2.0.3.0 Production on Sun Apr 22 13:47:17 20123.Copyright (c) 1982, 2011, Oracle. All rights reserved.4.5.SQL> conn /as sysdba6.Connected.7.SQL> select open_mode,database_role,db_unique_name from v$database; 8.9.OPEN_MODE DATABASE_ROLE DB_UNIQUE_NAME10.-------------------- ---------------- ------------------------------11.MOUNTED PHYSICAL STANDBY dg212.13.SQL> alter database open;14.Database altered.15.16.SQL> alter database recover managed standby database using current logfile disconnect from session;17.Database altered.18.19.SQL> select open_mode,database_role,db_unique_name from v$database;20.21.OPEN_MODE DATABASE_ROLE DB_UNIQUE_NAME22.-------------------- ---------------- ------------------------------23.READ ONLY WITH APPLY PHYSICAL STANDBY dg224.25.SQL> select status from v$standby_log;26.27.STATUS28.----------29.ACTIVE30.UNASSIGNED31.UNASSIGNED32.UNASSIGNED33.34.SQL> select member from v$logfile;35.36.MEMBER37.--------------------------------------------------------------------------------38./u01/app/oracle/fast_recovery_area/DG2/onlinelog/o1_mf_3_7s76qbhq_.log39./u01/app/oracle/fast_recovery_area/DG2/onlinelog/o1_mf_2_7s76q94s_.log40./u01/app/oracle/fast_recovery_area/DG2/onlinelog/o1_mf_1_7s76q5w1_.log41./u01/app/oracle/fast_recovery_area/DG2/onlinelog/o1_mf_4_7s76qdpk_.log42./u01/app/oracle/fast_recovery_area/DG2/onlinelog/o1_mf_5_7s76qhmy_.log43./u01/app/oracle/fast_recovery_area/DG2/onlinelog/o1_mf_6_7s76qlhz_.log44./u01/app/oracle/fast_recovery_area/DG2/onlinelog/o1_mf_7_7s76qp99_.log45.7 rows selected.六:修改dataguard的数据保护模式为最高可用性模式,根据oracle文档的解释,最高可用性数据保护模式需要先满足以下几个条件1.SQL> select db_unique_name,protection_mode,protection_level from v$database;2.3.DB_UNIQUE_NAME PROTECTION_MODE PROTECTION_LEVEL4.------------------------------ -------------------- --------------------5.dg2 MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE6.7.8.9.SQL> select db_unique_name,protection_mode,protection_level from v$database;10.11.DB_UNIQUE_NAME PROTECTION_MODE PROTECTION_LEVEL12.------------------------------ -------------------- --------------------13.dg1 MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE14.15.16.SQL> alter database set standby database to maximize availability;17.Database altered.18.19.SQL> select db_unique_name,protection_mode,protection_level from v$database;20.21.DB_UNIQUE_NAME PROTECTION_MODE PROTECTION_LEVEL22.------------------------------ -------------------- --------------------23.dg1 MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY24.25.26.SQL> select db_unique_name,protection_mode,protection_level from v$database;27.28.DB_UNIQUE_NAME PROTECTION_MODE PROTECTION_LEVEL29.------------------------------ -------------------- --------------------30.dg2 MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY31.32.33.将备库shutdown后,主库的PROTECTION_LEVEL将变为RESYNCHRONIZATION34.SQL> select db_unique_name,protection_mode,protection_level from v$database;35.36.DB_UNIQUE_NAME PROTECTION_MODE PROTECTION_LEVEL37.------------------------------ -------------------- --------------------38.dg2 MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY39.40.SQL> alter database recover managed standby database cancel;41.Database altered.42.43.SQL> shutdown immediate44.Database closed.45.Database dismounted.46.ORACLE instance shut down.47.48.SQL> select db_unique_name,protection_mode,protection_level from v$database;49.50.DB_UNIQUE_NAME PROTECTION_MODE PROTECTION_LEVEL51.------------------------------ -------------------- --------------------52.dg1 MAXIMUM AVAILABILITY RESYNCHRONIZATION。
完整版Oracle DataGuard文档目录Oracle DataGuard的三种模式分析 (3)Oracle DataGuard日志传输 (5)1、主库准备工作 (7)1.1、检查数据库是否支持Data Guard(企业版才支持),是否归档模式,Enable force logging (7)1.2、如果主库没有密码文件则建立密码文件,从而可以OS验证的方式登陆 (8)1.3、配置standby redolog(最佳性能模式可以忽略,如果将来变成备库且要转为其它两种模式则要建立) (8)1.4、设置主库初始化参数 (9)1.5、备份主库数据文件 (10)1.6、在主库上建立备库控制文件(控制文件通常需要有多份,手工将文件复制几份) (10)1.7、为备库准备init参数 (11)1.8、拷贝上面生成的文件backup_%T.bak、stdby_control01/02/03.ctl、initPHYSTDBY.ora到备库所在主机 (12)2、建立备库 (12)2.1、设置环境变量并建立备库一些必需目录 (12)2.2、在备库主机上生成密码文件,且sys密码和主库得一致 (13)2.4、在备库上建立spfile (13)2.5、启动物理备库 (14)2.7、配置standby redolog(最佳性能模式可以忽略,如果要转为其它两种模式则要建立) (14)2.8、在备库上,启动redo apply (14)3、主备库各参数文件内容 (15)3.1、主备库listener.ora一样,如果有不一样也是host不一样 (15)3.2、主备库tnsnames.ora一样,如果有不一样也是host和port不一样 (16)3.3、init$ORACLE_SID.ora (17)4、主库归档测试 (20)5、修改主库DataGuard保护模式 (22)5.1、LGWR传送日志的配置方法: (22)5.2、修改主库DataGuard保护模式 (22)5.3、主库修改初始化参数(主库db_wending操作) (22)5.4、主库通过命令行修改数据保护模式,重启主数据库(主库db_wending操作) (22)5.5、重启主库(主库操作) (23)5.6、查看主库保护模式是否变更成功(主库操作) (23)5.7、修改备库的log_archive_dest_2初始化参数方便数据库角色切换(备库操作) (24)5.8、查看备库数据保护模式(备库操作) (24)5.9、验证一下“最高可用性”切换成果 (24)6、DataGuard关启状态 (26)7、主备数据库切换 (27)7.1、正常切换: (27)7.2、非正常切换:(即主服务器当机的情况)启动failover (27)8、常用维护SQL (27)Oracle DataGuard的三种模式分析最大保护(Maximum Protection)最大可用(Maximum Availability)最大性能(Maximum performance)(默认)◆最大可用模式Maximum AvailabilityMaximum Availability模式下,事务只有在所有相关日志都被传输到至少一个Standby端日志的时候,才可以正式提交。
11gdataguard最大性能模式部署记录下在一台主机上实现部署Oracle11g物理Active Data Guard的全过程,部署完毕后备库处于默认的最大性能模式。
同时使用了一下11g的Active Data Guard实时查询(Real-time query)特性。
1.Oracle 11g Data Guard主库配置过程:确保主库处于FORCE LOGGING模式确认方法如下:1查看当前数据库是否处于FORCE LOGGING模式sys@ora11g> col force_logging for a15sys@ora11g> select force_logging from v$database;FORCE_LOGGING---------------NO如果不是,打开force_logging:此处表明数据库运行在非FORCE LOGGING模式。
(2)调整数据库为FORCE LOGGING模式sys@ora11g> alter database force logging;Database altered.2.配置Redo传输认证Data Guard使用Oracle Net会话在主库和备库之间传输redo数据和控制信息,因此需要基于SSL(Secure Sockets Layer )或者密码文件进行认证。
当SSL认证无法满足时使用密码文件进行认证,因此需要确保所有备库的密码文件与主库保持一致。
当然在生产环境中,我们都是通过拷贝主库的密码文件进行的,所以此步骤省略3.配置主库用于接收Redo数据此步骤是可选步骤,Oracle建议在配置主库的时候就预见到总有一天它会成为备库(例如进行主备库之间的switchover切换),要求当主库成为备库之后不需要做其他配置就可以顺畅地接收主库传过来的Redo数据。
这也是Oracle最佳实践的一种体现。
1)查看日志组日志成员大小创建的Standby Redo Log大小要与主库的Redo大小保持一致sys@ora11g> select group#, bytes from v$log;GROUP# BYTES---------- ----------1 524288002 524288003 52428800此时主库每组日志的日志成员大小都是50M。
Oracle11gDataGuard配置EM
主库执行如下操作
1、在数据库主机hosts文件添加主机地址映射,解决EM监听程序状态显示为关闭的问题。
2、配置系统环境变量如下
ORACLE_HOSTNAME=PC-NAME
ORACLE_SID=orcl
ORACLE_UNQNAME=orcl
CMD窗口执行
set ORACLE_HOSTNAME=PC-NAME
set ORACLE_SID=orcl
set ORACLE_UNQNAME=orcl
3、连接数据库,使用如下命令解锁sysman用户。
4、alter user sysman account unlock;
5、使用emca -deconfig dbcontrol db命令删除配置
6、使用emca -repos drop删除repository
7、使用emca -config dbcontrol db -repos create 创建Database Control。
8、根据提示,输入数据库信息,待创建完毕,稍等片刻,等待EM启动完毕,根据提示的路径访问EM。
访问地址参考:https://主库IP:5500/em
注:①如果需要访问备库的EM,需要将备库切换成主库,再进行配置,配置后即可进行访问。
②进行主备切换后,需要对EM重新配置。
常用命令参考
重新配置语句emca -config dbcontrol db
重新配置端口命令
emca -reconfig ports -dbcontrol_http_port 1159
emca -reconfig ports -agent_port 3939。
DATAGUARD配置参数详细解释
一、数据库参数
1.特定于数据库的参数
db_unique_name
功能:定义数据库唯一名称。
含义:该参数定义数据库唯一名称,该参数不应更改,否则可能会导
致一系列问题。
该参数必须在创建数据库时设置,并且不能更改。
2.remote_login_passwordfile
功能:指定远程用户的登录认证文件。
含义:此参数指定远程用户的登录认证文件,在数据库定义期间,远
程用户可以使用该文件登录数据库。
可以使用此参数将一些远程用户的标识指定为NONE,以确保只有本
地用户可以连接,而不允许远程用户连接。
3.log_archive_dest_state_2
功能:指定第二个归档日志目的地状态。
含义:此参数指定第二个归档日志目的地状态,如果设置为enable,则表示活动日志会被归档到该备用目的地,如果设置为disable,则表示
活动日志不会被归档到该备用目的地。
4.fal_server
功能:指定应用程序服务器名称。
含义:此参数指定应用程序服务器名称,例如,Fal_server等。
这些服务器用于远程归档日志,应用服务器可以是一台服务器,也可以是一组服务器。
5.log_archive_dest
功能:指定将归档日志文件发送到哪里。
含义:此参数指定将归档日志文件发送到哪里,可以是一个本地文件路径,也可以是一个远程服务器的文件路径。
Oracle11g Dataguard配置Hostname Primary IP192.168.3.88db_name primaryHostname Standby IP192.168.2.88db_name standby下面我主要分四大块配置1.Configure Oracle Net主库primary配置listener.oraSID_LIST_LISTENER=(SID_DESC=(SID_NAME=primary)(ORACLE_HOME=/home/app/oracle/product/11.2.0/db_1)(GLOBAL_DBNAME=primary))LISTENER=(DESCRIPTION_LIST=(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.3.88)(PORT=1521)) ))ADR_BASE_LISTENER=/home/app/oracleTnsnames.oraPRIMARY=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=primary)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=primary.primary)))primary=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.3.88)(PORT=1521)) (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=primary)))standby=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.2.88)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=primary)))备库standby配置Listener.ora----------------------------------------------------------------------SID_LIST_LISTENER=(SID_DESC=(SID_NAME=primary)(ORACLE_HOME=/home/app/oracle/product/11.2.0/db_1)(GLOBAL_DBNAME=primary))LISTENER=(DESCRIPTION_LIST=(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.2.88)(PORT=1521)) ))ADR_BASE_LISTENER=/home/app/oracleTnsnames.ora______________________________________________________________________________ PRIMARY=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=standby)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=standby.standby)))primary=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.3.88)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=primary)))standby=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.2.88)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=primary)))2.Configure primary databaseSQL>alter database force logging;把数据库置于force logging状态,就是不管什么操作都要强制的给它记日志SQL>select name,force_logging from v$database;检查状态(YES为强制)如果需要在主库添加或者删除数据文件时,这些文件也会在备份添加或删除,使用如下:SQL>alter system set standy_file_management='AUTO';默认此参数是manual手工方式SQL>show parameter standbySQL>create pfile from spfile;SQL>orapwd file=orapwprimary password=oracle entries=5修改initprimary.ora文件添加以下参数log_archive_dest_1='LOCATION=/home/app/oracle/oradata/archive'log_archive_dest_state_1=enablelog_archive_dest_2='SERVICE=standby'log_archive_dest_state_2=enablelog_archive_start=truelog_archive_format='%t_%s_%r.arc'log_archive_max_processes=2fal_server=standbyfal_client=primarydb_unique_name=primarySQL>archive log list#查看数据库是否处于归档模式SQL>shutdown immediateSQL>startup mount;#打开控制文件不打开数据文件SQL>alter database archivelog;#启用存档模式SQL>alter database create standby controlfile as‘/home/app/oracle/oradata/primary/standby.ctl’SQL>alter database open;#将数据文件打开SQL>shutdown immediateSQL>quit3.Configure physical standby database将主库/home/app/oracle/oradata/primary/home/app/oracle/adminInitprimary.oraOrapwprimary目录或文件拷贝到备库用standby.ctl覆盖control01.ctl control02.ctl文件修改initprimary.ora以下配置log_archive_dest_1='LOCATION=/home/app/oracle/oradata/archive'log_archive_dest_state_1=enablelog_archive_dest_2='SERVICE=primary'log_archive_dest_state_2=enablelog_archive_start=truelog_archive_format='%t_%s_%r.arc'log_archive_max_processes=2fal_server=primaryfal_client=standbydb_unique_name=standby然后启动备库,启动备库之前先启动主库rm-rf spfileprimary.ora主库SQL>create spfile from pfile;SQL>startup备库SQL>create spfile from pfile;Export ORACLE_SID=primarySQL>startup nomount;SQL>alter database mount standby databaseSQL>select name,database_role from v$database;SQL>alter database recover managed standby database disconnect from session;接受主库来的redo数据主库SQL>alter system switch logfile;加速传输备库SQL>select sequence#,first_time,next_time from v$archived_log order by sequence#; #接受到的数据SQL>select sequence#,applied from v$archived_log order by sequence#;standby处于两种模式,这两种模式是互斥的,只知其一,在redo接受状态下是不能查询数据,必须敲以下语句SQL>alter database recover managed standby database cancel;SQL>alter database open read only;然后查看表数据!检查是否成功:主库上查看日志传送情况:sql>select dest_name,status,error from v$archive_dest;应该log_archive_dest_1和2状态应该是valid4.Testing&troubleshooting。
配置Oracle 11g Active Dataguard一.环境介绍主库为生产库,备库只安装数据库软件,不创建数据库。
主库和备库的DB_NAME必须一致,DB_UNIQUE_NAME必须不同。
二.主数据库操作步骤1.检查数据库是否有DATAGUARD功能SQL>select * from v$option where parameter = 'Oracle Data Guard';如果结果是true表示已经安装可以配置,否则需要安装相应组件。
2.检查主库是否开启了归档SQL>select LOG_MODE from v$database;如果没有开启需要切换数据库到归档模式SQL>shutdown immediate;SQL>startup mount;SQL>alter database archivelog;SQL>alter database open;3.检查主库是否开始强制日志SQL>select FORCE_LOGGING from v$database;如果没有开启需要执行命令SQL>alter database force logging;4.检查主库db_name,db_unique_name参数注意在DG中主库和备库的db_name是需要一致的,db_unique_name是不能一致的,需要区分开。
SQL>show parameter db_name;这里主库db_name是dg,备库db_name也是dg,保持一致SQL>show parameter db_unique_name;这里主库db_unique_name是dg,备库db_unique_name是dg1,需要区分开。
5.修改主库tnsnames.ora,listener.ora文件(1).找到主库的tns文件和监听文件并修改tns文件和监听文件默认路径都在$ORACLE_HOME/network/admin/[oracle@h2 ~]$ cd $ORACLE_HOME/network/admin/tnsnames.ora添加备库网络名dg1 =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.33)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = dg1)))dg =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.2)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = dg)))listener.ora增加以下静态监听配置SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(SID_NAME = PLSExtProc)(ORACLE_HOME = /u01/oracle)(PROGRAM = extproc))(SID_DESC =(GLOBAL DBNAME = dg)(ORACLE_HOME = /u01/oracle)(SID_NAME = dg)))(2).复制主库tnsnames.ora,listener.ora到备库相应目录下[oracle@h2 admin]$ scptnsnames.oraoracle@192.168.1.33:/u01/oracle/network/admin[oracle@h2 admin]$ scplistener.oraoracle@192.168.1.33:/u01/oracle/network/admin重启监听6. 修改主库参数文件(1).备份参数文件SQL>create pfile='/home/oracle/pfile0923.ora' from spfile;如果出现错误可以使用备份的参数重新配置数据库(2).修改数据库DB_UNIQUE_NAME(主库可不修改)SQL>alter system set db_unique_name='dg' scope=spfile;这里的DB_UNIQUE_NAME要与tnsnames.ora中的名一致。
Oracle 11g DataGuard 配置详细说明121.判断DataGuard是否安装3select * from v$option where parameter = 'Oracle Data Guard';42. 数据库环境说明5主库配置:IP:192.168.228.133(Oracle11g1),数据库名:db1,监听服6务名:db1pri,网络服务名:pri从库配置:IP:192.168.229.134(Oracle11g2),数据库名:db1,监听服78务名:db1dg ,网络服务名:dg9数据库程序安装路径:/oracleapp/oinstall/oracle/product/11.2.0/dbhome_1/dbs1011数据库存放路径:/oracledata/db1123.监听配置13在做oracle dataguard主从库配置时候,一定要配置静态监听,否则可14能出现监听服务解析错误,不能连接的问题,监听配置如下:15主库配置如下:16[oracle@Oracle11g1 admin]$ pwd17/oracleapp/oinstall/oracle/product/11.2.0/dbhome_1/network/admin 18[oracle@Oracle11g1 admin]$ cat listener.ora19# listener.ora Network Configuration File:/oracleapp/oinstall/oracle/product/1.2.0/dbhome_1/network/admin/list2021ener.ora# Generated by Oracle configuration tools.2223WU =24(DESCRIPTION_LIST =25(DESCRIPTION =26(ADDRESS = (PROTOCOL = TCP)(HOST = Oracle11g2)(PORT = 271521))28)29)30SID_LIST_WU =31(SID_LIST =32(SID_DESC =33(GLOBAL_DBNAME =db1pri)34(ORACLE_HOME =35/oracleapp/oinstall/oracle/product/11.2.0/dbhome_1)36(SID_NAME = db1)37)38)39ADR_BASE_WU = /oracleapp/oinstall/oracle40#注意这里的global_dbname=db1pri,SID_NAME=db1,这个SID_NAME 应与41你对外提供服务的 $ORACLE_SID 一致,即数据库:db142[oracle@Oracle11g1 admin]$ cat tnsnames.ora43# tnsnames.ora Network Configuration File:44/oracleapp/oinstall/oracle/product/11.2.0/dbhome_1/network/admin/tns 45names.ora46# Generated by Oracle configuration tools.47pri =48(DESCRIPTION =49(ADDRESS = (PROTOCOL = TCP)(HOST = Oracle11g1)(PORT = 1521)) (CONNECT_DATA =5051(SERVER = DEDICATED)52(SERVICE_NAME = db1pri))5354)55dg =56(DESCRIPTION =57(ADDRESS = (PROTOCOL = TCP)(HOST = Oracle11g2)(PORT = 1521)) 58(CONNECT_DATA =59(SERVER = DEDICATED)60(SERVICE_NAME = db1dg)61)62)63#tnsname pri 中的 SERVICE_NAME=db1pri ,这里的服务名为db1pri而64不是通常的 db1,因为在 listener.ora 中已经注册了db1pri,lsnrctl 启动65时会监听db1pri ,并对应到SID_NAME=db1上。
此处的pri,dg为数据库参66数文件中(initdb1.ora)的DB_UNIQUE_NAME的名字,即对外提供的服务名。
6768从库配置如下:69[oracle@Oracle11g2 admin]$ cat listener.ora70# listener.ora Network Configuration File:71/oracleapp/oinstall/oracle/product/11.2.0/dbhome_1/network/admin/lis 72tener.ora73# Generated by Oracle configuration tools.74WU =75(DESCRIPTION_LIST =76(DESCRIPTION =77(ADDRESS = (PROTOCOL = TCP)(HOST = Oracle11g2)(PORT = 1521))7879))8081SID_LIST_WU =82(SID_LIST =(SID_DESC =8384(GLOBAL_DBNAME = db1dg)85(ORACLE_HOME =86/oracleapp/oinstall/oracle/product/11.2.0/dbhome_1)87(SID_NAME = db1)88)89)90ADR_BASE_WU = /oracleapp/oinstall/oracle91[oracle@Oracle11g2 admin]$ cat tnsnames.ora92# tnsnames.ora Network Configuration File:93/oracleapp/oinstall/oracle/product/11.2.0/dbhome_1/network/admin/tns 94names.ora# Generated by Oracle configuration tools.959697pri =98(DESCRIPTION =99(ADDRESS = (PROTOCOL = TCP)(HOST = Oracle11g1)(PORT = 1521))(CONNECT_DATA =100101(SERVER = DEDICATED)102(SERVICE_NAME = db1pri)103)104)105dg =106(DESCRIPTION =107(ADDRESS = (PROTOCOL = TCP)(HOST = Oracle11g2)(PORT = 1521)) 108(CONNECT_DATA =109(SERVER = DEDICATED)110(SERVICE_NAME = db1dg)111)112)113分别用tnsping命令测试监听服务是否可用,正常显示信息如下:114115(tnsping对方的时候,有可能linux防火墙限制了,会提示TNS-12560: 116TNS: 协议适配器错误)[oracle@Oracle11g2 dbs]$ tnsping dg117118119TNS Ping Utility for Linux: Version 11.2.0.1.0 - Production on 12027-MAY-2014 15:39:34121122Copyright (c) 1997, 2009, Oracle. All rights reserved.123Used parameter files:124125126Used TNSNAMES adapter to resolve the alias127128Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = 129TCP)(HOST = Oracle11g2)(PORT = 1521)) (CONNECT_DATA = (SERVER = 130DEDICATED) (SERVICE_NAME = db1dg)))131OK (10 msec)[oracle@Oracle11g2 dbs]$ tnsping pri132133134TNS Ping Utility for Linux: Version 11.2.0.1.0 - Production on 13527-MAY-2014 15:40:16136137Copyright (c) 1997, 2009, Oracle. All rights reserved.138139Used parameter files:140141142Used TNSNAMES adapter to resolve the alias143Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = 144TCP)(HOST = Oracle11g1)(PORT = 1521)) (CONNECT_DATA = (SERVER = 145DEDICATED) (SERVICE_NAME =db1 pri)))146OK (10 msec)147[oracle@Oracle11g2 dbs]$1484.主库前期准备149设置强制写日志150[oracle@Oracle11g2 admin]$ sqlplus / as sysdba151SQL> select FORCE_LOGGING from v$database;152NO153SQL> alter database force logging;154SQL> select FORCE_LOGGING from v$database;155YES1565. 创建口令文件157通过dbca命令创建的数据库会自动在158/oracleapp/oinstall/oracle/product/11.2.0/dbhome_1/dbs目录下创建159orapwdb1密码文件,也可以通过如下命令创建[oracle@Oracle11g1 admin]$orapwd160161file=/oracleapp/oinstall/oracle/product/11.2.0/dbhome_1/dbs/orapwdb1 162password=oracle entries=5密码文件为orapw(数据库ID),这里为orapwdb1.1631646.修改主库初始化参数165在initdb1.ora文件下增加如下参数:166[oracle@Oracle11g2 dbs]$ vim initdb1.ora167*.db_name='db1' #注意保持同一个DataGuard中所有数据库DB_NAME168相同(物理standby dataguard)。