拓扑园

  • O&M
    • Universal部署
    • PHP+VUE+Laravel相关
  • Oracle性能优化
  • Oracle项目案例
    • Oracle近期项目案例(目录)
    • Oracle实战问题解析(目录)
    • Oracle数据库名变更流程(2种方式)
    • Oracle数据库目录更换流程(使用Oracle的clone工具)
    • Oracle数据库迁移方案(目录)
    • 标准化文档系列
  • Oracle基础知识
    • LLL的Oracle培训(分类)
    • LLL的docker培训(分类)
    • 标准化文档系列--(分类)
    • Oracle核心经典分析(分类)
    • 图灵小队----(分类并包含以下文章)
    • --MySQL8.0/Oracle/Memcached/Redis等安装配置于RHEL/OL6/7/8.X系列-运行环境最优配置
    • --PG安装配置于RHEL/9X系列-运行环境最优配置
    • --自动维护任务详解-开启、关闭信息统计收集(统计信息)
    • --图灵小队—Oracle/PostgreSQL下创建一个用户测试表(自行定义数据行)
    • --图灵小队-Oracle存储过程导出表的明细_UTL_FILE(文章)
    • --图灵小队-Oracle数据库删除/卸载操作指南(文章)
    • --图灵小队-Oracle常用性能查询SQL语句(文章)
    • --图灵小队-Oracle数据库上线前检查(文章)
    • --图灵小队-Oracle常用SQL语句(文章)
    • --图灵小队—Linux/Oracle脚本/MySQL合集(持续更新)
    • --图灵小队-Oracle技巧记录(文章)
    • ADG
    • RAC
    • ASM
    • OGG
    • RMAN
    • EXPDP/IMPDP
    • 工厂数据导入导出系列
  • MySQL
    • MySQL数据库规范
    • MySQL项目案例
    • MySQL安装配置
    • MYSQL集群项目
    • MySQL常见处理
    • MySQL-Sysbench专题
    • MySQL-Percona Toolkit专题
  • Linux
    • Shell编程
    • kubernetes
    • docker
    • Linux
    • PHP
    • Nginx
    • haproxy
    • mail
    • 网站
    • 域名
    • 网址收藏
  • 数据中心
    • 新框架系统集合
    • 工作文档
    • EBS数据文件扩容
    • VMware虚拟化
    • EBS系列
    • 大数据
    • SVN
    • zabbix
    • SAP
    • 备份相关
    • FC交换机
    • SVN
  • K-Studing
    • D8-Python学习
    • Oracle/MySQl等面试题
    • LG-MySQL
    • LG-Docker/K8S
    • LG-PostgreSQL
    • LG-ORACLE_BBED
    • LG-ORACLE
    • LG-Elasticsearch(ES)+ELK
    • Oracle-19C-OCP
    • WERN_ORACLE培训
    • redis数据库
    • Nginx培训学习系列
  • 其他
    • 外研英语4年级下册-听力
    • 影视系列
    • 如何使用iTunes软件通过抓包下载旧版本的ios的app
天高任鸟飞
Oracle/MySQL数据库恢复/数据迁移/生产规范报告技术交流:TEL:18562510581(微信同号);加微信入群
  1. 首页
  2. Oracle
  3. ADG
  4. 正文

ADG 维护手册【开启,关闭,恢复,同步,主备切换,主备库独立,独立后恢复、停止同步】

2020年9月26日 5862点热度 1人点赞 0条评论

目录

  • 一、恢复数据
    • 1、不要挂载并开启数据库:
  • 二、查看备库状态
  • 三、检查、开启、关闭数据库同步:
      • 4、主备库检查dataguard 状态【查看archivelog序列号是否一致,下面两种都可以查看】:
      • 5、检查dataguard日志:
      • 6、查看日志应用情况:
    • 四、查看主备库信息
      • 1、查看standby启动的DG进程
      • 2、查看数据库的保护模式:
      • 3、查看ADG的日志信息
    • 五:Open Read Only standby数据库并且开启实时日志应用(备库)
      • 1、关闭并完全打开备库
      • 2、查看备库模式,是否为只读模式
      • 3、查看备库状态
    • 六、主备库开启、关闭顺序
      • 1、启动顺序
      • 2、关闭顺序
      • (1)先关主库:  
      • (2)再关备库:
    • 七、主备库切换
      • 1、原主库(A)操作,切换为新备库:
      • 2、原备库(B)查看并切换为新主库(B)
      • 3、新备库(A)设备库此时为mounted状态,先同步数据,再设置为Open,再同步
      • 4、查看新主备库的角色
      • 5、原备库(B)更换为新主库(B)后,此库的archivelog日志可以直接删除,不在此库的rman记录中。
      • 6、新主\库备库分别执行下列语句,并查看归档日志是否一致,如果一致,则切换成功
    • 八、switchover_status概念:
    • 九、其他维护
    • 十、切断ADG的关联,划分为两个独立的数据库
      • 1:切断MRP的进程
      • 2:激活备库
      • 3:重启(如果需要彻底的清除,可以把所有dg配置的参数去掉)
    • 十一、如果主备库按上述独立后,则需要备库重新恢复数据(目前通过此方式进行)
      • 1、rman恢复数据
      • 2、备机开启同步
    • 十一、ADG停止同步
      • 1、停止同步:
      • 主库:
      • 2、恢复数据同步

一、恢复数据

1、不要挂载并开启数据库:

startup nomount;

2、登录rman: rman target sys/oracle@shycorcl auxiliary sys/oracle@shycorclstd

运安最新的(20201105)rman target sys/1qaz2WSX@mesorclstd auxiliary sys/1qaz2WSX@mesorcl(其中:第一个tns连接字符串mesorclstd 是主库,第二个连接字符串是备库mesorcl)

3、恢复数据 RMAN> duplicate target database for standby from active database nofilenamecheck;

二、查看备库状态

SQL>select status from v$instance;

三、检查、开启、关闭数据库同步:

1、检查Dataguard 状态

SQL>select database_role,protection_mode,protection_level,open_mode from v$database;
SQL>select name,open_mode,protection_mode,database_role,switchover_status from v$database;

2、启动dataguard数据库同步-备库执行

SQL>alter database  recover managed standby database using current logfile disconnect from session;
SQL> alter system switch logfile;

3、关闭datagurade数据同步-备库执行

SQL>alter database recover managed standby database cancel;

4、主备库检查dataguard 状态【查看archivelog序列号是否一致,下面两种都可以查看】:

SQL>select unique thread#,max(sequence#) over(partition by thread#)last from v$archived_log;
SQL>archive log list;【这个命令查看输出current log sequence】

5、检查dataguard日志:

主库日志:tail -100f /home/oracle/app/oracle/diag/rdbms/pri/pri/trace/alert_std.log
备库日志:tail -100f /home/oracle/app/oracle/diag/rdbms/std/std/trace/alert_std.log
其他命令:SQL>select * from v$dataguard_status; 
其他命令:SQL>select * from  v$diag_info

6、查看日志应用情况:

SYS@std> set pagesize 100
SYS@std> select sequence#,applied from v$archived_log order by 1;

另:ADG的工作原理(ADG备机可以工作在mounted状态下,也可以运行在read-only 状态下;而DG的备机只能运行在mounted状态下)

四、查看主备库信息

1、查看standby启动的DG进程

SQL> select process,client_process,sequence#,status from v$managed_standby;

2、查看数据库的保护模式:

SQL> select database_role,protection_mode,protection_level,open_mode from v$database;

3、查看ADG的日志信息

SQL> select * from v$dataguard_status;

五:Open Read Only standby数据库并且开启实时日志应用(备库)

1、关闭并完全打开备库

SQL>shutdown immediate
SQL>startup

2、查看备库模式,是否为只读模式

SQL> select database_role,protection_mode,protection_level,open_mode from v$database;

3、查看备库状态

SQL> select process,client_process,sequence#,status from v$managed_standby;

六、主备库开启、关闭顺序

1、启动顺序

(1)监听:先启备库再起主库  

#lsnrctl start

(2)先启备库:

    sql>startup nomount;
    sql>alter database mount standby database;
    sql>alter database recover managed standby database using current logfile disconnect from session;

(3)再启主库: sql>startup

2、关闭顺序

(1)先关主库:  

 sql>shutdown immediate

(2)再关备库:

    sql>alter database recover managed standby database cancel;
    sql>shutdown immediate;

七、主备库切换

1、原主库(A)操作,切换为新备库:

  • 查看switchover_status状态:
      select OPEN_MODE,PROTECTION_MODE,PROTECTION_LEVEL,SWITCHOVER_STATUS from v$database;
      
    如果switchover_status为TO_STANDBY说明可以直接转换
      alter database commit to switchover to physical standby;
    
    如果switchover_status为SESSIONS ACTIVE 则关闭会话
    alter database commit to switchover to physical standby with session shutdown;-- 主库有会话连接的时候
  • shutdown immediate;
    ORA-01012: not logged on
  • 打开数据库,但不挂载
    startup nomount;
    
    
    select OPEN_MODE,PROTECTION_MODE,PROTECTION_LEVEL,SWITCHOVER_STATUS from v$database;
    此时查看备库,switchover_status是否为to primary状态,如果是,则可以正常切换。 
    如果switchover_status是not allowed,则说明主库进行switchover有问题,重新运行上面语句。
  • 原主库(A)以备机模式挂载数据库
    alter database mount standby database;
    
    a、主库执行下句:select OPEN_MODE,PROTECTION_MODE,PROTECTION_LEVEL,SWITCHOVER_STATUS from v$database;
    查看switchover_status是否为recovery_needed,如果是,则下一步
    
    b、查看原备库(B)语句:select switchover_status from v$database;
     switchover_status 是否为to primary,如果是,可以进行切换。如果不是,而是sessions active状态,说明备库有连接,进行备库数据库关闭并挂载重启(startup mount)即可恢复

2、原备库(B)查看并切换为新主库(B)

  • select DATABASE_ROLE from v$database; --备库为PHYSICAL STANDBY 状态,主库为PRIMARY状态
  • select OPEN_MODE,PROTECTION_MODE,PROTECTION_LEVEL,SWITCHOVER_STATUS from v$database;
    
    SWITCHOVER_STATUS 如果为not allowed,表示当前备库为不可以做switch的操作,需要等主库进行switchover后就可以switchover操作了。
  • alter database commit to switchover to primary;
    如果出现:ORA-01093: alter database close only permitted with no sessions connected
    解决: alter database commit to switchover to primary with session shutdown;
  • shutdown immediate;
  • startup;

3、新备库(A)设备库此时为mounted状态,先同步数据,再设置为Open,再同步

SQL> alter database recover managed standby database using current logfile disconnect from session;
SQL> alter database recover managed standby database cancel;
SQL> alter database open;

4、查看新主备库的角色

select DATABASE_ROLE from v$database;--新备库(A)为PHYSICAL STANDBY 状态,新主库(B)为PRIMARY状态

5、原备库(B)更换为新主库(B)后,此库的archivelog日志可以直接删除,不在此库的rman记录中。

可以使用RMAN>CROSSCHECK ARCHIVELOG ALL;进行查看最新的archivelog,把不在其中的,系统下删除即可。

6、新主\库备库分别执行下列语句,并查看归档日志是否一致,如果一致,则切换成功

新主备库查看序列号:

SQL>select unique thread#,max(sequence#) over(partition by thread#)last from v$archived_log;

新主库(B)切换归档

SQL>alter system switch logfile;

新主备库查看:

SQL>select unique thread#,max(sequence#) over(partition by thread#)last from v$archived_log;

如果序列号一致即成功。

 

八、switchover_status概念:

A 如果switchover_status为TO_PRIMARY 说明标记恢复可以直接转换为primary库;
  alter database commit to switchover to primary ;

B 如果switchover_status为SESSION ACTIVE 就应该断开活动会话
alter database commit to switchover to primary with session shutdown; 

C 如果switchover_status为NOT ALLOWED 说明切换标记还没收到,此时不能执行转换。

D、状态由LOG SWITCH GAP变成了RESOLVABLE GAP,从字面理解是主备库之间存在GAP,于是执行: alter system switch logfile;手动切换归档即可(LLL)

E、当主库的SWITCHOVER_STATUS状态为FAILED DESTINATION时,是因为备库不在mount状态下,在备库中:startup mount

F、当主库的SWITCHOVER_STATUS状态为RESOLVABLE GAP时,可以shutdown和startup备库,问题可解决。

九、其他维护

1.停止Standby
select process, status from v$managed_standby; --查看备库是否在应用日志进行恢复
alter database recover managed standby database cancel;
shutdown immediate;
2.切换到只读模式
-----由shutdown模式切换到只读模式-------
startup nomount;
alter database mount standby database;
alter database open read only;
-----由应用日志模式切换到只读模式-------
alter database recover managed standby database cancel; -- 取消日志应用
alter database open read only;
3.切换回管理恢复模式
startup nomount;
alter database mount standby database;
alter database recover managed standby database disconnect from session; -- 启动日志应用
alter database recover managed standby database using current logfile disconnect from session;
4.备库自动使用主库传过来的日志进行恢复
alter database recover automatic standby database;
5.更改保护模式
alter database set standby database to maximize protection;
alter database set standby database to maximize availability;
alter database set standby database to maximize performancen;
6.取消自动恢复模式
alter database recover managed standby database cancel;
alter database recover managed standby database finish;
alter database recover managed standby database finish force;

十、切断ADG的关联,划分为两个独立的数据库

在备机执行

切断ADG的关联,将其划分为两个独立的数据库

1:切断MRP的进程

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

2:激活备库

alter database activate standby database

3:重启(如果需要彻底的清除,可以把所有dg配置的参数去掉)

shutdown immediate
startup

十一、如果主备库按上述独立后,则需要备库重新恢复数据(目前通过此方式进行)

1、rman恢复数据

SYS > startup nomount;
[oracle@std ~]$ rman target sys/Hdsoft123@mesorcl auxiliary sys/Hdsoft123@mesorclstd

2、备机开启同步

SQL>alter database  recover managed standby database using current logfile disconnect from session;

十一、ADG停止同步

在实际生产系统中,通常有这样的场景,例如在系统维护日,对主库进行大量的业务更新,会有大量的DML操作;
为了避免主库中的业务更新对备库造成影响,可以暂停主库对备库的日志传输,这样的话,如果主库的更新出现问题,备库还保留一份完整的数据镜像,可以执行 failover(失败切换)。

1、停止同步:

主库:

(1)、在主库上面查看备份的归档路径

SQL> show parameter log_archive_dest_2
NAME                                                 TYPE            VALUE
------------------------------------ ----------- ----------------------------------------------------------------------------------------------------------------
log_archive_dest_2                        string          SERVICE=flame ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=mesorcl
SQL> show parameter log_archive_dest_state_2
NAME                                             TYPE                         VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_state_2           string                  ENABLE

(2)、通过设置 defer 参数来暂停主库对备库的日志传输

SQL> alter system set log_archive_dest_state_2 = 'defer';

(3)、执行归档日志切换测试,查看备机是否不再同步

SQL> alter system switch logfile; 
System altered.

备库:

停止同步数据:

SQL> alter database recover managed standby database cancel;

2、恢复数据同步

备库:

SQL>alter database recover managed standby database using current logfile disconnect from session;

主库:

恢复主库到备份的日志传输,暂停日志传输后的归档日志会全部传输到备库,不会导致备库的归档日志gap

SQL> alter system set log_archive_dest_state_2 = 'enable'; 
System altered.

档日志切换测试,查看备机

select unique thread#,max(sequence#) over(partition by thread#)last from v$archived_log;

 

 

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2022年1月18日

admin

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

COPYRIGHT © 2022 拓扑园. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

鲁ICP备2021020523号

鲁ICP备2021020523号