oracle中死锁是什么【通用两篇】
死锁(Deadlock),这里指的是进程死锁,是个计算机技术名词。它是操作系统或软件运行的一种状态:在多任务系统下,当一个或多个进程等待系统资源,而资源又被进程本身或其它进程占用时,就形成了死锁。由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象。
解决:
此错误主要是由于多个进程访问同一数据库时,其中每个进程拥有的锁都是其他进程所需的,由此造成每个进程都无法继续下去。简单的说,进程A等待进程B释放他的资源,B又等待A释放他的资源,这样就互相等待,从而形成的.在发现该问题出现后,应当及时查看数据库是否自动把死锁进程中的一个结束,若没有就应当手动的杀掉其中一个进程,以免影响数据库的正常稳定运行.
死锁产生的原因
两个事务更新同一个表,并且同时每个事务要更新的数据正在被另外一个事务所锁定。因为两个事务在相互等待资源,两个事务都无法继续下去直到oracle产生一个DEADLOCK的错误。
ORACLE在检测到发生死锁后,会自动回滚TRANSACTION1中的update emp set sal = sal * 1 where empno = 2000,但是事务中的第一个语句不会回滚,必须用户自己提交ROLLBACK操作。
如果在应用程序设计上可以扑获DEADLOCK的错误,然后使用应用程序级别的事务回滚来解决死锁。