SYBASE常见问题收集整理
Sybase编程中出现的错误及其解决办法-电脑资料
Sybase编程中出现的错误及其解决办法-电脑资料SYBASE 数据库是当今在UNIX环境下最为流行的大型数据库之一,本人在SYBASE下开发和维护软件的过程中,发现了一些SYBASE 的内部规则,在程序设计中极易造成误解,而达不到预期的目的,。
下文将本人所发现的几个问题及其解决办法叙述如下:1、在sybase11.5中,组合两个定长的char(x)="aaa",char (y)="bbb"; char(x)+char(y)!="aaabbb"declare @val_1 char(8)declare @val_2 char(1)select @val_2 = 'x'select @val_1 = "0000"select @var_1= @val_1 + @val_2select @var_1我们期望的结果为0000x,而实际上其结果为0000。
解决方法一:当我们将"select @var_1=@val_1+@val_2",改为"select @var_1=rtrim(@var_1)+@var_2"时,我们便看到了我们所期望的结果。
为什么呢?在有的SYBASE版本中存储一个char(n)时,在其真实值后补上了相应数量的空格,在本例中,存储在@var_1中的是0000 (在0000后有四个空格)。
你可以加上如下两句来验证:declare @val3 char(10)select @val3 = @val_1 + @val_2select @val3这时你会得到的结果为0000 x (在0000后有四个空格)。
解决方法二:将char 改为 varchar 也可以达到预期的目的,电脑资料《Sybase编程中出现的错误及其解决办法》(https://www.)。
2、用alter table 增加表结构时,虽然用sp_recompile tablename 重编译了所影响的数据库对象,但在运行某些包含"select * from tablename"的存储过程时,存储进程仍不认识用alter table 增加的列。
Sybase服务故障的分析及解决办法
Sybase服务故障的分析及解决办法一、问题的起因国库业务系统用DELL服务器原为国库核算系统、国库统计系统、国库综合业务报表系统、国债兑付管理系统四套业务系统的工作机,自2003年以来就投入运行,因使用时间较长,期间做过不少次系统配置更改及业务系统升级换代,因此运行速度越来越慢,且常出现些小问题,为此笔者新装了一台HP DX2000计算机作为生产机,而把DELL服务器改作备份机,以便于有充裕的时间对其进行系统的整理维护,提高其整体性能。
前些天,国库业务人员因为业务问题需要使用备份机,发现国库综合业务系统无法正常登录,查询服务功能,发现NTRS服务没有启动,如是采用手工启动的方法,结果出现如下错误提示:“在本地计算机,无法启动Sybse SQLServer_ntrs服务并未返回错误。
这可能是一个Windows内部错误或服务内部。
如果问题持续存在,请与您的系统管理员联系。
”二、处理的过程为解决此故障,笔者反复多次启动服务,乃至重新启动机器,但问题依然如此,联想到新装HP DX2000计算机更改IP地址时也出现过如此问题,而且Sybase Config也经常出现启动错误,需要到Sybase 系统目录中找到对应文件直接执行才能解决问题,因此认为Sybase本身可能存在某些问题,需要手工更改其他配置。
如是笔者打电话咨询总行信息技术支持中心,答复这个问题咨询的电话较多,每周都有好几个,这属于Sybase系统本身的不完善问题,而总行已经解除了与Sybase公司的服务协议,因此没有办法解决,只能删除NTRS服务再重建。
辛辛苦苦建立的NTRS服务,怎忍心一删了事,而且国库统计系统、国库综合业务报表系统、国债兑付管理系统三套系统都使用此服务,到时恢复起来也较费事。
抱定不到黄河心不死,见到棺材也不落泪的心里,笔者广泛查找资料,多方电话咨询Sybase方面的专家,经过连续数天的实践摸索,终于查明是Sybse服务配置的冲突所至,需要通过Sybase Dsedit更改系统配置或手工清理、修改SQL.ini文件。
SYBASE常见问题收集整理
SYBASE常见问题收集整理一、如何解决数据库被标记为"suspect"的问题之一(一般解决方案)?A.现象:Error 926Severity Level 14Error Message TextDatabase 'xx' cannot be opened - 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帐号(本文以pubs2数据库为例)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>commit2>go否则1>rollback2>go(4.1)如果条件允许,bcp out用户数据或dump用户数据库(5.1)这时重新启动SQL Server, 再有sa帐号注册到SQL Server.1>begin tran2>go1>update master..sysdatabases2>set status=03>Where name="pubs2"4>go如果得到(1 row affected),则1>commit2>go否则1>rollback2>go1>sp_configure "allow updates" ,02>go(4) 如果你的数据库原来有dboption(例如"select into","trunc log on chkpt"等), 你需要重新设置这些option..(5) 运行dbcc命令检查数据库的一致性isql -Usa -P -i dbcc.sql -o dbcc.outdbcc.sql文件示例:dbcc checkdb("pubs2")godbcc checkalloc("pubs2")godbcc checkcatalog("pubs2")gogrep Msg dbcc.out6) 后备用户数据库1>dump database pubs2 on "/usr/sybase/pubs2_dump.19991201"2>go如何解决数据库被标记为"suspect"的问题之二(数据库设备损坏时的解决方案)?A.现象:926错误产生的原因有几种。
SYBASE数据库的使用及日常问题的解决方法
SYBASE数据库的使用及日常问题的解决方法中兴通讯固网南京用服部辛国成摘要:介绍sybase数据库的基础知识和核心系统SQL Server的基本特征以及sybase软件重要组成、系统库和用户数据库主要部分,sybase数据库各种问题的处理。
关键词: SQL Server 数据库备份BCP表操作1 Sybase基础知识1.1 Sybase软件的组成Sybase软件可划分为以下三个部分:(1)进行数据管理与维护的联机关系数据库管理系统Sybase SQL Server;( 2 )支持数据库应用系统的建立和开发的一组前端工具软件Sybase SQL Tools;(3)可把异构环境下其他厂商的应用软件和任何类型的数据连接在一起的接口软件Open Client/Open Server。
SQL Server是个可编程的数据库管理系统(DBMS),它是整个Sybase产品的核心软件,起着数据管理、高速缓冲区管理、事务管理的作用。
1.2 SQL Server的基本特征SQL Server是个关系数据库管理系统,它具有如下一些基本特征:(1)SQL Server可以放在若干个磁盘设备上,初始安装时所需的磁盘空间根据版本不同需要的空间不同。
(2)SQL Server支持多库结构,也就是说Sybase系统中可以有多个数据库。
Sybase可以管理多个数据库。
(3)SQL Server可以编译和运行T-SQL语句,并可返回客户程序所要求的结果。
T-SQL语句是标准SQL的扩充,它除了有数据定义语句、数据操纵语句和数据控制语句之外,主要增加了流程控制语句。
(4)SQL Server可以管理多个用户并具有较高的事务吞吐量和较低的事务响应时间。
1.3 客户/服务器体系结构Sybase系统是一种建立在客户/服务器体系结构上的数据库管理系统。
那么什么是客户/服务器体系结构?从硬件角度看,客户/服务器体系结构是指将某项任务在两台或多台机器之间进行分配,其中客户机(Client)用来运行提供用户接口和前端处理的应用程序,服务器机(Server)提供客户机使用的各种资源和服务。
【sybase】bcp 问题总结
【sybase】bcp 问题总结标签:sybase bcp分类:数据库技术2010-12-29 23:04一. Bcp 错误ct_connect(): network packet layer: internal net library error: Net-Lib protocol driver call to connect two endpoints failedEstablishing connection failed.无法连接远程服务器cs_convert: cslib user api layer: common library error: Theconversion/operation was stopped due to a syntax error in the source field. CSLIB Message: - L0/O0/S0/N36/1/0:导入表对应的列数量不正确cs_convert: cslib user api layer: common library error: Theconversion/operation was stopped due to a syntax error in the source field.导入数据存在自增长列,但数据源不存在自增长列blk_rowxfer(): blk layer: internal BLK-Library error: Data truncated while doing local character set conversion. col = 3导入表对应的字段长度不足ct_sendpassthru(): network packet layer: internal net library error: Net-Library operation terminated due to disconnectCTLIB Message: - L5/O3/S5/N5/5/0:字符集错误二. Bcp 导入不同字符集数据bcp in到字符集是utf8的数据库时使用以下的参数,这样就可以解决java程序使用utf8字符集看中文是乱码的问题:bcp dbname..tabname in filename -Uxx -Pxx -Sxx-Jcp936 -c -Y三. 注意事项1. Tempdb的大小当Sybase执行bcp in脚本时,会占用导入数据2倍的tempdb空间,因此在执行前要仔细估计最大的table的大小,保证有足够的tempdb空间。
Sybase中的锁及死锁问题
Sybase中的锁及死锁问题一般来说,数据库都会有两种锁:内存锁和对象锁。
Oracle中有latch和lock,sybase中有spinlock和lock。
内存锁实际上就是数据库系统将自己管理的内存区按单元加锁,以防止一个任务在使用时被另一个任务修改。
用完这个内存单元后,内存锁被立即释放。
不过这简单说明一下这张表:比如共享锁和更新锁兼容,就是说加了共享锁,还可以加更新锁;排他锁和更新锁不兼容,就是说加了排他锁,就不可以再加更新锁。
这里可以看到,加了排他锁后,就不能再加任何锁了。
2锁方案:锁方案有三类:Allpages、Datapages、Datarows。
Allpages:全页锁,这里全页的意思是包括索引页和数据页。
Datapages:数据页锁,设置这种锁方案后,只会对数据页加锁。
Datarows:数据行锁,设置这种锁方案后,只会对数据行加锁。
这里可以看到,Datapages和Datarows只会对数据加锁,不会对数据相对应的索引加锁。
有了锁方案的概念,就好理解排他表锁、排他页锁、排他行锁的含义了。
比如:锁方案为Datarows,则会对表加XX行锁(XX可以是排他、共享或者更新);锁方案为Allpages或Datapages,则会对表加XX页锁(XX可以是排他、共享或者更新)。
3意图锁和更新锁:这里将意图锁和更新锁单独列出来,原因是这两种锁只在某一个时机下才有,过了那个时机就没有了。
意图锁:它是一种表级锁,表示在一个数据页上获得一个共享锁或排他锁的意图。
意图锁可以防止其他事务在该数据页的表上获得排它锁。
它分为排他意图锁和共享意图锁。
更新锁:它是一种页级锁,它在一个更新操作开始时获得,当要修改这些页时,更新锁会升级为排它锁。
4各种操作的加锁过程:其实上面说的那么多,主要就是为了说明最开始列举的10个锁类型。
下面就谈谈这10个种类型的锁在实际操作中是如何加锁的。
4.1 假定锁方案为Allpages:4.1.1 insert操作:当向表中执行Insert操作时,会先在表上加一个排他意图锁,然后加上排他页锁。
如何解决Sybase数据库乱码问题详解
如何解决Sybase数据库乱码问题详解Sybase数据库是一种常用的关系型数据库管理系统(RDBMS),它被广泛应用于企业级应用程序的开发和管理中。
然而,在使用Sybase数据库过程中,我们有时会遇到乱码问题。
乱码是指数据库中存储的数据在显示过程中出现了不正常的字符或者无法识别的字符。
本文将详细介绍如何解决Sybase数据库乱码问题。
一、乱码问题的原因分析乱码问题的产生原因非常多样化,下面列举了一些常见的原因:1. 字符集不匹配:数据库中使用的字符集与应用程序中使用的字符集不一致会导致乱码问题。
2. 数据导入不正确:如果在导入数据时未指定正确的字符集,则可能导致数据乱码。
3. 数据存储不正确:如果数据库中存储的字符串没有使用正确的字符集,将会导致乱码问题。
4. 字符串处理不当:在应用程序中对字符串进行处理时,如果没有正确处理字符集,数据可能会出现乱码。
5. 系统环境配置问题:有时,操作系统、数据库软件或应用程序中的某些配置存在问题,也可能导致乱码问题。
二、解决乱码问题的方法针对上述原因,可以采取以下一些解决乱码问题的方法:1. 修改字符集配置:确保数据库中使用的字符集与应用程序中使用的字符集一致。
可以通过修改数据库或应用程序的配置文件来设置正确的字符集。
2. 指定正确的字符集进行导入:在导入数据时,需要指定正确的字符集,以保证数据能够正确地存储到数据库中,避免乱码问题的发生。
可以根据具体情况使用不同的导入工具或命令来完成这个操作。
3. 使用合适的数据类型:在创建数据库表时,选择合适的字符数据类型来存储字符串。
根据具体情况选择varchar、nvarchar等数据类型,并指定正确的字符集。
4. 对字符串进行正确的处理:在应用程序中,对于涉及到字符串处理的操作,需要确保使用了正确的字符集。
比如,对字符串进行拼接、截取、比较、转换等操作时,都需要注意字符集的一致性。
5. 检查系统环境配置:如果乱码问题持续存在,需要检查系统环境配置是否正确,包括操作系统、数据库软件和应用程序的相关配置。
Sybase数据库常见问题及解决办法
四 a s 空口令修改后不能再改回
原 因: 为安全起 见 , a s 口令不能为空 , 但有些应 用 软件用s及空E令连接Sbs数据库 , a l yae —旦修改sE令, al
六. 使用S b s 单用户方式 ya e
原因: 当需要恢Jmatr  ̄ s 数据库时, [ e 必须使用单用
户方式 。 解决办法 :
应用系统就出错, 用普通方法无法再改 回空 口 令。
解决办法 :
s — o f u e ” p r d eso ” p c n g r u g a ev rin i
g 0
U i系统下,5 yae nx 1Sb s用户登 录, )  ̄ 执行s r evr t t re — as
g o
解决办法 : 在 S b s 安 装 目录 中, 除 s b . 文 件 yae 删 y a ek g s r
u pda e es db. s us r s t Ui t t t . ys e s e S d=6 wher e
na e=” t t e ” m es us r
U Se aSt m er
g o
s — o f u e “ lo u d ts 1 p c ni r g alw p ae ”,
go
新版本是 1 ., 55 但用 的最 多的版本是 1.和1 .。 人 1 9 25 在
民银行各中心支行中, y ae Sbs数据库主要用于国库核算 系统 ( no s 0 0evrsbsl.) 人事信息管理 Widw 0 sre+yae1 、 2 9 系统 ( n o s 0 0 ev rsb s1 .) 支 票影像 系 Widw 0 sre+ yae25 、 2 统外挂软件 ( n o s p sb sl .) 国际收支统计 Widw +y ae25 、 x (C i . +yae 1 ) 同城票据清算系统 (e t S u x 0 s sl. 、 On 55 b 9 rdh a l u 5 sb sl .) 在 日 i x +yae25 等。 n 常的Sb s数据库维护过程 yae 作中, 时会 ̄ 有 Sb s数 据库出错 的情况 , y ae 现将工作 中发现的典型问题及详细解决办法, 介绍给大家 。 为方面起见 , 假设S bs数据库服务名为Sb s, y ae y ae 数据库名为t tb 一个系统用户及ts b ed, s et 数据库用户名 d 为t tsr 为执行sl e u e, s q脚本 , n o s Widw 系统要进2.yae k b s S 的sl d atg 的窗口, nx q a vnae U i系统 通过执行i l U a s — s— q P x - sb s, xx Syae 进人命令行窗 E。 l
SybaseIQ常见问题
if exists(
select * from sys.sysprocedure
where proc_name='psdss_table'
) then
DROP PROCEDURE psdss_table
end if;
存储过程可在Interactive SQL Java中执行
-iqmc 500 IQ主内存大小,一般占可用同内存40%
-iqtc 800 IQ临时内存大小,一般占可用同内存60%
-iqgovern 200 并行查询用户数量,缺省(2*number of cpus)+10
-iqnumbercpus 2 制定IQ使用的逻辑CPU数量
-iqtss 300 IQ线程内存大小
删除字段SQl:ALTER TABLE psdss_table DROP psdss_column;
删除主键约束:ALTER TABLE psdss_table DR TABLE psdss_table ADD CONSTRAINT pk_name PRIMARY KEY(psdss_column);
修改字段类型、字段类型长度,需要删除表重建,其余的不用。
如果要用语句增加主键,必须先修改字段不为空,再删除原有主键,新建主键。
应用其他桌面主题的话,启动IQ会报错:“应用程序DDL*****为无效的Windwos映像。请再检测一遍您的安装盘。”
增加字段SQL:ALTER TABLE psdss_table ADD (psdss_column NUMERIC(18) NULL);
-x tcpip{port=2639} 用于修改服务器开启的端口。默认是2638,目的是为了再启动一个服务器的时候不与2638这个端口冲突。
sybase常见错误
sybase常见错误在用isql连接数据库的时候,比较常见的错误有:服务没启动报错,报密码错误,报服务名不存在。
分别为:服务名不存在:CT-LIBRARY error:ct_connect(): directory service layer: internal directory control layer error: Requested server name not found.服务没有启动:CT-LIBRARY error:ct_connect(): network packet layer: internal net library error: Net-Lib protocol driver call to connect two endpoints failed密码错误:Msg 4002, Level 14, State 1:Server 'TEST':Login failed.CT-LIBRARY error:ct_connect(): protocol specific layer: external error: The attempt to connect to the server failed.在执行isql命令连接数据库的时候,报密码错误和服务名称不存在这两个错误的情况下,反映很快。
也就是说:在isql命令行后敲入回车后很快就给你提示服务名不存在或密码错误。
但是在报因服务没有启动导致的错误时,要等一段时间才有结果。
因为 isql 需要等待 ASE 服务器的响应。
连接sybase数据库的时候将依次尝试sql.ini文件中相应服务名下面的所有监听信息。
如果所有的监听信息都连接失败后,才给出无法连接的提示信息。
sybase尝试连接一个监听地址端口需要花费多长时间?失败后将继续尝试几次?以后再总结。
Sybase问题集整理
Sybase数据库问题集整理1.ASE12.5.4服务器默认字符集为utf8,默认语言为中文,客户端使用字符集utf8连接时汉字出现乱码问题解决方法:将客户端的连接字符集指定为cp9362.ASE15.0.3在windows 2003 server x64上安装进行到配置服务时,配置self manage的用户名和密码分别为job_user/job_user,服务创建时出错,报:创建自管理的用户或登录失败解决方法:仅在测试环境上发现此问题。
暂时解决方法,配置自管理的用户名为sa,密码为默认的空3.用server config图形工具欲将系统默认字符集配置为cp936,添加字符集的可用字符集列表中没有cp936解决方法:手动添加cp936字符集。
cd %sybase%\charsetscharset –Usa –P –Sservername binary.srt cp936然后通过系统存储过程sp_configure 将参数:default character set id 调整成cp936的id,可能为171,需要查询select id,name from master..syscharsets where name=’cp936’重启ASE两遍后,字符集就调整好了。
4.在windows 2008 R2上安装ASE15.0.3ESD#1时,不能创建主服务、备份服务等。
提示无法执行二进制程序sqlsrvr.exe等。
原因:此为操作系统兼容问题!错误信息见文件:windows2008R2-install-error.txt解决方法:先安装ASE15.0.3ESD#1,先不创建数据库服务,将程序升级到ASE15.0.3ESD#3(或者目前最新的ESD#4),然后再创建数据库服务。
另外,ASE15.5在windows2008R2上不存在兼容问题。
5.不能执行远程服务器上的命令,如: SYB_BACKUP…sp_who等。
SYBASE常见问题
SYBASE常见问题1.Sybase数据库日志满碰到这种情况,常会出现能查询数据,但无法更新数据,启动事务等。
在代码中跟踪可以发现,连接能够打开,但事务却无法开启。
常会提示“Connection to Sybase server has been lost. All active transactions have been rollbacked”的错误信息。
解决办法:若是开发数据库,则直接清除日志即可。
若是正式数据库:建议备份当前日志再清空日志,扩日志设备及日志数据库。
清空日志的语句为『dump transaction database_name with no_log 』2.Sybase中文乱码出现这种情况的原因是sybase的服务器字符集不支持中文或是客户端的字符集与服务端字符集不一致。
可以考虑更改sybase的默认字符集。
在Sybase12.5的版本中支持中文的字符集有CP936、EUCGB、UTF-8和GB18030。
这里我们针对Sybase 服务器字符集不支持中文给出解决办法:解决办法(安装cp936字符集):假设sybase的安装路径为"D:\Sybase"。
(1)D:\>cd \sybase\charsets\cp936(2) D:\sybase\charsets\cp936> charset -Usa -Psa_pass -Sserver_name binary.srt cp936(3) 在InterActiveSQL中执行『select name,id from syscharsets』,需注意的是这里要选择在“master”数据库下执行,第4步也是。
找到name为cp936的ID,假定是171。
(4)在InterActiveSQL中执行『sp_configure 'default character set id',171』(5) 重启Sybase服务两次。
Sybase IQ监控与常见问题解答
© 2002 Sybase, Inc. and its subsidiaries. All rights reserved.
监控Loads/Deletes/Inserts
在事务结束时,会输出总结信息:
100000 records were inserted into 'customer' Insert for 'customer', completed in 86 seconds.
监控数据装载信息
在数据装载的第一阶段, 显示从数据源读数据的统 计信息
统计当前使用内存 (IQ caches + Heap)/ 装载总内存 的 比例
Mem: 30mb/M31
显示数据表空间与临时表空间的使用状况, 数据块的 使用情况以及上锁情况
Main Blks: U5872/28%, Buffers: U6392/L9 Temporary Blks: U13677/33%, Buffers: U3121/L116
当这些选项存在非零 值时,数据库可能存 在较为严重的错误
为了使此存储过程获 得准确的结果,必须 在运行此存储过程之 前提交检查点
(continued…)
© 2002 Sybase, Inc. and its subsidiaries. All rights reserved.
14- 11
使用系统提供存储过程监控数据库
© 2002 Sybase, Inc. and its subsidiaries. All rights reserved.
监控数据装载信息
在装载的过程中存在三个阶段
Phase 1 – 从文本文件读数据,然后向磁盘写LF, HNG, and FP索引数据 Phase 2 – 对HG索引数据进行排序; 同时继续将其它类 型的索引数据写到磁盘上 Phase 3 – 将HG索引数据写到磁盘上
Syabse数据库常见问题解法之数据库无法启动
Syabse数据库常见问题解法之数据库无法启动
在探讨本问题之前,首先要为大家解释一下Syabse数据库本身。
Syabse数据库应用和本身的架构相对而言都相对比较复杂,多数技术人员及公司对Sybase数据库底层结构和运行机制也处于并非完全了解的阶段,这就对Sybase数据库数据恢复和Sybase数据库数据修复造成了很大的阻碍。
难道一旦Sybase数据库出现严重的故障就没有解决之道了吗?答案是否定的。
计算机运行的根本原理谁都无从改变,任何系统和应用都要遵守计算机的计算和存储规则,只不过是某些概念和规则过于生涩,导致我们需要更多的时间和精力来学习和熟悉。
这也是目前Sybase数据库数据恢复和数据修复方面的处境。
下面将以真实案例为例为大家介绍数据库无法启动该如何解决。
Sybase版本:SQL Anywhere 8.0
故障现象:数据库无法启动。
错误提示如图:
然后使用 Sybase Central 连接后报错如图:
经过分析得出的结论是:突然断电造成数据库无法回写正常数据,导致多个存储页数据不一致,系统表描述和存储表不一致,并有一些存储页底层数据完全杂乱。
于是我们在Sybase数据库底层把杂乱和错误的存储页进行修正,并对系统表部分信息进行更改。
繁重的Sybase数据库修复工作完成后,Sybase数据库已能成功启动,使用Sybase Central已能成功连接,经用户验证已无任何问题,上两张图给大家看看最终成果。
SYBASE常见问题
Explanation: An internal locking/synchronization rule was broken. Report the error to your System Administrator. Shut down and restart Adaptive Server. 5211 26 Failure concurrent with dump in database %d: does not possess flushlist lock. caller
SYBASE使用问题解答
1常见问题1.1 初级篇1.1.1在SQL Server中表大小是否有限制?在系统11之前的SQL Server各版中,每张表只能有65535个分配页面。
现在,SQL Server 11就没有这种情况,只有表所在数据库大小的限制,而数据库大小只受硬盘资源的限制。
实际上,表大小几乎没有限制。
1.1.2一旦客户突然退出或系统重启,SQL Server如何回滚事务?当客户端退出注册或者突然死机,SQL Server应回滚客户端送来的,但未提交的事务。
对于Unix和VMS客户端,其操作系统会通知SQL Server它的连接已丢失,SQL Server然后回退未提交的数据库事务。
而对于PC客户端,如果TCP IP Keepalive 被设置成允许状态,它定期地检查网络端口是否存活,一旦网络连接断开,SQL Server就被通知到,它便回退未提交事务。
但是,如果Keepalive被关闭,SQL Server将等待客户端的联络。
服务器线索便无期限地处于发送或者接收睡眠状态。
那么,未提交事务直到下次重新启动服务器时,才能被回退。
1.1.3为什么有时候数据库事务日志满了,使用Dump transaction withno-log 仍不能截断日志?有两种情况,可能出现这个问题。
一是应用系统给SQL Server发送了一个用户自定义事务,一直未提交,这个最早活跃事务阻碍系统截断日志。
二是客户端向SQL Server发送了一个修改数量大的事务,清日志时,该事务还正在执行之中,此事务所涉及的日志只能等到事务结束后,才能被截掉。
对于第一种情况,只要督促用户退出应用或者提交事务,系统管理员便可清掉日志。
因为给SQL Server发送Dump transaction with no-log或者with truncate-only,它截掉事务日志的非活跃部分。
所谓非活跃部分是指服务器检查点之间的所有已提交或回退的事务。
而从最早的未提交的事务到最近的日志记录之间的事务日志记录被称为活跃的。
SYBASE数据库常见的问题总结
SYBASE 数据库常见问题总结SYBASE 数据库常见问题总结 (1)1. SYSLOGS日志满了进不了系统,如何清除日志启动系统 (1)2. 数据库日志损坏时重建日志启动数据库的解决办法 (3)3. 数据库处于可疑状态的解决方法 (5)4.Sybase系统崩溃了,没有备份,但设备文件还存在,如何恢复数据库? (8)5.不小心直接删除了日志的设备文件,如何恢复数据库? (13)6.sa密码忘记了导致isql -Usa -P******进不去怎么办? (15)7.关于sybase的配置-(数据库慢的请留意) (15)8.设备路径更改的方法 (19)9.dump文件load后数据库访问不了解决办法 (20)10.sybase数据库备份方案 (20)11.master数据库状态被置为-32768后的处理方法 (26)1. SYSLOGS日志满了进不了系统,如何清除日志启动系统业务系统数据库不能正常启动,对于这一类问题,我们按照如下步骤解决:第一步,启用allow updates to system tables,这样可以使具有系统管理员角色的用户能够改变系统表并可创建和修改系统表的存储过程,其中系统表包括master数据库中所有Sybase提供的表以及用户数据库中所有以“sys”开头的表和在sysobjects表中其ID值小于或等于100的表。
系统表的不正确变更会导致数据库损坏和数据丢失,修改系统表时务必要使用begin transaction来保护数据库不受可能损坏数据库的错误影响,完成修改后应立即禁用allow updates to system tables。
1>sp_configure "allow update",12>go第二步,Adaptive Server中的每个数据库在sysdatabases中都有相应的一行,安装Adaptive Server后,master数据库、model数据库、sybsystemprocs和tempdb数据库在sysdatabases中都将有相应的条目,如果已经安装审计功能,sybsecurity数据库也将在其中有相应的条目。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
use master
go
sp_dboption pubs2,"single user",false
go
use pubs2
go
checkpoint
go
quit
go
isql -Usa -Pxxxxxx -SSYBASE dbcc_db.out
grep Msg dbcc_db.out
1>begin tran
2>go
1>update master..sysdatabases
2>set status=0
3>Where name="pubs2"
4>go
如果得到(1 row affected),则
1>commit
2>go
否则
1>rollback
在系统报错以后, 确定数据库是否有损坏。
在备份数据库之前, 确保备份的完整性。
如果怀疑数据库有损坏时, 例如, 使用某个表时报出表损坏的信息, 可以使用 dbcc 确定数据库中其他
表是否也有损坏。
下面是dbcc的简单用法:
dbcc checktable (table_name)
检查指定的表, 检查索引和数据页是否正确链接, 索引是否正确排序, 所有指针是否一致, 每页的数据
信息是否合理, 页偏移是否合理。
dbcc checkdb (database_name)
对指定数据库的所有表做和checktable 一样的检查。
dbcc checkalloc (database_name,fix|nofix)
检查指定数据库, 是否所有页面被正确分配, 是否被分配的页面没被使用。当使用"fix"选项时,
3) 用isql登录到SQL Server, 须用sa帐号 (本文以pubs2数据库为例)
1>sp_configure "allow updates", 1
2>go
1>begin tran
2>go
1>update master..sysdatabases
2>set status = status - 256
vi dbcc_db.sql
use master
go
sp_dboption pubs2,"single user",true
go
use pubs2
go
checkpoint
go
dbcc checkdb(pubs2)
go
dbcc checkalloc(pubs2,fix)
go
dbcc checkcatalog(pubs2)
在检查数据库的同时会自动修复有问题的页面。(若数据库数据量很大,则该过程会持续很长时间。)
dbcc tablealloc (table_name,fix|nofix)
检查指定的表, 是否所有页面被正确分配, 是否被分配的页面没被使用。是 checkalloc 的缩小版本,
对指定的表做完整性检查。当使用"fix"选项时,在检查数据表的同时会自动修复数据表中有问题的页
3>Where name="pubs2"
4>go
如果得到(1 row affected),则
1>commit
2>go
否则
1>rollback
2>go
(4) 重新启动SQL Server, 运行dbcc命令检查数据库的一致性编辑生成dbcc.sql文件:
dbcc checkdb("pubs2")
老的虚拟设备号不能使用,现在服务器不提示错误。但dump&load数据库会出现3230错误。
解决办法是重启服务器,3230错便会消失。
Q.如何删除坏的用户数据库?(以pubs2为例)
A.当使用drop database无法删除数据库时,使用本文所示方法可以删除。
(1)使用isql以sa注册SQL server
2>go
(6)恢复允许修改系统表
1>sp_configure "allow updates",0
2>go
(7)结束
如何修改IP地址改变后的interfaces文件?
A.安装SYBASE Adapive Server的机器IP地址改变后, 应修改 interfaces 文件及有关的设置。
不正确 )时,导致数据库恢复失败,出现926错误的情况。
(1) 请先恢复数据库设备及读写权限。
(2) 启动Backup Server, 后备master数据库
1>dump database master to "/usr/sybase/master_dump.19991201"
2>go
可使用dscp 或 dsedit 进行修改。 如果客户端联结服务器使用的是服务器的地址而不是机器名,那么客
户端也需修改。
如何检查数据库中数据的一致性?
A.数据库一致性检查(dbcc)提供了一些命令用于检查数据库的逻辑和物理一致性。Dbcc主要有两个功能:
使用checkstorage 或 checktable 及 checkdb 在页一级和行一级检查页链及数据指针。
(2)设置允许修改系统表
1>sp_configure "allow updates",1
2>go
(3)把 要删除的用户数据库置为"suspect"状态
1>use master
2>go
1>begin tran
2>go
1>update sysdatabases set status=256
2>go
如何解决ASE11.5装载或备份数据库报3230的错误?
A.用sp_dropdevice或sybase central删除逻辑设备后,不重启服务器,不回收虚拟设备号,重用它建立
设备,新建数据库。这时dump&load数据库会出3230错误。这是ASE11.5的BUG,过去不重新启动服务器,
使用checkstorage, checkalloc, 或 checkverify, tablealloc, 及indexalloc 检查页分配。
在下列情况中需要使用 dbcc 命令:
作为数据库日常维护工作的一部分, 数据库内部结构的完整性决定于sa 或dbo 定期地运行 dbcc 检查。
面。
关于上述命令的其它选项及详细使用方法和checkstorage, checkverify, indexalloc 的详细使用方
法, 请参阅有关命令手册。
举例1: Unix平台检查pubs2数据库的一致性
单用户模式启动Server:
$SYBASE/install startserver -f RUN_server_name -m
2>where name="pubs2"
3>go
如果得到(1 row affected),则
1>commit
2>go
否则
1>rollback
2>go
(4)重启server,并用isql以sa注册。
(5)删除数据库
1>dbcc dbrepair(pubs2,dropdb)
2>go
(3) 用isql登录到SQL Server, 须用sa帐号 (本文以pubs2数据库为例)
1>sp_configure "allow updates", 1
2>go
1>begin tran
2>go
1>update master..sysdatabases
2>set status = -32768
举例2: Unix平台检查pubs2数据库中titles表的一致性
vi dbcc_table.sql
use pubs2
go
dbcc checktable(titles)
go
dbcc tablealloc(titles)
go
isql -Usa -Pxxxxxx -SSYBASE < dbcc_table.sql > dbcc_table.out
如何解决数据库被标记为"suspect"的问题之一( 一般解决方案)?
A.现象:Error 926
Severity Level 14
Error Message Text
Database 'xx' cannot be opened - it has been marked SUSPECT by recover Explanation
grep Msg dbcc_table.out
如何在Windows NT上手动卸载Sybase Server ?
A.关闭 Adaptive Server.
将Adaptive Server在Windows NT Services中由自动改为手动
重新启动 Windows NT server
如果 interfaces 文件中使用的是机器名而不是 IP 地址, 则不需要变动。 但如果客户端联结服务器使
用的是服务器的 IP 地址而不是机器名,那么客户端需修改联结服务器的 IP 地址.。