重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
共享锁 独占锁,
成都创新互联自成立以来,一直致力于为企业提供从网站策划、网站设计、成都网站制作、网站设计、电子商务、网站推广、网站优化到为企业提供个性化软件开发等基于互联网的全面整合营销服务。公司拥有丰富的网站建设和互联网应用系统开发管理经验、成熟的应用系统解决方案、优秀的网站开发工程师团队及专业的网站设计师团队。
行共享锁 ,行独占锁,表共享锁,表独占锁
1、查看是否有被锁的表: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。
2、查看是哪个进程锁的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。
3、杀掉进程alter system kill session 'sid,serial#';。
查看哪个表被锁
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
1.以下代码可以查看是否被锁表:
2selecta.object_name,b.session_id,c.serial#,c.program,c.username,c.command,c.machine,c.lockwait
3fromall_objectsa,v$locked_objectb,v$sessioncwherea.object_id=b.object_idandc.sid=b.session_id;
4
2.查询锁表原因:
5selectl.session_idsid,
6s.serial#,
7l.locked_mode,
8l.oracle_username,
9s.user#,
10l.os_user_name,
11s.machine,
12s.terminal,
13a.sql_text,
14a.action
153.接上:
16fromv$sqlareaa,v$sessions,v$locked_objectl
17wherel.session_id=s.sid
18ands.prev_sql_addr=a.address
19orderbysid,s.serial#;
204.解锁方法:altersystemkillsession’146′;–146为锁住的进程号,即spid。
215.查看被锁的表:selectp.spid,c.object_name,b.session_id,b.oracle_username,b.os_user_namefromv$processp,v$sessiona,v$locked_objectb,all_objectscwherep.addr=a.paddranda.process=b.processandc.object_id=b.object_id
226.以上就是oracle查看锁表的方法,以及一些相关信息,看过之后如果觉得有帮助可以在下面给点个赞~
这种情况叫死锁,与网络质量无关。
最大的可能就是程序的原因。
如A进程修改a表的某条记录,修改完a表后,会继续修改b表的某条记录,然后提交事务。
这个时候,B进程在修改b表的那条记录,修改完后要去修改a表的那条记录,然后提交事务。
这样,当A修改完a尚未修改b,B修改完b尚未修改a的时候,就可能出现B进程等待A进程提交事务,A进程又在等待B进程提交事务,两个进程一直在等。
所以死锁就出现了。
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
注意事项:
简化数据:可以将复杂的查询创建为其他人可以使用的视图,而不必了解复杂的业务或逻辑关系。这简化并掩盖了视图用户数据的复杂性。
表结构设计的补充:在设计的系统才刚刚开始,大部分的程序直接访问数据表结构,但是随着业务的变化,系统更新,等等,引起了一些表结构不适用,这次修改系统的表结构太大,开发成本较高的影响。
这个时候可以创建一个视图来补充表结构设计,降低开发成本。程序可以通过查询视图直接获得它想要的数据。
添加安全性:视图可以向用户显示表中的指定字段,而不是向用户显示表中的所有字段。在实际开发中,视图通常作为提供数据的一种方式提供,并将只读权限提供给第三方以供查询使用。