① 先通过top命令查看产用资源较多的spid号
select sid,serial#,machine,username,program,sql_hash_value,sql_id,
select sql_text
from v$sqltext_with_newlines
where hash_value = hash_value
order by piece;
也可直接使用:
select a.*,b.SQL_TEXT from (
) a,v$sql b
where a.sql_id? = b.SQL_ID(+)
Alter system kill session 'SID,SERIAL#'
解锁:
①查询哪些对象被锁:
? select object_name,machine,s.sid,s.serial#
? from v$locked_object l,dba_objects o ,v$session s
? where l.object_id = o.object_id and l.session_id=s.sid;
? select spid, osuser, s.program
? from v$session s,v$process p
首先你要知道表锁住了是不是正常锁?因为任何DML语句都会对表加锁.
你要先查一下是那个会话那个sql锁住了表,有可能这是正常业务需求,不建议随便KILL session,如果这个锁表是正常业务你把session kill掉了会影响业务的.
建议先查原因再做决定.
(1)锁表查询的代码有以下的形式:
select count(*) from v$locked_object;
select * from v$locked_object;
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;
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;
select b.username,b.sid,b.serial#,c.* from v$locked_object a,v$session b,v$sql c where a.session_id = b.sid
and b.SQL_ID = c.sql_id and c.sql_id = ''
order by b.logon_time;
ques
①.:oracl里是有很多锁,但是很多它是自己用的.你无需操心.但要明白原理.
任何一条sql语句都会启动一种锁.比如select就会启动共享锁.如果用了select...for
update
就会在那一行加上排它锁.不允许其他的会话改着条数据,但是很多在完毕了就释放了.因为运行的很快.一般commit就会释放锁.
ORACLE EBS操作某一个FORM界面,或者后台数据库操作某一个表时发现一直出于"假死"状态,可能是该表被某一用户锁定,导致其他用户无法继续操作.
拓展资料:
Session:在计算机中,尤其是在网络应用中,称为"会话控制".Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去.当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象.当会话过期或被放弃后,服务器将终止该会话.Session 对象最常见的一个用法就是存储用户的首选项.例如,如果用户指明不喜欢查看图形,就可以将该信息存储在 Session 对象中.有关使用 Session 对象的详细信息,请参阅"ASP 应用程序"部分的"管理会话".注意 会话状态仅在支持 cookie 的浏览器中保留.
参考资料:session百度百科
以上就是土嘎嘎小编为大家整理的oracle锁表怎么释放相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!