1. DataGuard 配置主机:192.168.0.7(primary)备机:192.168.0.8(standby)配置条件:分别在primary 、standby 上安装数据库,并自动创建实例;安装路径、数据库实例名( citizen )和密码都设置成一样特别注意:文件夹权限必须与administartor 一致1.1. Primary 主机操作1、设置主数据库为force logging 模式SQL>sqlplus "/as sysdba"SQL>alter database force logging;2、设置主数据库为归档模式,并以mount 启动数据库SQL>archive log listSQL>shutdown immediateSQL>startup mountSQL>alter database archivelog;SQL>archive log list3、添加" 备用联机日志文件"SQL>select * from v$logfile;再添加:alter database add standby logfile group 4 ('D:\app\oradata\orcl\redo04.log') size 50m; alter database add standby logfile group 5 ('D:\app\oradata\orcl\redo05.log') size 50m; alter database add standby logfile group 6 ('D:\app\oradata\orcl\redo06.log') size 50m; alter database add standby logfile group 7 ('D:\app\oradata\orcl\redo07.log') size 50m; 路径与原来的日志路径一样4、创建主库的初始化参数给备库用SQL>Create pfile from spfile;产生的文件名为initcitizen.ora 存放目录默认放在$ORACLE_HOME/databa下e 5、在主库创建监听和配置tnsnams.oralistener.ora 配置如下:SID_LIST_LISTENE中添加:红色添力卩(SID_DESC =(GLOBAL_DBNAME = citizen)(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)(SID_NAME = citizen))LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))(ADDRESS = (PROTOCOL = TCP)(HOST = WIN-RKCE8P1N4VV)(PORT = 1521)) ))此处HOST 最好使用主机名tnsnames.ora 配置如下:添加:primary =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 19.128.249.51)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = citizen)))standby =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 19.128.249.52)(PORT = 1521)) (CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = citize n)))监听配置完后,重启监听后,需要时间久一点primary 的服务才能启动起来特别注意,需要使用下面pfile 启动,primary的服务才正式启动6、在in itcitize n.ora 中添加以下容:*log_archive_format='%T%S%r.ARC'*DB_UNIQUE_NAME='primary'*.log_archive_c on fig='DG_CONFIG=(primary,sta ndby)'*log_archive_dest_1='locati on=D:\app\flash_recovery_area\orcl\ARCHIVELOG VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=primary' *log_archive_dest_2='SERVICE=sta ndby archASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=sta ndby'*.STANDBY_FILE_MANAGEMENT=AUTO*LOG_ARCHIVE_DEST_STATE_仁ENABLE*.LOG_ARCHIVE_DEST_STATE_2=ENABLE*.FAL_SERVER='sta ndby'*.FAL_CLIENT='primary'关闭数据库shutdown immediate ,再用initcitizen.ora 重启SQL>startup pfile='D:\oracle\product\10.2.0\db_1\database\initcitizen.ora';7、用Rma备份,不用停机$ rman target /RMAN>backup full format 'D:/db/FULL_%d_%T_%s.bak' database include current controlfile for standby; RMAN>sql 'alter system archive log current';RMAN>Backup ArchiveLog all format='D:/db/arch_%d_%T_%s.bak';备份完后将备份文件拷到standby上同样的目录,强调:同样的目录(D盘),在standby 进行rman 恢复即可8、启动主数据库SQL>startup1.2. Standby 备机操作1、以mount启动备库,添加"备用联机日志文件"SQL>sqlplus "/as sysdba"SQL>shutdown immediateSQL>startup mount 先查看日志文件位置:SQL>select * from v$logfile; 再添加:alter database add standby logfile group 4 (' D:\app\oradata\orcl\citizen\redo04.log') size 50m;alter database add standby logfile group 5 ('D:\ORACLE\PRODUCT\10.2.0\ORADATA\citizen\redo05.log') size 50m;alter database add standby logfile group 6 ('D:\ORACLE\PRODUCT\10.2.0\ORADATA\citizen\redo06.log') size 50m;alter database add standby logfile group 7 ('D:\ORACLE\PRODUCT\10.2.0\ORADATA\citizen\redo07.log') size 50m;2、在备库创建监听和配置tnsnams.ora (同主库 )3、测试主备之间网络连通测试非常重要Primary:C:>lsnrctl startC:>tnsping standbyStandby:C:>lsnrctl startC:>tnsping primary 再主库中测试Tnsping primary / tnsping 19.130.218.32/primaryTnsping standby / tnsping 19.130.218.30/standby备库Tnsping standby / tnsping 19.130.218.30/standbyTnsping primary / tnsping 19.130.218.32/primary4、复制主库的参数文件到备库中,编辑$ORACLE_HOME/databa目e录下的initcitizen.ora 添加以下容*.log_archive_format='%T%S%r.ARC' *.DB_UNIQUE_NAME='standby'*.log_archive_config='DG_CONFIG=(primary,standby)'*.log_archive_dest_1='location=D:\oracle\product\10.2.0\oradata\archVALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=standby'*.log_archive_dest_2='SERVICE=primary arch ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=primary'*.STANDBY_FILE_MANAGEMENT=AUTO*.LOG_ARCHIVE_DEST_STATE_1=ENABLE*.LOG_ARCHIVE_DEST_STATE_2=ENABLE*.FAL_SERVER='primary'*.FAL_CLIENT='standby'以及密码文件"D:\app\product\11.2.0\dbhome_1\database\PWDorcl.ora" 备份到相同路径5、启动备用数据库开始把主库复制到备库中SQL>sqlplus "/as sysdba"SQL>startup nomount pfile='D:\oracle\product\10.2.0\db_1\database\initcitizen.ora';重启主、备库监听,用Rma还原数据库$rman target sys/adminprimary auxiliary /RMAN>duplicate target database for standby dorecoverse nofilenamecheck;duplicate target database for standby nofilenamecheck;SQL>alter database mount standby database; --该语句如果报错可忽略SQL>alter database recover managed standby database disconnect from session;这里插入一下:如果服务器或者数据库需要重启,在重启之后主库:SQL>sqlplus "/as sysdba"SQL> startup pfile='D:\app\product\11.2.0\dbhome_1\database\INITorcl.ORA';Startup后面没有添加任何参数就直接打开到open状态备库:SQL>sqlplus "/as sysdba"SQL>startup nomount pfile='D:\app\product\11.2.0\dbhome_1\database\INITorcl.ORA';SQL>alter database mount standby database;SQL>alter database recover managed standby database cancel;-- 该语句如果报错,可忽略SQL>alter database recover managed standby database disconnect from session;备库手动应用归档日志ALTER DATABASERECOVERMANAGEDSTANDBYDATABASEUSING CURRENT LOGFILE DISCONNECTFROM SESSION;备库只能开启到mo nt (挂载)的状态,如果启动到ope n状态,备库无法应用归档日志。