standby database技术专题总结.docx
- 文档编号:9584901
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:23
- 大小:30.88KB
standby database技术专题总结.docx
《standby database技术专题总结.docx》由会员分享,可在线阅读,更多相关《standby database技术专题总结.docx(23页珍藏版)》请在冰豆网上搜索。
standbydatabase技术专题总结
技术专题总结:
standbyDatabase
作者:
snowhite、chao_ping
目录
前言1
正文部分2
一、StandbyDatabase的工作原理2
二、Standbydatabase的建立5
三、Standbydatabase的维护与备份10
四、Opening/Activatingastandbydatabase12
五、Primaryandstandbydatabase的重建14
后记16
前言
当chao_ping提议我开一个STANDBYDATABASE技术专题讨论的时候,我本来是想专门就STANDBYDATABASE的技术方面进行讨论的。
看罢三十余篇的跟贴,实在感到有必要在深入技术问题之前,先说一些题外的话,虽然这些是与技术无关的话题,但对于从业IT界的打工者来说,却是一个首先应该考虑的问题。
我们是做技术的人员,意思就是说,在企业的管理上,我们最多能做的,我们所说的,对管理者来说,只能是参考的意见,决策并不在于我们。
很多IT的技术员,特别是很多初出茅庐的年轻朋友,都觉得,技术人员是一个企业中,最重要的。
如果我的技术好,天下就是我的了。
这里面有很多的误区。
打个比方来说,技术人员对公司将用什么服务器,用什么databaseserver做后台,有多少控制的能力呢?
现在有很多公司把oracle数据平台,定在IBM的AIXUNIX服务器,这是一个有道理的选择吗?
在众多UNIX平台上面,众所周知是,AIX并不是Oracle首选推荐的操作系统,Oracle在AIX平台上的许多bugs,这两个公司相互推诿,用户根本不能及时得到patch解决存在的问题,但是公司的决策如此,做技术的人员能决定多少,公司管理阶层也许有他们的道理,譬如说,公司层决定所有服务器象某一个公司购买,可以得到更大的折扣,减少技术上面打交到的支持厂商,等等,我们只能接受公司的选择。
在这一点上,我们与公司其他的职员没有什么两样的,如果抱着“惟我独尊”的思想,首先在人际上就得不到赞同。
提到了人际关系,许多人会讲,中国的人际关系很复杂,国外也许好多了。
实际上呢,全世界那里都是一样,在中国处理不好,出了国也一样处理不好。
我们都有在看论坛的帖子,有人贴出来,也有人反弹,诸如低手不宜,或讽刺别人的程序不好等等,我不想用古人曰,三人行,必有我师之类来论证一番,从最低之处感念,你有问题,有人愿意帮助你,无论帮上了或没帮上你,都应心存感激之心,不是吗。
回归到STANDBYDATABASE的讨论上,许多帖子提到是否应该选用STANDBYDATABASE的问题。
其实,这个问题,也并不仅仅是一个技术上面的问题。
这就是我上面说了一堆题外话的原因。
当某一个DATEBASE需要特别的功能的时候,譬如HIGHAVAILABLE,DISASTERRECOVERY,SCALABILITY等等,做为技术人员,我们首先要做的是,看看市面相关的产品中,那样能提供我们所要的功能,各类产品,各有千秋。
在我们所需要的功能,那个最能满足要求,不要第一个念头就问别人,没有人比你自己更了解你需要什么。
做了研究之后,不确定的话,可以请向资深的人咨询一下,不过基本观点就是,别人的提议只是你的参考,我还要说,因为没有人比你自己更了解你需要什么。
技术人员确实要从技术上了解那个产品最适合技术要求,但这并不能保证最后选用的产品是最适合技术要求的产品,最后的选择,与很多方面的条件有关。
举个例子来说,我有一个DATABASE需要HIGHAVAILABLE,SCALABILITY,这样子看下来OPS是最适合的,可是接下来的问题是,OPS需要额外的LICENSINGFEE,我们目前有的硬件不能支持OPS,需要订购新的,订购新设备的到达之前,DATABASE就必须进入生产模式。
再复杂一点呢,我们技术部门的老板要用OPS,可是项目管理部门的老板要用STANDBYDATABASE,因为现有硬件支持,又不需要购买额外软件,他们两个一个管技术,一个管钱,两个人都懂一些Oracle技术,又都不是专家。
凭良心讲OPS和STANDBY都能应付目前的需求,长远来讲OPS好一些,毕竟用的是client/server式的前台软件,用户以后也许有增加的趋势。
不过这些内容也超过了技术人员的职责范围,我只管按照最后的决定做就是了。
因为我没有最后选择和决定的权利。
最后我希望能谈一下IT从业人员的职业道德问题。
做为某一领域的专家,也许很多时候会被请教与专业相关的问题。
有项目会请你推荐运行平台或后台选用那个公司的DATABASE支持。
虽然很多新技术很具吸引力,但IT的技术人员不能因为自己想学,想用某一产品,而推荐并不适合该项目的产品。
闲话已毕,话如正题。
感谢各位有耐心看完前言。
正文部分
首先应该和大家说一声抱歉。
本来想一天一篇的写完整个总结,总是因为个人的原因写不下去。
一旦开始动笔,又发现自己收集的资料不够全面。
免为其难的先完成了一部份,有待修改,并请大家批评指正。
一、StandbyDatabase的工作原理
1.Oracle与HighAvailability,DisasterRecovery及DataDuplicate相关功能的产品概述
Oracle的HighAvailability功能,Oracle是从下面几个方面来诠释的:
(1)systemfaultsandcrashes
(2)applicationandmiddlewarefailures
(3)networkfailures
(4)mediafailures
(5)HumanError
(6)Disastersandextendedoutages
(7)Planneddowntime,maintenanceandmanagementtasks
上述第六项就包含了disasterrecovery在内。
因此disasterrecovery应该算做highavailability的一个方面了。
总的来说,除了以Oracledatabase本身参数进行性能调解外,Oracle提供支持highavailability相关产品主要有下面几种:
(1)OracleFailSafeonNT
(2)OracleParallelServer
(3)OracleParallelFailSafe
(4)OracleAdvancedQuening
(5)OracleAdvancedReplication
(6)OracleStandbyDatabase
在Duplicationdata方面主要有用于distributeddata功能的AdvancedReplication和我们讨论过standbydatabase。
从参与讨论的帖子来看,相关的问题是集中在OPS,standbydatabase和AdvancedReplication的选择,因此我就先将这三种产品做一下比较。
OPS(OracleParallelSever)
OPS最原始的设计初衷就是system/applicationhighavailability。
与其他产品相比较:
OPS是多个单CUP机或SMP(SymmetricMulti-Processingsystem)的cluster(MPPMassivelyParallelProcessing)。
cluster里面不同的node使用一个(一般是一个)或多个oracleinstances与一个database连接。
主要的技术特点:
(1)database所有的datafiles是建立在rawdevices上面的,因此在技术方面对OS的设置有很高的依赖性,很多方面取决于OS的对设置是否支持。
(2)在database方面,每个node都有自己单独的on-lineredologfilegroups,因此在做backup和recovery的时候,需要特殊的处理。
(3)OPS的datafiles方面并没有redundance,因此mediafailure方面,要依靠RAID(redundantarrayofinexpensivedisk)subsystem.
Oracle从8i开始在OPS的基础上,逐步在不同的OS平台上,增加了FailSafe/Failover的功能,这里不尽详细描述。
AdvancedReplication
Replication的设计初是分散异地的applicationaccessdatabaselocally。
这种技术可以将一个database中的Tables,Indexes,Views,PackagesandPackageBodies,ProceduresandFunctions,Triggers,Sequences,Synonyms复制到另一database中。
如果是全部database的复制,也可用于highavailability。
一个范例,yahoo在美国的东岸和西岸,各有一个镜像database,是采用的replication的技术。
东西两岸的用户是连到最近的database,从而提高访问的速度。
如果一个database出了问题,用户自动转入与另一个相连,实现网站的highavailability。
这种highavailability对用户来说,是透明的。
其他的范例,在公司中的应用,例如,HRdatabase中雇员资料,在accountingdatabase中需要除去薪资等的其他资料,可以在HR中建立一个view,以replication技术复制到accountingdatabase中。
因为大多replicas都是在异地,从而在异地建立了redundancedata。
Replication是对于database来说的highavailability。
2.standbydatabase的工作原理
写了这么多,现在才开始真正要讨论的题目。
从设计原理上来讲,standbydatabase是为primarydatabase建立的备份,因此具有redundancedata,也是相对于database来说的highavailability。
standbydatabase为primarydatabase做的备份,是通过primarydatabase不断产生出的archivedlogfiles来实现的。
primarydatabase处于archivemode的状态,持续送出archivedlogfiles给standbydatabase,而standbydatabase则处于recoverymode,持续applyprimarydatabase的archivedlogfiles.
为了完成上述过程,必须具备以下的条件:
(1)如果primarydatabase和standbydatabase是运行在不同的服务器上面,那么这两台服务器必须有相同version和release的操作系统;必须有相同version,release和patch的oracleRDBMS系统。
(2)Oracle是允许primary和standbydatabase在同一个服务器上面运行的。
如果是这种情形,建议这两个databases要分布在不同的physicaldiskdrives上面。
并且不是所有的操作系统都支持mount两个instances连接两个同名的databases。
(3)Primarydatabase必需处于archivelogmode。
(4)Oracle从version7.3才开始支持standbydatabase。
7.3.x–8.0.x需要手工copy所有的archivedlogfiles从primaryserver到standbyserver,并且,需要手工recoveryarchivedlogfiles(当然这些可以通过OSshellscripts,sqlscripts等等方法来实现);并且standbydatabase只能够处于close/nomount/mount的状态。
(5)Oracle从version8i(8.1.5以后)开始支持primarydatabase可以将arhivedlogfiles自动送到最多一个remotesite(一般即standbydatabaseserver),本地则可多达七个地点。
并且,standbydatabase在mount的状态下,增加了managedrecoverymode,在这种状态下,standbydatabase可以自动立即apply由primarynode送过来的archivedlogfiles。
(6)Oracle从version8i(8.1.5以后)开始支持standbydatabase的mountrecoverymode和databasereadonlymode的转换。
这样方便了系统可以利用standbydatabase产生reports,而不影响用户正常使用primarydatabase。
(7)一旦standbydatabase被activated,即成为primarydatabase,无法再回归standbydatabasemode。
因此primarydatabase出了问题,standbydatabase被actived成为primarydatabase之后,如果需要在原来的primary/standbynode上面重建primary/standbydatabase,两个database都需要重建。
(8)关于启动standbydatabase时与primarydatabase之间的数据丢失问题。
如果primarydatabase在出问题之前如果无法完成logfileswitch的话,两个database之间会相差currenton-lineredologfile中的数据。
oracle9i中的dataguard弥补了这一缺陷。
oracle8i只有solaris平台支持dataguard。
注意:
第(5)(6)两项只有oralce8iEE(EnterpriseEdition)版本支持。
SE(StandardEdition)不支持这两项功能。
不同于OPS和AdvancedReplication,使用standbydatabase的时候,无论在activedstandbydatabase时,或在primarynode上面重建primarydatabase的时候,系统都需要downtime。
所需时间长短,与系统状态有关。
如果可以在primarymode建立standbydatabase(如果两个server的硬件设置一样,一般standbynode要差一些,节约费用),可以减少downtime。
在下面的几部份,可以讨论到部份细节。
二、Standbydatabase的建立
OracleStandbyDatabase的建立过程并不复杂,但建立过程的相关设置取决于建立standbydatabase的目的。
例如,如果建立standbydatabase是为了disasterprotection,standbydatabase就不能建立在与primarydatabase相同服务器上面。
如果是为了protectionagainstdatacorruption,在standbydatabase接收到primarydatabase送来的archivedlogfiles时,apply需要晚上一段,比如三个小时,或是六个小时。
这样当primarydatabase出现错误的时候,standbydatabase不会与primarydatabase同步。
在这篇文章里面,我无法面面俱到的分析各种性能,仅做一个具体实例分析。
我们承诺客户的条件:
24x7uptimeofSISdatabase
incaseoffailureonprimary:
1.11/2hourtofailovertostandbydatabase
1.2nomorethan5minsdataloss
1.32hoursscheduleddowntimetorevertbacktoprimary/standbyconfiguration
我们为了完成以上各项,必须完成的工作:
1.在remotesite建立standbydatabase。
我们有半小时的时间activingstandbydatabase,我个人喜欢再做一次coldbackup。
2.以我们的环境,4组loggroups,每组2个members,on-lineredologfilesize是10M,运行高峰期,每分钟可以多达10个archivedfiles产生。
因此非高峰的时候,我们用cronjob做强制logswitch.
3.因为我们的standbydatabaseserver不是专用的,所以在非高峰期时我们需要重新建立primary/standbydatabase.
在这里,我又要说一些多余的话了。
DBA在申请downtime的时候,应该给自己预留足够的时间,到底多少合适,自己要掌握好。
(如果留的时间太少,老板和客户可能会认为DBA的工作很容易,或不重要,如果一旦出了差错,自己的压力方面也够大。
所以一般选择在用户可接受的最多的时间,我一般要求需要时间的2-4倍)。
1.根据上面的条件,我们做的环境设置
(1)首先我们必须确认primarydatabase处于archivedmode:
SQL>archiveloglist;
DatabaselogmodeArchiveMode
AutomaticarchivalEnabled
Archivedestination/oradba/sisi/arch
Oldestonlinelogsequence4783
Nextlogsequencetoarchive4786
Currentlogsequence4786
(2)我们必须满足的条件是highavailablity,所以我们采用的是双机。
采用双机形式,有很多的好处,除了再安装与primarynode相同的OS系统及oracle系统外,其他各种设置都可以与primarynode完全相同,省掉很多修改参数的麻烦之处。
(3)我们的oracle版本是8.1.7EE,standbynode通过net8接收primarynode的archivedlogfiles。
我们专门在standbynode开通了port1512做为standbydatabase的listener。
(Oracle的缺省是port1521)。
2.standbydatabase的建立过程:
standbydatabase一般是用primarydatabase的coldbackup建立的。
特殊情况下,可以用RMAN或exportdmpfile来做。
这里我们是讲的正常情况。
(1)在standbynode上面建立与primarynode上面相同的datafiledirectory。
我们用的是/oradba/sisi/
(2)修改primarydatabase的initializeparameterfile:
(我们的例子,请不要问我为什么,很多是application要求的,不是我制定的)
primarydatabase:
db_name=sisi
instance_name=sisi
service_names=sisi
control_files=(/oradba/sisi/ctrl/stctl1si.ctl,/oradba/sisi/ctrl/stctl2si.ctl)
db_files=500
compatible=8.1.7.0.0
rollback_segments=(rbs1,rbs2,rbs3,rbs4,rbs5,rbs6,rbs7,rbs8,rbs9,rbs10,rbs11,rbs12,rbs1
3,rbs14,rbs15)
db_file_multiblock_read_count=32
optimizer_mode=rule#applicationrequired
db_block_size=8192
db_block_buffers=83200
shared_pool_size=52428800
sort_area_size=1048576
sort_area_retained_size=64000
log_checkpoint_interval=10000
sessions=252
transactions=280
transactions_per_rollback_segment=4
processes=800
open_cursors=1000
dml_locks=500
log_buffer=20971520
log_checkpoint_timeout=10000
cursor_space_for_time=true
utl_file_dir=/tmp
timed_statistics=false#ifyouwanttimedstatistics
max_dump_file_size=2097152#limittracefilesizeto5Megeach
core_dump_dest=/oradba/sisi/cdump
background_dump_dest=/oradba/sisi/bdump
user_dump_dest=/oradba/sisi/udump
remote_login_passwordfile=none
parallel_max_servers=0
#ThefollowingparametersaretheHAparametersneededforStandbyDatabaseonprimaryside
LOG_ARCHIVE_START=TRUE
LOG_ARCHIVE_FORMAT="sisi%S.arc"
LOG_ARCHIVE_DEST_1='LOCATION=/oradba/sisi/archMANDATOR
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- standby database技术专题总结 database 技术 专题 总结
![提示](https://static.bdocx.com/images/bang_tan.gif)