设为首页 收藏本站
查看: 973|回复: 0

[经验分享] oracle 10g 物理Dataguard 日常操作管理(一)

[复制链接]

尚未签到

发表于 2018-9-12 07:33:51 | 显示全部楼层 |阅读模式
  
oracle 10g 物理Dataguard 日常操作管理(一)
  

  
物理Dataguard日常操作管理(一)
  

  

  
3.1 Dataguard 常用参数
  

  
日志的传输以及应用可以算作是Dataguard的核心所在.在我们搭建DG的过程中,如何配置优化日志传输服务,关系到整个DG体系的性能以及可用性.而且,不同的保护模式也需要不用的参数组合.10g下,影响配置日志传输的参数主要有以下几个:
  
1. ARCH/LGWR
  
设置日志的传送模式,默认使用arch传送.传送发生在日志切换边沿,最大可用和最大保护模式下,需要使用lgwr来传送日志.使用lgwr传送日志,需要备库建立standby logfile,并且支持日志的实时应用.
  
2. SYNC /ASYNC
  
该参数表示网络I/O的操作方式, SYNC表示网络I/O将与重做日志的写入同步进行,等待网络i/o完成收到响应后继续下一个写操作.而ASYNC表示日志的传送是异步的,oracle利于LNS进程,接收lgwr发送过来的重做日志信息放入缓冲区,并异步传送到备机,也可以手动指定缓冲区的大小
  
最大保护和最大可用模式下,需要设置为SYNC AFFIM模式.
  
3. AFFIMAFFIRM
  
该参数是LGWR传送模式下的一个属性,表示重做日志的磁盘I/O模式, AFFIM表示同步并且发送成功写操作状态到主数据库, NOAFFIRM表示主库无需等待备库的日志写成功.
  
4. MANDATORY /OPTIONAL
  
该参数表示归档的模式,默认值为OPTIONAL. MANDATORY表示强制归档,如果归档不成功会引起主库的归档等待.
  
5. REOPENREOPEN
  
该参数表示归档文件收到错误信息后,是否重试以及重试的最小间隔时间.
  
6. MAX_FAILURE/ NOMAX_FAILUR
  
该参数表示由于故障而被关闭的目标文件的最大重试次数.超过设定次数,将不再重试.
  
NOMAX_FAILUR表示不断重试
  
7. NET_TIMEOUT
  
该参数表示在网络出现异常或者某些情况下,主数据库的LNS进程放弃网络连接之前的最大等待时间.
  
8. DELAYDELAY
  
该参数表示日志的应用模式,delay表示延时指定时间应用传送过来的日志,nodelay表示不延时.
  
该参数作用也可以通过发布alter database recover managed standby database delay 来实现.
  
9. VALID_FOR
  
VALID_FOR的引入,为了更好的实现主备平滑切换,用于说明目标文件何时可用以及归档的重做日志类型.
  
VALID_FOR属性由2部分组成:archive_source(online_logfile,standby_logfile,all_logfiles)和database_role(primary_role,standby_role,all_role).
  
online_logfile: 表示归档联机重做日志
  
standby_logfile:表示归档备用数据库的重做日志/接受的重做日志
  
all_logfiles: online_logfile && standby_logfile
  
primary_role: 仅当数据库角色为主库时候归档生效
  
standby_role: 仅当数据库角色为备库时候归档生效
  
all_role: 任意角色归档均生效
  

  
3.2 选择数据保护模式
  
表3.2  不同保护模式下LOG_ARCHIVE_DEST_n参数属性设置
  
                         最大保护       最高可用     最高性能
  
REDO写进程                   LGWR          LGWR        LGWR或ARCH
  
网络传输模式                 SYNC          SYNC        LGWR进程时SYNC或ASYNC,ARCH进程时SYNC
  
磁盘写操作                   AFFIRM        AFFIRM      AFFIRM或NOAFFIRM
  
是否需要 Standby Redolog     YES           YES         可没有,但推荐有
  
                                                                                                                                                           下面我们进入实践部分将一个Data Guard配置从最高性能模式改为最高可用性模式,以下操作如非特别注明,均是在Primary数据库端执行。
  

  
3.2.1 更改DG最大可用模式
  

  
主库上执行以下命令查看主库保护模式
  

  
SQL> select protection_mode,protection_level from v$database;
  

  
PROTECTION_MODE                          PROTECTION_LEVEL
  
-----------------------------            -------------------------------
  
MAXIMUM PERFORMANCE                      MAXIMUM PERFORM
  
A
  

  
当前主库的模式为最大性能模式,也是建立DG默认模式,停止备库的日志应用,之前建立DG的时候主备库都增加了standby_redolog,在此步骤直接做保护模式转换
  

  
主库上执行以下语句
  
SQL>alter system set log_archive_dest_2='SERVICE=syw01
  
LGWR SYNC
  
AFFIRM
  
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=SYW01'
  

  
重启主库至mount状态并在主库上执行下列语句
  

  
SQL> alter database set standby database to maximize availability;
  
性能模式,
  
下面我们就测试一下。首先断开物理Standby数据库网络,这时primary与standby无法正常通信和传送日志
  

  

  
SQL> alter database open
  

  
考虑主备切换同时修改standby,在备库上执行
  

  
SQL>alter system set  log_archive_dest_2='SERVICE=syw
  
LGWR  SYNC  AFFIRM
  
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
  
DB_UNIQUE_NAME=SYW'
  

  
注:MAXIMIZE后可跟{PROTECTION | AVAILABILITY | PERFORMANCE},分别对应最大保护、最高可用性和最高性能。
  

  
再次查看主库,备库保护模式
  
SQL> select protection_mode,protection_level from v$database;
  

  
PROTECTION_MODE                    PROTECTION_LEVEL
  
--------------------               --------------------
  
MAXIMUM AVAILABILITY               MAXIMUM AVAILABILITY
  

  
3.2.2 测试最高可用状态
  
当数据库处于最高可用性模式时,如果Standby无法访问,Primary应该会自动切换成最
  

  
重新查询主库的保护级别:
  
SQL> select protection_mode,protection_level from v$database;
  
PROTECTION_MODE                      PROTECTION_LEVEL
  
--------------------               --------------------
  
MAXIMUM AVAILABILITY                 RESYNCHRONIZATION
  
保护级别已经自动变成待同步状态。
  

  
警告日志有如下信息
  

  
Thread 1 advanced to log sequence 143
  
Current log# 2 seq# 143 mem# 0: /u01/app/oracle/oradata/syw/redo02.log
  
Sun Aug 28 11:17:06 2011
  
ARC3: LGWR is actively archiving destination LOG_ARCHIVE_DEST_2
  
ARC3: Standby redo logfile selected for thread 1 sequence 142 for destination LOG_ARCHIVE_DEST_2
  
Sun Aug 28 11:20:57 2011
  

  

  
系统已更改。
  
ORA-16198: LGWR received timedout error from KSR
  
LGWR: Attempting destination LOG_ARCHIVE_DEST_2 network reconnect (16198)
  
LGWR: Destination LOG_ARCHIVE_DEST_2 network reconnect abandoned
  
Sun Aug 28 11:20:57 2011
  
Errors in file /u01/app/oracle/admin/syw/bdump/syw_lgwr_30471.trc:
  
ORA-16198: 远程归档期间内部通道上超时
  
LGWR: Network asynch I/O wait error 16198 log 2 service 'syw01'
  
  Current log# 2 seq# 143 mem# 0: /u01/app/oracle/oradata/syw/redo02.log
  
LGWR: Failed to archive log 2 thread 1 sequence 143 (16198)
  
Sun Aug 28 11:21:00 2011
  
LGWR: Closing remote archive destination LOG_ARCHIVE_DEST_2: 'syw01' (error 16198
  

  

  
在主库执行更新插入操作
  

  
SQL> insert into t values(3);
  
已创建 1 行。
  

  
SQL> commit;
  
提交完成。
  

  
执行日志切换
  
SQL> alter system switch logfile;
  

  

  
再次查看主库保护级别
  
SQL> select protection_mode,protection_level from v$database;
  

  
PROTECTION_MODE                     PROTECTION_LEVEL
  
--------------------               --------------------
  
MAXIMUM AVAILABILITY                RESYNCHRONIZATION
  

  
此时primary依旧是日志待同步状态,现在将网线连接上,使主库与备库正常通信
  
备库警告日志出现如下信息
  

  
Sun Aug 28 11:29:10 2011
  
Media Recovery Log /sywdg/arch1/1_143_758642906.dbf
  
Media Recovery Log /sywdg/arch1/1_144_758642906.dbf
  
Media Recovery Log /sywdg/arch1/1_145_758642906.dbf
  
Media Recovery Log /sywdg/arch1/1_146_758642906.dbf
  
Media Recovery Waiting for thread 1 sequence 147 (in transit)
  
Sun Aug 28 11:29:35 2011
  
Primary database is in MAXIMUM AVAILABILITY mode
  
Changing standby controlfile to MAXIMUM AVAILABILITY level
  
RFS[24]: Successfully opened standby log 4: /u01/app/oracle/oradata/stdby_redo04.log'
  

  
此时主库已更改成最大可用模式,与此同时在备库上执行
  
ABILITY                MAXIMUM AVAILABILIT
  

  
SQL> alter database recover managed standby database cancel;
  

  
数据库已更改。
  

  
SQL> alter database open;
  

  
数据库已更改。
  

  
SQL> select * from t;
  

  
         A
  
----------
  
         1
  
         3
  

  

  
在主库上insert的数据已经同步到备库上,再次查看主库与备库保护级别
  

  
主库
  
SQL> select protection_mode,protection_level from v$database;
  

  
PROTECTION_MODE                    PROTECTION_LEVEL
  
--------------------              --------------------
  
MAXIMUM AVAI
  
L
  

  
备库
  

  
SQL> select protection_mode,protection_level from v$database;
  

  
PROTECTION_MODE                    PROTECTION_LEVEL
  
--------------------              --------------------
  
MAXIMUM AVAILABILITY                MAXIMUM AVAILABILIT
  

  
3.2.4将数据库由只读模式切换到执行重做日志应用的模式:
  

  

  
1. 终止在备用数据库上的所有活动的用户会话。
  
SQL> STARTUP FORCE;
  

  
2. 重启redo应用,开始重做应用
  
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
  

  
3.要启用实时应用,包括使用当前LOGFILE子句:
  

  
Thread 1 opened at log sequence
  
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
  

  
启动到这些Apply Mode,不需要关闭数据库实例。
  

  

  
3.2.5 data guard中主备库的启动顺序
  

  
DG中主备库的启动顺序问题,针对data guard采用不同模式,主备库的启动顺序如下:
  

  
max performance(最大性能):主库,备库的启动和关闭顺序没有先后
  

  
max availability(最大可用):要先启动备库,再启动主库,如果启动顺序相反,主库仍然能启动,但会在主库的alert.log文件中出现如下出错提示:
  

  
Tue Jan 23 09:36:26 2011                                                                                                      alter database open
  
Tue Jan 23 09:36:26 2011
  
LGWR: Primary database is in CLUSTER CONSISTENT mode
  
LGWR: Primary database is in MAXIMUM AVAILABILITY mode
  
LGWR: Destination LOG_ARCHIVE_DEST_1 is not serviced by LGWR                                                                  LNS0 started with pid=12
  
Tue Jan 23 09:36:29 2011
  
LGWR: Error 1034 verifying archivelog destination LOG_ARCHIVE_DEST_2
  
LGWR: Continuing...                                                                                                           Tue Jan 23 09:36:29 2011
  
Errors in file /opt/oracle/admin/devdb/bdump/test_lgwr_30979.trc:
  
ORA-01034: ORACLE not available
  
LGWR: Error 1034 disconnecting from destination LOG_ARCHIVE_DEST_2 standby host 'test_stb_186'
  
Thread 1 advanced to log sequence 73
  
73
  
Completed: alter database open
  
Max protection(最大保护):先启动备库,再启动主库,如果顺序相反,主库实例会自动中断,数据库无法启动,
  
并会在alert.log文件中留下如下的信息:
  

  
Tue Jan 23 09:34:00 2011
  
alter database open   Tue Jan 23 09:34:00 2011
  
LGWR: Primary database is in CLUSTER CONSISTENT mode
  
LGWR: Primary database is in MAXIMUM PROTECTION mode
  
LGWR: Destination LOG_ARCHIVE_DEST_1 is not serviced by LGWR LNS0 started with pid=12
  
Tue Jan 23 09:34:03 2011
  
LGWR: Error 1034 verifying archivelog destination LOG_ARCHIVE_DEST_2
  
LGWR: Continuing...
  
Tue Jan 23 09:34:03 2011
  
Errors in file /opt/oracle/admin/devdb/bdump/test_lgwr_30812.trc:
  
骤:首先是Primary端操作,修改Primary数据库的log_archive_dest_state_n参数,暂时取消向Standby数据库发送日志,
  
例如:SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=DEFER; 这样Standby端不可访问时,Pr
  
ORA-01034: ORACLE not available
  
LGWR: Error 1034 disconnecting from destination LOG_ARCHIVE_DEST_2 standby host 'test_stb_186'
  
LGWR: Minimum of 1 applicable standby database required
  
Tue Jan 23 09:34:07 2011
  
Errors in file /opt/oracle/admin/devdb/bdump/test_lgwr_30812.trc:
  
ORA-16072: a minimum of one standby database destination is required
  
LGWR: terminating instance due to error 16072
  
Instance terminated by LGWR, pid = 30812                                                                                                                                                                                                                                                                             3.2.6正确停止Standby数据库
  

  
某些情况下如果操作不当,关闭Standby数据库甚至会连带导致Primary数据库也关闭
  

  
正常情况下,停止Standby数据库(含物理Standby和逻辑Standby)之前,应该首先停止Primary数据库,如果直接停止Standby数据库,轻则Primary数据库的Alert文件中记录一堆归档发送失败的错误信息,重则Primary直接shutdown。不过,对于一些测试环境,偶尔也希望能在Primary数据库正常运行的情况下,停止Standby以进行一些其他操作,在这种情况下通常建议使用下列
  
步imary数据库的Alert日志文件中也不会再报错了。
  
然后Standby端就可以停止REDO应用:
  

  
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CALCEL;
  
最后才是关闭Standby数据库
  
SQL> SHUTDOWN IMMEDIATE;



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-573071-1-1.html 上篇帖子: 【oracle】系统权限、对象权限、角色 下篇帖子: oracle 10g 地址
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表