SYBASE数据库常见的问题总结.docx
SYBASE数据库常见问题总结SYBASE数据库常见问题总结11.SYS1.oGS日志满了进不了系统,如何清除日志启动系统12 .数据库日志损坏时重建日志启动数据库的解决方法33 .数据库处于可疑状态的解决方法64 .SybaSe系统崩溃了,没有备份,但设备文件还存在,如何受原数据库?95 .不当心干脆删除了日志的设备文件,如何且原数据库?146 .Sa密码遗忘了导致isql-Usa-P*进不去怎么办?167 .关于SybaSe的配置一(数据库慢的清留意)168 .设备路径更改的方法219 .dump文件load后数据库访问不了解决方法2210 .SybaSe数据库备份方案22H. master数据库状态被置为-32768后的处理方法27I. SYS1.oGS日志满了进不了系统,如何清除日志启动系统业务系统数据库不能正常启动,对于这一类问题,我们依据如下步骤解决:第一步,启用allowupdatestosystemtables,这样可以使具有系统管理员角色的用户能够变更系统表并可创建和修改系统表的存储过程,其中系统表包括master数据库中全部SybaSe供应的表以及用户数据库中全部以“sys”开头的表和在sysobjects表中其ID值小于或等于100的表。系统表的不正确变更会导致数据库损坏和数据丢失,修改系统表时务必要运用begintransaction来爱护数据库不受可能损坏数据库的错误影响,完成修改后应马上禁用allowupdatestosystemtables0l>sp_configure"allowUPdale”,12>go其次步,AdaptiveServer中的每个数据库在SySdaIabaSeS中都有相应的一行,安装AdaptiveServer后,master数据库、model数据库、Sybsystemprocs和IemPdb数据库在Sysdatabases中都将有相应的条目,假如已经安装审计功能,Sybsecurity数据库也将在其中有相应的条目。修改SySdalabaSeS表,将testdb的状态修改为-32768,然后在关闭AdaptiveServer后重新启动AdaPtiveServere1>updateSySdatabaSeSsetstatus=-32768wherename="testdb”2>go1>shutdown2>go第三步,由于事务日志已经很满,不能运用常规方法转储此事务日志,假如运用了dumptransaction或dumptransactionwithtruncate_only吩咐,而吩咐又由于日志空间不足失败时,可以运用dumptransaction的特别选项Withnoog,此选项可截断事务日志而不记录转储事务事务。全部dumptranWiIhnoOg都将在AdaPliVeSerVer错误日志中进行报告,这些消息包括执行此吩咐的用户ID、指示胜利或失败的消息,no_log是唯一生成错误日志消息的转储选项。但是这个选项(包括withtrur)cate_only)没有供应任何方法可任原白从上次例行转储后提交的事务。1>usetestdb2>go1 >dumptrantestdbwithno_log2>go第四步,修改sysdatabases表,将testdb的状态复原为。,然后禁用allowupdatestosystemtables*1usemaster2>go1>updatesysdatabasessetstatus-Owherename-"testdb”2>go1spconfigure"allowupdate*,O2>go2 .数据库日志损坏时重建日志启动数据库的解决方法首先推断错误为页损坏或者索引损坏,依据AdaptiveServerfailedtoretrievearowviaitsRIDindatabase,escourt5'becausetherequestedRIDhasahighernumberthanthelastRIDonthepage.Ridpageid=0xlc88a8;rownum=0x27.Pagepointer=0x26ICAOOO,pageno=1869992,status=0xl,objectid=8,indexid=0,level=0.推断其中:ObjeCtid=8表示日志段有问题解决方法一:截断日志先把SySdalabaSeS的SIatUS修改成-32768然后重新启动数据库l>updatesysdatabasessetstatus-32768wherename-"escourt5”4>go登陆数据库1>dumptransactionescourt5withtruncate_only2>goMsg921,1.evel14,State1:1.ine1:Database,escourt5'hasnotbeenrecoveredyet-pleasewaitandtryagain.1>dumptransactionescourt5withno_log2>goMsg921,1.evel14,State1:1.ine1:Database,escourt5'hasnotbeenrecoveredyet-pleasewaitandtryagain.说明这种发不起作用解决方法二:重做日志1>SPjrOle"grant","sybase_ts_role”,sa2>goAlltherolesspecifiedtobegrantedinthegrantrolestatementhavealreadybeengrantedtograntee'sa'.Authorizationupdated.(returnstatus=O)1>usemaster2>go1>dbccrebuild_log(escourt5,1,1)2>goDBCCexecutioncompleted.IDBCCprintederrormessages,contactauserwithSystemAdministrator(SA)role.1>shutdownwithnowait2>goServerSHUTDOWNbyrequest.TheSQ1.ServerisIeiminatingthisprocess.重启服务后把status修改成O后再重启服务。服务启动正常最好是通过dbccCheCkdb(databasename)检查一卜.数据样性。3.数据库处于可疑状态的解决方法如何解决数据库被挂起的问题现象:Error926Severity1.evel14ErrorMessageTextDatabase'xx,cannotbeopened-ithasbeenmarkedSISPECTbyrecoverExplanation(1) 当你运用TransacySQ1.吩咐操作这个数据库的数据时,出现这个信息,这是一个严峻的错误,假如你要运用这个数据库的数据,必需改正这个错误.(2) 启动BaCkUPServer,后备InaSter数据库l>dumpdatabasemasterto*/usrsybase/master.dup”2>go(3)用isql登录到SQ1.Server,须用sa帐号(本文以escourt5数据库为例)l>sp_configure"allowupdates*,12>gol>begintran2>gol>usemaster2>gol>updateSySdatabaSeS2>setstatus=-327683>Wherename="escourt5”4>go假如得到(1rowaffected),则l>comnit2>go否则l>rollback2>go(4)重新启动SQ1.Server.注:SQ1.SerVer重新启动之后,当发觉数据库本身存在不行夏原的问题时,如数据页损坏等,且没有完好的数据库备份,肯定要用bcp.out备份用户数据库数据。此时,以下步骤省略,并依据“如何删除坏的用户数据库”文章删除此数据库。之后重建此数据库,复原备份。否则,按以下步骤接着操作:用Sa帐号注册到SQ1.Server.Iranl>begin2>gol>usemaster2>gol>updateSySdaIabaSeS2>setStatus=O3>Wherename="escourl5”4>go假如得到(1rowaffected),则l>commit2>go否则l>rolIback2>gol>sp_configure“allowupdates*,02>go(5)重.新启动SQ1.Server.(6) 假如你的数据库原来有dboplion(例如"selectinlo","lrunclogonChkPt”等),你须要重新设置这些OPtion.(7) 当数据库已经更原可运用状态后,运行dbcc吩附检查数据库的一样性(参照“如何检查数据库中数据一样性”文章)(8) 备份用户数据库例如:*usrsybasepubs2.dup*2>go4.SybaSe系统崩渍了,没有备份,但设备文件还存在,如何复原数据库?有的时候,系统崩溃人手上也没有数据库的备份或者是备份太旧J工但侥幸的是设备还在,并且是完整的,这时可以通过文件COPY的方式笈原数据库。状况一、全部设备,包括master,均是完整的:这种状况是最简洁的,只须要先备份设备文件(包括master,copy到平安的地方),然后重新安装系统,建服务(保持页面大小、编码和排序及以前一样),然后停止服务,按原书目将全部设备文件拷贝回来,再重启服务即可。新建的服务名可及旧服务不同。建议把服务名.cfg也复制过来,省掉参数配置。状况二、应用的设备是完整的,但没有InaSter了:方法一、这种状况卜要复原数据库就须要原来的设备运用状况表了。重新安装系统,建服务,然后按原设备状况建设备(大小、位置保持和原来一样),接卜来依据记录卜来的设备运用状况建库,依次以及占用的空间要和以前的一样。然后停服务,将应用的数据库设备夏制回来,重启服务即可。请参考SybaseASE系统管理员口常维护指南的建议,定期备份master数据库。方法二、本试验描述了如何在master数据库毁坏的状况卜.,如何垂建主设备,豆原master数据库,得以重新曳原系统。这里假定:1MaSler数据库已损坏,或主设备已损坏。1有系统表的最新打印输出。1主设备只包括master数据库、Iempdb和model1有master数据库的最新备份,且上次转储master数据库后没有初始化任何设备或创建、变更任何数据库。关于复原过程1将主设备重建为第一次安装服务器时的缺省状态:1将master数据库旦原为缺省状态:1将master数据库夏原为上次备份时的状态:留意:在复原master数据库的早期阶段,不能运用系统存储过程。且原步骤步骤1:查找系统表查找已保存到文件的系统表SySdalabases、SySdeVices、SySUSages、Sysloginroles和syslogins的副本。用这些副本可以保证在此过程结束时系统己经全部豆原。步骤2:建立新的主设备假如AdaPliVeSerYer正在运行,关闭它,然后重建主设备。重建主设备时,必需指定设备大