当前位置:文档之家› SYBASE数据库故障处理方法

SYBASE数据库故障处理方法

SYBASE数据库故障处理方法
SYBASE数据库故障处理方法

SYBASE数据库故障处理方法

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 –P

1> update master..sysdatabases 2> set status = -32768 where name =‖

sybsystemprocs‖ 1>go 1>shutdown with nowait 2>go 关闭数据库

重新启动.

4.用 isql 登录到sql server 中,修改 master库中sysdatabases 表中

sybsystemprocs 库对应的 status 的值为0. $isql –Usa –P

1>update master..sysdatabases 2>set status = 0 where name =‖

sybsystemprocs‖ 3>go 1>shutdown with nowait 2>go 关闭数据库重新启动.

5. 将Sybase.cfg 中的‖allow updates to system‖ 的值改为0.

二、如何恢复master数据库

ASE can't setup and has no valid dump of master

1、编辑RUN_servername 在命令行最后加入:-T3607

2、单用户模式启动ASE $cd install $startserver -f RUN_servername -m

3、bcp out系统表 $bcp master..sysdevices 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..syscharsets out /directory.spec/charsets -Usa -P -c 4、shutdownASE

5、创建新master设备 $buildmaster -d -

s (new_master_device_size以2K为单位)

6、编辑RUN_servername 将指定master设备指定为新创建的master设备,并

删除在第1步中增加的参数。

7、删除/directory.spec/dbs、/directory.spec/usages文件中有关

master、tempdb、

model的内容。

8、单用户模式启动ASE $cd install $startserver -f RUN_servername -m

9、 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..syslogins 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 -c

10、shudown ASE

11、执行installmaster脚本 $isql -Usa -P <

$SYBASE/scripts/installmaster 12、启动ASE

三、如何删除坏的用户数据库,(以pubs2为例)

当使用drop database无法删除数据库时,使用本文所示方法可以删除。

(1)使用isql以sa注册SQL server

(2)设置允许修改系统表 1>sp_configure "allow updates",1 2>go

要删除的用户数据库置为"suspect"状态 1>use master 2>go (3)把

1>begin tran 2>go 1>update sysdatabases set status=256 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

(6)恢复允许修改系统表 1>sp_configure "allow updates",0 2>go

(7)结束

四、如何做 rebuild log

注意:这个过程可能会引起数据的不一致性。

(1)赋予sa用户sybase_ts_role的角色 isql -Usa -P 1>sp_role

"grant","sybase_ts_role",sa 2>go 1>quit

(2)将数据库置为"bypass recovery"状态 isql -Usa -P 1>sp_configure "allow

updates",1 2>go 1>use master 2>go 1>update sysdatabases set status=-32768 2>where name="database_name" 3>go 1>shutdown with nowait 2>go (3)rebuild数据库日志重启Server isql -Usa -P 1>use master 2>go 1>dbcc rebuild_log(database_name,1,1) 2>go 1>shutdown with nowait 2>go (4)重启SQL server 1>use master 2>go 1>update sysdatabases set status=0 where

name="database_name" 2>go 1>sp_configure "allow updates",0 2>go

1>shutdown with nowait 2>go

(5)在重启SQL server之后,如果数据库恢复正常,rebuild log工作将会成功完成,

否则要恢复数据库备份,使用dump database或bcp命令。

五、数据库被标记为"suspect"时(1) ---- 一般解决方案现象: Error 926 Severity

Level 14 Error Message Text Database '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", 1 2>go 1>begin tran

2>go 1>update master..sysdatabases 2>set status =

-32768 3>Where name="pubs2" 4>go 如果得到

(1 row affected),则 1>commit 2>go 否则 1>rollback 2>go

(4)如果条件允许,bcp out用户数据或dump用户数据库

(5)这时重新启动SQL Server, 再有sa帐号注册到SQL Server.

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

2>go 1>sp_configure "allow updates" ,0 2>go

(6) 如果你的数据库原来有dboption(例如"select into","trunc log on chkpt"等),

你需要重新设置这些option..

(7) 运行dbcc命令检查数据库的一致性 isql -Usa -P -i dbcc.sql -o dbcc.out

dbcc.sql文件示例: dbcc checkdb("pubs2") go dbcc

checkalloc("pubs2") go dbcc checkcatalog("pubs2") go grep

Msg dbcc.out

(8) 后备用户数据库 1>dump database pubs2 on

"/usr/sybase/pubs2_dump.19991201" 2>go

六、数据库被标记为"suspect"时(2) ---- 数据库设备损坏时的解决方案现象:

926错误产生的原因有几种。本文讨论当数据库设备初始化失败( 设备文件丢失或文件读写权限不正确 )时,导致数据库恢复失败,出现926错误的情况。

(1) 请先恢复数据库设备及读写权限。

(2) 启动Backup Server, 后备master数据库否则 1>rollback 2>go

(3)如果条件允许,bcp out用户数据或dump用户数据库

(4)这时重新启动SQL Server, 再有sa帐号注册到SQL Server.

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

2>go 1>sp_configure "allow updates" ,0 2>go

(5) 如果你的数据库原来有dboption(例如"select into","trunc log on chkpt"等),

你需要重新设置这些option..

(6) 运行dbcc命令检查数据库的一致性 isql -Usa -P -i dbcc.sql -o dbcc.out

dbcc.sql文件示例: dbcc checkdb("pubs2") go dbcc

checkalloc("pubs2") go dbcc checkcatalog("pubs2") go grep

Msg dbcc.out

(7) 后备用户数据库 1>dump database pubs2 on

"/usr/sybase/pubs2_dump.19991201" 2>go

七、如何检查数据库中数据库一致性检查(dbcc)提供了一些命令用于检查数据库

的逻辑和物理一致性。Dbcc主要有两个功能:

1. 使用checkstorage 或 checktable 及 checkdb 在页一级和行一级检查页链及

数据指针。

2. 使用checkstorage, checkalloc, 或 checkverify, tablealloc, 及indexalloc 检查页

分配。在下列情况中需要使用 dbcc 命令:

3. 作为数据库日常维护工作的一部分, 数据库内部结构的完整性决定于sa 或

dbo 定期地运行 dbcc 检查。

4. 在系统报错以后, 确定数据库是否有损坏。

5. 在备份数据库之前, 确保备份的完整性。

6. 如果怀疑数据库有损坏时, 例如, 使用某个表时报出表损坏的信息, 可以使

用 dbcc 确定数据库中其他表是否也有损坏。下面是dbcc的简单用法: dbcc checktable (table_name) 检查指定的表, 检查索引和数据页是否正确链

接, 索引是否正确排序, 所有指针是否一致, 每页的数据信息是否合理, 页偏移是否合理。dbcc checkdb (database_name) 对指定数据库的所有表做和checktable 一样的检查。dbcc checkalloc (database_name,fix|nofix) 检查指定

数据库, 是否所有页面被正确分配, 是否被分配的页面没被使用。当使用"fix"

选项时,在检查数据库的同时会自动修复有问题的页面。(若数据库数据量很大,则该过程会持续很长时间。) dbcc tablealloc (table_name,fix|nofix) 检查

指定的表, 是否所有页面被正确分配, 是否被分配的页面没被使用。是

checkalloc 的缩小版本, 对指定的表做完整性检查。当使用"fix"选项时,在检

查数据表的同时会自动修复数据表中有问题的页面。关于上述命令的其它选项及详细使用方法和checkstorage, checkverify, indexalloc 的详细使用方法,

请参阅有关命令手册。举例1: Unix平台检查pubs2数据库的一致性

1. 单用户模式启动Server: $SYBASE/install startserver -f

RUN_server_name -m 2. 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) go use master go sp_dboption

pubs2,"single

user",false go use pubs2 go checkpoint go quit go 3. isql -Usa -Pxxxxxx -SSYBASE dbcc_db.out 4. grep Msg dbcc_db.out 举例2: Unix平台检查pubs2数据库中titles表的

一致性 1. vi dbcc_table.sql use pubs2 go dbcc checktable(titles) go dbcc

tablealloc(titles) go 2. isql -Usa -Pxxxxxx -SSYBASE <

dbcc_table.sql >

dbcc_table.out grep Msg dbcc_table.out

八、如何做Rebuild Master(没有后备master库,而使用命令disk

reinit,disk refit)

提示1: 如果有可能,在执行这个任务之前,请先做操作系统级SYBASE

DEVICES的后备。UNIX操作系统可使用命令"dd"。因为如果disk reinit使用了错误的信息,那么,在执行了disk refit之后就会产生无法弥补的错误。倘

若,存在一个SYBASE DEVICES的后备文件,将会给我们一个弥补的机会。

例如:当disk reinit 使用了过小的size值,我们还可以重新恢复SYBASE DEVICES文件,重新做disk reint、disk refit。提示2: 在使用disk reinit

命令时,将覆盖SYBASE DEVICE(请参照以下语法),安全的做法是size

值使用裸分区或系统文件的大小的最大值。如果使用的是UNIX裸分区,即

使你不能确认SYBASE DEVICE最初大小是不是最大值,都要使用裸分区大

小的最大值。步骤: 1. 获得将要被恢复的SYBASE DEVICE的信息。

这些信息被用来重建sysdevices,sysusages以及sysdatabases。

1. 从error log的server启动信息中获得SYBASE DEVICE 的设备名、指定路径。

2. 使用裸分区或系统文件的大小的最大值作为SYBASE DEVICE的大小。

3. 以上信息也可以通过最近的sysdevices系统表的内容来获得。如果对

此信息怀有疑问,还是使用以上的方法比较稳妥。

2. 做操作系统级的SYBASE DEVICE后备。UNIX操作系统,使用"dd"命令实

现。

3. 配置一个新的ASE Server。在以后的步骤中会用到这个新的 master。

4. 如果需要,请再配置一个Backup Server。

5. 用单用户模式启动Server。

6. 运行disk reinit,用来重建sysdevices系统表,而没有重新初始化SYBASE

DEVICE。语法如下: disk reinit name="device_name",

physname="physical_name", vdevno=virtual_device_number,

size=number_of_blocks 完成后,请查看error log。

7. 确认重建的sysdevices系统表中信息正确: ——select * from sysdevices 比

较表中的信息是否与error log或者保留的sysdevices中的信息相同。

8. 运行disk refit,用来重建sysdevices以及sysdatabases。用法如下: use master

go disk refit go 查看error log中是否有错误提示。

9. 当disk refit完成后,会自动shut down ASE Server。

10. 确认重建的系统表的信息是否正确: ——单用户模式启动ASE Server —

—select * from sysusages、select * from sysdatabases ——sysusages 系统表看

起来是否正确,可以和以前保留的的信息进行比较。如果没有这种可能,那么应该保证不出现显而易见的错误。例如:是否缺少dbid;是否缺行;是否

对于一个数据库来说只有segmap=4(表示为日志行)的行等等。——

sysdatabases系统表看起来是否正确,是不是没有显而易见的错误,

11、启动ASE Server,查看是否所有的数据库都已经正常恢复。对所有的库做

dbcc检查。

12 对所有库做后备。

删除约束: alter table ORDERSCRIPT drop constraint

CKC_DISCOUNT_ORDERSCR 主键: alter table SLDETHIST

drop constraint PK_SLDETHIST go alter table shop.SLDETHIST

add constraint PK_SLDETHIST primary key nonclustered

(SELSEQ,GDNO,SELNO,WORKDATE,SELTYPE) go

Sybase数据库死锁对策

Sybase 数据库死锁对策 死锁的发生对系统的性能和吞吐量都有重要影响,经检测发现,管理信息系统的死锁主要是因为两个或多个线程(登录)抢占同一表数据资源。引起长时间抢占同一资源不是因为我们需要处理的事务太复杂,时间太长,而往往是因为我们在前端应用程序对数据库作操作时忘了提交.本文介绍一种处理解决这种死锁的方法。 Sybase 封锁原理 数据共享与数据一致性是一对不可调和的矛盾,为了达到数据共享与数据一致,必须进行并发控制。并发控制的任务就是为了避免共享冲突而引起的数据不一致。Sybase SQL Server 并发控制的方法是加锁机制(LOCKING ). 锁的类型 Sybase SQL Server 有三种封锁类型:排它锁(exclusive lock,简称X 锁);共享锁(share lock,简称S 锁);更新锁(update lock,简称U 锁)。这三种锁的相容矩阵表如下: ×:表示不兼容。∨:表示兼容。 Sybase SQL Server 是自动决定加锁类型的。一般来说, 读(SELECT )操作使用S 锁,写(UPDATE,INSERT 和delete )操作使用X 锁。U 它在一个更新操作开始时获得,当要修改这些页时,U 锁会升级为X 锁。 锁的力度 SQL Server 有两级锁:页锁和表锁。通常页锁比表锁的限制更少(或更小)。页锁对本页的所有行进行锁定,而表锁则锁定整个表。为了减小用户间的数据争用和改进并发性,SQL Server 试图尽可能地使用页锁。 当SQL Server 决定一个语句将访问整个表或表的大多数页时,它用表锁来提供更有效的锁定。锁定策略直接受查询方案约束,如果update 或delete 语句没有可用的索引,它就执行表扫描或请求一个表锁定。如果update 或delete 语句使用了索引,它就通过请求页锁来开始,如果影响到大多数行,它就要请求表锁。一旦一个语句积累的页锁超过锁提升阈值,SQL Server 就设法给该对象分配一个表锁。如果成功了,页锁就不再必要了,因此被释放。表锁也在页层提供避免锁冲突的方法。对于有些命令SQL Server 自动使用表锁。 锁的状态 SQL SERVER 加锁有三种状态: 1)意向锁(intend )—是一种表级锁,它表示在一个数据页上获得一个S 或X 锁的意向。意向锁可以防止其他事务在该数据页的表上获得排它锁。 2)阻塞(blocking,简记blk )—它表明目前加锁进程的状态,带有blk 后缀的锁说明该进程目前正阻塞另一个需要获得锁的进程,只有这一进程完成,其他进程才可以进行。 3)需求锁(demand )—表示此时该进程企图得到一个排它锁。它可以防止 可申请的锁 已有的锁 S U X S ∨ ∨ × U ∨ × × X × × ×

SYBASE数据库故障处理方法

SYBASE数据库故障处理方法 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 –P 1> update master..sysdatabases 2> set status = -32768 where name =‖ sybsystemprocs‖ 1>go 1>shutdown with nowait 2>go 关闭数据库 重新启动. 4.用 isql 登录到sql server 中,修改 master库中sysdatabases 表中 sybsystemprocs 库对应的 status 的值为0. $isql –Usa –P 1>update master..sysdatabases 2>set status = 0 where name =‖ sybsystemprocs‖ 3>go 1>shutdown with nowait 2>go 关闭数据库重新启动. 5. 将Sybase.cfg 中的‖allow updates to system‖ 的值改为0. 二、如何恢复master数据库 ASE can't setup and has no valid dump of master 1、编辑RUN_servername 在命令行最后加入:-T3607 2、单用户模式启动ASE $cd install $startserver -f RUN_servername -m 3、bcp out系统表 $bcp master..sysdevices out /directory.spec/devs -Usa -P -c $bcp master..sysdatabases out /directory.spec/dbs -Usa -P -c $bcp

Sybase数据库故障处理方法

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 –P 1>update master..sysdatabases 2>set status = -32768 where name =‖sybsystemprocs‖ 1>go 1>shutdown with nowait 2>go 关闭数据库重新启动. 4.用 isql 登录到sql server 中,修改master库中sysdatabases 表中 sybsystemprocs 库对应的status 的值为0. $isql –Usa –P 1>update master..sysdatabases 2>set status = 0 where name =‖sybsystemprocs‖ 3>go 1>shutdown with nowait 2>go 关闭数据库重新启动. 5.将Sybase.cfg 中的‖allow updates to system‖的值改为0. 二、如何恢复master数据库 ASE can't setup and has no valid dump of master 1、编辑RUN_servername 在命令行最后加入:-T3607 2、单用户模式启动ASE $cd install $startserver -f RUN_servername -m 3、bcp out系统表 $bcp master..sysdevices 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

SYBASE数据库常见的问题总结

SYBASE 数据库常见问题总结 SYBASE 数据库常见问题总结 ..................................................................... 错误!未定义书签。 1. SYSLOGS日志满了进不了系统,如何清除日志启动系统 .................... 错误!未定义书签。 2. 数据库日志损坏时重建日志启动数据库的解决办法.............................. 错误!未定义书签。 3. 数据库处于可疑状态的解决方法.............................................................. 错误!未定义书签。4.Sybase系统崩溃了,没有备份,但设备文件还存在,如何恢复数据库?错误!未定义书签。 5.不小心直接删除了日志的设备文件,如何恢复数据库?..................... 错误!未定义书签。6.sa密码忘记了导致isql -Usa -P******进不去怎么办?......................... 错误!未定义书签。7.关于sybase的配置-(数据库慢的请留意) ........................................ 错误!未定义书签。8.设备路径更改的方法................................................................................. 错误!未定义书签。9.dump文件load后数据库访问不了解决办法........................................ 错误!未定义书签。10.sybase数据库备份方案........................................................................... 错误!未定义书签。11.master数据库状态被置为-32768后的处理方法 ................................... 错误!未定义书签。 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",1 2>go 第二步,Adaptive Server中的每个数据库在sysdatabases中都有相应的一行,安装Adaptive Server后,master数据库、model数据库、sybsystemprocs和tempdb数据库在sysdatabases 中都将有相应的条目,如果已经安装审计功能,sybsecurity数据库也将在其中有相应的条目。修改sysdatabases表,将testdb的状态修改为-32768,然后在关闭Adaptive Server后重新启动Adaptive Server。 1> update sysdatabases set status=-32768 where name = "testdb" 2>go 1>shutdown 2>go 第三步,由于事务日志已经很满,不能使用常规方法转储此事务日志,如果使用了dump

Sybase数据库故障处理方法

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

5.将中的”allow updates to system”的值改为0. 二、如何恢复master数据库 ASE can't setup and has no valid dump of master 1、编辑RUN_servername 在命令行最后加入:-T3607 2、单用户模式启动ASE $cd install $startserver -f RUN_servername -m 3、bcp out系统表 $bcp master..sysdevices out /devs -Usa -P -c $bcp master..sysdatabases out /dbs -Usa -P -c $bcp master..sysusages out /usages -Usa -P -c $bcp master..syslogins out /logins -Usa -P -c $bcp master..sysconfigures out /configures -Usa -P -c $bcp master..syscharsets out /charsets -Usa -P -c 4、shutdownASE 5、创建新master设备 $buildmaster -d -s (new_master_device_size以2K为单位) 6、编辑RUN_servername 将指定master设备指定为新创建的master设备,并删除在第1步中增加的参数。 7、删除/dbs、/usages文件中有关master、tempdb、model的内容。

日常工作中使用PowerBuilder和sybase遇到的问题

日常工作中使用PowerBuilder和sybase遇到的问题 (例子中的数据库名称为yanglao) 1.在PowerBuilder使用数据管道 在sybase中进行数据导入导出时,使用数据管道是最方便的一种方法,但也有缺点,数据量过大时,执行效率慢,甚至有时一张表需要几十个小时。如果Database Devices创建的不合理,数据库文件和日志文件不够大,在使用数据管道时,在途会停止操作。如果出现这种情况,先查看一下数据库的log space,如下图: 看一下Free(MB)是否有剩余,如果用完需要清楚日志。在SQL Advantage中执行下面语句:dump transaction yanglao with no_log 附数据管道的报错信息(百度中可搜索) Start()函数返回一个integer值时数据管道的运行是否成功,返回值的意义为: 1 函数执行成功 -1 打不开数据管道 -2 列数太多

-3 要创建的表已经存在 -4 要增加数据的表不存在 -5 未建立与数据库的连接 -6 参数错误 -7 列不匹配 -8 访问源数据库的sql语句致命错误 -9 访问目标数据库的sql语句致命错误 -10 已经达到指定的最大错误数 -12 不正确的表达法 -13 需要关键字、但未指定关键字 -15 数据管道已经在运行 -16 源数据库出错 -17 目标数据库出错 -18 目标数据库处于只读状态,不能写入数据 2.小写字符替换成大写字符 update table1 set sfz=str_replace(sfz,'x','X') str_replace(string要被替换的字符串, string用于替换的字符串,string替换成的字符串) 3.在sybase(版本sybase12.5)中创建database device后,找不到设备 业务情形:创建database后,重新启动数据库系统,在database device管理中找不到该设备。 原因:创建的设备超过2G 解决方法:将超过2G的设备进行分解,例如:需要建10G的设备的,可以建5个2G的设备 4.先打开workspace,再连接数据库报错: 提示信息为: DBMS SYC Adaptive Server Enterprise is not supported in your current installation 解决方法: 百度了许多中方法,都没有解决。自己给powerbuilder打上补丁,问题解决 5.关于sybase的客户端字符属性的问题 字符集的安装 设置默认字符 sp_configure 'default character set id',171 具体步骤: ?(这里SYBASE的安装路径为c:\sybase) c:\>cd \sybase\charsets\cp936 ?c:\sybase\charsets\cp936> charset -U用户名(默认sa) -P密码-S数据库服务器名称 binary.srt cp936 更改默认字符集为cp936(在SQL环境中). ?执行select name,id from syscharsets(会列出字符集对应的id号) ?找到name为cp936对应的id(假设为171) ?执行sp_configure "default character set id",171 6. 重启server两次(注:第一次启动后, server会自动宕掉,需要第二次重启后才能使用) 6.备份还原sybase数据库

解决Sybase数据库死锁

解决Sybase数据库死锁 2005-10-19 17:29 ChinaUnix 我要评论(1)字号:T | T 死锁的发生对系统的性能和吞吐量都有重要影响,经检测发现,管理信息系统的死锁主要是因为两个或多个线程(登录)抢占同一表数据资源。 AD: 死锁的发生对系统的性能和吞吐量都有重要影响,经检测发现,管理信息系统的死锁主要是因为两个或多个线程(登录)抢占同一表数据资源。引起长时间抢占同一资源不是因为我们需要处理的事务太复杂,时间太长,而往往是因为我们在前端应用程序对数据库作操作时忘了提交.本文介绍一种处理解决这种死锁的方法。 Sybase封锁原理 数据共享与数据一致性是一对不可调和的矛盾,为了达到数据共享与数据一致,必须进行并发控制。并发控制的任务就是为了避免共享冲突而引起的数据不一致。Sybase SQL Server并发控制的方法是加锁机制(LOCKING)。 锁的类型可申请的锁已有的锁 S U X S ∨∨× U ∨×× X ××× Sybase SQL Server有三种封锁类型:排它锁(exclusive lock,简称X锁);共享锁(share lock,简称S锁);更新锁(update lock,简称U锁)。这三种锁的相容矩阵表如下: ×:表示不兼容。∨:表示兼容。Sybase SQL Server是自动决定加锁类型的。一般来说,读(SELECT)操作使用S锁,写(UPDATE,INSERT和delete)操作使用X锁。U锁是建立在页级上的,它在一个更新操作开始时获得,当要修改这些页时,U锁会升级为X锁。 锁的力度 SQL Server有两级锁:页锁和表锁。通常页锁比表锁的限制更少(或更小)。页锁对本页的所有行进行锁定,而表锁则锁定整个表。为了减小用户间的数据争用和改进并发性,SQL Server 试图尽可能地使用页锁。 当SQL Server决定一个语句将访问整个表或表的大多数页时,它用表锁来提供更有效的锁定。锁定策略直接受查询方案约束,如果update或delete语句没有可用的索引,它就执行表扫描或请求一个表锁定。如果update或delete语句使用了索引,它就通过请求页锁来开始,如果影响

Sybase数据库日常维护

数据库日常维护工作是系统管理员的重要职责。其内容主要包括以下几个部分: 一、备份系统数据 sybase 系统的备份与恢复机制保证了在系统失败时重新获取数据的可能性。sql server 提供了两种不同类型的恢复机制:一类是系统自动完成的恢复,这种措施在每次系统启动时都自动进行,保证了在系统瘫痪前完成的事务都写到数据库设备上,而未完成的事务都被回退;另一类是人工完成的恢复,这是通过dump 和load 命令来执行人工备份和恢复工作。因此定期备份事务日志和数据库是一项十分重要的日常维护工作。 1、备份数据库 每一个数据库都应在创建之后卸出,从而提供一个装入基点。在此之后按排定的时间周期表卸出。比如每周五卸出数据库。对一般数据库系统卸出数据库周期建议为每周一次。 除了按计划周期卸出数据库之外,还需在每次运行没有日志的操作后卸出数据库。例如: ·每次强制地运行了dump tran with no_log (因为数据库的磁盘空溢出);

·每次用sp_dboption 允许select into/bulkcopy 做快速拷贝,或用select into 命令创建一个永久性的表,或使用了writetext 命令。 卸出数据库的命令为: dump database database_name to dump_device database_name 是要卸出的数据库名称,dump_device 是卸出设备的名称。用系统过程sp_helpdevice 可以获得设备的信息。 下面一条命令用来卸出数据库my_db : dump database my_db to db_bk_dev 2、备份事务日志 如果事务日志与数据库放在同一个设备上,则事务日志不应与数据库分开备份。master 数据库和小于4m 的用户数据库就是这种情况。一般数据库系统的数据库和日志分别放在不同的设备上,因此,可以用dump tran 命令单独备份日志。 备份事务日志的周期直接影响数据的恢复程度,因此建议每天备份。

sybase数据库安全

安全性控制的层次结构 Sybase数据库为开发者提供了有效的安全性控制策略,既注重数据访问的安全性和监督用户的登录,又兼顾了用户在使用数据时对速度的要求。Sybase中的安全性是依靠分层解决的,它的安全措施也是一级一级层层设置的,真正做到了层层设防。第一层是注册和用户许可,保护对服务器的基本存取;第二层是存取控制,对不同用户设定不同的权限,使数据库得到最大限度的保护;第三层是增加限制数据存取的视图和存储过程,在数据库与用户之间建立一道屏障。 安全性问题的基本原则 Sybase基于上述层次结构的安全体系,提出以下几点实施安全的原则: 选择性访问控制(Discretionary Access Controls DAC),DAC 用来决定用户是否有权访问数据库对象; 验证,验证就是保证只有授权的合法用户才能注册和访问; 授权,对不同的用户访问数据库授予不同的权限; 审计,监视系统发生的一切事件。 Sybase的安全控制策略 基于上述四点原则,Sybase提供了四种基本策略进行安全性控

制。 在创建服务器时,Sybase将所有权限都分配给系统管理员,系统管理员可以在服务器上增加注册者(Logins)(只有系统管理员有此权限)。Logins可以登录服务器但不能访问数据库。数据库属主(DBO)有权增加用户(users),users可以使用分配给它的数据库。当users 访数据库时,首先以Logins身份进入服务器,系统自动打开默认数据库,Logins身份转化为users身份。 在用户登录后,系统要通过口令进行验证,以防止非法用户盗用他人的用户名进行登录。这一验证步骤在登录时的注册对话框中出现,注册与验证同时进行,用户名与口令有一个不符,登录请求被拒绝。 权限使得用户在数据库中活动范围仅被容许在小范围内,大大提高了数据库的安全性。在Sybase系统中,对象的所有者或创建者自动被授予对对象的许可权。所有者则有权决定把许可权授予其他用户。Sybase提供了GRANT和REVOKE命令,以便授予或取消许可权。数据库所有者和系统管理员享有特殊许可权,包括数据库所有者(Database Owner,DBO)对自己所拥有的数据库中的一切对象具有全部许可权;系统管理员(System Administrantion,SA)享有服务器内的所有数据库的一切对象的许可权。 Sybase提供了Audit Server,它是能够全面审计跟踪服务器上一切活动的工具,在某些情况下,我们难以阻止非法操作的发生,但

如何解决Sybase数据库堆栈溢出导致的异常

如何解决Sybase数据库堆栈溢出导致的异常 (v 1.0)

版本说明

目录 版本说明 (2) 故障现象: (4) 故障原因: (4) 处理方法: (4)

故障现象: SYBASE数据库异常退出,重新启动失败,访问不了数据库。查看数据库日志,出现如下系统日志:00:00000:00000:2004/10/13 23:30:00.75 kernel Stack overflow detected: limit: 0xf8446ab0, sp: 0xf845275c 00:00000:00000:2004/10/13 23:30:00.75 kernel *** Stack guardword corrupted. 00:00000:00000:2004/10/13 23:30:00.77 kernel pc: 0x006654d0 pcstkwalk+0x24(0xf8452688, 0x00000000, 0x0000270f, 0x00000002, 0xfffffff8) 00:00000:00000:2004/10/13 23:30:00.78 kernel pc: 0x006653dc ucstkgentrace+0x194(0x00040004, 0x00000000, 0x00000000, 0xf8eff590, 0x00000000) 00:00000:00000:2004/10/13 23:30:00.78 kernel pc: 0x00632300 ucbacktrace+0xa8(0xf8eff590, 0x00000001, 0x00040004, 0x00000008, 0xf845275c) 故障原因: SYBASE数据库堆栈溢出,可能是某些很长的where子句、较长的选择列表、深层嵌套的存储过程在执行时导致原来配置的堆栈大小不够用导致,需要修改堆栈大小。 处理方法: 方法一: *********************************************************************** use master go sp_configure stack go 会显示如信息: Parameter Name Default Memory Used Config Value Run Value -------------- ------- ----------- ------------ --------- esp execution stacksize 34816 0 34816 34816 stack guard size 4096 #908 4096 4096 stack size 46080 #10216 46080 46080 *********************************************************************** 注意记下上述结果中 stack size 对应的Default值(红色字体标注),用下面的命令扩大为现在的2倍。 sp_configure 'stack size', 92160

SYBASE数据库常见的问题总结

SYBASE 数据库常见问题总结 SY BASE数据库常见问题总结 (1) 1. SY SLOGS日志满了进不了系统,如何清除日志启动系统 (1) 2. 数据库日志损坏时重建日志启动数据库的解决办法 (4) 3. 数据库处于可疑状态的解决方法 (6) 4.Sybase 系统崩溃了,没有备份,但设备文件还存在,如何恢复数据库? (9) 5.不小心直接删除了日志的设备文件,如何恢复数据库?. 15 6.sa 密码忘记了导致isql -Usa -P****** 进不去怎么办?16 7.关于sybase 的配置-(数据库慢的请留意) (17) 8.设备路径更改的方法 (22) 9.dump 文件load 后数据库访问不了解决办法 (23) 1 0.sybase 数据库备份方案 (23) 1 1 .master 数据库状态被置为-32768 后的处理方法 (30) 1. SY SLOGS日志满了进不了系统,如何清除日志启动系统业务系统数据库不能正常启动,对于这一类问题,我们按照如下步骤解决: 第一步,启用allow updates to system tables ,这样可以使具有系统管理员角色的用户能够改变系统表并可创建和修改系统表的存储过程,其中系统表包括master 数据库中所有Sybase 提供的表以及用户数据库中所有以“sys”开头的表和在sysobjects 表中其ID 值小于或等于100 的表。系统表的不正确变更会导致数据库损坏和数据丢失,修改系统表时务

必要使用begin transaction 来保护数据库不受可能损坏数据库的错误影响,完成修改后应立即禁用allow updates to system tables 。 1>sp_configure "allow update",1 2>go 第二步,Adaptive Server 中的每个数据库在sysdatabases 中都有相应的一行,安装Adaptive Server 后,master 数据库、model 数据库、sybsystemprocs 和 tempdb数据库在sysdatabases 中都将有相应的条目,如果已经安装审计功能,sybsecurity 数据库也将在其中有相应的条目。修改sysdatabases 表,将testdb 的状态修改为-32768 ,然后在关闭Adaptive Server 后重新启动Adaptive Server 。 1> update sysdatabases set status=-32768 where name = "testdb" 2>go 1>shutdown 2>go 第三步,由于事务日志已经很满,不能使用常规方法转储此事务日志,如果使用了dumptransaction 或dumptransaction with truncate_only 命令,而命令又由于日志空间不足失败时,可以使用dump transaction 的特殊选项with no_log ,此选项可截断事务日志而不记录转储事务事件。所有dumptran with no_log 都将在Adaptive Server 错误日志中进行报告,这些消息包括执行此命令的用户ID 、指示成功或失败的消息,no_log 是唯一生成错误日志消息的转储选项。但是这个选项(包括with truncate_only )没有提供任何方法可恢复自从上次例行转储后提交

SYBASE解决数据库被标记为“suspect”的方法

SYBASE解决数据库被标记为“suspect”的方法 (转载) 现象: Error 926 Severity Level 14 Error Message Text Database "xx" cannot be opened - it has been marked SUSPECT by recover Explanation 当你使用Transact_SQL命令操作这个数据库的数据时,出现这个信息,这是一个严重的错误,如果你要使用这个数据库的数据,必须改正这个错误。 用SQL Advantage登录到SQL Server,须用sa帐号 sp_configure "allow updates", 1 go reconfigure with override go update master..sysdatabases set status =-32768 Where name="database_name" /*database_name 是你的数据库名*/ go shutdown with nowait go 这时重新启动SQL Server,再有SA帐号注册到SQL Server。 update master..sysdatabases set status=0 Where name="database_name" /*database_name 是你的数据库名*/ go sp_configure "allow updates" ,0 go reconfigure with override go 如果你的数据库原来有dboption,你需要重新设置这些选项。可以参考《系统管理员手册》

sybase启动时926错误处理方法

sybase数据库启动时报926错误 Message: 926, State 1, Severity 14 -- 'Database 'FYRSSD128' cannot be opened. An earlier attempt at recovery marked it 'suspect'. Check the SQL Server errorlog for informat ion as to the cause. 一般是由于服务器突然断电或者数据库异常关闭,导致数据库损坏,处于置疑状态。 解决办法: 1.打开允许修改系统表的属性,设置数据库的状态为-32768 sp_configure "allow update", 1 go SELECT * FROM sysdatabases WHERE name ='FYRSSD128' go update master..sysdatabases set status=-32768 where name=" FYRSSD128" go 重启数据库 shutdown with nowait go 2. 设置数据库的状态为0,重建数据库日志 UPDATE master..sysdatabases SET status = 0 WHERE name ='FYRSSD128' GO DBCC rebuild_log(FYRSSD128,1,1) GO 重启数据库 shutdown with nowait go 3. 如果数据库的状态为0,设置数据库属性 EXEC sp_dboption FYRSSD128, "select into/bulkcopy/pllsort",true GO EXEC sp_dboption FYRSSD128, "trunc log on chkpt",true GO EXEC sp_dboption FYRSSD128, "abort tran on log full",true GO 4. 如果数据库的状态为12,说明数据库已经正常。 SELECT * FROM sysdatabases WHERE name ='FYRSSD128' go 关闭允许修改系统表的属性 sp_configure "allow update", 0 go

SYBASE缺陷及规避措施的详细说明

附件: SYBASE DUMP/LOAD产生缺陷的详细说明 据Sybase最新官方资料显示,对于所有ASE版本Dump出来的数据库备份,若Dump时使用了超过256*@@maxpagesize的BlockSize或者源数据库备份server的RUN文件使用了大于48M的-m选项,并且目标库的设备与源库在逻辑设备上的映射关系不一致,则会导致load时产生数据库的一致性错误。 目前各分行SYBASE数据库环境现状如下: 1、首先,各分行存在发生此问题的条件/可能: (1)大部分使用了-m256M参数; (2)生产机与开发机之间数据库的分配并不严格一致; (3)多数据库共用同一逻辑设备的情况也存在。 2、过去曾经发生过此类问题,只是没有明确原因,但都通过使源/目标数据库一致得以解决; 3、好在该问题并不影响dump文件的完整性,只可能发生于load过程; 鉴于此,经与Sybase公司研讨,建议做以下调整以规避load时的数据库一致性错误: 1、取消Backup Server RUN文件中的-m选项(需要重新启动Backup Server 以生效); 2、使用DBArtisan抽取的源库建库脚本来创建备份库,确保备份库同源库的设备映射关系一致。 对于已经使用-m选项Dump出来的数据库备份,load时需要注意以下几点: 1、load到备份库时,确保备份库同源库的设备映射关系一致(建议使用DBArtisan抽取的源库建库脚本来创建备份库); 2、load回源库时,确保源库的设备映射关系在该Dump操作前后没有发生变化。 SYBASE官方详细资料原文如下: Urgent from Sybase: Possible data integrity issue when loading a database from a dump, affecting versions of Adaptive Server Enterprise 15.0, 12.5, and earlier March 2006 Urgent from Sybase: Possible data integrity issue when loading a database from a dump, affect ing versions of Adaptive Server Enterprise 15.0, 12.5, and earlier You are receiving this notification because you are a designated Sybase Technical Support Contact at a customer site that is using Adaptive Server Enterprise. Attached is a TechNote that describes the problem and solution. We apologise for any inconvenience this problem may have caused you and your company. We

解决sybase数据库置疑

解决sybase数据库置疑。 1、启动Backup Server, 后备master数据库(这一步很重要!) 1>dump database master to "//sybase/master.dup" 2>go 2、由于需要修改系统表的值,所以必须先将SQL Server的“allow updates”属性设为可修改。 $isql –Usa -P 1>sp_configure "allow updates", 1 2>go 1>begin tran 2>go 1>use master 2>go 1>update sysdatabases set status = -32768 Where name="aicbiz" 2>go 如果得到(1 row affected),则 1>commit 2>go 否则 1>rollback 2>go 截断数据库log ,数据库日志空间满,需要截断,不得已而为之的方法。 1>use aicbiz 2>go 1>dump tran aicbiz with no_log 2>go 3、重新启动SQL Server. 4、用sa帐号注册到SQL Server. 1>begin tran 2>go 1>use master 2>go 1>update sysdatabases set status=0 Where name="aicbiz" 2>go

如果得到(1 row affected),则 1>commit 2>go 1>sp_configure "allow updates" ,0 2>go 5、重新启动SQL Server. 进入数据库单用户模式 1、修改RUN_XXXX.bat文件,在后面加-m参数, 2、执行startsrv.exe -f RUNxxx.bat RUN_XXXX.bat启动数据库, 3、load database master from xxx.dump恢复master 查看数据库状态值,主要是处理BYPSS 状态。 update sysdatabases set status=-32768 where name='aicbas' sp_configure "allow updates", 1 select name,status from sysdatabases where name='aicbiz'

相关主题
文本预览
相关文档 最新文档