Oracle10g Data Guard (Standby) 理论与实践

本文深入解析了Oracle10gDataGuard的数据保护模式,包括最大保护、最大可用性和最大性能三种模式的原理、配置和操作流程。重点介绍了如何通过设置LGWR、网络传输模式和StandbyRedoLog来实现数据的一致性和保护,以及自动ArchiveGAP检测和解决机制。

Oracle10g Data Guard (Standby) 理论与实践 
1. ARCH网络传输模式
Primary DB中一旦ARC0完成redo log的归档,ARC1进程即开始传输该归档到Standby库
指定的路径,在Standby上的RFS(Remote File Server) 进程轮流将redo数据写入standby
redo log,  再由standby上的ARCn进程将其写入Standby归档日志,然后通过redo应用
(物理备库) 或 SQL应用(逻辑备库)将数据应用到Standby库 (物理备库采用MRP进程-
Media Recovery process , 逻辑备库采用LSP-Logical Standby Process) . 
备注: 如果是Real Time Apply,  直接从Standby redo log通过MRP或LSP应用到standby库。
如果不存在Standby redo log文件,那么ARC1进程通过Net将归档发送给Standby的RFS, RFS
把接收到的日志写入归档日志,由MRP进程对归档进行应用。 
 

2. LGWR 网络传输模式
Standby数据库的LGWR进程会先选择一个standby redo log文件映射primary数据库当前
redo log的sequence(以及文件大小),一旦primary数据库有redo数据产生,会以同步(SYNC)
或非同步(ASYNC)方式传输到standby数据库。

SYNC属性(默认是SYNC):  primary数据库任何时候产生redo操作都会同步触发网络I/O,
并且等到网络I/O全部完成才会继续下面的提交; 即  LGWR必须等待写入本地日志文件
操作和通过LNSn进程的网络传送都成功,Primary Database 上的事务才能提交 。
ASYNC属性 : LGWR 把日志同时提交给日志文件和本地LNS 进程,但是LGWR进程只需成功
写入日志文件就可以,不必等待LNSn进程的网络传送成功。

如果使用LGWR进程必须明确指定。使用LGWR SYNC方式时,可以同时使用NET_TIMEOUT参
数,这个参数单位是秒,代表如果多长时间内网络发送没有响应,LGWR 进程会抛出错误。
示例如下:
alter system set log_archive_dest_2 = 'SERVICE=ST LGWR  SYNC NET_TIMEOUT=30'scope=both;
 
 

3. LGWR 网络传输工作流程
在primary数据库,LGWR提交redo数据到LNSn  (LGWR Network Server process, 存在的
目的就是减轻LGWR进程的负担)进程(n>0),LNSn启动网络传输(传输给standby上的RFS)。
standby的RFS(Remote File Server)将接收到的redo数据写入standby redo log。
一旦primary数据库执行日志切换,就会级联触发standby的ARCn将standby redo写入
归档,然后通过redo应用(MRP进程)或sql应用(LSP进程)读取归档文件将数据应用至
standby数据库。默认情况下,LGWR网络传输模式使用的是这种读取归档文件应用的
方式,即
SQL> alter database recover managed standby database disconnect from session;
这种不是实时应用的方式,如果需要修改为Real Time Apply ,需要:
SQL> alter database recover managed standby database using current
 logfile disconnect from session ;
如果启用了实时应用的话,MRP/LSP会直接读取standby redo log并应用到standby
数据库,无须再等待归档 。
 
 
4. Redo 接收 .
Standby Database 的RFS(Remote File Server)进程接收到日志后,就把日志写
到Standby Redo Log或者Archived Log文件中,具体写入哪个文件,取决于Primary
的日志传送方式和Standby database的位置。如果写到Standby Redo Log文件中,
则当Primary Database发生日志切换时,也会触发Standby Database上的Standby
Redo Log 的日志切换,并把这个Standby Redo Log 归档。 如果是写到Archived
Log,那么这个动作本身也可以看作是个归档操作。
 
 

5. Redo Apply .
根据Redo Apply发生的时间可以分成两种:
 
一种是实时应用(Real-Time Apply), 这种方式必须Standby Redo Log,每当日志被写
入Standby RedoLog时,就会触发恢复,使用这种方式的好处在与可以减少数据库切换
(Switchover 或者Failover)的时间,因为切换时间主要用在剩余日志的恢复上。
 
另一种是归档时应用,这种方式在Primary Database发生日志切换,触发Standby
Database 归档操作,归档完成后触发恢复。 这也是默认的恢复方式。
 
归档时应用:
Alter database recover managed standby database disconnect from session ;
 
Real-Time应用(物理):
Alter database recover managed standby database using current logfile
 disconnect from session ;
Real-Time应用(逻辑):
Alter database start logical standby apply immediate;
 
 

5. 查看相关视图  .
查看是否使用Real-Time apply:
Select recovery_mode from v$archive_dest_status;
select process,status,thread#,sequence#,client_pid from v$managed_standby;
 
 
 
6. Primary DB及Standby上的相关进程
在Primary DB中,相关的主要进程有:
 
LGWR:写log进程, 用于将SGA中log buffer的内容写入redo log文件。
 
LNS(Logwriter Network Service):用于读取LGWR进程flush的redo,并将其
传输到Standby。其存在的目的就是减轻LGWR进程的负担。
 
ARCH:依然是将已经写满的ORL文件进行归档。但是会有一个比较特殊的ARCH会
用于redo log gap的定位与恢复。

在Standby中,相关的进程有:
RFS(Remote File Server):接收PDB发送的redo data,并将这些放入
network buffer中的内容写入standby redo log(SRL)。
ARCH:同Primary上的ARCH进程作用类似,为standby redo log文件产生相应的归档文件。
MRP(Managed Recovery Process):用于协调介质恢复管理,唤起物理standby为
永久的恢复模式。它还负责将redo data从相应的SRLs或归档文件中读入到用于恢复的共享空间结构。
LSP(Logical Standby Process):该进程主要是在逻辑standby中协调SQL Apply的。
       
PR0x(recovery server Process):读取SRL或归档日志文件中的redo,并将其应用于SDB上。
 
 
 

7. 数据保护模式
 
Data Guard 允许定义3钟数据保护模式,分别是最大保护(Maximum Protection),最大可用(Maximum
Availability)和 最大性能(Maximum Performance)。
 
 
 
a. 最大保护(Maximum Protection)
 
这种模式能够确保绝无数据丢失。要实现这一步当然是有代价的,它要求所有的事务在提交前其REDO不仅被
写入到本地的Online Redologs,还要同时写入到Standby数据库的Standby Redologs,并确认REDO数据至少
在一个Standby数据库中可用(如果有多个的话),然后才会在Primary数据库上提交。如果出现了什么故障
导致Standby数据库不可用的话(比如网络中断),Primary数据库会被Shutdown,以防止数据丢失。
 
使用这种方式要求Standby Database 必须配置Standby Redo Log,而Primary Database必须使用LGWR,SYNC
,AFFIRM 方式归档到Standby Database.
 
最大保护:   
进程LGWR  
网络传输模式LGWR SYNC 
Standby Redo Log:   需要
磁盘写操作:  AFFIRM
 
 
b. 最高可用性(Maximum availability)
 
这种模式在不影响Primary数据库可用前提下,提供最高级别的数据保护策略。其实现方式与最大保护模式类
似,也是要求本地事务在提交前必须至少写入一台Standby数据库的Standby Redologs中,不过与最大保护模
式不同的是,如果出现故障导致Standby数据库无法访问,Primary数据库并不会被Shutdown,而是自动转为
最高性能模式,等Standby数据库恢复正常之后,Primary数据库又会自动转换成最高可用性模式。
 
这种方式虽然会尽量避免数据丢失,但不能绝对保证数据完全一致。这种方式要求Standby Database 必须配
置Standby Redo Log,而Primary Database必须使用LGWR,SYNC,AFFIRM 方式归档到Standby Database.
 
最大可用 :   
进程LGWR 
网络传输模式LGWR SYNC 
Standby Redo Log:   需要
磁盘写操作:   AFFIRM
 
 
 
c. 最高性能(Maximum performance)
 
缺省模式。 这种模式在不影响Primary数据库性能前提下,提供最高级别的数据保护策略。事务可以随时提
交,当前Primary数据库的REDO数据至少需要写入一个Standby数据库,不过这种写入可以是不同步的。如果
网络条件理想的话,这种模式能够提供类似最高可用性的数据保护,而仅对Primary数据库的性能有轻微影响
。这也是创建Standby数据库时,系统的默认保护模式。
 
这种方式可以使用LGWR ASYNC 或者 ARCH 进程实现,Standby Database也不要求使用Standby Redo Log。
最大性能:
进程LGWR/ARCH    
网络传输模式LGWR SYNC/LGWR ASYNC/ARCH
Standby Redo Log:  LGWR时需要, ARCH传输时建议有.
磁盘写操作:  NOAFFIRM
 
 
d. 修改数据保护模式步骤
 
1)关闭数据库,重启到Mount 状态,如果是RAC,需要关闭所有实例,然后只启动一个实例到mount状态。
2)修改模式:
语法:ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE {PROTECTION | AVAILABILITY |
PERFORMANCE};
如:SQL>ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PROTECTION;
3) 打开数据库: alter database open;
4) 确认修改数据保护模式:
SQL>select protection_mode,protection_level from v$database;
 

 
8. 自动Archive GAP检测和解决
 
 
当Primary Database的某些日志没有成功发送到Standby Database, 这时候发生了归档裂
缝(Archive Gap)。
 
缺失的这些日志就是裂缝(Gap)。 Data Guard能够自动检测,解决归档裂缝,不需要DBA
的介入。这需要配置FAL_CLIENT, FAL_SERVER 这两个参数(FAL: Fetch Archive Log)。
这两个参数都是在Standby上设置的。
 
从FAL 这个名字可以看出,这个过程是Standby Database主动发起的“取”日志的过程,
Standby Database 就是FAL_CLIENT. 它是从FAL_SERVER中取这些Gap, 10g中,这个
FAL_SERVER可以是Primary Database, 也可以是其他的Standby Database。
 
如:FAL_SERVER='PR1,ST1,ST2';
 
FAL_CLIENT和FAL_SERVER两个参数都是Tnsnames Name。 FAL_CLIENT 通过网络向
FAL_SERVER发送请求,FAL_SERVER通过网络向FAL_CLIENT发送缺失的日志。 但是这
两个连接不一定是一个连接。 因此FAL_CLIENT向FAL_SERVER发送请求时,会携带
FAL_CLIENT参数值,用来告诉FAL_SERVER应该向哪里发送缺少的日志。 这个参数
值也是一个Oracle Net Name,这个Name是在FAL_SERVER上定义的,用来指向
FAL_CLIENT.
 
当然,除了自动地日志缺失解决,DBA 也可以手工解决。 具体操作步骤如下:
 
1) 查看是否有日志GAP:
SQL> SELECT UNIQUE THREAD#, MAX(SEQUENCE#) OVER(PARTITION BY THREAD#) LAST FROM V$ARCHIVED_LOG;
SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;
2) 如果有,则拷贝过来
 
3) 手工的注册这些日志:
SQL> ALTER DATABASE REGISTER LOGFILE '路径';
 
 
 
9. VALID_FOR

VALID_FOR=(ALL_LOGFILES, ALL_ROLES)
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-707981/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/35489/viewspace-707981/

本系统采用Python编程语言中的Flask框架作为基础架构,实现了一个面向二手商品交易的网络平台。该平台具备完整的前端展示后端管理功能,适合用作学术研究、课程作业或个人技术能力训练的实际案例。Flask作为一种简洁高效的Web开发框架,能够以模块化方式支持网站功能的快速搭建。在本系统中,Flask承担了核心服务端的角色,主要完成请求响应处理、数据运算及业务流程控制等任务。 开发工具选用PyCharm集成环境。这款由JetBrains推出的Python专用编辑器集成了智能代码提示、错误检测、程序调试自动化测试等多种辅助功能,显著提升了软件编写维护的效率。通过该环境,开发者可便捷地进行项目组织问题排查。 数据存储部分采用MySQL关系型数据库管理系统,用于保存会员资料、产品信息及订单历史等内容。MySQL具备良好的稳定性和处理性能,常被各类网络服务所采用。在Flask体系内,一般会配合SQLAlchemy这一对象关系映射工具使用,使得开发者能够通过Python类对象直接管理数据实体,避免手动编写结构化查询语句。 缓存服务由Redis内存数据库提供支持。Redis是一种支持持久化存储的开放源代码内存键值存储系统,可作为高速缓存、临时数据库或消息代理使用。在本系统中,Redis可能用于暂存高频访问的商品内容、用户登录状态等动态信息,从而加快数据获取速度,降低主数据库的查询负载。 项目归档文件“Python_Flask_ershou-master”预计包含以下关键组成部分: 1. 应用主程序(app.py):包含Flask应用初始化代码及请求路径映射规则。 2. 数据模型定义(models.py):通过SQLAlchemy声明数据库表对应的类结构。 3. 视图控制器(views.py):包含处理各类网络请求并生成回复的业务函数,涵盖账户管理、商品展示、订单处理等操作。 4. 页面模板目录(templates):存储用于动态生成网页的HTML模板文件。 5. 静态资源目录(static):存放层叠样式表、客户端脚本及图像等固定资源。 6. 依赖清单(requirements.txt):记录项目运行所需的所有第三方Python库及其版本号,便于环境重建。 7. 参数配置(config.py):集中设置数据库连接参数、缓存服务器地址等运行配置。 此外,项目还可能包含自动化测试用例、数据库结构迁移工具以及运行部署相关文档。通过构建此系统,开发者能够系统掌握Flask框架的实际运用,理解用户身份验证、访问控制、数据持久化、界面动态生成等网络应用关键技术,同时熟悉MySQL数据库运维Redis缓存机制的应用方法。对于入门阶段的学习者而言,该系统可作为综合性的实践训练载体,有效促进Python网络编程技能的提升。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
在当代储能装置监控技术领域,精确测定锂离子电池的电荷存量(即荷电状态,SOC)是一项关键任务,它直接关系到电池运行的安全性、耐久性及整体效能。随着电动车辆产业的迅速扩张,业界对锂离子电池SOC测算的精确度稳定性提出了更为严格的标准。为此,构建一套能够在多样化运行场景及温度条件下实现高精度SOC测算的技术方案具有显著的实际意义。 本文介绍一种结合Transformer架构容积卡尔曼滤波(CKF)的混合式SOC测算系统。Transformer架构最初在语言处理领域获得突破性进展,其特有的注意力机制能够有效捕捉时间序列数据中的长期关联特征。在本应用中,该架构用于分析电池工作过程中采集的电压、电流温度等时序数据,从而识别电池在不同放电区间的动态行为规律。 容积卡尔曼滤波作为一种适用于非线性系统的状态估计算法,在本系统中负责对Transformer提取的特征数据进行递归融合实时推算,以持续更新电池的SOC值。该方法增强了系统在测量噪声干扰下的稳定性,确保了测算结果在不同环境条件下的可靠性。 本系统在多种标准驾驶循环(如BJDST、DST、FUDS、US06)及不同环境温度(0°C、25°C、45°C)下进行了验证测试,这些条件涵盖了电动车辆在实际使用中可能遇到的主要工况气候范围。实验表明,该系统在低温、常温及高温环境中,面对差异化的负载变化,均能保持较高的测算准确性。 随附文档中提供了该系统的补充说明、实验数据及技术细节,核心代码模型文件亦包含于对应目录中,可供进一步研究或工程部署使用。该融合架构不仅在方法层面具有创新性,同时展现了良好的工程适用性测算精度,对推进电池管理技术的进步具有积极意义。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
代码转载自:https://pan.quark.cn/s/9e296fe8986c 实验题目为“复杂模型机的设计实现”。 _1. 实验目的要求:目的:1. 熟练掌握并达成较为复杂的计算机原理。 2. 本实验增加了16条机器指令,全面运用所学的计算机原理知识,借助扩展的机器指令设计并编写程序,然后在CPU中执行所编写的程序。 要求:依照练习一和练习二的要求完成相应的操作,并上机进行调试和运行。 2. 实验方案:……实验报告的标题设定为“广东工业大学计组实验报告复杂模型机的设计实现六”,主要围绕计算机组成原理中的复杂模型机设计和实现展开。 实验的宗旨在于让学生深入理解和实际操作计算机原理,特别是通过增加16条机器指令,来全面运用所学知识设计程序,并在CPU中运行这些程序。 实验的具体要求包括:1. 掌握复杂的计算机工作原理,这要求学生不仅具备扎实的理论知识,还需要拥有将理论转化为实际操作的能力。 2. 实验中增加了16条机器指令,这涉及到计算机指令集的扩展和设计,可能包含算术运算、逻辑运算、数据传输和控制流程等指令。 3. 学生需要运用扩展的机器指令编写程序,并通过CPU进行运行和调试,这涉及到编程、汇编和CPU执行流程的理解。 4. 依照练习一和练习二的要求完成操作,这表明实验包含分阶段的练习任务,需要逐步完成并验证。 实验方案包括:1. 实验连线:保证硬件连接准确无误,这是任何电子实验的基础,对于计算机实验,这通常涵盖CPU、内存、输入/输出设备等组件的连接。 2. 实验程序:提供了范例程序,包括机器指令程序和微指令程序的微代码。 这部分内容展示了如何利用扩展的机器指令编写程序,以及对应的微指令实现,有助于理解计算机内部的低级操作。 在实验结果和数据处理部分,学生需要:1. 在程...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值