ORACLE11G搭建DATAGUARD步骤
- 格式:doc
- 大小:190.73 KB
- 文档页数:11
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 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。
一:实验环境介绍***鉴于生产环境均采用64位系统和数据库软件,本实验也将采用这个标准***采用vmware workstation 10(版本随意,我用的10)虚拟机软件作为安装平台对于真机的要求:CPU:INTEL:CORE I3级别或以上(推荐)AMD :4核心CPU或以上(推荐)内存:建议4G以上系统:WIN7 /8 64位/WINDOWS SERVER 2003/2008 64位硬盘:虚拟机所在分区剩余空间50G以上,固态硬盘最好虚拟机系统:Oracle Enterprise Linux 5 update 5(64位)数据库版本:Oracle 11gR2 11.2.0.3 (64位)基础要求:(1)安装两台虚拟机分别作为主库和备库,硬盘大小随意。
但要保证根分区有20G,别给太小了就行。
物理内存1G,SWAP 2G关于Active database duplication方式:(必看)在Oracle 10g下,我们可以使用RMAN duplicate 命令创建一个具有不同DBID 的复制库。
到了Oracle 11gR2,RMAN 的duplicate 有2种方法实现:1. Active database duplication (本文所使用的方式,适用于11gR2之后的版本)2. Backup-based duplication (传统方式,10g,11g通用)Active database duplication 通过网络,直接copy target 库到auxiliary 库,然后创建复制库。
这种方法就不需要先用RMAN 备份数据库,然后将备份文件发送到auxiliary端。
这个功能的作用是非常大的。
尤其是对T级别的库。
因为对这样的库进行备份,然后将备份集发送到备库,在进行duplicate 的代价是非常大的。
一备份要占用时间,二要占用备份空间,三在网络传送的时候,还需要占用带宽和时间。
oracle11g dataguard 完全手册一、前言:网络上关于dataguard的配置文章很多,但是很多打着oracle11g的文章实际都是只能在9 10 上运行,比如FAL_CLIENT在11g中已经废弃,但是现在网络上的文章都是没有标注这一点。
而且对于具体含义语焉不详对于新手只能知其然而不知其所以然。
这篇文章我就想让像我这样的人对于dataguard配置不仅仅知道怎么配置,还要知道为什么需要这样配置,这样的效果才是最好的。
这篇文章不仅仅是记录如何配置,还介绍了为什么是这样,以及注意要点,我希望这个文章可以作为进行dataguard配置的一个参考手册。
二、前提1.主库是归档模式:如果我们不清楚为什么是归档模式,那我们就应该也不会清楚dataguard是用来做什么的。
透过很多修饰的官方语言,我们需要明确DG(dataguard简称,后同)实际上的作用就是用来高可用。
而实现原理就是从主库获取数据到从库,在主库发生异常的时候,从库接管主库,完成身份的变化。
可以一个主库,最多9个从库。
同时分为逻辑standby和物理standby这里我们讨论的是物理standby.一旦创建并配置成standby 后,dg 负责传输primary数据库redo data 到standby 数据库,standby 数据库通过应用接收到的redo data 保持与primary 数据库的事务一致。
这下清楚了吧,需要保证主从库一致,需要传输archive log和redo log到从库,如果不是归档模式无法保证主从库的数据一致。
2.从库只需要安装数据库软件,数据从主库传输后完成。
3.很多人说11g有了active dataguard(ADG),逻辑standby 实际上已经没什么用处了。
4.主从库硬件最好一致。
oracle数据库版本需要一致。
(1)内存检查项:# grep MemTotal /proc/meminfo交换分区检查项:如果内存在1-2G,swap是1.5倍;2-16G,1倍;超过16G,设置为16G即可。
Oracle 11g Data Guard 安装准备工作Primary Server IP:192.168.1.11Standby Server IP:192.168.1.12Primary Net Service Name: dbserver1Standby Net Service Name: dbserver2Primary ORACLE_SID= dbserver1Standby ORACLE_SID= dbserver2ORACLE_BASE=/opt/oracleORACLE_HOME=/opt/oracle/product/db_1Primary 已经存在一个数据库,Standby只要灌好Oracle软件,不需要建立数据库。
Primary DataBase已经开启于Archive Log模式Primary DB、Standby DB位于两台不同的机器上Primary DB与Standby DB的目录结构都相同1、开启Force Logging模式(primary)[oracle@localhost admin]$ sqlplus "/ as sysdba"SQL*Plus: Release 11.2.0.1.0 Production on Tue Jul 12 15:35:34 2011 Copyright (c) 1982, 2009, Oracle. All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> alter database force logging;2、创建最新的pfile(primary)SQL> create pfile from spfile;参数文件一般在:$ORACLE_HOME\dbs\initdbserver1.ora3、修改初始化参数(primary)添加以下内容,红色为注释:即修改$ORACLE_HOME\dbs\initdbserver1.ora参数文件:dbserver1.__db_cache_size=180355072dbserver1.__java_pool_size=4194304dbserver1.__large_pool_size=4194304dbserver1.__oracle_base='/home/oracle/oracle'#ORACLE_BASE set from environmentdbserver1.__pga_aggregate_target=100663296dbserver1.__sga_target=306184192dbserver1.__shared_io_pool_size=0dbserver1.__shared_pool_size=109051904dbserver1.__streams_pool_size=0*.audit_file_dest='/opt/oracle/admin/dbserver1/adump'*.audit_trail='db'*.compatible='11.2.0.0.0'*.control_files='/opt/oracle/oradata/dbserver1/control01.ctl','/opt/o racle/flash_recovery_area/dbserver1/control02.ctl'*.db_block_size=8192*.db_domain=''*.db_name='dbserver'*.db_recovery_file_dest='/opt/oracle/flash_recovery_area'*.db_recovery_file_dest_size=4070572032*.db_unique_name='dbserver1' -->主库和备库的db_unique_name参数不能一样。
[-] 1.最简单的11g Active DataGuardADG搭建配置过程项目步骤1.一环境介绍2.二11g ADG部署1.pri端和sty端配置静态监听2.修改primary端初始化参数文件3.在primary端pfile参数文件和密码文件并且拷贝到standby段相应位置4.修改standby端的监听文件及初始化参数文件5.在primary端通过Rman Duplicate创建备库在db01上执行如下命令6.在primary和standby端添加standby日志7.在standby端开启实时日志应用3.三开始测试ADG1.执行日志切换测试在pri端切换归档在节点二上检查是否也发生了切换2.查看standby启动的DG进程3.查看数据库的保护模式4.查看DG的日志信息5.Open Read Only standby数据库并且开启实时日志应用6.解锁scott用户添加数据验证数据是否能同步4.四ADG三种模式切换及介绍1.ADG有三种PROTECTIONAVAILABILITYPERFORMANCE模式具体参考探索Oracle11gR2之DataGuard_03三种保护模式5.五切换测试1.ADG做switchover切换测试2.ADG做fail over切换测试最简单的11g Active DataGuard(ADG)搭建配置过程(项目步骤)一、环境介绍:我在db01和db02两台Linux虚拟机上首先分别安装了一套数据库软件,在db01主机上创建了名为woo的数据库;我们这次的实验是要搭建了一套Oracle11g Active DataGuard;目的是为了实现数据库同步的功能,并且了解Oracle11g DG的基本功能。
db01:192.168.1.50db02:192.168.1.51二、11g ADG部署:1、pri端和sty端配置静态监听[python]view plain copy print?1.[oracle@sty admin]$cat listener.ora2.#listener.ora Network Configuration File:/DBSoft/oracle/product/11.2.4/dbhome_1/network/admin/listener.ora3.#Generated by Oracle configuration tools.4.5.SID_LIST_LISTENER=6.(SID_LIST=7.(SID_DESC=8.(SID_NAME=PLSExtProc)9.(ORACLE_HOME=/DBSoft/oracle/product/11.2.4/dbhome_1)10.(PROGRAM=extproc)11.)12.(SID_DESC=13.(SID_NAME=Woo)14.(ORACLE_HOME=/DBSoft/oracle/product/11.2.4/dbhome_1)15.)16.)17.18.[oracle@sty admin]$cat tnsname.ora19.#tnsnames.ora Network Configuration File:/DBSoft/oracle/product/11.2.4/dbhome_1/network/admin/tnsnames.ora20.#Generated by Oracle configuration tools.21.22.STY=23.(DESCRIPTION=24.(ADDRESS_LIST=25.(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.51)(PORT=1521))26.)27.(CONNECT_DATA=28.(SERVICE_NAME=woo)29.)30.)31.32.PRI=33.(DESCRIPTION=34.(ADDRESS_LIST=35.(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.50)(PORT=1521))36.)37.(CONNECT_DATA=38.(SERVICE_NAME=woo)39.)40.)2、修改primary端初始化参数文件[sql]view plain copy print?1.startup mount;2.alter database archivelog;3.alter database force logging;4.alter database open;5.alter system set log_archive_config='DG_CONFIG=(pri,sty)'scope=spfile;6.alter system set log_archive_dest_1='LOCATION=/DBBackup/Archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=pri'scope=spfile;7.alter system set log_archive_dest_2='SERVICE=sty LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=sty'scope=spfile;8.alter system set log_archive_dest_state_1=ENABLE;9.alter system set log_archive_dest_state_2=ENABLE;10.alter system set fal_server=sty scope=spfile;11.alter system set fal_client=pri scope=spfile;12.alter system set standby_file_management=AUTO scope=spfile;3、在primary端pfile参数文件和密码文件,并且拷贝到standby段相应位置[python]view plain copy print?1.SQL>create pfile from spfile;2.3.File created.4.5.[oracle@db01dbs]$scp initwoo.ora orapwwoo db02:/DBSoft/oracle/product/11.2.4/dbhome_1/dbs6.oracle@192.168.1.51's password:7.initwoo.ora100%1260 1.2KB/s00:008.orapwwoo100%1536 1.5KB/s00:009.10.[oracle@db01oracle]$scp-r admin/diag/fast_recovery_area/oradata/192.168.1.51:$ORACLE_BASE11.oracle@192.168.1.51's password:12.init.ora.512201522543100%1778 1.7KB/s00:0113.dp.log100%1160.1KB/s00:0014.........4、修改standby端的监听文件及初始化参数文件[sql]view plain copy print?1.--修改监听文件2.[oracle@db02~]$cd$ORACLE_HOME/network/admin3.[oracle@db02admin]$vi listener.ora4.#listener.ora Network Configuration File:/DBSoft/oracle/product/11.2.4/dbhome_1/network/admin/listener.ora5.#Generated by Oracle configuration tools.6.7.LISTENER=8.(DESCRIPTION_LIST=9.(DESCRIPTION=10.(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))11.(ADDRESS=(PROTOCOL=TCP)(HOST=db02)(PORT=1521))12.)13.)14.15.SID_LIST_LISTENER=16.(SID_LIST=17.(SID_DESC=18.(SID_NAME=PLSExtProc)19.(ORACLE_HOME=/DBSoft/oracle/product/11.2.4/dbhome_1)20.(PROGRAM=extproc)21.)22.23.(SID_DESC=24.(GLOBAL_DBNAME=woo)25.(ORACLE_HOME=/DBSoft/oracle/product/11.2.4/dbhome_1)26.(SID_NAME=woo)27.)28.29.)30.31.ADR_BASE_LISTENER=/DBSoft/oracle32.33.--启动监听34.[oracle@db02dbs]$lsnrctl start35.36.LSNRCTL for Linux:Version11.2.0.4.0-Production on17-JUN-201521:29:5737.38.Copyright(c)1991,2013,Oracle.All rights reserved.39.40.Starting/DBSoft/oracle/product/11.2.4/dbhome_1/bin/tnslsnr:please wait...41.42.TNSLSNR for Linux:Version11.2.0.4.0-Production43.System parameter file is/DBSoft/oracle/product/11.2.4/dbhome_1/network/admin/listener.ora44.Log messages written to/DBSoft/oracle/diag/tnslsnr/db02/listener/alert/log.xml45.Listening on:(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))46.Listening on:(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=db02)(PORT=1521)))47.48.Connecting to(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))49.STATUS of the LISTENER50.------------------------51.Alias LISTENER52.Version TNSLSNR for Linux:Version11.2.0.4.0-Production53.Start Date17-JUN-201521:29:5754.Uptime0days0hr.0min.1sec55.Trace Level off56.Security ON:Local OS Authentication57.SNMP OFF58.Listener Parameter File/DBSoft/oracle/product/11.2.4/dbhome_1/network/admin/listener.ora59.Listener Log File/DBSoft/oracle/diag/tnslsnr/db02/listener/alert/log.xml60.Listening Endpoints Summary...61.(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))62.(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=db02)(PORT=1521)))63.Services Summary...64.Service"PLSExtProc"has1instance(s).65.Instance"PLSExtProc",status UNKNOWN,has1handler(s)for this service...66.Service"woo"has1instance(s).67.Instance"woo",status UNKNOWN,has1handler(s)for this service...68.The command completed successfully69.70.--查看监听状态71.[oracle@db02dbs]$lsnrctl status72.73.LSNRCTL for Linux:Version11.2.0.4.0-Production on17-JUN-201521:30:0274.75.Copyright(c)1991,2013,Oracle.All rights reserved.76.77.Connecting to(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))78.STATUS of the LISTENER79.------------------------80.Alias LISTENER81.Version TNSLSNR for Linux:Version11.2.0.4.0-Production82.Start Date17-JUN-201521:29:5783.Uptime0days0hr.0min.4sec84.Trace Level off85.Security ON:Local OS Authentication86.SNMP OFF87.Listener Parameter File/DBSoft/oracle/product/11.2.4/dbhome_1/network/admin/listener.ora88.Listener Log File/DBSoft/oracle/diag/tnslsnr/db02/listener/alert/log.xml89.Listening Endpoints Summary...90.(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))91.(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=db02)(PORT=1521)))92.Services Summary...93.Service"PLSExtProc"has1instance(s).94.Instance"PLSExtProc",status UNKNOWN,has1handler(s)for this service...95.Service"woo"has1instance(s).96.Instance"woo",status UNKNOWN,has1handler(s)for this service...97.The command completed successfully98.[oracle@db02dbs]$99.100.101.--修改参数文件102.[oracle@db02~]$sqlplus/as sysdba103.104.SQL*Plus:Release11.2.0.4.0Production on Wed Jun1721:35:542015105.106.Copyright(c)1982,2013,Oracle.All rights reserved.107.108.Connected to an idle instance.109.110.SQL>startup nomount;111.ORACLE instance started.112.113.Total System Global Area1188511744bytes114.Fixed Size1364228bytes115.Variable Size754978556bytes116.Database Buffers419430400bytes117.Redo Buffers12738560bytes118.119.SQL>create spfile from pfile='/DBSoft/oracle/product/11.2.4/dbhome_1/dbs/initwoo.ora';120.121.File created.122.123.SQL>124.SQL>shutdown abort;125.ORACLE instance shut down.126.SQL>startup nomount;127.ORACLE instance started.128.129.Total System Global Area1188511744bytes130.Fixed Size1364228bytes131.Variable Size754978556bytes132.Database Buffers419430400bytes133.Redo Buffers12738560bytes134.SQL>135.136.alter system set db_unique_name=sty scope=spfile;137.alter system set log_archive_config='DG_CONFIG=(pri,dg)'scope=spfile;138.alter system set log_archive_dest_1='LOCATION=/DBBackup/Archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=sty'scope=spfile; 139.alter system set log_archive_dest_2='SERVICE=pri LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=pri'scope=spfile; 140.alter system set fal_server=pri scope=spfile;141.alter system set fal_client=sty scope=spfile;142.143.SQL>shutdown abort;144.ORACLE instance shut down.145.SQL>startup nomount146.ORACLE instance started.147.148.Total System Global Area1188511744bytes149.Fixed Size1364228bytes150.Variable Size754978556bytes151.Database Buffers419430400bytes152.Redo Buffers12738560bytes153.SQL>154.SQL>5、在primary端通过Rman Duplicate创建备库,在db01上执行如下命令rman target sys/oracle@pri auxiliary sys/oracle@sty nocatalogduplicate target database for standby from active database nofilenamecheck; [python]view plain copy print?1.[oracle@db01~]$rman target sys/oracle@pri auxiliary sys/oracle@sty nocatalog2.3.Recovery Manager:Release11.2.0.4.0-Production on Wed Jun1722:33:5420154.5.Copyright(c)1982,2011,Oracle and/or its affiliates.All rights reserved.6.7.connected to target database:WOO(DBID=4221729487)ing target database control file instead of recovery catalog9.connected to auxiliary database:WOO(not mounted)10.11.RMAN>12.13.RMAN>duplicate target database for standby from active database nofilenamecheck;14.15.Starting Duplicate Db at17-JUN-1516.allocated channel:ORA_AUX_DISK_117.channel ORA_AUX_DISK_1:SID=19device type=DISK18.19.contents of Memory Script:20.{21.backup as copy reuse22.targetfile'/DBSoft/oracle/product/11.2.4/dbhome_1/dbs/orapwwoo'auxiliary format23.'/DBSoft/oracle/product/11.2.4/dbhome_1/dbs/orapwwoo';24.}25.executing Memory Script26.27.Starting backup at17-JUN-1528.allocated channel:ORA_DISK_129.channel ORA_DISK_1:SID=44device type=DISK30.Finished backup at17-JUN-1531.32.contents of Memory Script:33.{34.backup as copy current controlfile for standby auxiliary format'/DBSoft/oracle/oradata/woo/control01.ctl';35.restore clone controlfile to'/DBSoft/oracle/fast_recovery_area/woo/control02.ctl'from36.'/DBSoft/oracle/oradata/woo/control01.ctl';37.}38.executing Memory Script39.40.Starting backup at17-JUN-15ing channel ORA_DISK_142.channel ORA_DISK_1:starting datafile copy43.copying standby control file44.output file name=/DBSoft/oracle/product/11.2.4/dbhome_1/dbs/snapcf_woo.f tag=TAG20150617T223502RECID=1STAMP=88265730845.channel ORA_DISK_1:datafile copy complete,elapsed time:00:00:1546.Finished backup at17-JUN-1547.48.Starting restore at17-JUN-15ing channel ORA_AUX_DISK_150.51.channel ORA_AUX_DISK_1:copied control file copy52.Finished restore at17-JUN-1553.54.contents of Memory Script:55.{56.sql clone'alter database mount standby database';57.}58.executing Memory Script59.60.sql statement:alter database mount standby database61.62.contents of Memory Script:63.{64.set newname for tempfile1to65."/DBSoft/oracle/oradata/woo/temp01.dbf";66.switch clone tempfile all;67.set newname for datafile1to68."/DBSoft/oracle/oradata/woo/system01.dbf";69.set newname for datafile2to70."/DBSoft/oracle/oradata/woo/sysaux01.dbf";71.set newname for datafile3to72."/DBSoft/oracle/oradata/woo/undotbs01.dbf";73.set newname for datafile4to74."/DBSoft/oracle/oradata/woo/users01.dbf";75.backup as copy reuse76.datafile1auxiliary format77."/DBSoft/oracle/oradata/woo/system01.dbf"datafile78.2auxiliary format79."/DBSoft/oracle/oradata/woo/sysaux01.dbf"datafile80.3auxiliary format81."/DBSoft/oracle/oradata/woo/undotbs01.dbf"datafile82.4auxiliary format83."/DBSoft/oracle/oradata/woo/users01.dbf";84.sql'alter system archive log current';85.}86.executing Memory Script87.88.executing command:SET NEWNAME89.90.renamed tempfile1to/DBSoft/oracle/oradata/woo/temp01.dbf in control file91.92.executing command:SET NEWNAME93.94.executing command:SET NEWNAME95.96.executing command:SET NEWNAME97.98.executing command:SET NEWNAME99.100.Starting backup at17-JUN-15ing channel ORA_DISK_1102.channel ORA_DISK_1:starting datafile copy103.input datafile file number=00001name=/DBSoft/oracle/oradata/woo/system01.dbf 104.output file name=/DBSoft/oracle/oradata/woo/system01.dbf tag=TAG20150617T223532 105.channel ORA_DISK_1:datafile copy complete,elapsed time:00:05:58106.channel ORA_DISK_1:starting datafile copy107.input datafile file number=00002name=/DBSoft/oracle/oradata/woo/sysaux01.dbf108.output file name=/DBSoft/oracle/oradata/woo/sysaux01.dbf tag=TAG20150617T223532109.channel ORA_DISK_1:datafile copy complete,elapsed time:00:05:30110.channel ORA_DISK_1:starting datafile copy111.input datafile file number=00003name=/DBSoft/oracle/oradata/woo/undotbs01.dbf112.output file name=/DBSoft/oracle/oradata/woo/undotbs01.dbf tag=TAG20150617T223532113.channel ORA_DISK_1:datafile copy complete,elapsed time:00:00:25114.channel ORA_DISK_1:starting datafile copy115.input datafile file number=00004name=/DBSoft/oracle/oradata/woo/users01.dbf116.output file name=/DBSoft/oracle/oradata/woo/users01.dbf tag=TAG20150617T223532117.channel ORA_DISK_1:datafile copy complete,elapsed time:00:00:03118.Finished backup at17-JUN-15119.120.sql statement:alter system archive log current121.122.contents of Memory Script:123.{124.switch clone datafile all;125.}126.executing Memory Script127.128.datafile1switched to datafile copy129.input datafile copy RECID=1STAMP=882658052file name=/DBSoft/oracle/oradata/woo/system01.dbf 130.datafile2switched to datafile copy131.input datafile copy RECID=2STAMP=882658052file name=/DBSoft/oracle/oradata/woo/sysaux01.dbf 132.datafile3switched to datafile copy133.input datafile copy RECID=3STAMP=882658052file name=/DBSoft/oracle/oradata/woo/undotbs01.dbf 134.datafile4switched to datafile copy135.input datafile copy RECID=4STAMP=882658052file name=/DBSoft/oracle/oradata/woo/users01.dbf 136.Finished Duplicate Db at17-JUN-15#至此已经恢复完成6、在primary和standby端添加standby日志[sql]view plain copy print?1.SQL>alter database add standby logfile2.group4('/DBSoft/oracle/oradata/woo/styredo04.log')size50m,3.group5('/DBSoft/oracle/oradata/woo/styredo05.log')size50m,4.group6('/DBSoft/oracle/oradata/woo/styredo06.log')size50m,5.group7('/DBSoft/oracle/oradata/woo/styredo07.log')size50m;6.7.SQL>SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM V$STANDBY_LOG;8.9.GROUP#THREAD#SEQUENCE#ARC STATUS10.-------------------------------------------11.400YES UNASSIGNED12.500YES UNASSIGNED13.600YES UNASSIGNED14.700YES UNASSIGNED7、在standby端开启实时日志应用[sql]view plain copy print?1.SQL>recover managed standby database using current logfile disconnect from session;2.Media recovery complete.3.SQL>三、开始测试ADG8、执行日志切换测试(在pri端切换归档,在节点二上检查是否也发生了切换)[sql]view plain copy print?1.--primary执行日志切换2.3.SQL>archive log list;4.Database log mode Archive Mode5.Automatic archival Enabled6.Archive destination/DBBackup/Archive7.Oldest online log sequence218.Next log sequence to archive239.Current log sequence2310.SQL>alter system switch logfile;11.12.System altered.13.14.SQL>archive log list;15.Database log mode Archive Mode16.Automatic archival Enabled17.Archive destination/DBBackup/Archive18.Oldest online log sequence2219.Next log sequence to archive2320.Current log sequence2421.22.#standby查看日志的sequence号也跟着变了23.SQL>archive log list;24.Database log mode Archive Mode25.Automatic archival Enabled26.Archive destination/DBBackup/Archive27.Oldest online log sequence2228.Next log sequence to archive029.Current log sequence2330.SQL>archive log list;31.Database log mode Archive Mode32.Automatic archival Enabled33.Archive destination/DBBackup/Archive34.Oldest online log sequence2235.Next log sequence to archive036.Current log sequence2437.SQL>9、查看standby启动的DG进程[sql]view plain copy print?1.SQL>select process,client_process,sequence#,status from v$managed_standby;2.3.PROCESS CLIENT_P SEQUENCE#STATUS4.---------------------------------------5.ARCH ARCH23CLOSING6.ARCH ARCH0CONNECTED//归档进程7.ARCH ARCH21CLOSING8.ARCH ARCH0CONNECTED9.RFS ARCH0IDLE10.RFS UNKNOWN0IDLE11.RFS LGWR24IDLE//归档传输进程12.RFS UNKNOWN0IDLE13.MRP0N/A24APPLYING_LOG//日志应用进程14.15.9rows selected.10、查看数据库的保护模式:[sql]view plain copy print?1.#primary端查看,我们可以看到数据库的保护模式为最大性能2.SQL>select database_role,protection_mode,protection_level,open_mode from v$database;3.4.DATABASE_ROLE PROTECTION_MODE PROTECTION_LEVEL OPEN_MODE5.----------------------------------------------------------------------------6.PRIMARY MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE READ WRITE7.8.#standby端查看,也是一样的。
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。
Oracle11g11.2.0.4RAC双节点上搭建DataGuardOracle 11g 11.2.0.4 RAC双节点上搭建DataGuard备库安装好grid infrastructure软件备库安装好oracle软件在主库RAC1节点执行RMAN备份:run{allocate channel c1 device type disk;allocate channel c2 device type disk;allocate channel c3 device type disk;allocate channel c4 device type disk;backup database format '/u01/app/oracle/backup/full_%d_%T_%U';release channel c1;release channel c2;release channel c3;release channel c4;}run{sql 'alter system archive log current';backup archivelog all format '/u01/app/oracle/backup/ARC_%U.bak';backup device type disk format '/u01/app/oracle/backup/standby_%U.ctl'current controlfile for standby;}将主库的口令文件复制到备库的$ORACLE_HOME/dbs目录中,改名为orapw+新的实例名注意:一定要是主库复制过来的,否则即使密码相同也不行。
主库创建pfilecreate pfile='/u01/app/oracle/pfile' from spfile;复制到备库并且修改部分参数:*.controlfiles='+DATA/racdg/controlfile/cont.ctl'*.db_file_name_convert='+DATA/racdb/','+DATA/racdg/'*.fal_client='racdg'*.fal_server='racdb1','racdb2'*.log_archive_config='dg_config=(racdb,racdg)'*.log_archive_dest_1='location=USE_DB_RECOVERY_FILE_DE STvalid_for=(all_logfiles,all_roles) db_unique_name=racdg'*.log_archive_dest_2='service=racdb asyc valid_for=(online_logfiles,primary_role) db_unique_name=racdb' *.log_archive_format='ARC_%t_%S_%r.arc'*.log_file_name_convert='+DATA/racdb/','+DATA/racdg/*.service_names='racdg'*.standby_file_management='auto'*.db_unique_name='racdg;修改权限:将$ORACLE_HOME/bin 下oracle文件修改权限:chgrp asmadmin oraclechmod 6751 oracle否则在还原控制文件到ASM磁盘的时候没有权限在ASM磁盘读写在主库2个节点和备库上配置tnsname.ora文件内容如下(要相同)RACDB =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.211.200)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = racdb)))RACDB1 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.211.203)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = racdb)(INSTANCE_NAME = racdb1)))RACDB2 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.211.204)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = racdb)(INSTANCE_NAME = racdb2)))RACDG =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.211.188)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = racdg)))在物理备库上,将pfile转成spfile,执行startup nomount;启动到nomount状态:进入RMANrman target /还原控制文件到备库:restore standby controlfile from'/u01/app/oracle/backup/standby_1ppiogeb_1_1.ctl';(根据实际备份的控制文件名字)还原数据文件到备库:run{allocate channel c1 type disk;allocate channel c2 type disk;allocate channel c3 type disk;allocate channel c4 type disk;restore database;release channel c1;release channel c2;release channel c3;release channel c4;}在主库执行:alter system set log_archive_dest_2='service=racdg LGWR asyncvalid_for=(online_logfiles,primary_role)db_unique_name=racdg'sid='*';alter system set log_archive_config='dg_config=(racdb,racdg)'sid='*';备库执行开始应用日志命令:SQL> alter database recover managed standby database using currentlogfile disconnect from session;查看备库日志应用情况:selectdbid,name,switchover_status,db_unique_name,database_role,op en_mode,current_scn from v$database;取消备库应用日志:alter database recover managed standby database cancel;select open_mode,database_role,switchover_status from v$database;查看主库能否成功将日志传送到备库主库进行参数配置可以便将主库和备库角色转换:alter system set log_archive_config='DG_CONFIG(racdb1,racdg)';alter system set fal_client='racdb1' sid='racdb1';alter system set fal_client='racdb2' sid='racdb2';alter system set fal_server='racdg' sid='*';alter database add standby logfile '+FRA' size 50m;alter database add standby logfile '+FRA' size 50m;alter database add standby logfile '+FRA' size 50m;alter database add standby logfile '+FRA' size 50m;alter system set db_file_name_convert='+DATA/racdg/','+DATA/racdb/' sid='*' scope=spfile;alter system set log_file_name_convert='+DATA/racdg/','+DATA/racdb/' sid='*' scope=spfile;selectdbid,name,current_scn,protection_mode,database_role,force_log ging,open_mode,switchover_status from v$database;切换主库为备库:主库执行:alter database commit to switchover to physical standby with session shutdown;备库执行:alter database commit to switchover to primary;将原 RAC 主库 2 个实例都启动到 MOUNT 状态:srvctl start database -d racdb -o mount。
环境:主备库都为单实例并且数据库SID相同OS:red hat 6.5Oracle:11.2.0.4.3主库操作1.开启归档模式创建归档目录[root@enn ~]# mkdir -p /u01/archivelog[root@enn ~]# chown -R oracle:oinstall /u01/archivelog[root@enn ~]# chmod 777 /u01/archivelog数据库到mount状态开启归档模式[root@enn ~]# su - oracle[oracle@enn ~]$ sqlplus / as sysdbaSQL*Plus: Release 11.2.0.4.0 Production on Sun Jul 20 23:46:46 2014 Copyright (c) 1982, 2013, Oracle. All rights reserved.Connected to an idle instance.SQL> startup mountORACLE instance started.Total System Global Area 835104768 bytesFixed Size 2257840 bytesVariable Size 541068368 bytesDatabase Buffers 289406976 bytesRedo Buffers 2371584 bytesDatabase mounted.设置主库归档目录SQL> alter system set log_archive_dest='/u01/archivelog';alter system set log_archive_dest_1='location=/data/oracle/log1/archive_log'; 最后的目录名称需要为archive_log开启归档模式SQL> alter database archivelog;Database altered.查看归档设置SQL> archive log list;Database log mode Archive ModeAutomatic archival EnabledArchive destination /u01/archivelogOldest online log sequence 2Next log sequence to archive 4Current log sequence 42.启动force_logging模式查看是否force_logging模式SQL> select log_mode,force_logging from v$database;LOG_MODE FOR------------ ---ARCHIVELOG NO开启force_logging模式SQL> alter database force logging;Database altered.3.创建备库日志文件路径查看数据库的日志组个数与大小,因为我们创建standby 日志组的个数是原日志组个数+1 再与thread 的积((2+1)*3),size 不能小于原日志文件的大小。
配置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步骤ORACLE 11G 搭建DATAGUARD步骤1安装环境在主机1上安装数据库软件,并建监听和实例,在主机2上安装数据库软件,并建监听,但不建实例。
2主数据库配置2.1设置数据库强制归档sqlplus / as sysdbaSQL> ALTER DATABASE FORCE LOGGING;SQL> select force_logging from v$database;FOR---YES2.2添加STANDBY日志文件SQL>alter database add standby logfile group 4 ('/oradata/dbtest/redo04.log') size 50m;SQL>alter database add standby logfile group 5 ('/oradata/dbtest/redo05.log') size 50m;SQL>alter database add standby logfile group 6 ('/oradata/dbtest/redo06.log') size 50m;SQL>alter database add standby logfile group 7 ('/oradata/dbtest/redo07.log') size 50m;SQL> select * from v$logfile order by 1;2.3修改参数文件2.3.1生成pfileSQL>create pfile from spfile;SQL>shutdown immediate;2.3.2修改pfilevi $ORACLE_HOME/dbs/initdbtest.ora在最后添加如下容:*.db_unique_name=dbtest1*.fal_server='dbtest2'*.fal_client='dbtest1'*.standby_file_management=auto*.db_file_name_convert='/oradata/dbtest/','/oradata/dbtest /'*.log_file_name_convert='/oradata/dbtest/','/oradata/dbtest /'*.log_archive_config='dg_config=(dbtest1,dbtest2)'*.log_archive_dest_2='service=dbtest2 LGWR SYNC AFFIRM valid_for=(online_logfiles,primary_role)db_unique_name=dbtest2'*.log_archive_dest_state_2='ENABLE'2.3.3生成spfileSQL> shutdown immediate[oracledbserver01 ~]$ cd $ORACLE_HOME/dbs[oracledbserver01 dbs]$ mv spfilejkfwdb.ora spfilejkfwdb.ora.bakSQL> startup nomountSQL> create spfile from pfile;File created.SQL> show parameter uniqSQL> shutdown immediate;SQL> startupSQL> show parameter spfile2.4修改监听配置文件2.5修改TNS配置文件[oracledg1 admin]$ cat tnsnames.ora# tnsnames.ora Network Configuration File: /oracle/app/oracle/product/11.2.0/db_1/network/admin/tnsna mes.ora # Generated by Oracle configuration tools.DBTEST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.132.3)(PORT = 1521)) (CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = dbtest1)))DBTEST1 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.132.3)(PORT = 1521)) (CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = dbtest1)))DBTEST2 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.132.4)(PORT = 1521)) (CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = dbtest2)))EXTPROC_CONNECTION_DATA =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC2)))(CONNECT_DATA =(SID = PLSExtProc)(PRESENTATION = RO)))2.6重启监听服务lsnrctl stoplsnrctl start2.7配置最大可用模式SQL> alter database set standby database to maximizeavailability;Database altered.SQL> exit2.8备份数据库[oracledg1 admin]$ rman target /RMAN> backup database plus archivelog;RMAN> backup current controlfile for standby;RMAN> exit备份完成后会在闪回区生产备份文件3备数据库配置3.1建立相应的文件目录包括dump文件目录,闪回区,数据文件目录,可以通过show parameter dest 命令查看mkdir -p /oracle/app/oracle/admin/dbtest/adumpmkdir -p /oracle/app/oracle/admin/dbtest/dpdumpmkdir -p /oracle/app/oracle/diag/rdbms/dbtest1/dbtest/trace mkdir -p /oracle/app/oracle/diag/rdbms/dbtest1/dbtest/cdump mkdir -p /oracle/app/oracle/flash_recovery_areamkdir -p /oradata/dbtest3.2从主数据库服务器上拷贝文件注意:下面命令在主数据库上执行3.2.1拷贝闪回区容[oracledg1 admin]$ cd /oracle/app/oracle/flash_recovery_areascp -r ./* 192.168.132.4:/oracle/app/oracle/flash_recovery_area/ 3.2.2拷贝参数文件[oracledg1 flash_recovery_area]$ cd $ORACLE_HOME/dbsscp ./* 192.168.132.4:/oracle/app/oracle/product/11.2.0/db_1/dbs/ 3.2.3拷贝密码文件3.2.4拷贝监听文件和tns文件[oracledg1 dbs]$ cd ../network/admin/scp *.ora192.168.132.4:/oracle/app/oracle/product/11.2.0/db_1/netw ork/admin/ 3.3修改监听配置文件修改ip地址3.4修改TNS配置文件修改ip地址3.5重启监听服务lsnrctl stoplsnrctl start3.6修改参数文件并启动数据库到nomountCd $ORACLE_HOME/dbsCp initdbtest.ora initdbtest.ora.bakvi $ORACLE_HOME/dbs/initdbtest.ora去掉上面添加的部分即:*.db_unique_name=dbtest1*.fal_server='dbtest2'*.fal_client='dbtest1'……3.7恢复数据库[oracledg2 admin]$ rman target sys/funo1234dbtest1 auxiliary / RMAN> duplicate target database for standby nofilenamecheck;RMAN> exit3.8修改参数文件[oracledg2 admin]$ sqlplus / as sysdbaSQL> shutdown immediate;vi $ORACLE_HOME/dbs/initdbtest.ora添加如下容*.db_unique_name=dbtest2SQL> create spfile from pfile;3.9启动数据库SQL> startup nomount;SQL> alter database mount standby database;SQL> alter database recover managed standby database using current logfile disconnect from session;3.10验证主库备库均执行如下命令:SQL> archive log list;主库备库如果最后一行数字相同,说明配置成功3.11切换到只读模式SQL> alter database recover managed standby database cancel;SQL> alter database open read only;3.12切换到同步模式(不需要停库)SQL> alter database recover managed standby database using current logfiledisconnect from session;。
Oracle Data Guard 实施与维护方案1.项目背景介绍在2台RedHat5.4上使用ORACLE 的DataGuard组件实现容灾。
设备配置(VMWare虚拟机环境)清单如下:2.Oracle DataGuard 介绍备用数据库(standby database)是ORACLE 推出的一种高可用性(HIGH AVAILABLE)数据库方案,在主节点与备用节点间通过日志同步来保证数据的同步,备用节点作为主节点的备份,可以实现快速切换与灾难性恢复。
●STANDBY DATABASE的类型:有两种类型的STANDBY:物理STANDBY和逻辑STANDBY两种类型的工作原理可通过如下图来说明:physical standby提供与主数据库完全一样的拷贝(块到块),数据库SCHEMA,包括索引都是一样的。
它是可以直接应用REDO实现同步的。
l ogical standby则不是这样,在logical standby中,逻辑信息是相同的,但物理组织和数据结构可以不同,它和主库保持同步的方法是将接收的REDO转换成SQL语句,然后在STANDBY上执行SQL语句。
逻辑STANDBY除灾难恢复外还有其它用途,比如用于用户进行查询和报表,但其数据库用户相关对象均需要有主键。
✧本次实施将选择物理STANDBY(physical standby)方式●对主库的保护模式可以有以下三种模式:–Maximum protection (最高保护)–Maximum availability (最高可用性)–Maximum performance (最高性能)✧基于项目应用的特征及需求,本项目比较适合采用Maximum availability (最高可用性)模式实施。
3.Dataguard 实施前提条件和注意事项:●灾备环境中的所有节点必须安装相同的操作系统,尽可能令详细补丁也保持相同。
●灾备环境中的所有节点必须安装完全相同版本的Oracle数据库软件,包括版本号和发布号,比如必须都是Oracle 11.2.0.1●主库必须处于归档(ARCHIVELOG)模式。
一:实验环境介绍***鉴于生产环境均采用64位系统和数据库软件,本实验也将采用这个标准***采用vmware workstation 10(版本随意,我用的10)虚拟机软件作为安装平台对于真机的要求:CPU:INTEL:CORE I3级别或以上(推荐)AMD :4核心CPU或以上(推荐)内存:建议4G以上系统:WIN7 /8 64位/WINDOWS SERVER 2003/2008 64位硬盘:虚拟机所在分区剩余空间50G以上,固态硬盘最好虚拟机系统:Oracle Enterprise Linux 5 update 5(64位)数据库版本:Oracle 11gR2 11.2.0.3 (64位)基础要求:(1)安装两台虚拟机分别作为主库和备库,硬盘大小随意。
但要保证根分区有20G,别给太小了就行。
物理内存1G,SWAP 2G二:安装数据库软件前的系统配置(主库和备库端都要做下列操作)1.基本配置:一定要用新装的系统(这里以红帽企业版5.5为例),系统要求最低配置1G内存,2Gswap 分区,根分区20G以上,装好系统后先配置好yum,IP地址,/etc/sysconfig/network文件中的主机名,以及/etc/hosts文件中的IP地址和主机名的对应关系。
主库IP:192.168.1.101主库主机名: pri备库IP:192.168.1.102备库主机名: std2.装包yum install compat-libstdc++-33 ksh gcc gcc-c++ libgomp elfutils-libelf-devel glibc-devel glibc-headers libaio-devel libstdc++-devel sysstat unixODBC unixODBC-devel -y3.查看共享内存大小,要求最低为1GB# df -h /dev/shmFilesystem Size Used Avail Use% Mounted ontmpfs 506M 0 506M 0% /dev/shm发现不够,修改# vim /etc/fstab如图,在tmpfs那一行的defaults后面加上,size=1024m保存退出后重新挂载:# mount -o remount /dev/shm再次查看共享内存:# df -h /dev/shmFilesystem Size Used Avail Use% Mounted ontmpfs 1.0G 0 1.0G 0% /dev/shm修改成功4.创建相关的组与用户:groupadd oinstallgroupadd dbagroupadd operuseradd -g oinstall -G dba,oper oraclepasswd oracle5.创建所需的目录并赋予特定的属主和属组mkdir /u01/app/oracle -pvchown oracle.oinstall /u01 -R建议:最好为单独分一个区,然后将u01挂载到该分区上(可不做,看情况)6.编辑limits.conf 文件vim /etc/security/limits.conf添加下面5行内容:oracle soft nproc 2047oracle hard nproc 16384oracle soft nofile 1024oracle hard nofile 65536oracle soft stack 102407.编辑sysctl.conf文件,设置相关参数vim /etc/sysctl.conf添加/修改下列内容:(注意!下面的参数,若是已经存在,则直接修改数值,不要再添加同样的参数,相同的参数只能有一个!如果需要修改的参数已经大于下面的数字,则不用修改,请仔细核对!)kernel.shmall = 2097152kernel.shmmax = 536870912kernel.shmmni = 4096kernel.sem =250 32000 100 128fs.file-max = 6815744fs.aio-max-nr = 1048576net.ipv4.ip_local_port_range = 9000 65500net.core.rmem_default = 262144net.core.rmem_max = 4194304net.core.wmem_default = 262144net.core.wmem_max = 1048576保存退出后,别忘了用sysctl -p命令使参数生效!8.编辑vim /home/oracle/.bash_profile文件,配置相关环境变量添加下列几行:export TMP=/tmpexport TMPDIR=/tmpexport ORACLE_BASE=/u01/app/oracleexport ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1export ORACLE_SID=pri (备库端设置为std)export PA TH=$ORACLE_HOME/bin:$PA TH至此,安装环境相关配置结束。
ORACLE LINUX 11G RAC 单实例DATAGUARD环境说明:源库:双节点RAC:CPU:12MEM:8G操作系统:Linux 2.6.18-194.el510.135.33.170 11grac110.135.33.171 11grac210.135.33.172 11grac1-vip10.135.33.173 11grac2-vipDB_NAME=oemdb_unique_Name=oemDATAGUARD目标库:单实例CPU:4MEM:6G操作系统:Linux 2.6.18-194.el510.135.161.241DB_NAME=oemdb_unique_name=dgtest安装步骤一、源库设置强制归档:二、源库设置参数,设置完毕后参数如下所示DB_NAME=oemDB_UNIQUE_NAME=oemLOG_ARCHIVE_CONFIG='DG_CONFIG=(oem,oem_dg)'LOG_ARCHIVE_DEST_1='LOCATION=/dbfs_backup/oemVALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=oem'LOG_ARCHIVE_DEST_2='SERVICE=oem_dg LGWR AFFIRMVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=oem_dg'LOG_ARCHIVE_DEST_STATE_1=ENABLELOG_ARCHIVE_DEST_STATE_2=ENABLEREMOTE_LOGIN_PASSWORDFILE=EXCLUSIVELOG_ARCHIVE_FORMAT=%t_%s_%r.arcLOG_ARCHIVE_MAX_PROCESSES=4FAL_SERVER=oem_dgDB_FILE_NAME_CONVERT='/oradata/oem_dg/datafile/','+DATA/oem/dataf ile/'LOG_FILE_NAME_CONVERT='/oradata/oem_dg/','+DATA/oem/STANDBY_FILE_MANAGEMENT=AUTO执行如下命令设置:alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(oem,oem_dg)'scope=both sid='*';alter system set LOG_ARCHIVE_DEST_1='LOCATION=/dbfs_backup/oem VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=oem'scope=both sid='*';alter system set LOG_ARCHIVE_DEST_2='SERVICE=oem_dg LGWR AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=oem_dg' scope=both sid='*';alter system set log_archive_format='%t_%s_%r.arc'scope=spfile sid='*';alter system set log_archive_max_processes=4scope=both sid='*';alter system set fal_server=oem_dg scope=both sid='*';alter system setDB_FILE_NAME_CONVERT='/oradata/oem_dg/datafile/','+DATA/oem/dataf ile/'scope=spfile sid='*';alter system set LOG_FILE_NAME_CONVERT='/oradata/oem_dg/,'+DATA/oem/'scope=spfile sid='*';三、重启源库,设置为归档模式。
目录1.判断DataGuard是否安装 (2)2. 网络配置 (2)3.监听配置 (2)4.主库前期准备 (3)5. 创建口令文件 (3)6.修改主库初始化参数 (4)7.修改数据库运行在归档模式下 (4)8. 创建备份库需要的控制文件 (4)9. 备份生产数据库 (5)10.修改备库pfile (5)11.将控制文件 (5)12.在备库上创建口令文件 (5)13.在备库上创建spfile (5)14.启动物理备用数据库 (6)15.配置Standby Redo Log (6)16. Start Redo Apply (6)1.判断DataGuard是否安装select * from v$option where parameter = 'Oracle Data Guard';2. 网络配置192.168.1.10(orcl)------------------------------------192.168.1.20(dg)3.监听配置主库[oracle@node1 ~]$ cd /u01/app/product/11.2.0/db_1/network/admin [oracle@node1 admin]$ cat listener.oraLISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = node1)(PORT = 1521))))[oracle@node1 admin]$ cat tnsnames.oraORCL =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = node1)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))DG =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = node2)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = dg)))备库[oracle@node1 admin]$ cat listener.oraLISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = node2)(PORT = 1521))))[oracle@node1 admin]$ cat tnsnames.oraORCL =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = node1)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))DG =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = node2)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = dg)))4.主库前期准备设置强制写日志SQL> select FORCE_LOGGING from v$database;NOSQL> alter database force logging;SQL> select FORCE_LOGGING from v$database;YES5. 创建口令文件orapwd file=$ORACLE_HOME/dbs/orapwdb1 password=oracle entries=56.修改主库初始化参数创建主库pfilesql > create pfile from spfile;修改pfileDB_UNIQUE_NAME=orclLOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,dg)'LOG_ARCHIVE_DEST_1= 'LOCATION=/u01/app/archiveVALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl'LOG_ARCHIVE_DEST_2= 'SERVICE=dg LGWR ASYNCVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=dg'LOG_ARCHIVE_DEST_STATE_1=ENABLELOG_ARCHIVE_DEST_STATE_2=ENABLELOG_ARCHIVE_FORMAT=%t_%s_%r.arcFAL_SERVER=dgFAL_CLIENT=orclSTANDBY_FILE_MANAGEMENT=AUTOPfile 拷贝到备库上scp –rp /u01/app/product/11.2.0/db_1/dbs/initorcl.ora node2:/u01/app/product/11.2.0/db_1/dbs/7.修改数据库运行在归档模式下SHUTDOWN IMMEDIATE;STARTUP MOUNT;ALTER DATABASE ARCHIVELOG;ALTER DATABASE OPEN;8. 创建备份库需要的控制文件创建控制文件Shutdown immediateSTARTUP MOUNT;ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/orcl.ctl';ALTER DATABASE OPEN;创建主库pfileShutdown immediatestartup pfile='//u01/app/oracle/product/11.2.0/dbhome_1/dbs/20011.ora'sql> create spfile from pfile='//u01/app/oracle/product/11.2.0/dbhome_1/dbs/20011.ora';(先把原来的干掉)shutdown immediate;startup9. 备份生产数据库scp -rp /u01/oradata/ORCL node2:/u01/oradata/scp –rp /u01/app/admin/orcl node2:/u01/app/admin(记得在备库创建admin) 10.修改备库pfileDB_UNIQUE_NAME=orclLOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,dg)'LOG_ARCHIVE_FORMAT=log%t_%s_%r.arcLOG_ARCHIVE_DEST_1='LOCATION=/u01/app/archiveVALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=dg'LOG_ARCHIVE_DEST_2='SERVICE=orcl ASYNCVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=orcl'LOG_ARCHIVE_DEST_STATE_1=ENABLELOG_ARCHIVE_DEST_STATE_2=ENABLEFAL_SERVER=orclFAL_CLIENT=dgSTANDBY_FILE_MANAGEMENT=AUTO11.将控制文件scp -rp /tmp/dg.ctl node2:/u01/oradata/ORCL/controlfile/scp -rp /tmp/dg.ctl node2:/u01/flash_recovery_area/orcl/controlfile/ 12.在备库上创建口令文件orapwd file=$ORACLE_HOME/dbs/orapwdb1 password=oracle entries=5 13.在备库上创建spfileShutdown immediatestartup pfile='//u01/app/oracle/product/11.2.0/dbhome_1/dbs/20011.ora'CREATE SPFILE FROM PFILE;14.启动物理备用数据库STARTUP MOUNT;15.配置Standby Redo Log在两边都配置standby redo log在主库查看日志组的数量和每个日志文件的大小SQL> SELECT GROUP#, BYTES FROM V$LOG;在备库库查看日志组的数量和每个日志文件的大小SQL> SELECT GROUP#, BYTES FROM V$STANDBY_LOG;创建日志组和redo log文件SQL> ALTER DATABASE ADD STANDBY LOGFILE group 4('/oracle/dbs/slog1.rdo') SIZE 50M; SQL> ALTER DATABASE ADD STANDBY LOGFILE group 5 ('/oracle/dbs/slog2.rdo') SIZE 50M; SQL>ALTER DATABASE ADD STANDBY LOGFILE group 6 ('/oracle/dbs/slog3.rdo') SIZE 50M; SQL> ALTER DATABASE ADD STANDBY LOGFILE group 7('/oracle/dbs/slog4.rdo') SIZE 50M;16. Start Redo ApplyALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;查看哪些归档日志被APPLY了在备库SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;在主库强制日志切换到当前的online redo log file.ALTER SYSTEM ARCHIVE LOG CURRENT;在备库查看新的被归档的redo dataSELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#; 在备库查看接收到的被应用的redoSQL> SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;查看数据库的角色select database_role,protection_mode,protection_level from v$database;主备库切换1.查看主库的状态SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;2.将主库切换至备用模式SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH -> SESSION SHUTDOWN;3.关闭、装载主数据库SQL> SHUTDOWN ABORT;SQL> STARTUP MOUNT;4.查看备库准备向主库模式切换SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;SWITCHOVER_STATUS-----------------TO_PRIMARY1 row selected5.切换备库至主库模式SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;6.打开新的主数据库SQL> ALTER DATABASE OPEN;7. 在新的备库服务器上启动 REDO apply。
oracle11g dataguard 完全手册一、前言:网络上关于dataguard的配置文章很多,但是很多打着oracle11g的文章实际都是只能在9 10 上运行,比如FAL_CLIENT在11g中已经废弃,但是现在网络上的文章都是没有标注这一点。
而且对于具体含义语焉不详对于新手只能知其然而不知其所以然。
这篇文章我就想让像我这样的人对于dataguard配置不仅仅知道怎么配置,还要知道为什么需要这样配置,这样的效果才是最好的。
这篇文章不仅仅是记录如何配置,还介绍了为什么是这样,以及注意要点,我希望这个文章可以作为进行dataguard配置的一个参考手册。
二、前提1.主库是归档模式:如果我们不清楚为什么是归档模式,那我们就应该也不会清楚dataguard是用来做什么的。
透过很多修饰的官方语言,我们需要明确DG(dataguard简称,后同)实际上的作用就是用来高可用。
而实现原理就是从主库获取数据到从库,在主库发生异常的时候,从库接管主库,完成身份的变化。
可以一个主库,最多9个从库。
同时分为逻辑standby和物理standby这里我们讨论的是物理standby.一旦创建并配置成standby 后,dg 负责传输primary数据库redo data 到standby 数据库,standby 数据库通过应用接收到的redo data 保持与primary 数据库的事务一致。
这下清楚了吧,需要保证主从库一致,需要传输archive log和redo log到从库,如果不是归档模式无法保证主从库的数据一致。
2.从库只需要安装数据库软件,数据从主库传输后完成。
3.很多人说11g有了active dataguard(ADG),逻辑standby 实际上已经没什么用处了。
4.主从库硬件最好一致。
oracle数据库版本需要一致。
(1)内存检查项:# grep MemTotal /proc/meminfo交换分区检查项:如果内存在1-2G,swap是1.5倍;2-16G,1倍;超过16G,设置为16G即可。
ORACLE 11G 搭建DATAGUARD步骤1安装环境在主机1上安装数据库软件,并建监听和实例,在主机2上安装数据库软件,并建监听,但不建实例。
2主数据库配置2.1设置数据库强制归档sqlplus / as sysdbaSQL> ALTER DATABASE FORCE LOGGING;SQL> select force_logging from v$database;FOR---YES2.2添加STANDBY日志文件SQL>alter database add standby logfile group 4 ('/oradata/dbtest/redo04.log') size 50m;SQL>alter database add standby logfile group 5 ('/oradata/dbtest/redo05.log') size 50m;SQL>alter database add standby logfile group 6 ('/oradata/dbtest/redo06.log') size 50m;SQL>alter database add standby logfile group 7 ('/oradata/dbtest/redo07.log') size 50m;SQL> select * from v$logfile order by 1;2.3修改参数文件2.3.1生成pfileSQL>create pfile from spfile;SQL>shutdown immediate;2.3.2修改pfilevi $ORACLE_HOME/dbs/initdbtest.ora在最后添加如下内容:*.db_unique_name=dbtest1*.fal_server='dbtest2'*.fal_client='dbtest1'*.standby_file_management=auto*.db_file_name_convert='/oradata/dbtest/','/oradata/dbtest/'*.log_file_name_convert='/oradata/dbtest/','/oradata/dbtest/'*.log_archive_config='dg_config=(dbtest1,dbtest2)'*.log_archive_dest_2='service=dbtest2 LGWR SYNC AFFIRM valid_for=(online_logfiles,primary_role) db_unique_name=dbtest2' *.log_archive_dest_state_2='ENABLE'2.3.3生成spfileSQL> shutdown immediate[oracle@dbserver01 ~]$ cd $ORACLE_HOME/dbs[oracle@dbserver01 dbs]$ mv spfilejkfwdb.ora spfilejkfwdb.ora.bak SQL> startup nomountSQL> create spfile from pfile;File created.SQL> show parameter uniqSQL> shutdown immediate;SQL> startupSQL> show parameter spfile2.4修改监听配置文件2.5修改TNS配置文件[oracle@dg1 admin]$ cat tnsnames.ora# tnsnames.ora Network Configuration File: /oracle/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.or a# Generated by Oracle configuration tools.DBTEST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.132.3)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = dbtest1)))DBTEST1 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.132.3)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = dbtest1)))DBTEST2 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.132.4)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = dbtest2)))EXTPROC_CONNECTION_DATA =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC2)))(CONNECT_DATA =(SID = PLSExtProc)(PRESENTATION = RO)))2.6重启监听服务lsnrctl stoplsnrctl start2.7配置最大可用模式SQL> alter database set standby database to maximize availability;Database altered.SQL> exit2.8备份数据库[oracle@dg1 admin]$ rman target /RMAN> backup database plus archivelog;RMAN> backup current controlfile for standby;RMAN> exit备份完成后会在闪回区生产备份文件3备数据库配置3.1建立相应的文件目录包括dump文件目录,闪回区,数据文件目录,可以通过show parameter dest命令查看mkdir -p /oracle/app/oracle/admin/dbtest/adumpmkdir -p /oracle/app/oracle/admin/dbtest/dpdumpmkdir -p /oracle/app/oracle/diag/rdbms/dbtest1/dbtest/tracemkdir -p /oracle/app/oracle/diag/rdbms/dbtest1/dbtest/cdump mkdir -p /oracle/app/oracle/flash_recovery_areamkdir -p /oradata/dbtest3.2从主数据库服务器上拷贝文件注意:下面命令在主数据库上执行3.2.1拷贝闪回区内容[oracle@dg1 admin]$ cd /oracle/app/oracle/flash_recovery_area scp -r ./* 192.168.132.4:/oracle/app/oracle/flash_recovery_area/ 3.2.2拷贝参数文件[oracle@dg1 flash_recovery_area]$ cd $ORACLE_HOME/dbsscp ./* 192.168.132.4:/oracle/app/oracle/product/11.2.0/db_1/dbs/3.2.3拷贝密码文件3.2.4拷贝监听文件和tns文件[oracle@dg1 dbs]$ cd ../network/admin/scp *.ora192.168.132.4:/oracle/app/oracle/product/11.2.0/db_1/network/admin /3.3修改监听配置文件修改ip地址3.4修改TNS配置文件修改ip地址3.5重启监听服务lsnrctl stoplsnrctl start3.6修改参数文件并启动数据库到nomountCd $ORACLE_HOME/dbsCp initdbtest.ora initdbtest.ora.bakvi $ORACLE_HOME/dbs/initdbtest.ora去掉上面添加的部分即:*.db_unique_name=dbtest1*.fal_server='dbtest2'*.fal_client='dbtest1'……3.7恢复数据库[oracle@dg2 admin]$ rman target sys/funo1234@dbtest1 auxiliary / RMAN> duplicate target database for standby nofilenamecheck;RMAN> exit3.8修改参数文件[oracle@dg2 admin]$ sqlplus / as sysdbaSQL> shutdown immediate;vi $ORACLE_HOME/dbs/initdbtest.ora添加如下内容*.db_unique_name=dbtest2SQL> create spfile from pfile;3.9启动数据库SQL> startup nomount;SQL> alter database mount standby database;SQL> alter database recover managed standby database using current logfile disconnect from session;3.10验证主库备库均执行如下命令:SQL> archive log list;主库备库如果最后一行数字相同,说明配置成功3.11切换到只读模式SQL> alter database recover managed standby database cancel; SQL> alter database open read only;3.12切换到同步模式(不需要停库)SQL> alter database recover managed standby database usingWORD资料可编辑current logfile disconnect from session;专业整理分享。