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

[经验分享] ORACLE物理DG日常管理

[复制链接]

尚未签到

发表于 2018-9-8 11:09:01 | 显示全部楼层 |阅读模式
  1、DG环境的日常巡检
  1.1、主库环境检查
  1.1.1、主库实例启动状态检查
  操作命令:
  SQL> select instance_name,status from v$instance;
  操作结果:
  INSTANCE_NAME  STATUS
  --------------------------- ------------------------
  cs02        OPEN
  操作说明: 如果主库在对外提供服务,那其实例状态应一定是OPEN的。
  1.1.2、主库启动模式检查
  操作命令:
  SQL> select name,open_mode from v$database;
  操作结果:
  NAME   OPEN_MODE
  ------------------  --------------------------
  CS02   READ WRITE
  操作说明: 如果主库在对外提供服务,那其数据库状态应一定是READ WRITE的。
  
  1.1.3、主库DG环境的保护模式检查
  操作位置:主库 操作命令:
  SQL> select database_role, protection_mode, protection_level from v$database;
  操作结果:
  DATABASE_ROLE     PROTECTION_MODE        PROTECTION_LEVEL
  --------------------------  --------------------------------------  ---------------------
  PRIMARY           MAXIMUM PERFORMANCE   MAXIMUM PERFORMANCE
  1.1.4、主库用于控制日志同步的参数检查
  操作命令:
  SQL> show parameter log_archive_dest_2;
  操作结果:
  NAME                 TYPE    VALUE
  -------------------------------- ----------- ----------------------------------------------
  log_archive_dest_2  string service=cs01    valid_for=(online_logfiles,primary_role) db_unique_name=cs01
  操作说明:
  通过该参数设置的网络服务名,主库能够找到该DG环境当中的备库,通过将主库的归档日志同步到备库;查询结果并没有看到lgwr/arch、sync/async、affirm/noaffirm的参数设置,说明当前主库没有对这三个参数进行设置,当前使用的是默认设置,即:arch、async、noaffirm的设置。
  
  1.1.5、主库查看是否开启强制日志功能
  操作命令:
  SQL> select name,force_logging from v$database;
  操作结果:
  NAME      FOR
  ---------  --------
  CS02     YES
  操作说明:
  DG环境下主库要求必须开启强制日志功能,如果发现状态是NO,需要手动执行下面的命令开启该功能。

  SQL>>  1.1.6、主库上查看设置的归档日志路径是否可用
  操作命令:
  SQL> col dest_name for a30
  SQL> col error for a30
  SQL> select dest_name,status,error from v$archive_dest;
  操作结果:
  DEST_NAME            STATUS              ERROR
  ---------------------------------- ---------------  ------------------------------ LOG_ARCHIVE_DEST_1      VALID LOG_ARCHIVE_DEST_2  VALID LOG_ARCHIVE_DEST_3  INACTIVE
  操作说明:
  该视图用户查看本地和远程的归档日志路径是否可用,如果远程的归档日志路径不可用,在ERROR列会有相应报错。
  1.1.7、主库上查询归档日志的应用情况
  操作命令:
  SQL> set pagesize 50; SQL> col name for a50
  SQL> select name,SEQUENCE#,APPLIED from v$archived_log order by sequence#;
  操作结果:
  NAME                        SEQUENCE#  APPLIED
  --------------------------------------------------------------  ----------------- -----
  /u01/app/oracle/arch/1_5_886855721.dbf  5    NO
  cs01                         5    YES
  /u01/app/oracle/arch/1_6_886855721.dbf  6    NO
  cs01                         6    YES
  /u01/app/oracle/arch/1_7_886855721.dbf  7    NO
  cs01                         7    YES
  操作说明:
  该视图记录了归档日志的应用情况,由查询结果可以看出,主库上的该视图会同时记录主库和同步到备库的归档日志的应用情况。视图中显示归档到本地路径的归档日志的名字使用的是绝对路径,并且应用状态为NO,而同步到远端备库上的归档日志名字统一都为cs01,并且应用状态显示为YES。这说明同步到备库上的归档日志都已经被应用了。
  1.1.8、主库上查看DG环境进程的状态
  操作命令:
  SQL> select process,status from v$managed_standby;
  操作结果:
  PROCESS    STATUS
  -------------  ------------
  ARCH       CLOSING
  ARCH       CLOSING
  ARCH       CLOSING
  ARCH       CLOSING
  LNS        WRITING
  操作说明:
  ARCH进程: 用于主库上复制redo log,从而生成归档日志,当前状态为CLOSING表示该进程目前正在复        制redo log,我们在参数文件中设置了该进程的数量上限是4个。
  LNS进程: 用于在主库上将主库的归档日志同步到备库上,将归档日志投递给备库上的RFS进程。
  1.1.9、主库上查看DG的状态信息
  操作命令:
  SQL> col message for a100
  SQL> select message_num,message from v$dataguard_status;
  1.1.10、主库SWITCH OVER角色和状态的检查
  操作命令:
  SQL> select name,database_role,switchover_status from v$database;
  操作结果:
  NAME   DATABASE_ROLE        SWITCHOVER_STATUS
  ------------------  -------------------------   --------------------------------
  CS02   PRIMARY              TO STANDBY
  操作说明:
  如果主库的切换状态显示为SESSION ACTIVED状态也是正常的。
  1.2、备库环境检查
  1.2.1、备库实例的启动状态检查
  操作命令:
  SQL> select instance_name,status from v$instance;
  操作结果:
  INSTANCE_NAME  STATUS
  --------------------------- ------------------------
  cs01     MOUNTED
  操作说明:
  一般备库会被启动到MOUNT状态,不过根据具体需要,在确认备库没的应用归档日志进程没有启动的前提下也可以将其启动到OPEN状态,执行命令:alter database open;
  1.2.2、备库启动模式检查
  操作命令:
  SQL> select name,open_mode from v$database;
  操作结果:
  NAME   OPEN_MODE
  ------------------  --------------------------
  CS01   READ ONLY
  操作说明:
  发现是read only模式,说明备库当前并没有开启归档日志应用进程,这个时候我们可以手动开启该进程,执行下面的命令:

  SQL>>  如果发现当前数据库的打开模式是read only with apply我们也可以手工关闭归档应用程序,执行下面的命令:

  SQL>>  重新查看备库的启动模式,执行下面的命令:
  SQL> select name,open_mode from v$database;
  操作结果:
  NAME   OPEN_MODE
  ------------------  ----------------------------------
  CS01   READ ONLY WITH APPLY
  1.2.3、备库DG环境的保护模式检查
  执行命令:
  SQL> select database_role, protection_mode, protection_level from v$database;
  SQL> set linesize 160
  查询结果:
  DATABASE_ROLE  PROTECTION_MODE   PROTECTION_LEVEL
  --------------------------- ----------------------------------------  --------------------
  PHYSICAL STANDBY  MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE
  1.2.4、备库用于控制日志同步的参数检查
  操作命令:
  SQL> show parameter log_archive_dest_2
  操作结果:
  NAME            TYPE          VALUE
  -------------------------------- ----------- ----------------------------------------------
  log_archive_dest_2  string      service=cs02 valid_for=(online_logfiles,primary_role) db_unique_name=cs02
  1.2.5、备库上查看同步过来的归档日志的应用情况
  操作命令:
  SQL> set pagesize 50 SQL> col name for a50
  SQL> select name,SEQUENCE#,APPLIED from v$archived_log order by sequence#;
  操作结果:
  NAME                      SEQUENCE#  APPLIED
  -------------------------------------------------------------- ------------------ ---------
  /u01/app/oracle/arch/1_5_886855721.dbf  5    YES
  /u01/app/oracle/arch/1_6_886855721.dbf  6    YES
  /u01/app/oracle/arch/1_7_886855721.dbf  7    YES
  操作说明:
  如果发现备库归档日志的编号不连续,则需要到主库去对照主库的归档日志编号,找到主库上已经归档但却没有同步到备库上的那些归档日志手动拷贝过来,并将其注册到备库内,注册归档日志的命令如下所示:

  SQL>>  然后再重新开启备库的应用归档日志进程,执行下面的命令即可:

  SQL>>  1.2.6、备库上查看归档日志有没有裂缝(同操作2.5部分类似)
  操作命令:
  SQL> select * from v$archive_gap;
  操作说明:
  如果DG环境日志同步正常,则不会查到任何记录,如果查出结果,则说明目前的DG环境归档日志有裂缝,需要执行2.5部分的操作去解决。
  1.2.7、备库上查看DG环境特有进程的状态
  操作命令:
  SQL> select process,status from v$managed_standby;
  操作结果:
  PROCESS         STATUS
  ------------------  ------------------------
  ARCH   CLOSING
  ARCH   CLOSING
  ARCH   CONNECTED
  ARCH   CLOSING
  RFS    IDLE
  RFS    IDLE
  RFS    IDLE
  RFS    IDLE
  MRP0   WAIT_FOR_LOG
  操作说明:
  FRS进程: 用于备库接收从主库LNS进程或ARCH进程投递过来的归档日志。
  ARCH:  用于复制从主库上同步过来的归档日志。
  MRP0:  用于应用归档日志。
  1.2.8、备库上查看DG环境的状态信息
  操作命令:
  SQL> col message for a100
  SQL> select message_num,message from v$dataguard_status;
  1.2.9、备库SWITCH OVER角色和状态的检查
  操作命令:
  SQL> select name,database_role,switchover_status from v$database;
  操作结果:
  NAME   DATABASE_ROLE        SWITCHOVER_STATUS
  ------------------  -------------------------   --------------------------------
  CS02   PHYSICAL STANDBY      NOT ALLOWED
  操作说明:
  如果主库的切换状态显示为TO PRIMARY状态也是正常的。
  重要说明:
  对于Data Guard环境的日常运维工作,其核心就在于确保主库上的日志能通正常同步到备库上,并能够被备库及时的应用。这些信息在主备数据库的告警日志中都会有所体现,所有要经常关注主库和备库的告警日志的内容。做到发现报错,及时处理,将会对数据库运行造成不良影响的因素消灭在萌芽状态...
  2、DG环境的启动与关闭
  2.1、DG环境的关闭
  2.1.1、检查DG环境主备库的日志使用情况
  操作位置:主库&备库
  操作命令:
  SQL> archive log list;
  操作结果:
  主库与备库当前使用的日志编号相同
  2.1.2、停主库的监听程序
  操作命令:
  [oracle@cs02 ~]$ lsnrctl stop
  2.1.3、停备库的监听程序
  操作命令:
  [oracle@cs01 ~]$ lsnrctl stop
  2.1.4、关闭主数据库
  操作命令:
  SQL> shutdown immediate;
  2.1.5、查看备库的开启模式
  操作命令:
  SQL> select open_mode from v$database;
  如果发现当前数据库是read only with apply模式,则需要执行下面命令关闭归档日志应用程序,如果发现是read only模式则直接关闭数据库即可。正常情况下备库应该时刻处于应用归档日志的模式。
  2.1.6、关闭备数据库的归档应用程序
  操作命令:

  SQL>>  2.1.7、关闭备数据库
  操作命令:
  SQL> shutdown immediate;
  这样,整个Data Guard环境就算是完整的关闭掉了...
  2.2、DG环境的启动
  2.2.1、启动DG环境的主库
  操作命令:
  [oracle@cs02 ~]$ sqlplus / as sysdba
  SQL> startup;
  SQL> select status from v$instance;
  2.2.2、启动主库的监听程序
  操作命令:
  [oracle@cs02 ~]$ lsnrctl status
  [oracle@cs02 ~]$ lsnrctl start
  2.2.3、启动DG环境的备库到mount或open状态
  操作命令:
  [oracle@cs01 ~]$ sqlplus / as sysdba
  SQL> startup;
  或 SQL> startup mount;
  2.2.4、启动备库的监听程序
  操作命令:
  [oracle@cs01 ~]$ lsnrctl status
  [oracle@cs01 ~]$ lsnrctl start
  2.2.5、主库切换归档日志
  操作命令:

  SQL>>  2.2.6、查看备库是否有新应用过来的日志
  操作命令:
  SQL> select sequence#,applied from v$archived_log;
  2.2.7、备库上开启归档日志应用进程
  操作命令:

  SQL>>  2.2.8、主库与备库验证当前redo log
  操作位置:主库&备库
  操作命令:
  SQL> archive log list;
  如果此时发现主库与备库当前使用的redo日志的编号一致则说明重启的DG环境一切正常。
  这样,这个Data Guard环境就算是去正常的启动了...
  3、DG环境的主备切换-SWITCHOVER
  3.1、SWITCHOVER切换的特点
  一般SWITCHOVER切换都是计划中的切换,特点是在切换后,不会丢失任何的数据,而且这个过程是可逆的,整个DATA GUARD环境不会被破坏,原来DATA GUARD环境中的所有物理和逻辑STANDBY都可以继续工作。
  3.2、SWITCHOVER切换的注意事项  
  1)确认主库和从库间网络连接通畅;
  2)确认没有活动的会话连接在数据库中;
  3)PRIMARY数据库处于打开的状态,STANDBY数据库处于MOUNT状态;
  4)确保STANDBY数据库处于ARCHIVELOG模式;
  5)如果设置了REDO应用的延迟,那么将这个设置去掉;
  6)确保配置了主库和从库的初始化参数,使得切换完成后,DATA GUARD机制可以顺利的运行。
  3.3、SWITCHOVER的切换操作流程
  3.3.1、主库与备库运行状态确认
  在执行主备SWITCH OVER之前,需要首先确认主库与备库的实例以及数据库的启动状态,确保主库与备库满足下面的要求:
  数据库     实例启动状态  数据库启动模式
  主库-CS02   open        read write
  备库-CS01   mount/open    mount with apply/read only with apply
  可以通过如下命令进行查看:
  SQL> select status from v$instance;
  SQL> select open_mode from v$database;
  3.3.2、查看switchover之前主库的角色和状态
  SQL> select name,database_role,switchover_status from v$database;
  操作结果:
  NAME DATABASE_ROLE SWITCHOVER_STATUS
  ---------  ----------------------- --------------------------------
  CS02 PRIMARY   SESSIONS ACTIVE
  操作说明:
  1)如果是第一次做主备的SWITCH OVER操作,那么主库的SWITCHOVER_STATUS状态会是SESSIONS ACTIVE状 态。表示当前主库还有活动的会话连接,属于正常的主库准备切换之前的状态。
  2)如果之前已经做过主备的SWITCH OVER操作,那么主库的SWITCHOVER_STATUS状态会是TO_STANDBY状态, 表明当前主库已经准备好随时切换成备库了。
  3.3.3、查看switchover之前备库的角色和状态
  操作命令:
  SQL> select name,database_role,switchover_status from v$database;
  NAME DATABASE_ROLE  SWITCHOVER_STATUS
  ---------  ---------------------------- --------------------------------
  CS02 PHYSICAL STANDBY  TO PRIMARY
  操作说明:
  1)如果是第一次做主库的SWITCH OVER操作,那么备库的SWITCHOVER_STATUS状态会是TO_PRIMARY状态。 表明备库已经随时可以切换成主库了。
  2)如果之前已经做过主备的SWITCH OVER操作,在主库没有发出要做主备切换的操作之前(即:执行主库切成备库的那条命令),备库的SWITCHOVER_STATUS状态会是NOT ALLOWED,属于正常状态。
  3.3.4、将主库切换成备库
  操作命令:

  SQL>>  操作说明: 此时主库会被自动关闭掉。
  3.3.5、将备库启动到mount状态
  1)关闭备库的归档日志应用进程

  SQL>>  2)关闭备库并启动到mount状态
  SQL> shutdown immediate;
  SQL> startup mount;
  3)查看备库的角色状态
  SQL> select name,database_role,switchover_status from v$database;
  备注:
  如果之前查看备库的切换状态是NOT ALLOWED,那么由于现在在主库上已经做了切换到备库的操作,该操 作的信息已经发送到了备库上,所以备库此时的切换状态会变成TO PRIMARY。
  3.3.6、主库启动到mount状态
  1)主库启动到nomount状态
  SQL> startup nomount;
  2)主库以备库的身份启动到mount状态

  SQL>>  3)主库以备库的身份开启归档日志应用进程

  SQL>>  4)查看主库现在在DG环境中的角色
  SQL> select name,database_role,switchover_status from v$database;
  NAME  DATABASE_ROLE  SWITCHOVER_STATUS
  ------------------ -------------------------------- ---------------------------------------CS02  PHYSICAL STANDBY  TO PRIMARY
  至此,主库的切换相关操作已经完成,主库角色已经切换成了备库,切换状态变成了TO PRIMARY。
  3.3.7、备库切换成主库
  1)备库开启归档日志应用进程

  SQL>>  2)查看备库当前在DG环境中的角色
  SQL> select name,database_role,switchover_status from v$database;
  NAME  DATABASE_ROLE     SWITCHOVER_STATUS
  ---------  --------------------------- --------------------------------
  CS02  PHYSICAL STANDBY  TO PRIMARY
  备注:
  在开启应用归档日志进程之前,备库的切换状是NOT ALLOWED。在开启了归档日志应用进程之后,发现现在备库的角色状态变成了TO PRIMARY
  3)备库切换成主库

  SQL>>  4)切换后重新查看备库在DG环境中的角色和状态
  SQL> select name,database_role,switchover_status from v$database;
  NAME  DATABASE_ROLE  SWITCHOVER_STATUS
  ------------   -------------------------   -------------------------------
  CS02  PRIMARY             NOT ALLOWED
  4)关闭备库
  SQL> shutdown immediate;
  5)启动备库
  SQL> startup;
  备注: 查看当前备库的SWITCH OVER状态,这个时候可能会出现RESOLVABLE GAP的状态
  6)切换备库的redo log

  SQL>>  备注: 查看当前备库的SWITCH OVER状态,这个时候可能会出现RESOLVABLE GAP的状态,再等一会就好了。
  7)查看备库当前的切换状态
  SQL> select name,database_role,switchover_status from v$database;
  NAME   DATABASE_ROLE   SWITCHOVER_STATUS
  ---------  ------------------------  --------------------------------
  CS02   PRIMARY       SESSIONS ACTIVE
  发现备库已经成功切换成主库了,并且数据库中存在活动的会话...
  3.3.8、检查切换后主库与备库的日志编号
  操作位置:主库&备库
  操作命令:
  SQL> archive log list;
  如果确认切换之后主库与备库的当前日志编号一致,则说明主备切换完成。可以在主库上做切换日志操作,做进一步的验证。
  操作命令:

  SQL>>  如果切换日志之后主备两端的日志编号依旧一致则说明本次主备的SWITCH OVER顺利完成。
  至此,我们的主备SWITCH OVER操作就算是顺利的完成了...


运维网声明 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-567798-1-1.html 上篇帖子: Oracle 归档模式的打开及关闭 下篇帖子: Oracle中group by用法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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