仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 675|回复: 7
打印 上一主题 下一主题

[学习教程] MYSQL网站制作之Oracle数据库的备份及恢复战略研讨

[复制链接]
逍遥一派 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:44:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
RDBMS并非没有局限性。它们难以扩展,需要大量的资源来配置和维护,比如时间、硬件和人力。同样,它们往往遵循峰值性能模型,这就要求系统按照峰值容量来配置可用性,而不考虑典型的数据使用情况。oracle|备份|战略|恢复|数据|数据库摘要恢复丧失的数据库文件在很年夜水平上取决于所接纳的备份战略。本文从恢复的天真性动身,对Oracle8数据库的备份及恢复战略举行了切磋,并给出了Windows2000情况下使备份历程主动化的剧本文件的项目开辟实例。

  关头词Oracle数据库备份恢复

  弁言

  跟着信息体系在各类商务举动中主要性的不休加强,保护体系数据的可用性已成为以后一个非常主要的课题。为了无效地坚持安康的信息体系,必需接纳必定的措施避免在由介质、操纵体系、软件和别的事务招致主要数据库文件严峻破坏的情形下影响RDBMS(干系数据库办理体系),进而影响信息体系的一般运转。这就必要在此类体系失利的情形履芄患笆薄⒂行У亟性帜鸦指础;指炊У氖菘馕募诤艽蟪潭壬先【鲇谒捎玫谋阜莶呗裕蚨疚亩阅壳傲餍械Oracle8数据库的备份及恢复战略举行了切磋。

  数据库备份、恢复的基础划定规矩

  1、多工联机重作日记文件

  每一个数据库实例都有其本人的联机重作日记组,在操纵数据库时,Oracle起首将数据库的全体改动保留在重作日记缓冲区中,随后日记纪录器历程(LGWR)将数据从体系共用区SGA(SystemGlobalArea)的重作日记缓冲区写进联机重作日记文件,在磁盘溃散或实例失利时,能够经由过程与之相干的联机重作日记来回护数据库,将丧失降至最低,但Oracle在默许的体例下只创立一组重作日记文件(每组只要一个项目文件),为了削减丧失这些主要的重作日记文件的伤害,因而必要对其举行镜像拷贝。

  在Oracle级多工联机重作日记文件,即增添多个文件到每一个组以便镜像数据,如许I/O妨碍或写丧失只破坏一个拷贝,从而包管了LGWR背景历程最少可以向一个成员写进信息,数据库仍旧能够持续运转。同时应包管日记组的成员不该驻存在统一物理设备上,由于这将减弱多重日记文件的感化。

  2、镜像拷贝把持文件

  把持文件形貌通用的数据库布局,它存储了大批数据库形态信息,包含物理布局和联机重作日记文件在事先的称号、地位、形态。把持文件在数据库启动时被Oracle实例读取,坚持翻开并跟着操纵而文件内容更新,直到实例封闭为止。在它翻开的过程当中可以同步必要恢复的信息,包含反省点信息,因而若破坏或丧失了把持文件,Oracle将不克不及持续事情,因而应在体系中坚持把持文件的多个拷贝,且这些拷贝应置于安装于分歧磁盘把持器下的分歧磁盘设备中。

  因为Oracle没有供应对把持文件多工的完全撑持,因而应在对把持文件利用操纵体系或硬件镜像,即在修正初始化文件的control_files参数后从头启动数据库前,应将把持文件复制到界说的新地位,不然数据库启动时将会堕落。

  3、激活回档历程

  当数据库运转于NOARCHIVELOG形式下时,只能在完整封闭数据库落后行数据库的分歧备份,而且同时禁用了联机重作日记的存档,如许在Oracle实例失利时只能将数据库修复到比来的完全数据库备份时的那一点上,不克不及在生效点处对实例举行恢复。而在ARCHIVELOG形式下,数据库不但能够举行分歧备份,还能够在数据库翻开的情形下举行联机备份。经由过程数据库的备份和联机与存档的重作日记文件,用户能够恢复一切已提交的事件,并同意将数据库恢复到指定的工夫、SCN或日记系列号处,增年夜了恢复的天真性,削减了妨碍时的数据丧失。因而数据库应运转于ARCHIVELOG形式。

  在ARCHIVELOG形式下为了避免文件破坏和介质妨碍,应把日记回档到分歧的磁盘上,这能够经由过程在初始化文件中为回档重作日记指定多个方针完成。

  4、数据库实行较年夜改动时备份

  由于把持文件中保留了数据库的形式布局信息,因而在对数据库举行较年夜改动(包含改动表布局,增添、删除日记文件或数据文件等)时应当即备份把持文件及响应的数据文件。

  5、利用RESETLOGS选项翻开数据库落后行备份

  在以RESETLOGS选项翻开数据库后,应对全部数据库举行脱机或联机的备份,不然将不克不及恢复重置日记后的改动。

  当以RESETLOGS选项翻开数据库时,Oracle将丢弃恢复中没有使用的反复信息,并确保永久不再使用,同时还将初始化把持文件中关于联机日记和重作线程的信息、扫除联机日记中的内容。因而,RESETLOGS前的回档日记的序列号将与RESETLOGS后的Oracle把持文件的请求值不符合(备份文件中的反省点比把持文件中的反省点旧),即在恢复中不克不及使用之前的回档日记文件,从而招致RESETLOGS操纵之前的备份在新形体中无用。

  6、制止备份联机重作日记文件

  因为文中提出了多工联机重作日记文件且数据库运转于ARCHIVELOG形式,ARCH历程可以将联机重作日记回档,因而不用对其举行备份。若用备份的联机重作日记文件重修它,大概会引发日记文件序列号的凌乱,从而损坏数据库,失掉拔苗助长的了局。

  7、重置联机日记

  在举行了不完整恢复或用备份把持文件举行恢复后,应重置联机日记。

  为了确保数据库的分歧性,必需包管在恢复后一切数据文件都恢复到统一个工夫点,但不完整恢复大概招致数据文件中具有一个与别的文件分歧的反省点,招致数据库的分歧性遭到损坏。一样,备份的把持文件中保留的SCN和计数器与以后日记文件中的值大概分歧,从而也损坏了数据库的分歧性,因而应在举行完上述两项操纵后重置联机日记。

  8、数据库的逻辑备份

  以上所述备份都为物理备份,是实践物理数据库文件从一处拷贝到另外一处的备份,除此以外还可以使用Oracle供应的导出有用程序举行数据库的逻辑备份。Oracle同时还供应了响应的导进有用程序重修逻辑备份中保留的信息。

  逻辑备份只拷贝数据库中的数据,而不纪录数据地位的备份历程。它使用SQL语句,从数据库中导出数据到一个寄存在符合地位的内部文件中,同时并可检测到数据块的破坏,因而可用其作为物理备份的增补。

  备份战略

  思索到现在年夜部分信息体系每周的营业是24×7操纵,因而接纳联机备份,不然可每隔必定工夫举行一次脱机备份。

  使用上述划定规矩,可得出下述典范的备份战略:

  ①镜像拷贝重作日记文件;

  ②镜像拷贝把持文件;

  ③激活回档历程,即以ARCHIVELOG形式操纵数据库;

  ④天天举行数据库的部分联机备份(天天举行数据库的完整热备份将恐惧地增添数据库的包袱且没有需要,同时也增添了数据库恢复时的天真性);

  ⑤每隔一周或几周举行一次数据库的逻辑备份。

  实践项目使用

  当数据库中的文件到达必定数目后,DBA大概记不住该备份的文件的名或地位,因而,若能使备份历程主动化可无效地加重DBA的包袱,同时不会漏掉应备份的文件,使用主动批处置文件及剧本文件可完成备份、恢复的主动化。上面简介了在实践项目开辟中使用本文所提出的主动备份、恢复战略,经由过程实践使用,证实了该战略的准确性和可行性。

  (1)下述剧本完成联机重作日记的多工:

connect账户名/暗码
alterdatabasektgisaddlogfilemember日记文件的存储地位togroup联机日记组号;
shutdownimmediate
startuppfile=初始化文件的寄存地位exclusivemount;装载数据库且不翻开
alterdatabasearchivelog;激活回档历程
alterdatabaseopen;
exit
  (2)以下VB代码主动创建联机备份的批处置文件及响应的剧本文件。

SetadoTmp=objConnect.Execute("selecttablespace_namefromsys.dba_data_files")失掉数据库中的表空间名
Dimlnum1AsLong
Dimlnum2AsLong
lNum=FreeFile
Open主动备份批处置文件路径ForBinaryAslNum
lnum1=FreeFile
Open"onlinebegin.sql"ForBinaryAslnum2onlinebegin.sql为设置表空间进进热备份形式的剧本文件文件名
lnum2=FreeFile
Open"onlineend.sql"ForBinaryAslnum2onlinebegin.sql为停止表空间热备份形式的剧本文件文件名
strTmp="connect账户名/暗码"&Chr(13)&Chr(10)
Putlnum1,,strTmp
strTmp="shutdownimmediate"&Chr(13)&Chr(10)
Putlnum1,,strTmp
strTmp="startuppfile=初始化文件的寄存地位exclusivemount;"&Chr(13)&Chr(10)
Putlnum1,,strTmp
strTmp="alterdatabasearchivelog;"&Chr(13)&Chr(10)
Putlnum1,,strTmp
strTmp="alterdatabaseopen;"&Chr(13)&Chr(10)
Putlnum1,,strTmp
strTmp="connect账户名/暗码"&Chr(13)&Chr(10)
Putlnum2,,strTmp
strTmp=Oracle服务办理器路径&"@"&"onlinebegin.sql"&Chr(13)&Chr(10)在服务办理器中实行剧本文件onlinebegin.sql
PutlNum,,strTmp
DoWhileNotadoTmp.EOF
SetadoTmp1=objConnect.Execute("selectfile_namefromsys.dba_data_fileswheretablespace_name="&adoTmp.Fields(0)&"")失掉以后表空间所对应的一切数据文件名,经由过程轮回便可失掉一切表空间所对应数据文件名,若只备份指定的表空间,可指定表空间名从而失掉其对应的物理数据文件
strTmp="altertablespace"&adoTmp.Fields(0)&"beginbackup;"&Chr(13)&Chr(10)将表空间置于热备份形式
Putlnum1,,strTmp
strTmp=Oracle的ocopy.exe工具全路径"&adoTmp1.Fields(0)&""&备份文件寄存路径&Chr(13)&Chr(10)
PutlNum,,strTmp
strTmp="altertablespace"&adoTmp.Fields(0)&"endbackup;"&Chr(13)&Chr(10)表空间恢复一般形式
Putlnum2,,strTmp
adoTmp.MoveNext
Loop
strTmp=Oracle服务办理器路径&"@"&"onlineend.sql"&Chr(13)&Chr(10)在服务办理器中实行剧本文件onlineend.sql
PutlNum,,strTmp
strTmp="exit"&Chr(13)&Chr(10)加入服务办理器
Putlnum1,,strTmp
strTmp="altersystemswitchlogfile;"&Chr(13)&Chr(10)强迫日记转换,使Oracle创立一个回档日记文件
Putlnum2,,strTmp
strTmp="exit"&Chr(13)&Chr(10)
Putlnum2,,strTmp
Close
SetadoTmp=Nothing
SetadoTmp1=Nothing
  运转失掉的主动批处置文件,便可主动举行数据库的联机备份。

  (3)在从备份中恢单数据文件后,实行以下剧本将数据库的恢复程序。

connect账户名/暗码
shutdownabort
startupmountpfile=初始化文件的寄存地位;装载数据库
setautorecoveryon;翻开主动恢复
recoverdatabase;
alterdatabaseopen;翻开数据库
  停止语

  进步数据库劫难后恢复的牢靠性正愈来愈多地遭到人们的存眷,本文依据团体在实践项目开辟过程当中的履历及恢复时的天真性对Oracle数据库的备份及恢复举行了切磋,并提出了典范的备份战略,用户能够依据本人的实践情形及数据库布局在此基本上天真使用。”由于MySQL已经是一个运行了众多知名Web2.0网站的数据,包括Craigslist、Digg、Wikipedia和Google等,或许我们可以说每一个Web2.0公司实质上是一个使用MySQL数据库的公司。
逍遥一派 该用户已被删除
沙发
 楼主| 发表于 2015-1-19 21:57:17 | 只看该作者
发几份SQL课件,以飨阅者
第二个灵魂 该用户已被删除
板凳
发表于 2015-1-25 19:18:59 | 只看该作者
然后最好有实践机会,能够把实践到的和实践结合起来,其实理论思考是个非常困扰和痛苦的事情
海妖 该用户已被删除
地板
发表于 2015-2-9 03:46:02 | 只看该作者
相信各位对数据库和怎么样学习数据库都有一些经验和看法,也会有人走了一些弯路总结出自己的经验来,希望大家能把各自的看法和经验拿出来分享,给别人一份帮助,给自己一份快乐
简单生活 该用户已被删除
5#
发表于 2015-2-26 20:48:25 | 只看该作者
个人感觉没有case直观。而且默认的第三字段(还可能更多)作为groupby字段很容易造成新手的错误。
爱飞 该用户已被删除
6#
发表于 2015-3-8 17:33:06 | 只看该作者
多走走一此相关论坛,多看一些实例开发,多交流0经验,没什么的,我也是刚学没多久!加油
只想知道 该用户已被删除
7#
发表于 2015-3-16 08:07:55 | 只看该作者
光写几个SQL实在叫无知。
谁可相欹 该用户已被删除
8#
发表于 2015-3-22 21:14:58 | 只看该作者
微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开始我们也是狂喜,感觉对象数据库的一些概念可以实现了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-28 06:02

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表