专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »数据库 » oracle数据库:Oracle和SQL Server数据库镜像对比 »正文

oracle数据库:Oracle和SQL Server数据库镜像对比

来源: 发布时间:星期三, 2009年4月1日 浏览:7次 评论:0


  数据库镜像是将数据库事务处理从个数据库移动到区别环境中个数据库中镜像拷贝是个备用拷贝不能直接访问它只用在恢复情况下Oracle数据库和MSSQL数据操作上有很大区别但是在镜像操作方面有类比地方这篇文章有关MSSQL数据库镜像在Oracle数据库中是如何实现它们的间存在哪些差异呢

  首先微软SQL数据库中镜像数据库类似于Oracle数据库中备用数据库我说只是类似确切我们需要考虑区别数据库在自己体系中差异MSSQL作为个例子来操作个例子包含几个数据库你首先要登录个例子然后选择哪个数据库作用于该例子而在Oracle数据库中简单模式(忽略RAC)就只有个数据库和个例子相联系因此可以这么说在Oracle数据库中备份数据库(standby database)就完全是主数据库快照而在MSSQL中镜像数据库仅仅是选择那个数据库备份但没有包括代理登录任务(这些或者更多数据库项目需要单独在数据库镜像上创建或者复制)这些外部数据项

  在服务器数量上Oracle主数据库和备用数据库配置最小需要2台在MSSQL中最小数据是2个或3个根据你所选择高可用性、高安全性、高性能方式所决定

  高可用性方式:这个操作模式选项允许你在两台服务器上同步事务写入并支持自动恢复要使用这个选项你必须还要使用个证人服务器

  高保护方式:这个选项可以让你在两台服务器上同步事物写入但是恢复是手工自动恢复不是这个选项部分所以也不会用到证人服务器

  高性能方式:这个选项不关心两台服务器上写入是否是同步因此在性能上有所提高当使用这个选项时候你只能假设镜像服务器上所有事情都是成功完成这个选项只允许手工恢复因此不会用到证人服务器

  为了保证故障自动恢复就需要有第 3台服务器可以称的为目击者(另外两个就是主数据库和镜像数据库)你可以将这个目击者当作群集中个成员它实现了2比1投票能力当我个组件不可达并因此需要进行恢复时候证人服务器只有在你想实现自动恢复时候才需要用到

  在Oracle数据个事务中日志缓冲器在废数据写入数据文件(忽略write-ahead情况)前被刷新或者写入到redo日志中这种刷新或者写入到redo日志行为是有必要如像例子失败(使用前滚和回滚恢复过程)这样事件发生时MSSQL也承认将日志缓冲器写入到磁盘重要性不过这里称的为硬化(hardening)首先将事务日志缓冲器信息写入到磁盘或者硬化接着将日志记录块发送到镜像数据库中镜像数据库接收到该日志记录块后将的存入到某个缓冲器中随后依次硬化该日志记录块

  当数据发生变化时MSSQL数据库如何保持主数据库和镜像数据库致性呢?

  Oracle用户非常熟悉SCN而MSSQL用户通过使用mirroring_failover_lsn机制(粗略来讲就是个日志序列号)MSSQL和Oracle区别MSSQL将事务分离(两个事务在两个机器上)而不是个分布式事务(在自身提交前需要远程等待提交)

  另外个相似点但稍微有些畸变反射就是redo日志和事务日志在Oracle中完成redo日志将被发送到远程服务器中将完成redo日志应用到备份数据中去在MSSQL中,事务日志没有被传输但是就像我以上提到日志缓冲器数据发送到网络上这就导致另外个镜像反射:备份和恢复模式

  在Oracle中当你处于归档模式或者非归档模式时候这些操作是内定如果归档redo日志被传输或者提交到个远程服务器那么主数据库明显就是在归档模式下那些文件就是这么产生运行在这种模式下允许有少量数据丢失在发生故障(无论什么样故障)前恢复能够在任意个点上执行在MSSQL中是类似但是有 3种状态需要选择

  SQL Server联机丛书像许多其它在线资源讲述了在使用MSSQL时3种恢复模式区别点快速比较有:MSSQL完整模式对应于Oracle中归档模式;简单模式对应于非归档模式;bulk模式和使用直接路径插入添加提示或者和nologging模式操作类似

  根据以上 3种模式(这 3种模式很容易转换不需要关机或者重启)描述以及日志缓冲器和归档redo日志讨论中很容易断定在MSSQL中进行数据库镜像需要将数据回复模式设置成完全模式(full model)简单模式(Simple model)或许也能行但是这种模式下维持事务日志中小部分数据在备份中如果在日志被删节了整个镜像过程也就破环了当你在将事务发送到镜像数据库中时候如果日志被删节了这个过程就不能完成

  说到数据库被破坏该如何办呢?

  这正是镜像(或者说备份)主要目:当主数据库断开或者说遇到故障时候我们希望系统能回到镜像前或者备份前状况去这如何才能实现呢?我们能自动实现或者手动实现想实现这些需要些已经完成设置在MSSQL中自动故障恢复回到原来状态需要在HA模式事务安全是full数据传输是同步有目击服务器情况下这种模式下运行还需要使用企业版数据库系统高安全性和高性能在标准版情况下也能实现

  MSSQL还有其它版本选择但是这些并不如Oracle反射“干净”这些版本包括:Developer、Workgroup 和 SQL Express举个例子目击服务器能够是任何版本但是如果你想给镜像服务器做个快照那么你就需要企业或者开发版

  在设置伙伴(partner通常有主数据库和镜像数据库组成)过程中他们恢复状态开始起作用通过使用相同名字镜像在远程/镜像服务器上建立(使用配置数据库镜像安全向导是最简单思路方法)起来并且镜像数据库被设置成NORECOVERY通常它是恢复(recovering)状态在MSSQL中恢复数据库是没有因此没有进行上述设置是不能被其他用户当作只读数据库来使用

  为了避免这个中缺陷你可以给镜像做个快照使得该“影像”对用户可见正如我上述所提到那样这需要你数据库版本是企业(或者开发)版这就意味着用户需要有快照数据库知识知道如何进入存储它如何告诉应用使用哪个数据库惯例上来说配置文件使用.NET环境你能建立个主数据库和个故障回滚辅数据库如果在Oracle中配置过备份数据库你就会觉得这很类似



  结论

  这篇文章内容包括按照Oracle方式如何更好理解在另种主流RDBMS上执行镜像或者复制试着学习和解释你RDBMS如何工作从另外种模式来得到你注意有助于你搞清楚你当前数据库系统运行原理举个例子我发现非常有实用价值是Oracle归档模式和MSSQL 3种恢复模式的间关系使用在MSSQL中些术语(伙伴主数据库目击镜像)有助于你构成和识别Oracle中执行数据库镜像操作

  为了更好评价数据库镜像是如何运作如何实施你可以运行两个单独MSSQL例子操作系统是XP或者是2003都没有关系按照MSDN联机丛书步骤完成下载或者选用AdventureWorks数据库(类似于OracleHR/SH数据库等这些都没有预安装)将其镜像到主机服务器上呈现在你面前不仅仅是另外个数据所具有功能特性你将还会看到MSSQL所具有操作得到自己正确评价(我平时使用是Oracle数据库测试用是MSSQL反过来说你平时使用是MSSQL现在用Oracle来测试也会有新发现)
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: