暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle DataGuard重启维护操作文档

原创 Jason 2023-02-11
1382

一、介绍

DataGuard是Oracle的一种高可用性数据库方案,主要用于数据容灾和读写分离。


二、环境

主要针Oracle Dataguard的操作文档

  • 主库:172.16.*.*
  • 备库:172.16.*.*

三、操作步骤

维护流程如下:



以下操作步骤适用Linux上Oracle 11G。

1. 检查备库DataGuard同步状态

登录备库。

# Linux从root账户切换至oracle账户
su - oracle
# Linux登录sqlplus工具
sqlplus / as sysdba

分别检查传输进程和日志应用状态

# 检查传输状态,是否有MRP0进程,及block#是否在变化
SQL> SELECT PROCESS,STATUS,THREAD#,SEQUENCE#,BLOCK#,BLOCKS,DELAY_MINS FROM V$MANAGED_STANDBY;
PROCESS   STATUS               THREAD# SEQUENCE#     BLOCK#     BLOCKS DELAY_MINS
--------- -------------------- ------- --------- ---------- ---------- ----------
ARCH      CLOSING                    1     18618     737280        277          0
ARCH      CLOSING                    1     18617     737280        577          0
ARCH      CONNECTED                  0         0          0          0          0
ARCH      CLOSING                    1     18616     768000       1402          0
RFS       IDLE                       0         0          0          0          0
RFS       IDLE                       1     18619      25608          2          0
RFS       IDLE                       0         0          0          0          0
MRP0      APPLYING_LOG               1     18619      25609    1048576          0

# 检查日志应用状态,检查APPLIED是否有未应用
SQL> SELECT SEQUENCE#,to_char(FIRST_TIME,'yyyy-mm-dd hh24:mi:ss') FIRST_TIME,to_char(NEXT_TIME,'yyyy-mm-dd hh24:mi:ss') NEXT_TIME,DELETED,APPLIED from v$archived_log where DELETED='NO' and APPLIED='YES' order by 1;
SEQUENCE# FIRST_TIME          NEXT_TIME           DEL APPLIED
--------- ------------------- ------------------- --- ----------
    18615 2022-04-14 10:02:32 2022-04-14 11:09:39 NO  YES
    18615 2022-04-14 10:02:32 2022-04-14 11:09:39 NO  YES
    18616 2022-04-14 11:09:39 2022-04-14 11:33:00 NO  YES
    18616 2022-04-14 11:09:39 2022-04-14 11:33:00 NO  YES
    18617 2022-04-14 11:33:00 2022-04-14 12:26:04 NO  YES
    18617 2022-04-14 11:33:00 2022-04-14 12:26:04 NO  YES

2. 停止备库日志同步并关闭数据库实例

登录备库节点,通过sqlplus工具维护

# 取消日志应用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
# 关闭数据库实例
SQL> shutdown immediate

3. 关闭备库监听器

关闭监听器,并检查oracle账户下是否还有未释放进程。

# Linux里关闭监听器
lsnrctl stop
# Linux里检查oracle进程
ps -fu oracle

4. 对数据库备库进行主机层面维护

进行备库主机其他维护,比如重启、扩容磁盘、参数调整等操作。

5. 然后对数据库主库进行维护

# Linux里关闭监听器,关闭之前建议关闭访问数据库的相关应用和接口程序等
lsnrctl stop
# Linux登录sqlplus工具,然后关闭数据库主库实例
sqlplus / as sysdba
SQL> shutdown immediate

# Linux检查数据库进程
ps -fu oracle

# 然后进行主机其他维护,比如重启、扩容磁盘、参数调整等操作。

# 维护完成后在Linux上启动监听器
lsnrctl start
# 通过sqlplus工具启动数据库至Open状态
sqlplus / as sysdba
SQL> startup

6. 备库启动监听器

启动监听器。

# Linux里启动Oracle监听器进程
lsnrctl start

7. 启动数据库备库

通过sqlplus登录数据库后,启动数据库至mount状态

# linux里登录sqlplus
sqlplus / as sysdba
# 执行Oracle启动实例命令至mount状态
SQL> startup mount

8. 开启备库日志同步

开启日志实时同步,,通过sqlplus工具维护

# 开启实时应用命令
SQL> alter database recover managed standby database using current logfile disconnect from session;
# 切换数据库为只读打开状态
SQL> alter database open;

9. 检查数据库同步进程及同步状态

# Linux层面检查mrp0进程
ps -ef | grep mrp0

# 通过sqlplus工具检查传输状态,是否有MRP0进程,及block#是否在变化
SQL> SELECT PROCESS,STATUS,THREAD#,SEQUENCE#,BLOCK#,BLOCKS,DELAY_MINS FROM V$MANAGED_STANDBY;
# 检查日志应用状态,检查APPLIED是否有未应用
SQL> SELECT SEQUENCE#,to_char(FIRST_TIME,'yyyy-mm-dd hh24:mi:ss') FIRST_TIME,to_char(NEXT_TIME,'yyyy-mm-dd hh24:mi:ss') NEXT_TIME,DELETED,APPLIED from v$archived_log where DELETED='NO' and APPLIED='YES' order by 1;

10. 参考文档

官方文档:https://docs.oracle.com/cd/E11882_01/server.112/e41134/concepts.htm#SBYDB4708






「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论