oracle DG 原理
在Oracle中,什么是DG?DG有哪些优缺点?
DG(Data Guard,数据卫士)不是一个备份恢复的工具,然而,DG却拥有备份的功能,在物理DG下它可以和主库一模一样,但是它存在的目的并不仅仅是为了备份恢复数据,应该说它的存在是为了确保企业数据的高可用性,数据保护以及灾难恢复。DBA可以通过将一些操作(例如查询报表)转移到备库执行的方式来减小主库的压力,构建高可用的企业数据库应用环境。
在DG环境中,至少有两个数据库,一个处于OPEN状态对外提供服务,这个数据库叫作主库(Primary Database)。第二个处于恢复状态,叫作备库(Standby Database)。在通常情况下,主库对外提供服务,用户在主库上进行操作,操作被记录在联机日志和归档日志中,这些日志通过网络传递给备库,然后在备库上被应用,从而实现主库和备库的数据同步。Oracle对这一过程进一步地优化设计,使得日志的传递、恢复工作更加自动化、智能化,并且提供一系列参数和命令简化了DBA工作。如果软硬件升级,那么可以把备库切换为主库继续对外服务,这样既减少了服务停止时间,并且数据不会丢失。如果异常原因导致主库不可用,那么也可以把备库强制切换为主库继续对外服务,这时数据损失都和配置的数据保护级别有关系。所以,Primary和Standby只是一个角色概念,并不固定在某个数据库中。
每个技术都有其优缺点,下面来看看DG有哪些优缺点。
DG的优点主要有以下几点内容:
① 灾难恢复及高可用性。
② 全面的数据保护。
③ 有效利用系统资源。
④ 在高可用及高性能之间更加灵活的平衡机制。
⑤ 故障自动检查及解决方案。
⑥ 集中的、易用的管理模式。
⑦ 自动化的角色转换。
DG的缺点主要有以下几点内容:
① 由于传输整个日志文件,所以,需要较高的网络传输带宽。
② 在Oracle 11g之前的物理备库虽然可以以只读方式打开,然后执行查询、报表等操作,但需要停止应用日志,这将使目标库与源数据不能保持同步,如果在此期间源数据库发生故障,那么将延长切换的时间。从Oracle 11g开始,ADG可以在数据库打开的情况下应用日志,这极大地提高了DG的应用范围。
③ 逻辑备库不能支持某些特定的数据对象和数据类型。
④ 不支持双向复制,所以,无法应用于信息集成的场合。
⑤ 只能复制整个数据库,不能选择某个SCHEMA或表空间或表进行单独复制。
⑥ 不支持异构的系统环境,需要相同的操作系统版本和数据库版本(Oracle 11g支持部分异构平台)。
DG基本原理是:
将日志文件从 原数据库 传输到 目标数据库,然后在目标数据库上应用这些日志文件,从而使目标数据库与源数据库保持同步,是一种数据库级别的高可用方案。
DG整个过程分成3部分:
日志发送(Redo Send)
日志接收(Redo Receive)
日志应用(Redo Apply)
两种日志传送方式:
主库 primary database 在运行过程中,会不断产生redo重做日志,这些日志需要发送到备库 standby database,这个发送动作可以由
主库的两种日志传输方式 来完成:
ARCH进程
LGWR进程
ARCH进程,可以理解为 传归档日志
LGWR进程,可以理解为 传重做日志
主库产生了日志以后,通过 LGWR进程 写入在线重做日志
重做日志满足一定的条件,会切换
如果开了归档,重做日志就会归档,通过ARC0归档进程(编号有累加)将该日志归档
另外一个归档进程 通过网络 将归档日志传输到备库
备库上的【RFS】负责接收日志
接收以后,有两种情况:–【接收以后的动作】参考这里
1.如果备库配置了Standby RedoLogs,会将传输过来的日志复制到这里
然后将备用日志归档到本地的归档目录里去,再应用归档
2.如果备库没有配置Standby RedoLogs,RFS接收到日志后
会直接放到本地的归档目录,然后再应用日志 --奇怪,还是要放到归档目录
应用日志也有两种:
物理的叫MRP进程
逻辑的叫LSP进程
dg就是这两个进程,ARCH和LGWR,搞清楚了就好了
一个是归档进程
一个是重做日志
不同的日志应用方式的详解:
DG ARCH进程 详解:
主库:
产生日志后通过LGWR进程写入在线重做日志,当满足相关条件后在线重做日志会进行切换,ARC0进程归档该日志至主库本地的归档目录,归档完成后,ARC1进程就会将归档日志传输到备库
备库:
RFS进程负责接收日志
1)如果备库有Standby重做日志,则把日志复制到Standby重做日志,接着把Standby重做日志归档至备库本地归档目录,最后应用归档
2)如果没有配置Standby重做日志,RFS进行接收日志后,直接把它放到备库的归档目录下,再应用该日志
使用 ARCH 进程存在的问题:
主库 只有在发生归档时 才会发送日志到备库
如果主库异常宕机,联机日志中的redo内容就会丢失,因此使用ARCH进程 无法避免数据丢失 的问题,要想避免数据丢失,就必须使用LGWR,而使用LGWR又分为 同步和异步 两种方式
12c增加了 fast sync模式
LGWR ASYNC --异步过程详解
主库:
产生日志,只要有新的重做日志产生,LGWR进程就触发LNSn进程把新生成的重做日志传输到备库
ASYNC是 redo buffer 保存到 online redo log 后,LNSn才开始传输
备库:
RFS进程负责接收日志,接收日志后将其写入Standby重做日志,如果备库开启了实时应用,就立即做日志应用,如果没有开启,则等Standby重做日志 归档后 再应用
LGWR-SYNC --同步过程详解
主库:产生日志,只要有新的重做日志产生,LGWR进程就将触发 LNSn进程 把新生成的重做日志传输到备库
SYNC是在 redo buffer 时,LNSn进程就开始传输
备库:RFS进程负责接收日志,接收到日志后将其写入Standby重做日志,如果备库开启了实时应用,就立即做日志应用,如果没有开启,则等Standby重做日志 归档后 再应用
同步的弊端:
同步的方式,传输到备库后,需要等待回复,如果因为网络问题一直等待回复,会卡死,把主库挂死(所以感觉同步还是有很大的风险的),会影响生产,数据是一致的,但是生产挂了。
DG三种数据保护模式:
最大保护:可以保证主库、备库同步,任何情况下主库的损毁都不会导致已提交的数据丢失。如果主库和备库之间的网络出现问题,或者备库本身出现问题,都会导致主库停止数据处理
最大可用:保证主库和备库的同步,与上面的区别是当网络或备库不可用时,主库仍可以继续。该保护模式下,零数据丢失
最大性能:缺省模式,主库、备库是异步的,这种模式可能在主库出现损毁时,丢失一部分数据。但是这种模式对主库的负荷最小,因此具有最好的性能。
主从切换:
switchover:无损的
failover:破坏性的操作
DG 归档裂缝 检测和解决
当主库的某些日志没有成功发送到备库,这时候发生了归档裂缝(archive gap),缺失的这些日志就是裂缝
dg能够自动检测,解决归档裂缝,不需要DBA介入
这需要配置 FAL_CLIENT,FAL_SERVER 这两个参数
FAL_CLIENT 通过网络向 FAL_SERVER 发送请求
FAL_SERVER 通过网络向FAL_CLIENT 发送缺失的日志
除了自动解决,DBA也可以手工解决
12c Far Sync 两地三中心:
12c后,在主备之间放一个远程同步实例,可以放在距离主库较近的异地,专门接收日志
通过 sync 的方式把 redo传输到 far sync 实例,然后通过 async的方式 传输到终端灾备数据库
在此过程中,如果 far sync 实例 出现问题,生产数据库可以直接通过 async 方式把 redo 传输到 灾备数据库
相关文章:
oracle DG 原理
在Oracle中,什么是DG?DG有哪些优缺点? DG(Data Guard,数据卫士)不是一个备份恢复的工具,然而,DG却拥有备份的功能,在物理DG下它可以和主库一模一样,但是它存…...
MySQL篇—持久化和非持久化统计信息介绍(第一篇,总共三篇)
☘️博主介绍☘️: ✨又是一天没白过,我是奈斯,DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux,也在积极的扩展IT方向的其他知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章,并且也会默默的点赞收藏加关注❣…...
Leetcode—65. 有效数字【困难】
2024每日刷题(118) Leetcode—65. 有效数字 实现代码 class Solution { public:bool isNumber(string s) {if(s.empty()) {return false;}bool seenNum false;bool seenE false;bool seenDot false;for(int i 0; i < s.size(); i) {switch(s[i]…...
【Java程序设计】【C00322】基于Springboot的高校竞赛管理系统(有论文)
基于Springboot的高校竞赛管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的高校竞赛管理系统,本系统有管理员、老师、专家以及用户四种角色; 管理员:首页、个人中心、管…...
41、网络编程/TCP.UDP通信模型练习20240301
一、编写基于TCP的客户端实现以下功能: 通过键盘按键控制机械臂:w(红色臂角度增大)s(红色臂角度减小)d(蓝色臂角度增大)a(蓝色臂角度减小)按键控制机械臂 1.基于TCP服务器的机械臂…...
Python中操作MySQL和SQL Server数据库的基础与实战【第97篇—MySQL数据库】
Python中操作MySQL和SQL Server数据库的基础与实战 在Python中,我们经常需要与各种数据库进行交互,其中MySQL和SQL Server是两个常见的选择。本文将介绍如何使用pymysql和pymssql库进行基本的数据库操作,并通过实际代码示例来展示这些操作。…...
【兔子机器人】五连杆运动学解算与VMC(virtual model control)
VMC (virtual model control,虚拟模型控制) 是一种直觉控制方式,其关键是在每个需要控制的自由度上构造恰当的虚拟构件以产生合适的虚拟力。虚拟力不是实际执行机构的作用力或力矩,而是通过执行机构的作用经过机构转换而成。对于一些控制问题…...
学习鸿蒙基础(6)
一、Prop属性 父——>子 单向同步 Prop装饰的变量可以和父组件建立单向的同步关系。Prop装饰的变量是可变的,但是变化不会同步回其父组件。Prop装饰的变量和父组件建立单向的同步关系。Prop变量允许在本地修改,但修改后的变化不会同步回父组件。当父组…...
标准PoE交换机、非标准PoE交换机和非PoE交换机三者到底有何区别?
目录 前言: 一、标准PoE交换机 1.1 工作原理 1.2 应用场景 1、视频监控 2、无线接入点 3、IP电话 1.3 优势 1、简化布线 2、简化安装 3、提高可靠性 二、非标准PoE交换机 2.1 工作原理 2.2 应用场景 1、无线路由器 2、IP电话 3、数据中心 2.3 优势…...
【软件测试】--功能测试4-html介绍
1.1 前端三大核心 html:超文本标记语言,由一套标记标签组成 标签: 单标签:<标签名 /> 双标签:<标签名></标签名> 属性:描述某一特征 示例:<a 属性名"属性值"> 1.2 html骨架标签 <!DOC…...
模型优化_XGBOOST学习曲线及改进,泛化误差
代码 from xgboost import XGBRegressor as XGBR from sklearn.ensemble import RandomForestRegressor as RFR from sklearn.linear_model import LinearRegression as LR from sklearn.datasets import load_boston from sklearn.model_selection import train_test_split,c…...
Java8 - LocalDateTime时间日期类使用详解
🏷️个人主页:牵着猫散步的鼠鼠 🏷️系列专栏:Java全栈-专栏 🏷️个人学习笔记,若有缺误,欢迎评论区指正 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默&…...
3D城市模型可视化:开启智慧都市探索之旅
随着科技的飞速发展,我们对城市的认知已经不再局限于平面的地图和照片。今天,让我们领略一种全新的城市体验——3D城市模型可视化。这项技术将带领我们走进一个立体、生动的城市世界,感受前所未有的智慧都市魅力。 3D城市模型通过先进的计算机…...
某查查首页瀑布流headers加密
目标网站: 某查查 对目标网站分析发现 红框内的参数和值都是加密的,是根据算法算出来的,故进行逆向分析。 由于没有固定参数名,只能通过搜索headers,在搜索的位置上打上断点,重新请求。 断点在此处断住&a…...
Microsoft Visio 文本框上标或下标
Microsoft Visio 文本框上标或下标 1. 文本框公式2. 选中需要成为上标或下标的部分,开始 - > 段落 -> 字体 -> 常规 -> 位置 -> 上标 / 下标3. 文本框公式4. 快捷键References 1. 文本框公式 2. 选中需要成为上标或下标的部分,开始…...
Java项目:29 基于SpringBoot+thymeleaf实现的图书管理系统
作者主页:源码空间codegym 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 基于SpringBootthymeleaf实现的图书管理系统分为管理员、读者两个登录角色,一共是8个功能模块 管理员权限 图书管理:…...
Unity游戏项目中的优化之摄像机视锥体剔除优化
在项目中一个完成的游戏场景一般都会有成千上百的物体,假如都去让GPU全部渲染一遍,那带来的消耗其实是挺大的,很多不在摄像机范围内的物体其实没有必要去渲染,尽管GPU自带剔除,但是如果从CPU阶段就提交给GPU指令——哪…...
超1000本计算机经典书籍分享(均可免费下载)
今天给大家推荐两个开源项目,均可百度网盘下载: 1 https://gitee.com/ForthEspada/CS-Books 超过1000本的计算机经典书籍、个人笔记资料以及作者在各平台发表文章中所涉及的资源等。 书籍资源包括C/C、Java、Python、Go语言、数据结构与算法、操作系统…...
AI大模型提供商有哪些?
AI大模型提供商:引领人工智能创新浪潮 随着人工智能技术的迅猛发展,AI大模型成为了推动行业变革和创新的核心驱动力之一。作为AI领域的重要参与者,AI大模型提供商扮演着关键的角色。本文将围绕这一主题,介绍几家在AI大模型领域具…...
【Linux】部署单机项目(自动化启动)
目录 一.jdk安装 二.tomcat安装 三.MySQL安装 四.部署项目 一.jdk安装 1.上传jdk安装包 jdk-8u151-linux-x64.tar.gz 进入opt目录,将安装包拖进去 2.解压安装包 防止后面单个系列解压操作,我这边就直接将所有的要用的全部给解压,如下图注…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
