



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精选文档数据库锁表与解锁 一、mysql 锁定表:LOCK TABLES tbl_name READ | WRITE, tbl_name READ | WRITE, 解锁表:UNLOCK TABLES 例子: LOCK TABLES table1 WRITE ,table2 READ . 更多表枷锁; 说明:1、READ 锁代表 其他用户只能读 不能其他操作 2、WRITE锁代表:其他用户不能任何操作(包括读) 查看那些表被锁:show OPEN TABLES where In_use 0; 全局加锁:FLUSH TABLES WITH READ LOCK(这个命令是全局读锁定,执行了命令之后所有库所有表都被锁定只读。解锁也是:UNLOCK TABLES ) 二、oracle -行级锁定(同样对 mysql起作用) 通过 :select * from tableName t for update 或 select * from tableName t where id =1 for update 前者锁定整个表,后者多顶 id=1的一行数据(有主键,并且指定 主键=值 的只锁定指定行) 说明:通过 select . for update 后 其他用户只能读 不能其他操作,锁定者通过 commit或 rollback命令 自动解锁,或使用 本文的 解锁方式(will)! -表级锁定 lock table in mode nowait 其中: lock_mode 是锁定模式 nowait关键字用于防止无限期的等待其他用户释放锁 五种模式如下(1到5 级别越来越高,限制越来越大): 1、行共享(row share,rs):允许其他用户访问和锁定该表,但是禁止排他锁定整个表 2、排他锁(row exclusive ,rx):与行共享模式相同,同时禁止其他用户在此表上使用共享锁。使用select . for update语句会在表上自动应用行排他锁 3、共享(share ,s):共享锁将锁定表,仅允许其他用户查询表中的行,但不允许插入、更新、删除行。多个用户可以在同一表中放置共享锁,即允许资源共享,因此得名“共享锁”。例如:如果用户每天都需要在结账时更新日销售额表,则可以在更新该表时使用共享锁以确保数据的一致性。 4、共享排他锁(share row exclusive,srx):执行比共享锁更多的限制。防止其他事务在表上应用共享锁,、共享排他锁以及排他锁。 5、排他(exclusive,x):对表执行最大的限制。除了允许其他用户查询该表记录,排他锁防止其他事务对表做任何更改或在表上应用任何类型的锁。 实例: lock table table_Name in exclusive mode; 要解锁需要 锁定人 执行 commit 或 rollback 或者 用本文的 解锁方式(will)! -查询锁表 SELECT /*+ rule */ S.USERNAME, DECODE(L.TYPE, TM, TABLE LOCK, TX, ROW LOCK, NULL) LOCK_LEVEL, O.OWNER, O.OBJECT_NAME, O.OBJECT_TYPE, S.SID, S.SERIAL#, S.TERMINAL, S.MACHINE, S.PROGRAM, S.OSUSER FROM V$SESSION S, V$LOCK L, DBA_OBJECTS O WHERE L.SID = S.SID AND L.ID1 = O.OBJECT_ID(+) AND S.USERNAME IS NOT NULL; -查询状态 SELECT SESSION_ID SID, OWNER, NAME, TYPE, MODE_HELD HELD, MODE_REQUESTED REQUEST FROM DBA_DDL_LOCKS WHERE NAME = DRAG_DATA_FROM_LCAM; SELECT T1.SID, T1.SERIAL#, T2.SQL_TEXT FROM V$SESSION T1, V$SQL T2 WHERE T1.SQL_ID = T2.SQL_ID AND T2.SQL_TEXT LIKE %DRAG_DATA_FROM_LCAM%; SELECT DISTINCT P.SPID, S.SID, S.SERIAL# FROM V$DB_OBJECT_CACHE OC, V$OBJECT_DEPENDENCY OD, DBA_KGLLOCK W, V$SESSION S, V$PROCESS P WHERE OD.TO_OWNER = OC.OWNER AND OD.TO_NAME = OC.NAME AND OD.TO_ADDRESS = W.KGLLKHDL AND W.KGLLKUSE = S.SADDR AND P.ADDR = S.PADDR AND OC.NAME = UPPER(drag_data_from_lcam); Oracle的锁表与解锁 SELECT /*+ rule */ s.username, decode(l.type,TM,TABLE LOCK, TX,ROW LOCK, NULL) LOCK_LEVEL, o.owner,o.object_name,o.object_type, s.sid,s.serial#,s.terminal,s.machine,gram,s.osuser FROM v$session s,v$lock l,dba_objects o WHERE l.sid = s.sid AND l.id1 = o.object_id(+) AND s.username is NOT Null -kill session语句 (说明 :下面的 50是查询结果中sid字段值,492是serial#字段值) alter system kill session50,492; (需要dba权限) -以下几个为相关表 SELECT * FROM v$lock; SELECT * FROM v$sqlarea; SELECT * FROM v$session; SELECT * FROM v$process ; SELECT * FROM v$locked_object; SELECT * FROM all_objects; SELECT * FROM v$session_wait; -1.查出锁定object的session的信息以及被锁定的object名 SELECT l.session_id sid, s.serial#, l.locked_mode,l.oracle_username, l.os_user_name,s.machine, s.terminal, o.object_name, s.logon_time FROM v$locked_object l, all_objects o, v$session s WHERE l.object_id = o.object_id AND l.session_id = s.sid ORDER BY sid, s.serial# ; -2.查出锁定表的session的sid, serial#,os_user_name, machine name, terminal和执行的语句 -比上面那段多出sql_text和action SELECT l.session_id sid, s.serial#, l.locked_mode, l.oracle_username, s.user#, l.os_user_name,s.machine, s.terminal,a.sql_text, a.action FROM v$sqlarea a,v$session s, v$locked_object l WHERE l.session_id = s.sid AND s.prev_sql_addr = a.address ORDER BY sid, s.serial#; -3.查出锁定表的sid, serial#,os_user_name, machine_name, terminal,锁的type,mode SELECT s.sid, s.serial#, s.username, s.schemaname, s.osuser, cess, s.machine, s.terminal, s.logon_time, l.type FROM v$session s, v$lock l WHERE s.sid = l.sid AND s.username IS NOT NULL ORDER BY sid; 这个语句将查找到数据库中所有的DML语句产生的锁,还可以发现, 任何DML语句其实产生了两个锁,一个是表锁,一个是行锁。 杀锁命令 alter system kill session sid,serial# SELECT /*+ rule */ s.username, decode(l.type,TM,TABLE LOCK, TX,ROW LOCK, NULL) LOCK_LEVEL, o.owner,o.object_name,o.object_type, s.sid,s.serial#,s.terminal,s.machine,gram,s.osuser FROM v$session s,v$lock l,dba_objects o WHERE l.sid = s.sid AND l.id1 = o.object_id(+) AND s.username is NOT NULL 如果发生了锁等待,我们可能更想知道是谁锁了表而引起谁的等待 以下的语句可以查询到谁锁了表,而谁在等待。 以上查询结果是一个树状结构,如果有子节点,则表示有等待发生。 如果想知道锁用了哪个回滚段,还可以关联到V$rollname,其中xidusn就是回滚段的USN col user_name format a10 col owner format a10 col object_name format a10 col object_type format a10 SELECT /*+ rule */ lpad( ,decode(l.xid
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届江苏省苏州市张家港市梁丰初级中学七下数学期末质量跟踪监视试题含解析
- 行政判例的重要性研究试题及答案
- 信息技术的未来与数据驱动之路试题及答案
- 2025届江苏省泰州市泰兴市七年级数学第二学期期末经典试题含解析
- 组织变革中的风险管理实践试题及答案
- 提升学生自信心的有效途径计划
- 预算编制审批流程计划
- 云南省保山市2025年七年级数学第二学期期末调研试题含解析
- 2024年浙江省交通运输厅下属事业单位真题
- 2024年上海财经大学辅导员考试真题
- 幼儿园课件-神奇的中草药
- 金坛区苏科版六年级心理健康教育第18课《中学遐想》课件(定稿)
- 小学生民法典主题班会PPT
- 抗滑桩施工监测监控措施
- 甲状腺的外科治疗与病ppt课件
- 国家开放大学《课程与教学论》形考任务1-4参考答案
- 大坝填筑实施细则
- 败血症PPT优质课件
- 万寿菊提取物项目运营方案【参考范文】
- 07北工大高数工2期末考试A卷工答案1
- 安全教育零食大PK(课堂PPT)
评论
0/150
提交评论