唐山网站建设

设为主页 加入收藏 繁體中文

Oracle数据库与SQL Server数据库镜像对照

核心提示:Oracle和微软都是数据库方面的大厂商,采取两家的产品的企业也很多。今天这篇文章为大家对照Oracle和SQLServer的镜像。

摘要:Oracle和微软都是数据库方面的大厂商,采取两家的产品的企业也很多。今天这篇文章为大家对照Oracle和SQLServer的镜像。

标签:Oracle SQL Server 镜像

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

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

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

高可用性方式:这个操纵模式选项答应你在两台服务器上同步事务写进,并支持自动毛病恢复。要使用这个选项,你必须还要使用1个证人服务器。

高保护方式:这个选项可让你在两台服务器上同步事物写进,但是毛病恢复是手工的。由于自动的毛病恢复不是这个选项的1部份,所以也不会用到证人服务器。

高性能方式:这个选项不关心两台服务器上的写进是否是是同步的,因此在性能上有所进步。当使用这个选项的时候,你只能假定镜像服务器上的所有事情都是成功完成。这个选项只答应手工的毛病恢复,因此不会用到证人服务器。

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

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

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

Oracle用户非常熟习SCN,而MSSQL用户通过使用mirroring_failover_lsn机制(粗略来讲就是1个日志序列号)。MSSQL与Oracle不同,MSSQL将事务分离(两个事务在两个机器上),而不是1个散布式事务(在本身提交前需要远程等待提交)。

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

在Oracle中,当你处于回档模式或非回档模式的时候,这些操纵是内定的。假设回档redo日志被传输或提交到1个远程的服务器,那末主数据库明显就是在回档模式下,那些文件就是这么产生的。运行在这类模式下,答应有少许的数据丢失,由于在产生故障(不管甚么样的故障)前,恢复能够在任意1个点上履行。在MSSQL中是类似的,但是有3种状态需要选择。

《SQL Server联机丛书》,像很多其它的在线资源1样,讲述了在使用MSSQL时,3种恢复模式的不同点。快速的比较有:MSSQL完全模式对应于Oracle中的回档模式;简单模式对应于非回档模式;bulk模式与使用直接路径插进,添加提示,或与nologging模式操纵类似。

根据以上3种模式(这3种模式很轻易转换,不需要关机或重启)的描写和日志缓冲器和回档redo日志的讨论中,很轻易判定在MSSQL中进行数据库的镜像需要将数据的回复模式设置成完全模式(full model)。简单模式(Simple model)或许也能行,但是这类模式下保持事务日志中的小部份数据,在备份中,假设在日志被删节了,全部镜像进程也就破环了,由于当你在将事务发送到镜像数据库中的时候,假设日志被删节了,这个进程就不能完成。

说到数据库被破坏该怎样办呢?

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

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

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

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

结论

这篇文章内容包括依照Oracle的方式,如何更好的理解在另1种主流的RDBMS上履行镜像或复制,。试着学习和解释你的RDBMS如何工作的,从另外1种模式来得到你的留意有助于你弄清楚你当前数据库系统运行原理。举个例子,我发现非常有实用价值的是Oracle回档模式和MSSQL3种恢复模式之间的关系。使用在MSSQL中的1些术语(火伴,主数据库,目击,镜像)有助于你构成和辨认Oracle中履行数据库镜像的操纵。

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

唐山网站建设www.fw8.net
TAG:数据库,日志,模式,事务,回档
评论加载中...
内容:
评论者: 验证码: