您的位置 首页 观点

Oracle与SQL Server数据库镜像比照

数据库镜像是将数据库事务处理从一个数据库移动到不同环境中的另一个数据库中。镜像的拷贝是一个备用的拷贝,不能直接访问,它只用在错误恢复的情况下。Oracle数据库与MSSQL数据操作上有很大的不同,但是

数据库镜像|0″>数据库镜像是将数据库业务处理从一个数据库移动到不同环境中的另一个数据库中。镜像的仿制是一个备用的仿制,不能直接拜访,它只用在过错康复的情况下。Oracle数据库与MSSQL数据操作上有很大的不同,可是,在镜像操作方面有类比的当地。这篇文章关于MSSQL数据库镜像Oracle数据库中是怎么完结的,它们之间存在哪些差异呢。

首要,微软SQL数据库中的镜像数据库相似于Oracle数据库中的备用数据库。我说的仅仅相似,确切的说,咱们需求考虑不同数据库在自己体系中的差异MSSQL作为一个实例来操作,一个实例包含几个数据库,你首要要登录一个实例,然后挑选哪个数据库作用于该实例。而在Oracle数据库中,简略形式(疏忽RAC)就只要一个数据库与一个实例相联系。因而,能够这么说,在Oracle数据库中,备份数据库(standby database)就彻底是主数据库的快照。而在MSSQL中,镜像数据库仅仅是挑选的那个数据库的备份,但没有包含署理,登录,使命(这些或许更多的数据库项目需求独自在数据库镜像上创立或许仿制)这些外部数据项。

在服务器数量上,Oracle的主数据库和备用数据库装备最小需求2台。在MSSQL中,最小数据是2个或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中是相似的,可是有三种情况需求挑选。

《SQL Server联机丛书》,像许多其它的在线资源相同,叙述了在运用MSSQL时,3种康复形式的不同点。快速的比较有:MSSQL完好形式对应于Oracle中的归档形式;简略形式对应于非归档形式;bulk形式与运用直接途径刺进,增加提示,或许与nologging形式操作相似。

依据以上三种形式(这三种形式很简略转化,不需求关机或许重启)的描绘以及日志缓冲器和归档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三种康复形式之间的联系。运用在MSSQL中的一些术语(同伴,主数据库,目睹,镜像)有助于你构成和辨认Oracle中履行数据库镜像的操作。

为了更好的点评数据库镜像是怎么运作,怎么施行的,你能够运转两个独自的MSSQL实例,操作体系是XP或许是2003都没有联系。依照MSDN联机丛书的过程完结一遍。下载或许选用AdventureWorks数据库(相似于Oracle的HR/SH数据库等。这些都没有预装置的),将其镜像到主机服务器上。出现在你面前的不仅仅是别的一个数据的所具有功用特性,你将还会看到MSSQL所具有的操作,得到自己的正确点评(我平常运用的是Oracle数据库,测验用的是MSSQL,反过来说,你平常运用的是MSSQL,现在用Oracle来测验的话,也会有新的发现)。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/guandian/187601.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部