DG搭建
作者:互联网
1.主库修改确认参数
select log_mode from v$database; ALTER DATABASE FORCE LOGGING; select * from v$standby_log; show parameter name NAME TYPE VALUE ------------------------------------ ---------------------- ------------------------------ log_archive_config string dg_config=(fmisdb,fmis2db,dgfmisdb) log_archive_dest_1 string location=/u01/arch log_archive_dest_2 string service=fmisdb LGWR ASYNC valid_for=(online_logfiles,primary_role) db_unique_name=fmisdb log_archive_dest_state_1 string enable fal_client string fmis2db fal_server string fmisdb1, fmisdb2 db_file_name_convert string +DATA/fmisdb/datafile/, /u01/app/oracle/oradata/fmis2db/, +DATA/fmisdb/tempfile/, /u01/app/oracle/oradata/fmis2db/ log_file_name_convert string +DATA/fmisdb/onlinelog/, /u01/app/oracle/oradata/fmis2db/
2.备库配置静态监听,主备修改tnsnames.ora
listener.ora SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME=FMISDB) (ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1) (SID_NAME=FMISDB1) )) TNSNAMES.ORA for the Primary and Standby should have BOTH entries fmis2db = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST =XXXX)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = FMIS2DB) ) ) fmisdb1 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST =XXXXX)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = FMISDB) (INSTANCE_NAME = FMISDB1) ) )
3. 备库创建密码文件,参数文件
1)密码文件
scp oracle@ip:/u01/app/oracle/product/11.2.0/db_1/dbs/orapwfmis2db /u01/app/oracle/product/11.2.0/db_1/dbs/ mv orapwfmis2db orapwFMISDB1 scp oracle@ip:/u01/app/oracle/product/11.2.0/db_1/dbs/orapwfmis2db /u01/app/oracle/product/11.2.0/db_1/dbs/ mv orapwfmis2db orapwFMISDB2
或者:自己创建密码文件:进入$ORACLE_HOME/dbs + orapwd file=文件名 +回车;
2) 参数文件
*.archive_lag_target=900 *.audit_file_dest='/u01/app/oracle/admin/FMISDB/adump' *.audit_trail='db' *.cluster_database=true *.compatible='11.2.0.4.0' *.control_files='+DATA/fmisdb/controlfile/current.260.885312761'#Restore Controlfile *.db_file_name_convert='/u01/app/oracle/oradata/fmis2db','+DATA' *.log_file_name_convert='/u01/app/oracle/oradata/fmis2db','+DATA' *.db_block_size=8192 *.db_create_file_dest='+DATA' *.db_domain='' *.db_name='FMISDB' *.db_unique_name='fmisdb' *.diagnostic_dest='/u01/app/oracle' *.dispatchers='(PROTOCOL=TCP) (SERVICE=FMISDBXDB)' *.fal_client='FMISDB' *.fal_server='fmis2db','dgfmisdb' FMISDB2.instance_number=2 FMISDB1.instance_number=1 *.log_archive_config='dg_config=(fmisdb,fmis2db,dgfmisdb)' *.log_archive_dest_1='LOCATION=+DATA' *.log_archive_format='%t_%s_%r.dbf' *.open_cursors=1000 *.open_links=20 *.open_links_per_instance=20 *.pga_aggregate_target=2147483648 *.processes=1500 *.remote_listener='fmisdb-scan:1521' *.remote_login_passwordfile='exclusive' *.sessions=555 *.sga_target=4294967296 *.standby_file_management='AUTO' FMISDB2.thread=2 FMISDB1.thread=1 FMISDB1.undo_tablespace='UNDOTBS1' FMISDB2.undo_tablespace='UNDOTBS2'
(1)控制文件无须创建,dulplicate会自动创建。只需要在参数文件中指定路径即可。
(2)db_name 主备库名字一样,dbid一样
(3)db_unique_name 数据库别名:默认使用db_name: 建议主库无需修改db_unique_name,备库需要修改。
(4)fal_client tns字符串的名字
(5)fal_server tns字符串的名字;向主库取归档
(6)log_archive_config dg成员,配置的是db_unique_name
(7)log_archive_dest_1 本地归档路径
(8)log_archive_dest_state_1 上面参数的状态
(9)log_file_name_convert 日志文件路径转换,要写路径并且‘/’要匹配(要加都加,要不加都不加);前主后备,多路径要隔开;
(10)db_file_name_convert 要点同上
(11)standby_file_management 自动生成standby redo log文件
(12)job_queue_processes:备库的job_queue_processes参数要设置为0,主库不为0,因为存在一些job任务(业务相关,数据库的统计信息收集等)。
2.LOG_ARCHIVE_DEST_n参数
LOG_ARCHIVE_DEST_n = {LOCATION=path_name | SERVICE=service_name, attribute, attribute, ...}
SERIVCE: 用于指定备用数据库的TNSNAMES描述符,Oralce会将重做日志传送到这个TNSNAMES指定的备库。
SYNC: 用于指定使用同步传输方式到备库。即LGWR进程需要等待来自LNS的确认消息后,然后告知客户端事务已提交。最高可用性及最大保护模式下,至少有一个备用目标应指定为SYNC。
ASYNC:与SYNC相反,指定使用异步传输模式,此为默认的传输方法。
NET_TIMEOUT: 指定LGWR进程等待LNS进程的最大时间数,单位为秒(缺省30)。如果超出该值,则主库放弃备库,继续执行主库上的事务。
REOPEN:主库遇到备库故障后尝试重新连接备库所需等待的时间,单位为秒(缺省300)。
DB_UNIQUE_NAME:主库与备库连接时会发送自己的唯一名称,同时要求备库返回其唯一名称,并结合LOG_ARCHIVE_CONFIG验证其存在性。
VALID_FOR:定义何时使用(角色相关)LOG_ARCHIVE_DEST_n参数以及应该在哪类重做日志文件上运行。
可用日志文件类型:online_logfile,standby_logfile, all_logfiles
可用的角色类型:primary_role, standby_role, all_roles
3) 起到nomount状态(有参数文件和密码文件)
startup nomount pfile='/u01/app/oracle/product/11.2.0/db_1/dbs/pfilefmisdb.ora';
4)连接测试
sqlplus sys/passwd@ip:1521/fmis2db as sysdba sqlplus sys/passwd@ip:1521/fmisdb as SYSDBA
5)在备库上duplicate(在nomount状态进行,结束后,自动到mount状态)
nohup sh dulplicate.sh & vi dulplicate.sh #!/bin/bash rman target sys/passwd@ip:1521/fmis2db auxiliary sys/passwd@ip:1521/fmisdb log=/tmp/dup.log <<EOF run { allocate channel p1 type disk; allocate channel p2 type disk; allocate channel p3 type disk; allocate channel p4 type disk; allocate channel p5 type disk; allocate channel p6 type disk; allocate auxiliary channel s1 type disk; allocate auxiliary channel s2 type disk; allocate auxiliary channel s3 type disk; allocate auxiliary channel s4 type disk; allocate auxiliary channel s5 type disk; allocate auxiliary channel s6 type disk; duplicate target database for standby from active database nofilenamecheck; } EOF date >>/tmp/dup.log
速度:
50 1m
3000 60m
7.开启实时应用归档日志
--recover managed standby database cancel; alter database open READ ONLY;
实时同步 alter database recover managed standby database using current logfile disconnect from session;
/* 延时测试(备份库执行)
alter database recover managed standby database delay 120 disconnect from session;
*/
实时同步默认会根据cpu个数开并行度,也可以手工执行并行度。
alter database recover managed standby database using current logfile disconnect from session parallel n ;
参考mos:Step by Step Guide on Creating Physical Standby Using RMAN DUPLICATE...FROM ACTIVE DATABASE (Doc ID 1075908.1)
注意事项:
1.添加日志组
添加规则:每个日志组线程比主库多一组,日志文件大小相同 15:13:32 SYS@oa2db>select * from v$standby_log; no rows selected ----主库6组在线日志,每组两个;standby redo log 8组 15:10:17 SYS@oarac1>select * from v$logfile; 15:20:29 SYS@oarac1>select GROUP#,THREAD#, BYTES/1024/1024,MEMBERS from v$log; GROUP# THREAD# BYTES/1024/1024 MEMBERS ---------- ---------- --------------- ---------- 1 1 300 2 2 1 300 2 3 1 300 2 4 2 300 2 5 2 300 2 6 2 300 2 ----备库6组在线日志,每组两个; 每个日志组线程比主库多一组,日志文件大小相同 alter database add standby logfile thread 1 group 11('/u01/app/oracle/oradata/oa2db/std_redo11.log') size 300m; alter database add standby logfile thread 1 group 12('/u01/app/oracle/oradata/oa2db/std_redo12.log') size 300m; alter database add standby logfile thread 1 group 13('/u01/app/oracle/oradata/oa2db/std_redo13.log') size 300m; alter database add standby logfile thread 1 group 14('/u01/app/oracle/oradata/oa2db/std_redo14.log') size 300m; alter database add standby logfile thread 2 group 21('/u01/app/oracle/oradata/oa2db/std_redo21.log') size 300m; alter database add standby logfile thread 2 group 22('/u01/app/oracle/oradata/oa2db/std_redo22.log') size 300m; alter database add standby logfile thread 2 group 23('/u01/app/oracle/oradata/oa2db/std_redo23.log') size 300m; alter database add standby logfile thread 2 group 24('/u01/app/oracle/oradata/oa2db/std_redo24.log') size 300m;
2. Oracle Dataguard 的三种保护模式
最大性能(maximize performance)模式:最大性能(maximize performance)是data guard默认的保护模式。primay上的事务commit前不需要从standby上收到反馈信息,该模式在primary故障时可能丢失数据,但standby对primary的性能影响最小。
最大可用(maximize availability)模式:在正常情况下,最大可用模式和最大保护模式一样;在standby不可用时,最大可用模式会自动降低成最大性能模式,所以standby故障不会导致primay不可用。只要至少有一个standby可用的情况下,即使primary down机,也能保证不丢失数据。
最大保护(maximize protection)模式:最大保护(maximize protection)是最高级别的保护模式。primay上的事务在commit前必须确认redo已经传递到至少一个standby上,如果所有standby不可用,则primary会挂起。该模式能保证零数据丢失。
Oracle Dataguard两种日志传输方式
2.1 Arch:传统的日志传送方式。现在只有在最大性能模式时才能采用。归档日志通过primary上的arch进程传送给standby的RFS进程。
2.2 LGWR:oracle9i开始可以使用LGWR即时将日志传送到standby,而不再需要等到归档操作时才传送,已减少可能的数据丢失。在三种保护模式下都可以使用该方式传送日志。使用LGWR方式传送,在standby库上必须先建立standby redo logfile。其中LGWR还分为LGWR ASYNC(异步)和LGWR SYNC(同步)两种。
标签:log,standby,DG,app,db,oracle,搭建,u01 来源: https://www.cnblogs.com/annez/p/15599427.html