解决Sybase数据库死锁

解决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语句使用了索引,它就通过请求页锁来开始,如果影响到大多数行,它就要请求表锁。一旦一个语句积累的页锁超过锁提升阈值,SQL Server就设法给该对象分配一个表锁。如果成功了,页锁就不再必要了,因此被释放。表锁也在页层提供避免锁冲突的方法。对于有些命令SQL Server自动使用表锁。

锁的状态

SQL SERVER加锁有三种状态:

1)意向锁(intend)—是一种表级锁,它表示在一个数据页上获得一个S或X锁的意向。意向锁可以防止其他事务在该数据页的表上获得排它锁。

2)阻塞(blocking,简记blk)—它表明目前加锁进程的状态,带有blk后缀的锁说明该进程目前正阻塞另一个需要获得锁的进程,只有这一进程完成,其他进程才可以进行。

3)需求锁(demand)—表示此时该进程企图得到一个排它锁。它可以防止在这一表或页上加过多的S锁,她表示某一事务是下一个去锁定该表和该页的事务。

需求锁是一个内部过程,因此用sp_lock是无法看见的。

死锁DEADLOCK

简单地说,有两个用户进程,每个进程都在一个单独的页或表上有一个锁,而且每个进程都想在对方进程的页或表上请求不相容锁时就会发生“死锁”。在这种情况下,第一个进程在等待另一进程释放锁,但另一进程要等到第一个进程的对象释放时才会释放自己的锁。

SQL Server检查是否死锁,并终止事务中CPU时间积累最小的用户(即最后进入的用户)。SQL Server回滚该用户的事务,并用消息号1205通知有此死锁行为的应用程序,然后允许其他用户进程继续进行。

在多用户情形下,每个用户的应用程序都应检查每个修改数据的事务是否有1205号消息,以此确定是否有可能死锁。消息号1025表示该用户的事务因死锁而终止并被回滚。应用程序必须重新开始这个事务处理。

查找死锁原因

既然管理信息系统长时间死锁的原因是由于我们提交或者是提交不当,那么我们就可以通过修改程序防止出现死锁。定位死锁出错处主要经过以下三步:

1)在死锁出现时,用SP_WHO,SP_LOCK获得进程与锁的活动情况。

2)结合库表sysobjects和相应的操作员信息表查出被锁的库表与锁住别人的操作员。

3)根据锁定的库表与操作员的岗位,可以估计出程序大约出错处。询问操作员在死锁时执行的具体操作即可完全定位出错处。最后查找程序并修改之。

用sp_who获取关于被阻碍进程的信息

系统过程sp_who给出系统进程的报告。如果用户的命令正被另一进程保持的锁阻碍,则:

◆status列显示“lock sleep”。

◆blk列显示保持该锁或这些锁的进程标识,即被谁锁定了。

◆loginame列显示登录操作员。结合相应的操作员信息表,便可知道操作员是谁。

Fid spid status loginame origname blk dbname cmd

0 1 lock sleep lm lm 18 QJYD SELECT

0 2 sleeping NULL NULL 0 master NETWORK HANDLER

0 3 sleeping NULL NULL 0 master NETWORK HANDLER

……

用sp_lock浏览锁

要得到关于当前SQL Server上保持的锁的报告,可用系统过程sp_lock [spid1[,spid2]],spid1,spid2是表master.dbo.sysprocesses中的sql server进程id号,用sp_who可以得到锁定与被锁定的spid号:

◆locktype列显示加锁的类型和封锁的粒度,有些锁的后缀还带有blk表明锁的状态。前缀表明锁的类型:Sh—共享锁,Ex—排它锁或更新锁,中间表明锁死在表上(”table”或’intent’)还是在页上(page). 后缀“blk”表明该进程正在障碍另一个需要请求锁的进程。一旦正在障碍的进程一结束,其他进程就向前移动。“demand”后缀表明当前共享锁一释放,该进程就申请互斥锁。

◆table_id列显示表的id号,结合sysobjects即可查出被封锁的表名。

执行该进程后屏幕显示

Fid Spid locktype table_id page row dbname Class context

0 1 Sh_intent 678293476 0 0 QJYD Non Cursor LockFam dur

0 1 Sh_page 678293476 31764 0 QJYD Non Cursor Lock

0 18 Ex_intent 9767092 0 0 QJYD Non Cursor LockFam dur

……

定位出错处

根据sp_who与sp_lock命令的结果,结合sysobjects和相应的操作员信息表。得到操作员及其在死锁时所操作的库表,便大约可以知道应用程序的出错处,再询问操作员在死锁时执行什么操作以进一步认证。最后查找程序并修正之。

select * from sysobjects where id=32000114

select * from sysprocesses where blocked > 0

Select

A.F_ID,A.F_TSID,A.F_ISBN,A.F_SM,A.F_BKBZ,A.F_DJ,A.F_PJZK_JJ,

B.F_BMBH

From SMK A,BMKC B

Where B.F_BMBH =’010000’ AND A.F_ID = B.F_ID AND B.F_KFCS > 0 AND

ISNULL(A.F_ISBN,'') <> '' And ISNULL(A.F_ID,'') <> '' AND ISNULL(A.F_SM,'') <> '' AND ISNULL(A.F_DJ,0) <> 0

AND A.F_ID Not In (Select f_id F rom pos_sm Where f_bmbh = ’010000’) ;

Sybase数据库教程

系统维护员培训手册 1 第一章 Sybase概述 第一节 C/S简介 CS(Client/Server)结构是传统的网络集中共享式数据库的扩充。在CS结构中,应用程序(客户)在工作站上运行应用程序进行数据处理,服务器程序运行于服务器上以响应客户的请求并维护数据的一致性。CS结构可以显著减少不必要的网络数据传输。 一、CS和文件服务器的区别是: 文件服务器没有计算能力,它不了解数据本身的任何东西,它仅仅用于存储数据,文件服务器可以想象成一台用很长的电缆(网络)与用户计算机相连的硬 盘驱动器。CS的工作方式是客户端发出一个请求(命令),通过网络传送到服务 器,服务器根据这个命令进行计算,把计算后的结果传送给客户端。而文件服务 器的工作模式是工作站从服务器上取得应用程序运行,进行数据处理时到服务器 取数据,然后从所有的数据记录中找到要处理的内容,进行运算,最后才得出结 果。 二、客户/服务器模型的主要特点如下: ●客户进程和服务器进程可以由LAN或广域网(WAN)联结。它们都可以在同 一台计算机上运行。 ●用于在客户和数据库服务器之间通信的基本语言是通过结构化的查询语言 (Structured Query Language)实现的。 三、发展过程 C/S结构是数据库发展的一个过程,跟随计算机的计算机系统结构由集中式主机系统发展到客户/服务器系统以及现在分布式的多层网络系统,数据库系 统的体系结构也大体经历了三种发展形式: ●集中式的主机/终端结构 主机/终端系统中主机运行DBMS及数据库应用,终端仅提供数据显示。 ●两层的客户/服务器结构 在这种结构中,服务器执行数据库的存储逻辑和事务逻辑,客户端执行应用逻辑并提供用户界面。他们从系统上进行划分,均衡负载。 ●三层(或多层)体系结构 这种体系可以看作是客户/服务器结构和Internet(国际互联网络)以及Intranet应用体系结构相结合的产物,它是对客户/服务器的继承和发展。 Internet应用是浏览器/WEB服务器/数据库服务器的三层体系结构。 四、Client/Server模式概述

数据库死锁问题总结

数据库死锁问题总结 1、死锁(Deadlock) 所谓死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造 成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系 统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力 协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象 死锁。一种情形,此时执行程序中两个或多个线程发生永久堵塞(等待),每 个线程都在等待被其他线程占用并堵塞了的资源。例如,如果线程A锁住了记 录1并等待记录2,而线程B锁住了记录2并等待记录1,这样两个线程就发 生了死锁现象。计算机系统中,如果系统的资源分配策略不当,更常见的可能是 程序员写的程序有错误等,则会导致进程因竞争资源不当而产生死锁的现象。 锁有多种实现方式,比如意向锁,共享-排他锁,锁表,树形协议,时间戳协 议等等。锁还有多种粒度,比如可以在表上加锁,也可以在记录上加锁。(回滚 一个,让另一个进程顺利进行) 产生死锁的原因主要是: (1)系统资源不足。 (2)进程运行推进的顺序不合适。 (3)资源分配不当等。 如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能 性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序 与速度不同,也可能产生死锁。 产生死锁的四个必要条件: (1)互斥条件:一个资源每次只能被一个进程使用。 (2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 破解:静态分配(分配全部资源) (3)不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。 破解:可剥夺 (4)循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。 破解:有序分配 这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。 死锁的预防和解除:

实验三死锁的检测和解除

南华大学计算机科学与技术学院 实验报告 课程名称操作系统I 姓名 学号 专业班级 任课教师 日期

一、实验内容 死锁的检测与解除 二、实验目的 掌握操作系统的进程管理与资源分配原理,掌握对操作系统安全性检验和死锁的解除的原理和方法。 三、实验题目 系统中有m 个同类资源被n 个进程共享,每个进程对资源的最大需求数分别为S1,S2,…,Sn,且Max(Si)<=m, (i=1,2,…n)。进程可以动态地申请资源和释放资源。编写一个程序,实现银行家算法,当系统将资源分配给某一进程而不会死锁时,就分配之。否则,推迟分配,并显示适当的信息。 分别使用检测“进程—资源循环等待链”的方法和Coffman 的算法来检测进程的死锁状态。对于相同的进程资源分配、占用次序,比较两个算法的结果。 四、设计思路和流程图 1.输入系统进程数量n和资源类型数量m。 2.输入每类资源的数量。 3.输入每个进程每类资源的最大需求量和已获资源量。 4.检验系统的安全。 5.若检测结果为系统不安全,可以对死锁进行解除,直到安全为 止再检测。 6.重复5操作,直到所有进程运行完毕。

五、主要数据结构及其说明 int Max[100][100]={0}; //各进程所需各类资源的最大需求; int Available[100]={0}; //系统可用资源; char Name[100]={0}; //资源的名称; int Allocation[100][100]={0}; //系统已分配资源; int Need[100][100]={0}; //还需要资源 int Request[100]={0}; //请求资源向量; int Temp[100]={0}; //存放安全序列; int Work[100]={0}; //存放系统可提供资源; bool Finish[100]={0};//存放已完成的序列 六、源程序并附上注释 #include "stdafx.h" #include #define False 0 #define True 1 using namespace std; int Max[100][100]={0}; //各进程所需各类资源的最大需求; int Available[100]={0}; //系统可用资源; char Name[100]={0}; //资源的名称; int Allocation[100][100]={0}; //系统已分配资源; int Need[100][100]={0}; //还需要资源 int Request[100]={0}; //请求资源向量; int Temp[100]={0}; //存放安全序列; int Work[100]={0}; //存放系统可提供资源; bool Finish[100]={0}; int M=100; //作业的最大数 int N=100; //资源的最大数 int l=0;//记录安全进程的TEMP下标 void ShowData()//初始化资源矩阵

数据库日常维护工作

数据库日常维护工作是系统管理员的重要职责。其内容主要包括以下几个部分: 一、备份系统数据 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 命令单独备份日志。 备份事务日志的周期直接影响数据的恢复程度,因此建议每天备份。 备份事务日志的命令格式为: DUMP TRANsaction database_name [TO dump_device] [WITH TRUNCATE_ONL Y|WITH NO_LOG|WITH NO_TRUNCA TE] 其中 database_name 是要备份事务的数据库名称,dump_device 是备份设备名称,仅当包含了 WITH TRUNCA TE_ONL Y 或 WITH NO_LOG 子句时,才可以备份到设备。 注意:如果总是用 DUMP DA TEBASE (备份数据库及其日志),而不用 DUMP TRAN ,事务日志将不会刷新,而变得非常庞大。

sybase基本操作

SYBASE基本操作 一、启动数据库 1、ps -ef | grep dataserver 查看sybase进程, Sybase有数据库进程和备份进程, 若都没看到则需要手动启动,进入sybase安装目录$sybase/ASE-15_0/install 启动数据库和备份进程 # ./startserver -f RUN_LINUXMZC --启动数据库RUN_”SYBASENAME”#./startserver -f RUN_LINUXMZC_BS --启动备份服务“RUN_backupserve” 启动后也可用#showserver查看 2、登录数据库 数据库启动后使用#isql -Usa -P -S 登录数据库, 注:sybase默认只有一个用户sa,默认密码NULL

二、sybase基本操作 1、查询数据库版本 >select @@version >go 注:isql中的命令都需要go来执行,如果发现写错了,可以用reset重新输入 2、查询数据库信息 >sp_helpdb 显示所有数据库和基本信息 3、查寻空间使用情况 >use basename >go >sp_spaceused >go

4、性能监控 使用指令sp_sysmon 格式:>sp_sysmon “hh:mm:ss”,model_name,表示监控指定时间指定模块,缺省为所有模块 1、内核管理(kernal ) 10、任务管理(taskmgmt) 2、应用管理(appmgmt) 11、监视器访问SQL的执行(monaccess) 3、数据缓存管理(dcache) 12、并行查询管理(parallel) 4、ESP管理(esp) 13、过程缓存管理(pcache) 5、索引管理(indexmgmt) 14、恢复管理(recovery) 6、锁管理(locks) 15、事务管理(xactmgmt) 7、内存管理(memory) 16、磁盘I/O管理(diskio) 8、元数据高速缓存管理(mdcache ) 17、工作进程管理(wpm) 9、事务概要(xactsum) 18、网络I/O管理(netio)

第三章习题(处理机调度与死锁)

一、单项选择题 1.在为多道程序所提供的可共享的系统资源不足时,可能出现死锁。但是,不适当的 c 也可能产生死锁。 A.进程优先权 B.资源的线性分配 C.进程推进顺序 D. 分配队列优先权 2.采用资源剥夺法可解除死锁,还可以采用 b 方法解除死锁。 A.执行并行操作 B.撤消进程 C.拒绝分配新资源 D.修改信号量 3.产生死锁的四个必要条件是:互斥、 b 、循环等待和不剥夺。 A. 请求与阻塞 B.请求与保持 C. 请求与释放 D.释放与阻塞 4.发生死锁的必要条件有四个,要防止死锁的发生,可以破坏这四个必要条件,但破坏 a 条件是不太实际的。 A. 互斥 B.不可抢占 C. 部分分配 D.循环等待 5.在分时操作系统中,进程调度经常采用 c 算法。 A.先来先服务 B.最高优先权 C.时间片轮转 D.随机 6.资源的按序分配策略可以破坏 D 条件。 A. 互斥使用资源 B.占有且等待资源 C.非抢夺资源 D. 循环等待资源 7.在 C 的情况下,系统出现死锁。 A. 计算机系统发生了重大故障 B.有多个封锁的进程同时存在 C.若干进程因竞争资源而无休止地相互等待他方释放已占有的资源 D.资源数大大小于进程数或进程同时申请的资源数大大超过资源总数 8.银行家算法是一种 B 算法。 A.死锁解除 B.死锁避免 C.死锁预防 D. 死锁检测 9.当进程数大于资源数时,进程竞争资源 B 会产生死锁。 A.一定 B.不一定 10. B 优先权是在创建进程时确定的,确定之后在整个进程运行期间不再改变。 A.先来先服务 B.静态 C.动态 D.短作业 11. 某系统中有3个并发进程,都需要同类资源4个,试问该系统不会发生死锁的最少资源数是 B A.9 B.10 C.11 D.12 答:B 13.当检测出发生死锁时,可以通过撤消一个进程解除死锁。上述描述是 B 。 A. 正确的 B.错误的 14.在下列解决死锁的方法中,属于死锁预防策略的是 B 。 A. 银行家算法 B. 资源有序分配法 C.死锁检测法 D.资源分配图化简法 15.以下叙述中正确的是 B 。 A. 调度原语主要是按照一定的算法,从阻塞队列中选择一个进程,将处理机分配 给它。 B.预防死锁的发生可以通过破坏产生死锁的四个必要条件之一来实现,但破坏互斥条件的可能性不大。 C.进程进入临界区时要执行开锁原语。 D.既考虑作业等待时间,又考虑作业执行时间的调度算法是先来先服务算法。

Oracle数据库日常维护工作

文档编号
Oracle 数据库日常维护工作
凌群电脑有限公司 凌群电脑有限公司 2004 年 12 月 15 日

数据库日常维护工作》 《Oracle 数据库日常维护工作》

1.1 1.2 1.3 1.4 1.5 1.6

1. DBA 日常维护工作 ..................................................................................................................... 3 检查已经打开的所有实例 .................................................................................................... 3 检查最新的警告日志 ............................................................................................................ 7 检查数据库备份是否正确 .................................................................................................... 8 检查备份到磁带中的文件是否正确 .................................................................................... 9 检查数据库的性能是否合理,系统资源是否充足 ............................................................ 9 仔细阅读 ORACLE 标准文档 ............................................................................................... 10
2.晚间维护工作 晚间维护工作.............................................................................................................................. 10 晚间维护工作 2.1 收集相关表的统计数据 ....................................................................................................... 10 3.每周维护工作 每周维护工作.............................................................................................................................. 10 每周维护工作 3.1 检查异常的对象................................................................................................................... 10 3.1.1 检查现有的 NEXT_EXTENT 情况:............................................................................ 10 3.1.2 检查已有的 EXTENTS: .............................................................................................. 11 3.1.3 查看哪些表没有主键 .................................................................................................... 11 3.1.4 查找哪些主键是没有发挥作用的 ................................................................................ 12 3.1.5 所有作索引的主键都应是唯一的 ................................................................................ 12 3.2 检查是否有不安全的问题 ................................................................................................... 12 3.3 检查是否有错误 SQL*NET 日志 ....................................................................................... 13 3.4 归档当前告警日志 ............................................................................................................... 13 3.5 访问供应商站点................................................................................................................... 13 4.月维护工作 月维护工作.................................................................................................................................. 13 月维护工作 4.1 检查是否有异常的空间增长 ............................................................................................... 13 4.2 回顾以前数据库性能优化的调整 ....................................................................................... 14 4.3 检查 IO 瓶颈 ........................................................................................................................ 14 4.4 检查碎片的问题(8I 系统) ............................................................................................... 15
2

Sybase数据库管理手册

Sybase数据库管理手册

目录 Sybase 数据库安装说明 (3) 一、安装前准备工作 (3) 二、安装主程序 (3) 三、安装后打补丁 (6) 四、重启后创建Sybase服务 (6) 五、字符集设置 (11) 六、还原HIS数据库 (13) 七、Sybase服务不能启动时 (19) 八、配置参数 (21) 客户端安装说明 (29) 一、安装客户端 (29) 二、配置客户端 (29) Sybase 数据库的备份、恢复 (29) Sybase 数据库维护 (30) Sybase数据常用命令的使用 (31)

Sybase 数据库安装说明 一、安装前准备工作 ●先将Sybase安装文件夹(ASESERVER)拷贝到要安装的机器硬盘上。(此文件夹下文中都 用d:\Tooll\ASESERVER) ●将Sybase的补丁拷贝到要安装的机器硬盘上 ●处理安装时的字符集问题(防止安装时出现乱码) 对于不同的Windows版本的操作系统Sybase都要进行字符集文件的修改,下面是不同 二、安装主程序 ●进入安装程序 完成安装前的准备工作后就可以双击D:\TOOLS\ASESERVER\setup.exe文件进入Sybase安装程序。

●确定安装目录 选择安装目录是不要选择有磁盘阵列或做了Raid的盘,也不要选择操作系统所在的磁盘。 ●选择安装组件 ●安装总结

在总结处要注意所需空间是不是小于可用空间,如果不是则要将安装的磁盘清除一些文件来达到所需空间。单击“下一步”进行安装进行状态 ●安装进度 ●录入注册信息

●重启提示 完成安装后提示是否重新启动机器,按否不重启机器。然后将补丁拷贝到安装目录。 三、安装后打补丁 将\ASE补丁\ebf11574\Server目录下的所有文件拷贝到Sybase安装目录下例如安装目录为C:\Sybase 将C:\sybase\shared-1_0\jre1.2.2\lib\font.properties.zh.NT5.2文件名改名,操作系统与文件名的配对关系参考安装前准备工作的配对关系。 四、重启后创建Sybase服务 ●重启机器后进入Sybase安装程序确定提示按“否”后进行Windows操作系统 ●进行操作系统的运行窗口录入CMD进入Dos操作界面

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 × × ×

ORACLE数据库日常维护与管理手册

全球眼?(MEGAEYES)网络图像管理系统2.0 ORACLE日常维护与管理手册 北京互信互通信息技术有限公司 2004-08-08

目录 全球眼?(MEGAEYES)网络图像管理系统2.0 (1) 1引言 (3) 1.1 目的 (3) 1.2 范围 (3) 1.3 参考资料 (3) 2日常维护与管理说明 (3) 2.1 运行环境 (3) 2.1.1硬件环境 (3) 2.1.2软件环境 (3) 2.2 数据库日常维护 (4) 2.2.1数据库初始设置 (4) 2.2.2每日工作内容 (5) 2.2.3每周工作内容 (6) 2.2.4每月工作内容 (7)

1引言 1.1目的 对于重要的商业系统来说,数据库系统的正常运行是保证商业应用平稳运行的关键。但是数据库在运行过程中可能会因为种种原因发生问题。这时,数据库的管理与日常维护工作将变得尤为重要。 为了指导数据库管理员做好日常维护工作,保证数据库系统的正常运行,特制定本文档。当然,数据库的日常维护是复杂和繁琐的,本文仅涉及一些常见的数据库日常维护的内容,在实际工作中,数据库管理员还需要做更多的工作。 1.2范围 本文档使用的人员:数据库维护管理人员和相关人员。 本文档涉及内容:oracle数据库的日常维护与管理解决方案。 1.3参考资料 中国电信网络视频监控技术(暂行)规范 2日常维护与管理说明 2.1运行环境 程序的运行环境包括硬件运行环境和软件运行环境。 2.1.1硬件环境 ◆CPU类型:Intel及其兼容系列CPU ◆内存容量:剩余内存要达2G以上 ◆硬盘容量:剩余硬盘容量要达1G以上 ◆网卡类型:100M网卡 2.1.2软件环境 ◆操作系统:RedHat Linux AS 3.0 ◆数据库:Oracle9i Database Release 2 (9.2.0.4.0) for Linux x86

sybase资料

关于Sybase ASE数据库的license以及试用版过期的问题的解决方案 作者:佚名来源:中国自学编程网收集整理发布日期:2009-02-18 当用户从Sybase官网上下载了ASE15.0.2以后,如果选择了安装Express Edition或者Developer Edition,基本上不会碰到什么问题,除了有些功能受限以下。 但大多数可能选择了Enterprise Edition for Evaluation类型,即企业版试用。都会碰到这样的问题,即一个月以后,license过期,无法启动server。于是很郁闷,可能大部分人,会选择卸载再重新安装一遍,这样当然没问题,只是,太浪费时间了。 有一段时间,我自己甚至也以为只能这样去解决了。 实际上不是,通过在sybase论坛上与一些有经验的人交流以后,发现,是可以切换的。 首先,有三种安装类型: 1. Express Edition,完全免费,不用缀述。 2. Developer Edition,没有使用期限限制,用于开发和测试。似乎不能商用,无所谓了。我也是刚得知。以前好像是有60天的限制。 3. Enterprise Edition,它是有试用时间的限制的。是30天。 只要能找到切换就OK了。 你的解决方法就是,把企业版的license切到开发版或者Express版。怎么切? 先看看目录$SYBASE/SYSAM-2_0/licenses下边的三个文件: SYBASE_ASE_DE.lic SYBASE_ASE_XE.lic 第一个文件里边有这样的内容: PE=DE;LT=DT 第二个文件里有这样的内容: PE=XE;LT=CP

sql server的死锁及处理方法

【转】处理sql server的死锁 --第一篇 --检测死锁 --如果发生死锁了,我们怎么去检测具体发生死锁的是哪条SQL语句或存储过程? --这时我们可以使用以下存储过程来检测,就可以查出引起死锁的进程和SQL语句。SQL Server自带的系统存储过程sp_who和sp_lock也可以用来查找阻塞和死锁, 但没有这里介绍的方法好用。 use master go create procedure sp_who_lock as begin declare @spid int,@bl int, @intTransactionCountOnEntry int, @intRowcount int, @intCountProperties int, @intCounter int create table #tmp_lock_who ( id int identity(1,1), spid smallint, bl smallint) IF @@ERROR<>0 RETURN @@ERROR insert into #tmp_lock_who(spid,bl) select 0 ,blocked from (select * from sysprocesses where blocked>0 ) a where not exists(select * from (select * from sysprocesses where blocked>0 ) b where a.blocked=spid) union select spid,blocked from sysprocesses where blocked>0 IF @@ERROR<>0 RETURN @@ERROR -- 找到临时表的记录数 select @intCountProperties = Count(*),@intCounter = 1 from #tmp_lock_who IF @@ERROR<>0 RETURN @@ERROR

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 系统的备份与恢复机制保证了在系统失败时重新获取数据的可能性。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、备份事务日志

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

死锁的检测与解除C语言代码

实验名称:死锁的检测与解除姓名:杨秀龙 学号:1107300432 专业班级:创新实验班111 指导老师:霍林

实验题目 死锁的检测与解除 实验目的 为了更清楚系统对死锁是如何检测和当死锁发生时如何解除死锁 设计思想 首先需要建立和银行家算法类似的数组结构,先把孤立的进程(没有占用资源的进程)放入一个数组中,根据死锁原理,找出既不阻塞又非独立的进程结点,使之成为孤立的结点并放入孤立数组中,再释放该进程的占用资源,继续寻找下一个孤立结点,如果所有进程都能放入孤立数组中,则系统不会发生死锁,如果有进程不能放入,则系统将发生死锁,并进行死锁解除,撤消所有的死锁进程,释放它们占用的资源。 主要数据结构 和银行家算法类似,需要建立相应的数组 int allocation[M][M]; int request[M][M]; int available[M]; int line[M]; //管理不占用资源的进程 int no[M]; //记录造成死锁的进程 int work[M];

流程图 否

运行结果 图(1)不会发生死锁时 图(1)当发生死锁时

附录 源代码如下: # include "stdio.h" # define M 50 int allocation[M][M]; int request[M][M]; int available[M]; int line[M]; int no[M]; intn,m,i,j,f,a=0; main() { void check(); void remove(); void show(); printf("输入进程总数:"); scanf("%d", &n); printf("输入资源种类数量:"); scanf("%d", &m); printf("输入进程已占用的资源Allocation:\n"); for(i=0;i

Sybase数据转成SqlServer数据库的步骤

Sybase数据转成Sql Server数据库的执行步骤: 目前我们采用Sql Server 的DTS工具实现数据的交换操作。 一、前期准备:在目标数据库形成跟原数据库完全相同的表结构。 1,需要将客户备份的sybase数据库恢复到我们sybase帐套中,形成原数据库。 2,在Sql Server数据库中建立目标数据帐套,利用帐套维护工具建立目标数据库,选择模块与原数据库所用模块相同即可,初始年度与原数据库的初始年度也要相同。 创建完数据库后,如果原数据库有历史年度数据,则在目的数据库上的相应模块也做年结操作形成相应的历史年度表。主要通过察看数据库中那些表带有历史年度后缀,那些模块需要年结需要根据具体数据库设置。 3,删除所有用户表中的记录。 删除步骤,登陆原数据库,根据下面语句形成删除表记录sql。 select 'truncate table '+name +' go' from sysobjects where type = 'U' order by name 把执行结果复制到EditPlus中去,在go前增加换行符,形成删除表记录的sql语句。 4,在目标数据库中执行这些删除记录的sql语句,将目标数据库的相应记录删除。 并注意查看出错语句,主要是表不存在的情况下报的错误。 并决定那些表可以不需要,记录下不需要的表。 针对原数据库: 5,利用报表优化工具做临时表清除工作,以便节省交换时间。 二、数据导入操作: 利用DTS工具做数据交换操作。 执行步骤如下: 1,运行DTS,按照下一步执行即可。 2,配置数据源,我们这里是sybase数据库做数据源。 数据库类型选择sybase ASE OLE DB Provider 3,点击属性,配置数据库连接。数据源中输入syboledb,一定确保之前利用备份恢复工具(DBGhost.exe)联接过sybase数据库一次。 4,配置目标数据库这里选择sql server数据库。 5,选择复制表和视图。 6,选择表和视图。把不需要交换的表前面不需要选择即可,另外视图也不需要选择。 7, 8,执行 9,最后看以下执行结果,找到出错原因。 10,针对每一条出错的表,定位错误原因,然后单独把出错的表再导入一次。 注意问题: 由于sybase数据库大小写区分,而sqlserver数据库默认不区分大小写,有可能会出现复制数据违反唯一索引的问题。 解决方式有二: 删除通过大小写区分不一致的记录。 创建的sql server 实例也选择区分大小写。

相关文档
最新文档