Sybase数据库故障处理方法_第1页
Sybase数据库故障处理方法_第2页
Sybase数据库故障处理方法_第3页
Sybase数据库故障处理方法_第4页
Sybase数据库故障处理方法_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Sybsystemprocs库“挂起”解决办法1. 修改文件,修改Sybase数据库可以修改系统参数.2. $vi查找“allowupdates”,将其修改为1.(缺省值为0).既allowupdatestosystemtables=1重新启动系统.3. 用isql登录到sqlserver中,修改master库中sysdatabases表中sybsystemprocs库对应的status的值为-32768.$isql-UsaP1>updatemaster.sysdatabases2>setstatus=-32768wherename=”sybsystemprocs”1>go1

2、>shutdownwithnowait2>go关闭数据库重新启动.4. 用isql登录到sqlserver中,修改master库中sysdatabases表中sybsystemprocs库对应的status的值为0.$isql-UsaP1>updatemaster.sysdatabases2>setstatus=0wherename=”sybsystemprocs”3>go1>shutdownwithnowait2>go关闭数据库重新启动.0.5. 将中的”allowupdatestosystem二、如何恢复master数据库ASEcan'ts

3、etupandhasnovaliddumpofmaster1、编辑RUN_servername在命令行最后加入:-T36072、单用户模式启动ASE$cdinstall$startserver-fRUN_servername-m3、 bcpout系统表$bcpmaster.sysdevicesout/devs-Usa-P-c$bcpmaster.sysdatabasesout/dbs-Usa-P-c$bcpmaster.sysusagesout/usages-Usa-P-c$bcpmaster.sysloginsout/logins-Usa-P-c$bcpmaster.sysconfigure

4、sout/configures-Usa-P-c$bcpmaster.syscharsetsout/charsets-Usa-P-c4、 shutdownASE5、创建新master设备$buildmaster-d<path_to_new_master_device>-s<new_master_device_size>(new_master_device_size以2K为单位)6、编辑RUN_servername将指定master设备指定为新创建的master设备,并删除在第1步中增加的参数。7、删除/dbs、/usages文件中有关master、tempdb、model

5、的内容。8、单用户模式启动ASE$cdinstall$startserver-fRUN_servername-m9、bcpin系统表$bcpmaster.sysdevicesin/devs-Usa-P-b1-c$bcpmaster.sysdatabasesin/dbs-Usa-P-b1-c$bcpmaster.sysusagesin/usages-Usa-P-b1-c$bcpmaster.sysloginsin/logins-Usa-P-b1-c$bcpmaster.sysconfiguresin/configures-Usa-P-b1-c$bcpmaster.syscharsetsin/ch

6、arsets-Usa-P-b1-c10、shudownASE11、执行installmaster脚本$isql-Usa-P<$SYBASE/scripts/installmaster12、启动ASE三、如何删除坏的用户数据库?(以pubs2为例)当使用dropdatabase无法删除数据库时,使用本文所示方法可以删除。(1) 使用isql以sa注册SQLserver(2) 设置允许修改系统表1>sp_configure"allowupdates",12>go(3) 把要删除的用户数据库置为"suspect"状态1>usemaste

7、r2>go1>begintran2>go1>updatesysdatabasessetstatus=2562>wherename="pubs2"3>go如果得到(1rowaffected),则1>commit2>go否则1>rollback2>go(4) 重启server,并用isql以sa注册。(5) 删除数据库1>dbccdbrepair(pubs2,dropdb)2>go(6) 恢复允许修改系统表1>sp_configure"allowupdates",02>go(

8、7) 结束四、如何做rebuildlog注意:这个过程可能会引起数据的不一致性。(1) 赋予sa用户sybase_ts_role的角色isql-Usa-P1>sp_role"grant","sybase_ts_role",sa2>go1>quit(2) 将数据库置为"bypassrecovery"状态isql-Usa-P1>sp_configure"allowupdates",12>go1>usemaster2>go1>updatesysdatabasessetsta

9、tus=-327682>wherename="database_name"3>go1>shutdownwithnowait2>go(3)rebuild数据库日志重启Serverisql-Usa-P1>usemaster2>go1>dbccrebuild_log(database_name,1,1)2>go1>shutdownwithnowait2>go(4) 重启SQLserver1>usemaster2>go1>updatesysdatabasessetstatus=0wherename=&qu

10、ot;database_name1>sp_configure"allowupdates",02>go1>shutdownwithnowait2>go(5) 在重启SQLserver之后,如果数据库恢复正常,rebuildlog工作将会成功完成,否则要恢复数据库备份,使用dumpdatabase或bcp命令。五、数据库被标记为"suspect"时(1)一般解决方案现象:Error926SeverityLevel14ErrorMessageTextDatabase'xx'cannotbeopened-ithasbeen

11、markedSUSPECTbyrecoverExplanation(1) 当你使用Transact_SQL命令操作这个数据库的数据时,出现这个信息,这是一个严重的错误,如果你要使用这个数据库的数据,必须改正这个错误.(2) 启动BackupServer,后备master数据库1>dumpdatabasemasterto"/usr/sybase/master_dump."2>go(3) 用isql登录到SQLServer,须用sa帐号(本文以pubs2数据库为例)1>sp_configure"allowupdates",12>go1

12、>begintran2>go1>updatemaster.sysdatabases2>set status =- 327683>Wherename="pubs2"4>go如果得到(1rowaffected),则1>commit2>go否则1>rollback2>go(4) 如果条件允许,bcpout用户数据或dump用户数据库(5) 这时重新启动SQLServer,再有sa帐号注册到SQLServer.1>begintran2>go1>updatemaster.sysdatabases2>s

13、etstatus=03>Wherename="pubs2"4>go如果得到(1rowaffected),则1>commit2>go否则1>rollback2>go1>sp_configure"allowupdates",02>go(4) 如果你的数据库原来有dboption(例如"selectinto","trunclogonchkpt"等),你需要重新设置这些option.(5) 运行dbcc命令检查数据库的一致性isql-Usa-P-i-o文件示例:dbccche

14、ckdb("pubs2")godbcccheckalloc("pubs2")godbcccheckcatalog("pubs2")gogrepMsg(6) 后备用户数据库1>dumpdatabasepubs2on"/usr/sybase/pubs2_dump."2>go六、数据库被标记为"suspect"时(2)数据库设备损坏时的解决方案现象:926错误产生的原因有几种。本文讨论当数据库设备初始化失败(设备文件丢失或文件读写权限不正确)时,导致数据库恢复失败,出现926错误的情况。(

15、1) 请先恢复数据库设备及读写权限。(2) 启动BackupServer,后备master数据库1>dumpdatabasemasterto"/usr/sybase/master_dump."2>go(3) 用isql登录到SQLServer,须用sa帐号(本文以pubs2数据库为例)1>sp_configure"allowupdates",11>begintran2>go1>updatemaster.sysdatabases2>setstatus=status-2563>Wherename="p

16、ubs2"4>go如果得到(1rowaffected),贝1>commit2>go否则1>rollback2>go(4) 重新启动SQLServer,运行dbcc命令检查数据库的一致性编辑生成文件:dbcccheckdb("pubs2")godbcccheckalloc("pubs2")godbcccheckcatalog("pubs2")goisql-Usa-P-i-ogrepMsg(5) 后备用户数据库1>dumpdatabasepubs2on"/usr/sybase/pub

17、s2_dump."七、如何终止数据库恢复过程当某一正常运行的大事务(例如:update、delete操作)被终止,且重新启动server后,运行该事务的数据库处于恢复状态,通常这种状态会持续很长时间,当在此恢复过程中没有出现任何异常时,建议用户耐心等待恢复过程完成。同时我们提供以下方法来终止此恢复过程,但请用户注意这些操作将带来数据的不一致性。必要时,希望用户用完整、可靠的数据库备份恢复此数据库。(1)启动BackupServer,后备master数据库(这一步很重要!)1>dumpdatabasemasterto"/usr/sybase/"2>go(

18、2)用isql登录到SQLServer,须用sa帐号(本文以pubs2数据库为例)1>sp_configure"allowupdates",12>go1>begintran2>go1>usemaster2>go1>updatesysdatabases2>setstatus=-327683>Wherename="pubs2"4>go如果得到(1rowaffected),贝1>commit2>go否则1>rollback2>go这时重新启动SQLServer,再用sa帐号登录

19、到SQLServer.1>dumptranpubs2withno_log2>go1>begintran2>go1>usemaster2>go1>updatesysdatabases2>setstatus=03>Wherename="pubs2"4>go如果得到(1rowaffected),贝1>commit2>go否则1>rollback2>go1>sp_configure"allowupdates",02>go(4) 重新启动server(5) 如果你的数据

20、库原来有dboption(例如"selectinto","trunclogonchkpt"等),你需要重新设置这些option.(6)当数据库已经恢复可使用状态后,运行dbcc命令检查数据库的一致性(参照"如何检查数据库中数据一致性"文章)(7)后备用户数据库例如:1>dumpdatabasepubs2to"/usr/sybase/"2>go八、如何检查数据库中数据的一致性数据库一致性检查(dbcc)提供了一些命令用于检查数据库的逻辑和物理一致性。Dbcc主要有两个功能:1 .使用checkstorag

21、e或checktable及checkdb在页一级和行一级检查页链及数据指针。2 .使用checkstorage,checkalloc,或checkverify,tablealloc,及indexalloc检查页分配。在下列情况中需要使用dbcc命令:1 .作为数据库日常维护工作的一部分,数据库内部结构的完整性决定于sa或dbo定期地运行dbcc检查。2 .在系统报错以后,确定数据库是否有损坏。3 .在备份数据库之前,确保备份的完整性。4 .如果怀疑数据库有损坏时,例如,使用某个表时报出表损坏的信息,可以使用dbcc确定数据库中其他表是否也有损坏。下面是dbcc的简单用法:dbcccheckta

22、ble(table_name)检查指定的表,检查索引和数据页是否正确链接,索引是否正确排序,所有指针是否一致,每页的数据信息是否合理,页偏移是否合理。dbcccheckdb(database_name)对指定数据库的所有表做和checktable一样的检查。dbcccheckalloc(database_name,fix|nofix)检查指定数据库,是否所有页面被正确分配,是否被分配的页面没被使用。当使用"fix”选项时,在检查数据库的同时会自动修复有问题的页面。(若数据库数据量很大,则该过程会持续很长时间。)dbcctablealloc(table_name,fix|nofix)检

23、查指定的表,是否所有页面被正确分配,是否被分配的页面没被使用。是checkalloc的缩小版本,对指定的表做完整性检查。当使用"fix"选项时,在检查数据表的同时会自动修复数据表中有问题的页面。关于上述命令的其它选项及详细使用方法和checkstorage,checkverify,indexalloc的详细使用方法,请参阅有关命令手册。1. 单用户模式启动Server:$SYBASE/installstartserver-fRUN_server_name-m2. viusemastergosp_dboptionpubs2,"singleuser",tru

24、egousepubs2gocheckpointgodbcccheckdb(pubs2)godbcccheckalloc(pubs2fix)godbcccheckcatalog(pubs2)gousemastergosp_dboptionpubs2,"singleuser",falsegousepubs2gocheckpointquitgo3. isql-Usa-Pxxxxxx-SSYBASE<>4. grepMsg举例2:Unix平台检查pubs2数据库中titles表的一致性1. viusepubs2godbccchecktable(titles)godbcc

25、tablealloc(titles)go2. isql-Usa-Pxxxxxx-SSYBASE<>grepMsg九、如何做RebuildMaster(没有后备master库,而使用命令diskreinit,diskrefit)提示1:如果有可能,在执行这个任务之前,请先做操作系统级SYBASEDEVICES的后备。UNIX操作系统可使用命令"dd"o因为如果diskreinit使用了错误的信息,那么,在执行了diskrefit之后就会产生无法弥补的错误。倘若,存在一个SYBASEDEVICES后备文件,将会给我们一个弥补的机会。例如:当diskreinit使用了

26、过小的size值,我们还可以重新恢复SYBASDEVICES文件,重新做diskreint、diskrefit。提示2:在使用diskreinit命令时,将覆盖SYBASDEVICE(请参照以下语法),安全的做法是size值使用裸分区或系统文件的大小的最大值。如果使用的是UNIX裸分区,即使你不能确认SYBASEDEVIC最初大小是不是最大值,都要使用裸分区大小的最大值。步骤:1.获得将要被恢复的SYBASEDEVICE信息。这些信息被用来重建sysdevices,sysusages以及sysdatabases。1 .从erro门og的server启动信息中获得SYBASEDEVICE的设备名、指定路径。2 .使用裸分区或系统文件的大小的最大值作为SYBASEDEVICE勺大小。3 .以上信息也可以通过最近的sysdevices系统表的内容来获得。如果对此信息怀有疑问,还是使用以上的方法比较稳妥。2 .做操作系统级的SYBASDEVICE备。UNIX操作系统,使用"dd"命令实现。3 .配置一个新的ASEServer。在以后的步骤中会用到这个新的master。4 .如果需要,请再配置一个BackupServer。5 .用单用户模式启动Server。6 .运行diskreini

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论