①.、在做Oracle监听程序测试时,发现帐户已经被锁定.
①创建测试表,如下图.
selectb.object_name,t.*
fromv$locked_objectt,user_objectsb
wheret.object_id=b.object_id
注意事项:
简化数据:可以将复杂的查询创建为其他人可以使用的视图,而不必了解复杂的业务或逻辑关系.这简化并掩盖了视图用户数据的复杂性.
表结构设计的补充:在设计的系统才刚刚开始,大部分的程序直接访问数据表结构,但是随着业务的变化,系统更新,等等,引起了一些表结构不适用,这次修改系统的表结构太大,开发成本较高的影响.
这个时候可以创建一个视图来补充表结构设计,降低开发成本.程序可以通过查询视图直接获得它想要的数据.
添加安全性:视图可以向用户显示表中的指定字段,而不是向用户显示表中的所有字段.在实际开发中,视图通常作为提供数据的一种方式提供,并将只读权限提供给第三方以供查询使用.
SELECT?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;
如果没有结果就是没有被锁定的,如果查询有结果,就说明此表被锁了.如图:
在对指定表做append操作,其他再做truncate时候,会产生锁表,如下验证步骤,
①.、创建测试表,
select b.object_name, t.*
from v$locked_object t, user_objects b
where t.object_id = b.object_id
① 先通过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
以上就是土嘎嘎小编为大家整理的oracle如何查看表锁相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!