oracle表锁了怎么办,oracle什么情况下会锁表

oracle数据库死锁怎么解决

Oracle数据库出现死锁的时候可以按照以下处理步骤加以解决:

成都创新互联公司是一家集网站建设,爱民企业网站建设,爱民品牌网站建设,网站定制,爱民网站建设报价,网络营销,网络优化,爱民网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

第一步:尝试在sqlplus中通过sql命令进行删除,如果能够删除成功,则万事大吉!但通常情况下,出现死锁时,想通过命令行或者通过Oracle的管理工具删除有死锁的session,oracle只会将该session标记为killed,但无法清除掉,往往需要通过第二步在操作系统层级进行删除!

Connected to Oracle9i Enterprise Edition Release 9.2.0.1.0 

Connected as quik

SQL select xidusn, object_id, session_id, locked_mode from v$locked_object; --查死锁的对象,获取其SESSION_ID

XIDUSN OBJECT_ID SESSION_ID LOCKED_MODE

---------- ---------- ---------- -----------

10 30724 29 3

10 30649 29 3

SQL select username,sid,serial# from v$session where sid=29; --根据上步获取到的sid查看其serial#号

USERNAME SID SERIAL#

------------------------------ ---------- ----------

QUIK 29 57107

SQL alter system kill session '29,57107'; --删除进程,如已经删除过,则会报ora-00031的错误;否则oracle会将该session标记为killed状态,等待一段时间看能否会自动消失,如长时间消失不掉,则需要做后续步骤

alter system kill session '29,57107'

ORA-00031: session marked for kill

SQL select pro.spid from v$session ses,v$process pro where ses.sid=29 and ses.paddr=pro.addr; --查看spid号,以便在操作系统中根据该进程号删除进程

SPID

------------

2273286

第二步:进入操作系统进行删除进程,本示例的操作系统是IBM aix。

login: root --录入用户名

root's Password: --录入密码

*******************************************************************************

* *

* *

* Welcome to AIX Version 5.3! *

* *

* *

* Please see the README file in /usr/lpp/bos for information pertinent to *

* this release of the AIX Operating System. *

* *

* *

*******************************************************************************

Last unsuccessful login: Fri Apr 23 14:42:57 BEIDT 2010 on /dev/pts/1 from 10.73

.52.254

Last login: Fri Apr 23 15:27:50 BEIDT 2010 on /dev/pts/2 from 10.73.52.254

# ps -ef|grep 2273286 --查看进程详情

root 2289864 2494636 0 17:07:15 pts/1 0:00 grep 2273286

oracle 2273286 1 0 14:38:24 - 0:21 oracleQUIK (LOCAL=NO)

# kill -9 2273286 --删除进程,小心操作,别写错进程号,如果oracle的关键进程被删,数据库会崩溃的!

# ps -ef|grep 2273286 --再次查看

root 2289864 2494636 0 17:07:15 pts/1 0:00 grep 2273286

For Windows, at the DOS Prompt: orakill sid spid

For UNIX at the command line kill –9 spid

关于oracle频繁被锁 如何解决

--查询被锁的表

select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;

--查看是哪个session引起的

select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time;

--杀掉对应进程即解锁

alter system kill session'866,20840'

----某程序连接数据库帐号密码错误

oracle 怎么查看数据被锁

1.创建测试表,如下图。

createtabletest_lock(idnumber,valuevarchar2(200));

2.执行append语句;并且不做提交,insert/*+append*/intotest_lockvalues(1,1)如下图。

3.再次执行清表语句,truncatetabletest_lock;报锁表错误,如下图。

4.查看锁表语句,发现被锁表

selectb.object_name,t.*

fromv$locked_objectt,user_objectsb

wheret.object_id=b.object_id

注意事项:

简化数据:可以将复杂的查询创建为其他人可以使用的视图,而不必了解复杂的业务或逻辑关系。这简化并掩盖了视图用户数据的复杂性。

表结构设计的补充:在设计的系统才刚刚开始,大部分的程序直接访问数据表结构,但是随着业务的变化,系统更新,等等,引起了一些表结构不适用,这次修改系统的表结构太大,开发成本较高的影响。

这个时候可以创建一个视图来补充表结构设计,降低开发成本。程序可以通过查询视图直接获得它想要的数据。

添加安全性:视图可以向用户显示表中的指定字段,而不是向用户显示表中的所有字段。在实际开发中,视图通常作为提供数据的一种方式提供,并将只读权限提供给第三方以供查询使用。

ORACLE 如何查询被锁定表及如何解锁释放session

ORACLE

EBS操作某一个FORM界面,或者后台数据库操作某一个表时发现一直出于"假死"状态,可能是该表被某一用户锁定,导致其他用户无法继续操作

复制代码

代码如下:--锁表查询SQLSELECT

object_name,

machine,

s.sid,

s.serial#

FROM

gv$locked_object

l,

dba_objects

o,

gv$session

s

WHERE

l.object_id

=

o.object_id

AND

l.session_id

=

s.sid;

找到被锁定的表,解锁

复制代码

代码如下:--释放SESSION

SQL:

--alter

system

kill

session

'sid,

serial#';

您可能感兴趣的文章:mysql

事务处理及表锁定深入简析

oracle 表锁住了什么原因

在对指定表做append操作,其他再做truncate时候,会产生锁表,如下验证步骤,

1、创建测试表,

create table test_lock(id number, value varchar2(200));

2、执行append语句;并且不做提交,insert /*+append*/ into test_lock values(1,1);

3、再次执行清表语句,truncate table test_lock;报锁表错误,

4、查看锁表语句,发现被锁表,

select b.object_name, t.*

from v$locked_object t, user_objects b

where t.object_id = b.object_id


当前名称:oracle表锁了怎么办,oracle什么情况下会锁表
网页地址:http://cdiso.cn/article/hoehec.html

其他资讯