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

下载本文档

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

文档简介

1、Sybase 数据库故障处理方法一、Sybsystemprocs 库“挂起 ”解决办法1. 修改 Sybase.cfg 文件,修改 Sybase 数据库可以修改系统参数 .2. $ vi Sybase.cfg查找“ allow updates将其修改为1.(缺省值为0).既 allow updates to system tables=1 重新启动系统 .3. 用 isql 登录到 sql server 中,修改 master 库中 sysdatabases 表中 sybsystemprocs 库对应的 status 的值为 -32768.$isql -Usa -P1> update m

2、aster.sysdatabases2> set status = -32768 where name = ”sybsystemprocs ”1>go1>shutdown with nowait2>go 关闭数据库重新启动 .4. 用 isql 登录到 sql server 中,修改 master 库中 sysdatabases 表中 sybsystemprocs 库对应的 status 的值为 0.$isql -Usa -P1>update master.sysdatabases2>set status = 0 where name = ”sybsyste

3、mprocs ”3>go1>shutdown with nowait2>go 关闭数据库重新启动 .5. 将 Sybase.cfg 中的” allow updates to system的值改为 0.二、如何恢复 master 数据库ASE can't setup and has no valid dump of master 1 、编辑 RUN_servername 在命令行最后加入: -T36072、单用户模式启动 ASE $cd install$startserver -f RUN_servername -m 3、bcp out系统表$bcp master.sy

4、sdevices out /directory.spec/devs -Usa -P -c$bcp master.sysdatabases out /directory.spec/dbs -Usa -P -c$bcp master.sysusages out /directory.spec/usages -Usa -P -c$bcp master.syslogins out /directory.spec/logins -Usa -P -c$bcp master.sysconfigures out /directory.spec/configures -Usa -P -c$bcp master.

5、syscharsets out /directory.spec/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、删除 /directory.spec/dbs /directory.spec/usages文件中

6、有关 master; tempdb、 model 的容。8、单用户模式启动 ASE$cd install$startserver -f RUN_servername -m9、bcp in 系统表$ bcp master.sysdevices in /directory.spec/devs -Usa -P -b 1 -c$bcp master.sysdatabases in /directory.spec/dbs -Usa -P -b 1 -c$bcp master.sysusages in /directory.spec/usages -Usa -P -b 1 -c$bcp master.sy

7、slogins in /directory.spec/logins -Usa -P -b 1 -c$bcp master.sysconfigures in /directory.spec/configures -Usa -P -b 1 -c$bcp master.syscharsets in /directory.spec/charsets -Usa -P -b 1 -c10、shudown ASE11、执行 in stallmaster 脚本$isql -Usa -P < $SYBASE/scripts/installmaster12、启动 ASE三、如何删除坏的用户数据库?(以pub

8、s2为例)当使用 drop database 无法删除数据库时,使用本文所示方法可 以删除。(1) 使用 isql 以 sa 注册 SQL server(2) 设置允许修改系统表1>sp_configure "allow updates",12>go(3) 把 要删除的用户数据库置为 "suspect" 状态1>use master2>go1>begin tran2>go1>update sysdatabases set status=256 2>where name="pubs2"3&

9、gt;go 如果得到 (1 row affected), 则1>commit 2>go 否则1>rollback 2>go(4) 重启 server, 并用 isql 以 sa 注册。(5) 删除数据库1>dbcc dbrepair(pubs2,dropdb)2>go(6) 恢复允许修改系统表 1>sp_configure "allow updates",0 2>go(7) 结束四、如何做 rebuild log 注意:这个过程可能会引起数据的不一致性。(1) 赋予 sa 用户 sybase_ts_role 的角色 isql

10、-Usa -P1>sp_role "grant","sybase_ts_role",sa 2>go 1>quit(2) 将数据库置为 "bypass recovery" 状态 isql -Usa -P1>sp_configure "allow updates",1 2>go1>use master2>go1>update sysdatabases set status=-32768 2>where name="database_name" 3

11、>go1>shutdown with nowait2>go(3) rebuild 数据库日志 重启 Server isql -Usa -P 1>use master2>go1>dbcc rebuild_log(database_name,1,1)2>go1>shutdown with nowait2>go(4) 重启 SQL server1>use master2>go1>update sysdatabases set status=0 where name="database_name"2>go

12、1>sp_configure "allow updates",02>go1>shutdown with nowait2>go(5) 在重启 SQLserver 之后, 如果数据库恢复正常, rebuild log 工作将会成功 完成,否则要恢复数据库备份,使用 dump database 或 bcp 命令。五、数据库被标记为 "suspect" 时(1) 一般解决方案 现象: Error 926Severity Level 14Error Message TextDatabase 'xx' cannot be op

13、ened - it has been marked SUSPECT by recover Explanation(1) 当你使用 Transact_SQL 命令操作这个数据库的数据时 , 出现这个信息 , 这是一个严重的错误 , 如果你要使用这个数据库的数据 , 必须改正这个错误 .(2) 启动 Backup Server, 后备 master 数据库 1>dump database master to"/usr/sybase/master_dump.19991201"2>go(3) 用 isql 登录到 SQL Server, 须用 sa ( 本文以 pubs

14、2 数据库 为例)1>sp_configure "allow updates", 12>go1>begin tran2>go1>update master.sysdatabases2>set status = - 327683>Where name="pubs2"4>go如果得到 (1 row affected), 则 1>commit 2>go1>rollback2>go(4) 如果条件允许,bcp out用户数据或dump用户数据库(5) 这时重新启动 SQL Server, 再

15、有 sa 注册到 SQL Server. 1>begin tran2>go 1>update master.sysdatabases 2>set status=0 3>Where name="pubs2"4>go如果得到 (1 row affected), 则1>commit2>go否则1>rollback2>go1>sp_configure "allow updates" ,02>go(4) 如果你的数据库原来有 dboption( 例如 "select into&quo

16、t;,"trunc log on chkpt" 等),你需要重新设置这些 option.(5) 运行 dbcc 命令检查数据库的一致性 isql -Usa -P -i dbcc.sql -o dbcc.outdbcc.sql 文件示例:dbcc checkdb("pubs2")go dbcc checkalloc("pubs2") godbcc checkcatalog("pubs2")gogrep Msg dbcc.out(6) 后备用户数据库1>dump database pubs2 on "/

17、usr/sybase/pubs2_dump.19991201"2>go六、数据库被标记为 "suspect" 时(2) 数据库设备损坏时的解决方 案现象: 926 错误产生的原因有几种。本文讨论当数据库设备初始 化失败 ( 设备文件丢失或文件读写权限不正确 ) 时,导致数据库恢复失败,出现 926 错误的情况。(1) 请先恢复数据库设备及读写权限。(2) 启动 Backup Server, 后备 master 数据库1>dump database master to"/usr/sybase/master_dump.199912O1"

18、2>go(3) 用isql登录到SQL Server,须用sa (本文以pubs2数 据库为例)1>sp_c on figure "allow updates", 12>go1>begi n tran2>go1>update master.sysdatabases2>set status =status - 2563>Where name="pubs2"4>go如果得到(1 row affected),贝U1>commit2>go否则1>rollback2>go(4) 重新启动

19、SQL Server,运行dbcc命令检查数据库的一 致性编辑生成dbcc.sql文件:dbcc checkdb("pubs2")godbcc checkalloc("pubs2")godbcc checkcatalog("pubs2")goisql -Usa -P -i dbcc.sql -o dbcc.outgrep Msg dbcc.out(5) 后备用户数据库1>dump database pubs2 on"/usr/sybase/pubs2_dump.199912O1"七、如何终止数据库恢复过程se

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

21、 Server,须用sa (本文以pubs2数据库为例)1>sp_c on figure "allow updates", 12>go1>beg in tran2>go1> use master2> go1>update sysdatabases2>set status = -327683>Where name="pubs2"4>go如果得到(1 row affected),贝U1>commit2>go否则1>rollback2>go(3) 这时重新启动 SQL Serv

22、er,再用sa登录到SQL Server.1>dump tran pubs2 with no _log2>go1>begi n tran2>go1> use master2> go1>update sysdatabases2>set status=03>Where name="pubs2"4>go如果得到(1 row affected),贝U1>commit2>go否则1>rollback2>go1>sp_c on figure "allow updates" ,0

23、2>go(4) 重新启动server(5) 如果你的数据库原来有 dboption(例如"select into","trunc log onchkpt"等),你需要重新设置这些option.(6) 当数据库已经恢复可使用状态后,运行dbcc命令检查数据库的一致性(参照"如何检查数据库中数据一致性"文章)(7) 后备用户数据库例如:1>dump database pubs2 to "/usr/sybase/pubs2.dup"2>go八、如何检查数据库中数据的一致性数据库一致性检查(dbcc)提供

24、了一些命令用于检查数据库的逻辑和物理 致性。Dbcc主要有两个功能:1. 使用 checkstorage 或 checktable 及 checkdb 在页一级和行一 级检查页链及数据指针。2. 使用 checkstorage, checkalloc,或 checkverify, tablealloc,及 indexalloc检查页分配。在下列情况中需要使用 dbcc命令:1. 作为数据库日常维护工作的一部分,数据库部结构的完整性决 定于sa或dbo定期地运行 dbcc检查。2. 在系统报错以后,确定数据库是否有损坏。3. 在备份数据库之前,确保备份的完整性。4. 如果怀疑数据库有损坏时,例如

25、,使用某个表时报出表损坏的 信息,可以使用dbcc确定数据库中其他表是否也有损坏。F面是dbcc的简单用法:? dbcc checktable (table_ name)检查指定的表,检查索引和数据页是否正确,索引是否正确排序,所 有指针是否一致,每页的数据信息是否合理,页偏移是否合理。? dbcc checkdb (database, name)对指定数据库的所有表做和checktable 一样的检查。? dbcc checkalloc (database, namefix |no fix)检查指定数据库,是否所有页面被正确分配,是否被分配的页面没被 使用。当使用"fix"

26、;选项时,在检查数据库的同时会自动修复有问题的 页面。(若数据库数据量很大,则该过程会持续很长时间。)? dbcc tablealloc (table_ namefix |no fix)检查指定的表,是否所有页面被正确分配,是否被分配的页面没被使 用。是checkalloc的缩小版本,对指定的表做完整性检查。当使用"fix" 选项时,在检查数据表的同时会自动修复数据表中有问题的页面。关于上述命令的其它选项及详细使用方法和checkstorage, checkverify,indexalloc的详细使用方法,请参阅有关命令手册。举例1 : Unix平台检查pubs2数据库的一

27、致性1. 单用户模式启动Server:$SYBASE/i nstall startserver -f RUN_server_name -m2. vi dbcc_db.sqluse mastergosp_dboptio n pubs2,"s in gle user",truegouse pubs2gocheckpo intgodbcc checkdb(pubs2)godbcc checkalloc(pubs2,fix)godbcc checkcatalog(pubs2)gouse mastergosp_dboptio n pubs2,"s in gle user&q

28、uot;,falsegouse pubs2gocheckpo intgoquitgo3. isql -Usa -Pxxxxxx -SSYBASE <dbcc_db.sql >dbcc_db.out4. grep Msg dbcc_db.out举例2 :Unix平台检查pubs2数据库中titles表的一致性1. vi dbcc_table.sqluse pubs2godbcc checktable(titles)godbcc tablealloc(titles)go2. isql -Usa -Pxxxxxx -SSYBASE < dbcc_table.sql > dbc

29、c_table.outgrep Msg dbcc_table.out九、如何做Rebuild Master(没有后备 master库,而使用命令disk reinit,disk refit)提示1 :如果有可能,在执行这个任务之前,请先做操作系统级SYBASEDEVICES的后备。UNIX操作系统可使用命令"dd"。因为如果disk reinit使 用了错误的信息,那么,在执行了disk refit之后就会产生无法弥补的错误。倘若,存在一个SYBASE DEVICES的后备文件,将会给我们一个弥补的机 会。例如:当disk reinit使用了过小的size值,我们还可以重新

30、恢复SYBASE DEVICES 文件,重新做 disk reint、disk refit。提示2 :在使用disk reinit命令时,将覆盖SYBASE DEVICE (请参照以下语法), 安全的做法是size值使用裸分区或系统文件的大小的最大值。如果使用的是 UNIX裸分区,即使你不能确认 SYBASE DEVICE最初大小是不是最大值, 都要使用裸分区大小的最大值。步骤:1. 获得将要被恢复的SYBASE DEVICE的信息。这些信息被用来重建 sysdevices,sysusage以及sysdatabase。1. 从 error log 的 server启动信息中获得 SYBASE DEVICE 的设备名、指定路径。2. 使用裸分区或系统文件的大小的最大值作为SYBASEDEVICE 的大小。3. 以上信息也可以通过最近的 sysdevices系统表的容来获得。如果对此信息怀有疑问,还是使用以上的方法比较稳妥。2做操作系统级的SYBASE DEVICE后备。UNIX操作系统,使 用"dd"命令实现。3. 配置一个新的 ASE Server。在以后的步骤中会用到这个新的 master。4. 如果需要,请再配置一

温馨提示

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

最新文档

评论

0/150

提交评论