其他分享
首页 > 其他分享> > DG搭建

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