dataguard 日志传输服务
1、日志传输可以分为 lgwr和ARCH,默认是arch,其中lgwr传输可以分为async和sync
sync:同步服务,只有在事物参数的日志成功的传输到备库的目的地,事物才能提交。虽然同步服务没有限制主库和同步目的地的距离,但是主库同步数据到目的地的延时,增加了事物提交的时间
这种同步模式一般用在最大保护,最高可用
async:异步服务,这种模式在事物提交时不会等待此事物产生的日志成功同步到备库,这种模式一般用在最大性能
2、redo传输的安全
redo传输使用的 oracle net 服务,通过ssl保护验证或者远端的password 文件
3、参数文件
LOG_ARCHIVE_DEST_n :初始化参数,用来指定备库的传输目的地
LOG_ARCHIVE_DEST_STATE_n:用来打开关闭目的地,他有三个值
enable:默认值,控制日志可以传输到LOG_ARCHIVE_DEST_n 指定的地址
defer:控制日志不能传输到 LOG_ARCHIVE_DEST_n指定的地址
alternate:在指定的地址传输失败后,可以传输到到这个地址
1.REOPEN 指定时间后再次尝试归档
使用REOPEN=seconds(默认为300秒)属性,在指定时间重复尝试向归档目的地进行归档操作,如果该参数值设置为0,则一旦失败就不会再尝试重新连接并发送,直到下次REDO数据再被归档时会重新尝试。
例如,设置REOPEN为100秒:
LOG_ARCHIVE_DEST_2='SERVICE=DavePrimary LGWR ASYNC REOPEN=100'
2.ALTERNATE 指定替补的归档目的地
ALTERNATE属性定义一个替补的归档目的地,所谓替补就是一旦主归档目的地因各种原因无法使用,则临时向ALTERNATE属性中指定的路径写。
例如:
LOG_ARCHIVE_DEST_1='LOCATION=/disk1 ALTERNATE=LOG_ARCHIVE_DEST_2'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_2='LOCATION=/disk2'
LOG_ARCHIVE_DEST_STATE_2=ALTERNATE
上述参数设置归档路径为/disk1,当/disk1路径下无法成功归档时,自动尝试向/disk2路径下归档文件。
从功能上来看,REOPEN与ALTERNATE是有一定重复的,不过需要注意一点,REOPEN属性比ALTERNATE属性的优先级要高,如果你指定REOPEN属性的值>0,则LGWR(或ARCn)进程会首先尝试向主归档目的地写入,直到达到最大重试次数,如果仍然写入失败,才会向ALTERNATE属性指定的路径写。
3.MAX_FAILURE 控制失败尝试次数
用REOPEN指定失败后重新尝试的时间周期,MAX_FAILURE则控制失败尝试的次数。
例如,设置LOG_ARCHIVE_DEST_1在本地归档文件时,如果遇到错误,则每隔100秒尝试一次,共尝试不超过3次,设置如下:
LOG_ARCHIVE_DEST_1='LOCATION=E:/ora10g/oradata/jsspdg/ REOPEN=100 MAX_FAILURE=3'
SYNC: 同步传输日志
ASYNC:异步传输日志
NET_TIMEOUT:指定lgwr进程在规定时间内把日志传输到备库
NOAFFIRM: 主库产生的日志不用等到写入备库后,才算成功
AFFIRM: 主库产生的日志只有写入到备库后,才算成功
DB_UNIQUE_NAME: 数据库的唯一名称,用来指定传输日志的地址
VALID_FOR: 用来指定redo传输服务的目的地
COMPRESSION :日志以压缩的形式传输的目的地
REOPEN : 用来指定由于之前的错误重新连接传输日志到目的地,每次连接的最小时间
LOG_ARCHIVE_DEST_n:用来指定日志传输的目的地
*.standby_file_management='AUTO':主库增加或减少数据文件的动作是否自动应用到从库
4、standby redo log
1) 同步和异步的传输模式在传输目的地必须有standbylog 才行,standby 用于接收从其他数据传输的日志,其结构和redo一样,管理也和reodo一样管理。
日志是由其他数据库传输过来,通过后台进程RFS进程写入到standby reod log
2)standby redo log大于或者等于主库的redo log,最好备库的standby redo 等于备库的redo
3)备库的standby redo要比主库多一个或者多个日志
主:
SQL> SELECT GROUP#, BYTES FROM V$LOG;
备:
SQL> SELECT GROUP#, BYTES FROM V$STANDBY_LOG;
4) 创建standby redo log
如果是single database ,备库创建redo比主库的redo多一个或者多个standby redo,并且和主库的日志大小相同
SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/oracle/dbs/slog1.rdo') SIZE 500M;
如果是集群
SQL> ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 SIZE 500M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 SIZE 500M;
5)配置standby redo log 归档
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
配置归档到快速恢复区域:
LOG_ARCHIVE_DEST_2 = 'LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(STANDBY_LOGFILE,STANDBY_ROLE)'
LOG_ARCHIVE_DEST_STATE_2=ENABLE
或者配置归档到本地区域:
LOG_ARCHIVE_DEST_2 = 'LOCATION = /disk2/archive VALID_FOR=(STANDBY_LOGFILE,STANDBY_ROLE)' LOG_ARCHIVE_DEST_STATE_2=ENABLE
5、Configuring a Cascaded Destination
1)选择配置级联的备库
2) 在级联的备库上配置到主库和备库库的网络服务tnsname.ora 然后配置 FAL_SERVER
3)配置 LOG_ARCHIVE_DEST_n ,SERVICE为到达备库的网络名
Primary Database
DB_UNIQUE_NAME=boston
FAL_SERVER=boston2
LOG_ARCHIVE_CONFIG='DG_CONFIG=(boston,boston2,denver)'
LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=boston'
LOG_ARCHIVE_DEST_2='SERVICE=boston2 SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=boston2'
Cascading Physical Standby Database
DB_UNIQUE_NAME=boston2
FAL_SERVER=boston
LOG_ARCHIVE_CONFIG= 'DG_CONFIG=(boston,boston2,denver)'
LOG_ARCHIVE_DEST_1='LOCATION= USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=boston2'
LOG_ARCHIVE_DEST_2= 'SERVICE=denver VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE) DB_UNIQUE_NAME=denver'
Cascaded Physical Standby Database
DB_UNIQUE_NAME=denver
FAL_SERVER=boston2
LOG_ARCHIVE_CONFIG='DG_CONFIG=(boston,boston2,denver)'
LOG_ARCHIVE_DEST_1='LOCATION= USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=denver'
6、监控日志的传输:
1、查看最近归档的日志文件
SQL> SELECT MAX(SEQUENCE#), THREAD# FROM V$ARCHIVED_LOG GROUP BY THREAD#;
2、主库查看最近归档的日志,已经归档目的地
SELECT DESTINATION, STATUS, ARCHIVED_THREAD#, ARCHIVED_SEQ# FROM V$ARCHIVE_DEST_STATUS WHERE STATUS <> 'DEFERRED' AND STATUS <> 'INACTIVE';
3、查看主库没有归档日志到备库的日志有哪些
SELECT LOCAL.THREAD#, LOCAL.SEQUENCE# FROM (SELECT THREAD#, SEQUENCE# FROM V$ARCHIVED_LOG WHERE DEST_ID=1) LOCAL WHERE
LOCAL.SEQUENCE# NOT IN (SELECT SEQUENCE# FROM V$ARCHIVED_LOG WHERE DEST_ID=2 AND THREAD# = LOCAL.THREAD#);
4、主库监控同步日志的响应时间
SQL> SELECT FREQUENCY, DURATION FROM V$REDO_DEST_RESP_HISTOGRAM WHERE DEST_ID=2 AND FREQUENCY>1;
frequency 指出监控响应时间几次,duration 响应时间
查找最大响应时间是多长时间
SQL> SELECT max(DURATION) FROM V$REDO_DEST_RESP_HISTOGRAM WHERE DEST_ID=2 AND FREQUENCY>1;
主库查找最小响应时间
SQL> SELECT min( DURATION) FROM V$REDO_DEST_RESP_HISTOGRAM WHERE DEST_ID=2 AND FREQUENCY>1;
The highest observed response time for a destination cannot exceed the highest specified NET_TIMEOUT value specified for that destination, because synchronous redo transport mode sessions are terminated
if a redo transport destination does not respond to a redo transport message within NET_TIMEOUT seconds.
在最大响应时间不能超过net_timeout指定的时间,否则日志同步就会中断
7、gap的解决:
备库查看是否存在gap
SQL> SELECT * FROM V$ARCHIVE_GAP;
THREAD# LOW_SEQUENCE# HIGH_SEQUENCE#
----------- ------------- --------------
1 7 10
如果是物理备库:
在主库上执行,确定gap,备库缺失的日志名称
SQL> SELECT NAME FROM V$ARCHIVED_LOG WHERE THREAD#=1 AND DEST_ID=1 AND SEQUENCE# BETWEEN 7 AND 10;
NAME
--------------------------------------------------------------------------------
/primary/thread1_dest/arcr_1_7.arc
/primary/thread1_dest/arcr_1_8.arc
/primary/thread1_dest/arcr_1_9.arc
从主库复制日志到备库,然后注册
SQL> ALTER DATABASE REGISTER LOGFILE '/physical_standby1/thread1_dest/arcr_1_7.arc';
SQL> ALTER DATABASE REGISTER LOGFILE '/physical_standby1/thread1_dest/arcr_1_8.arc';
SQL> ALTER DATABASE REGISTER LOGFILE '/physical_standby1/thread1_dest/arcr_1_9.arc';
如果是逻辑备库查询DBA_LOGSTDBY_LOG:
在主库上执行
SQL> COLUMN FILE_NAME FORMAT a55
SQL> SELECT THREAD#, SEQUENCE#, FILE_NAME FROM DBA_LOGSTDBY_LOG L WHERE NEXT_CHANGE# NOT IN
(SELECT FIRST_CHANGE# FROM DBA_LOGSTDBY_LOG WHERE L.THREAD# = THREAD#)
ORDER BY THREAD#, SEQUENCE#;
THREAD# SEQUENCE# FILE_NAME
---------- ---------- -----------------------------------------------
1 6 /disk1/oracle/dbs/log-1292880008_6.arc
1 10 /disk1/oracle/dbs/log-1292880008_10.arc
从主库复制日志到备库,然后注册
SQL> ALTER DATABASE REGISTER LOGICAL LOGFILE '/disk1/oracle/dbs/log-1292880008_7.arc';
SQL> ALTER DATABASE REGISTER LOGICAL LOGFILE '/disk1/oracle/dbs/log-1292880008_8.arc';
SQL> ALTER DATABASE REGISTER LOGICAL LOGFILE '/disk1/oracle/dbs/log-1292880008_9.arc';
8、日志传输造成的等待事件
在 V$SYSTEM_EVENT 发现等待事件
Wait Event Description
LNS wait on ATTACH :Total time spent waiting for redo transport sessions to be established to all ASYNC and SYNC redo transport destinations
LNS wait on SENDREQ:Total time spent waiting for redo data to be written to all ASYNC and SYNC redo transport destinations
LNS wait on DETACH :Total time spent waiting for redo transport connections to be terminated to all ASYNC and SYNC redo transport destinations
查看日志的状态:
SQL> select name,dest_id, SEQUENCE#,RESETLOGS_ID,REGISTRAR,APPLIED,DELETED,STATUS,fal,STANDBY_DEST,ARCHIVED from v$archived_log;
NAME DEST_ID SEQUENCE# RESETLOGS_ID REGISTR APPLIED DEL S FAL STA ARC
---------------------------------------- ---------- ---------- ------------ ------- --------- --- - --- --- ---
1 403
815224926 SRMN YES YES D NO NO YES
1 404
815224926 SRMN YES YES D NO NO YES
/archive/1_405_815224926.arc 2
405 815224926 RFS YES NO A YES NO YES
/archive/1_406_815224926.arc 2
406 815224926 RFS YES NO A NO
NO YES
/archive/1_407_815224926.arc 2
407 815224926 RFS YES NO A NO
NO YES
/archive/1_408_815224926.arc 1
408 815224926 RFS YES NO A NO
NO YES
/archive/1_409_815224926.arc 1
409 815224926 RFS YES NO A NO
NO YES
/archive/1_410_815224926.arc 1
410 815224926 RFS YES NO A NO
NO YES
/archive/1_411_815224926.arc 1
411 815224926 RFS YES NO A NO
NO YES
/archive/1_412_815224926.arc 1
412 815224926 RFS YES NO A NO
NO YES
/archive/1_413_815224926.arc 1
413 815224926 RFS YES NO A NO
NO YES
/archive/1_414_815224926.arc 1
414 815224926 RFS YES NO A NO
NO YES
/archive/1_415_815224926.arc 1
415 815224926 RFS YES NO A NO
NO YES
/archive/1_416_815224926.arc 0
416 815224926 RFS YES NO A YES NO YES
/archive/1_417_815224926.arc 0
417 815224926 RFS YES NO A YES NO YES
/archive/1_418_815224926.arc 1
418 815224926 RFS YES NO A NO
NO YES
/archive/1_419_815224926.arc 1
419 815224926 RFS YES NO A NO
NO YES
dataguard 日志传输服务的更多相关文章
- ORACLE DATAGUARD 日志传输状态监控
ORACLE DATAGUARD的主备库同步,主要是依靠日志传输到备库,备库应用日志或归档来实现.当主.备库间日志传输出现GAP,备库将不再与主库同步.因此需对日志传输状态进行监控,确保主.备库间日志 ...
- Oracle DataGuard日志传输
1. 日志传输方式 有两种日志传输方式(ARC和LGWR),第一种是采用ARC进程传输日志,其示意图如下: 注:上图来自<大话Oracle RAC> 其大致过程如下: 1)主库:日志先写入 ...
- Dataguard中日志传输服务
之前,原本已经尝试过配置oracle实例的逻辑和物理standby结构,并且做个一些role交换操作,可是由于昨天学习rman的部分命令时没留意,误删掉了primary DB上的所有归档日志,因为原来 ...
- 关于11G DataGuard 日志传输的案例
案例探讨 在归档和非归档模式下,配置参数log_archive_dest_2后,DG的备库是否传输日志. 案例环境描述 本次环境如下,一套RAC+单机DG,然后从DG还原出来一个单独的测试库A,测试库 ...
- linux下syslog-ng日志集中管理服务部署记录
syslog是Linux系统默认的日志守护进程,默认的syslog配置文件是/etc/syslog.conf文件.syslog守护进程是可配置的,它允许人们为每一种类型的系统信息精确地指定一个存放地点 ...
- Linux下rsyslog日志收集服务环境部署记录
rsyslog 可以理解为多线程增强版的syslog. 在syslog的基础上扩展了很多其他功能,如数据库支持(MySQL.PostgreSQL.Oracle等).日志内容筛选.定义日志格式模板等.目 ...
- Linux下rsyslog日志收集服务环境部署记录【转】
rsyslog 可以理解为多线程增强版的syslog. 在syslog的基础上扩展了很多其他功能,如数据库支持(MySQL.PostgreSQL.Oracle等).日志内容筛选.定义日志格式模板等.目 ...
- TKE 用户故事 - 作业帮 PB 级低成本日志检索服务
作者 吕亚霖,2019年加入作业帮,作业帮架构研发负责人,在作业帮期间主导了云原生架构演进.推动实施容器化改造.服务治理.GO微服务框架.DevOps的落地实践. 莫仁鹏,2020年加入作业帮,作业帮 ...
- SQL Server 事务日志传输
概述 可以使用日志传送将事务日志不间断地从一个数据库(主数据库)发送到另一个数据库(辅助数据库).不间断地备份主数据库中的事务日志,然后将它们复制并还原到辅助数据库,这将使辅助数据库与主数据库基本保持 ...
随机推荐
- asp.net项目中通过Web.config配置文件及文件夹的访问权限---forms
十分全面的forms验证配置: http://blog.csdn.net/qingyun1029/article/details/6184723
- General Palindromic Number (进制)
A number that will be the same when it is written forwards or backwards is known as a Palindromic Nu ...
- PAT乙级真题1005. 继续(3n+1)猜想 (25)(解题)
原题: 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数.例如对n=3进行验证 ...
- Mac OS X 软件推荐
1. 前言 每个操作系统都有自己的一套软件系统,但是不同的用户却会有不同的需求,系统虽会为用户提供一些基础软件,不过为了能无碍的进入自己的学习和工作状态,总有一些软件是必须安装的,同时这些软件也可以 ...
- 一个有意思的js实例,你会吗??[原创]
首先,看看下面一个js例子,你觉得会输出什么呢? function fn(a){ a(); function a(){ console.log(2); } var a = function(){ co ...
- c++ 小片段
void test_string() { string sen = "Connection will be closed if there is no " "read/w ...
- 【数位DP】Hdu 2089:不要62
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- PAT-乙级-1041. 考试座位号(15)
1041. 考试座位号(15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 每个PAT考生在参加考试时都会被分 ...
- Delphi逆向
Delphi反汇编内部字符串处理函数/过程不完全列表 名称 参数 返回值 作用 等价形式 / 备注 _PStrCat EAX :目标字符串 EDX :源字符串 EAX 连接两个 Pascal 字符串 ...
- 对jQuery.extend()方法的分析
jQuery.extend方法是我们常用的方法,也是jQuery源码中的基础方法.它的主要作用是:将一个或多个“源对象”合并到一个“目标对象”中,并返回目标对象.它主要有三种表现形式: a.jQuer ...