SYBASE数据库常见的问题总结Word文件下载.docx
《SYBASE数据库常见的问题总结Word文件下载.docx》由会员分享,可在线阅读,更多相关《SYBASE数据库常见的问题总结Word文件下载.docx(23页珍藏版)》请在冰豆网上搜索。
但是这个选项(包括withtruncate_only)没有提供任何方法可恢复自从上次例行转储后提交的事务。
1>
usetestdb2>
dumptrantestdbwithno_log
第四步,修改sysdatabases表,将testdb的状态恢复为0,然后禁用allowupdatestosystemtables。
usemaster
updatesysdatabasessetstatus=0wherename="
2>
sp_configure"
0
2.数据库日志损坏时重建日志启动数据库的解决办法首先判断错误为页损坏或者索引损坏,根据
AdaptiveServerfailedtoretrievearowviaitsRIDindatabase'
escourt5'
becausetherequestedRIDhasahighernumberthanthelastRIDonthepage.Ridpageid=0x1c88a8;
rownum=0x27.Pagepointer=0x261CA000,pageno=1869992,status=0x1,objectid=8,indexid=0,level=0.
判断其中:
objectid=8表示日志段有问题
解决方法一:
截断日志
先把sysdatabases的status修改成-32768然后重新启动数据库
updatesysdatabasessetstatus=-32768wherename=
"
escourt5"
4>
登陆数据库
dumptransactionescourt5withtruncate_only
go
Msg921,Level14,State1:
Line1:
Database'
hasnotbeenrecoveredyet-pleasewaitandtryagain.
dumptransactionescourt5withno_log
说明这种发不起作用解决方法二:
重做日志
sp_role"
grant"
"
sybase_ts_role"
sa
Alltherolesspecifiedtobegrantedinthegrantrolestatementhavealreadybeengrantedtograntee'
sa'
.
Authorizationupdated.
(returnstatus=0)
usemaster
dbccrebuild_log(escourt5,1,1)
messages,
DBCCexecutioncompleted.IfDBCCprintederrorcontactauserwith
SystemAdministrator(SA)role.
shutdownwithnowait
ServerSHUTDOWNbyrequest.
TheSQLServeristerminatingthisprocess.重启服务后把status修改成0后再重启服务。
服务启动正常最好是通过dbcccheckdb(databasename)检查一下数据一致性。
3.数据库处于可疑状态的解决方法如何解决数据库被挂起的问题
现象:
Error926
SeverityLevel14
ErrorMessageText
xx'
cannotbeopened-ithasbeenmarkedSUSPECTbyrecoverExplanation
(1)当你使用Transact_SQL命令操作这个数据库的数据时出现这个信息,这是一个严重的错误,如果你要使用这个数据库的数据,必须改正这个错误.
(2)启动BackupServer,后备master数据库1>
dumpdatabasemasterto"
/usr/sybase/master.dup"
(3)用isql登录到SQLServer,须用sa帐号(本文以escourt5数据库为例)
allowupdates"
1
begintran
updatesysdatabases
setstatus=-32768
3>
Wherename="
如果得到(1rowaffected),则
commit
否则
rollback
(4)重新启动SQLServer.
注:
SQLServer重新启动之后,当发现数据库本身存在不
可恢复的问题时,如数据页损坏等,且没有完好的数据库备份,
之后重
一定要用bcp...out备份用户数据库数据。
此时,以下步骤省略,并按照“如何删除坏的用户数据库”文章删除此数据库。
建此数据库,恢复备份。
否则,按以下步骤继续操作:
用sa帐号注册到SQLServer.
setstatus=0
0
(5)重新启动SQLServer.
(6)如果你的数据库原来有dboption(例如"
selectinto"
trunclogonchkpt"
等),你需要重新设置这
些option.
(7)当数据库已经恢复可使用状态后,运行dbcc命令检查
数据库的一致性(参照“如何检查数据库中数据一致性”文章)
(8)备份用户数据库
例如:
dumpdatabaseescourt5to"
/usr/sybase/pubs2.dup"
4.Sybase系统崩溃了,没有备份,但设备文件还存在,如何恢复数据库?
有的时候,系统崩溃了,手上也没有数据库的备份或者是备份太旧了,但侥幸的是设备还在,并且是完整的,这时可以通过文件COPY勺方式恢复数据库。
情况一、所有设备,包括master,均是完整的:
这种情况是最简单勺,只需要先备份设备文件(包括master,copy到安全勺地方),然后重新安装系统,建服务(保持页面大小、编码和排序与以前一样),然后停止服务,按原目录将所有设备文件拷贝回来,再重启服务即可。
新建勺服务名可与旧服务不同。
建议把服务名.cfg也复制过来,省掉参数配置。
情况二、应用的设备是完整的,但没有master了:
方法一、这种情况下要恢复数据库就需要原来的设备使用情况表了。
重新安装系统,建服务,然后按原设备情况建设备(大小、位置保持和原来一致),接下来根据记录下来的设备使用情况建库,顺序以及占用的空间要和以前的一致。
然后停服务,将应用的数据库设备复制回来,重启服务即可。
请参考SybaseASE系统管理员日常维护指南的建议,定期备份master数据库。
方法二、
1.重新创建master设备本实验描述了如何在master数据库毁坏的情况下,如何重建主设备,恢复master数据库,得以重新恢复系统。
这里假定:
lMaster数据库已损坏,或主设备已损坏。
l有系统表的最新打印输出。
l主设备只包括master数据库、tempdb和model
l有master数据库的最新备份,且上次转储master数据库后没有初始化任何设备或创建、变更任何数据库。
关于恢复过程
l将主设备重建为第一次安装服务器时的缺省状态;
l将master数据库恢复为缺省状态;
l将master数据库恢复为上次备份时的状态;
注意:
在恢复master数据库的早期阶段,不能使用系统存储过程。
恢复步骤
步骤1:
查找系统表
查找已保存到文件的系统表sysdatabases、sysdevices、sysusages、sysloginroles和syslogins的副本。
用这些副本
可以保证在此过程结束时系统已经全部恢复。
步骤2:
建立新的主设备
如果AdaptiveServer正在运行,关闭它,然后重建主设备。
重建主设备时,必须指定设备大小。
开始重建前,记住以下几点:
l保留旧设备,以防遇到问题,旧设备可提供至关重要的信息。
l使用buildmaster命令之前应关闭AdaptiveServer。
l不同操作系统上创建主设备的命令有所不同,如:
buildmast
(unix)、bldmaster(windowsNT),并安装通用master数据库的副本。
l命令中给出主设备的全名和大小。
示例:
重建一个30兆(15360个2k的页)
在WindowNT上:
bldmastr—dd:
\devices\master.dat-s15360
步骤3:
以主恢复方式启动AdaptiveServer
使用-m选项以主恢复方式启动AdaptiveServer。
在WindowNT上,使用sqlsrvr命令从命令行启动AadaptiveServer。
—ed:
\sybase\install'
errorlog—id:
\sybase\ini
-MD:
\sybase-m
说明:
以主恢复方式启动AdaptiveServer时,只允许一个用户(系统管理员)登录。
步骤4:
重建master的设备分配
检查sysusages系统表的书面副本,如果有多行dbid=1的记录,则需要增加master的大小以便装载转储。
最简单情况下,对master进行额外分配只需要使用alterdatabase即可。
复杂情况,必须为其它数据库分配空间,以便重新构造恢复master所需的正确的vstart值。
alterdatbasemasteronmaster=2
步骤5:
检查BackupServer和sysservers系统表信息。
使用空口令以“sa“用户登录服务器(如果BackupServer的网络名不是SYB_BACKUP则必须更新sysservers以便AdaptiveServer可以与其BackupServer通信)。
l检查interfaces文件中BackupServer的名称;
l并发出下面的命令:
select*fromsysservers
wheresrvname=”SYB_BACKU”P
l检查此命令中输出结果的srvnetname。
是否与服务器的backup
Server的interfaces文件条目匹配,若匹配跳过步骤5;
l如不同,则必须更新sysservers
begintranaction
updatasysserver
setsrvnetname=”backupserver_name”
wheresrvname=”SYB_BACKU”Pl核实该命令,如果updata修改了多行,或者修改了不应修改的行,则发出rollbacktranaction命令,然后尝试再次更新。
如果该命令正确修改了BackupServer的行,则发出committransaction命令。
步骤6:
核实BackupServer正在运行
WindowNT平台上,本地安装的SybaseCentral和服务管理器可以显示BackupServer是否正在运行。
步骤7:
装载master数据库的备份
在WindowNT上:
loaddatabasemasterfrom“d:
\device\master.bck”
在loaddatabase成功完成后,AdaptiveServer将关闭。
步骤8:
更新numberofdevices配置参数仅当使用的数据库设备比缺省值多时才执行此步骤。
步骤9:
以主恢复方式方式重新启动AdaptiveServer
装载master的备份将使“sa”帐号恢复到以前的状态。
如果sa帐号有口令,则口令恢复。
步骤10:
检查系统表以检验master的当前备份
l如果发出最新的diskinit、createdatabase或alterdatabase命令以后已备份了master数据库,则sysusages、sysdatabases、和sysdevice的内容将与书面副本匹配。
l如果副本中的任何设备未包含在已恢复的sysdevices中,则上次备份以后已添加了设备,必须运行diskreinit和diskrefit。
步骤11:
重新启动AdaptiveServer以常规(多用户)模式重新启动AdaptiveServer
步骤12:
检查Adaptiveserver
l将sysusages的书面副本与新联机版本比较
l将sysdatabase的书面副本与新联机版本比较
l在每个数据库上运行dbcccheckalloc
l检查每个数据库中重要的表完全恢复master数据库并运行全部的dbcc完整性检查后,使用常规转储命令备份此数据库。
首先,应尽可能从操作系统中恢复被误删除的设备文件;
如果不能恢复,可创建一个和被删除设备文件大小相同的新设备文件,然后运行
dbccrebuild_log。
下面给出一个具体的测试用例:
--创建测试数据库test
usemastergo
diskinitname='
test_dat_dev'
physname='
/opt/sybase/data/test_dat_dev.dat'
size='
50M'
diskinit
name='
test_log1_dev'
/opt/sybase/data/test_lo
g_dev1.dat'
10M'
test_log2_dev'
/opt/sybase/data/test_log_dev2.dat'
gocreatedatabasetestontest_dat_dev='
40M'
logontest_log1_dev='
5M'
test_log2_dev='
2M'
go--产生一些日志
usetest
createtabletest(
idintnotnull,
namechar(20)notnull
)
insertintotestvalues(1,'
aaaaaaa'
insertintotestvalues(2,'
bbbbbbb'
insertintotestvalues(3,'
ccccccc'
insertintotestvalues(4,'
ddddddd'
6.sa密码忘记了导致isql-Usa-P******进不去怎么办?
1、在sybase目录的install子目录的启动server文件
RUN_server名,编辑该文件,在末尾增加-psa,保存该文件。
2、如果服务器已经启动,先停止之。
3、执行第1步批处理文件以启动server,在启动最后显示信息出现sa的新口令,记录之。
4、切换到SQLAdvangtage以sa帐号登录,口令为新记录之口令。
5、进入server以后,用命令sp_password修改sa口令,sp_password'
原密码'
'
新密码'
用户名'
新密码的位数一定要大于6位,否则不能够更改成功。
6、回到第1步,去掉增加的选项-psa,保存退出。
7.关于sybase的配置-(数据库慢的请留意)说明:
数据库性能慢的主要原因有两个
1)数据库服务配置不合理
2)应用程序不合理遇到数据库性能下降时通常先检查数据库服务配置方面有没有可以改善的,修改之后再观察一段时间,如果性能没有改善的话就要分析应用程序上有没有可以调整的地方:
索引是否合理,sql语句是否优化等。
本篇主要分析数据库服务的配置:
问题分析:
小型机硬件:
rp2470双机、CPU700M*2内存512M*6以下是现场发过来的主要配置情况:
numberoflocks
300000//
通常不需要配置
太多的锁10万就够了
maxmemory
500000
//
物理内存3G,
配
给sybase的
为
1G
明显不合
理
式是性能最差的锁,一般不用
(内存*1024*1024*0.5*60%)
numberofopenindexes4000//通常2000
numberofopenobjects4000//通常2000
numberofuserconnections300//
numberofworkerprocesses0//应工作进程数
procedurecachesize154800//要超过100M
totaldatacachesize453699//
多cpu要打开相
存储过程缓存不
明显该值太小
allocatemaxsharedmemory0//
打开sybase占用
内存的开关
maxonlineengines2
numberofenginesatstartup2
问题处理:
建议先调整以下配置
maxmemory"
1150000
//sybase
占用2.3G内存
allocatemaxsharedmemory"
userlogcachesize"
4096//用户日志缓存用来缓存