济宁市中网站建设,wordpress恢复主题,wordpress 百度搜索图片不显示,网站备案号如何获得Oracle查锁表 Oracle分两种锁#xff0c;一种是DDL锁#xff0c;一种是DML锁。一、Oracle DDL锁的解锁#xff08;dba_ddl_locks视图#xff09;1.1、查表的DDL锁的详情#xff08;kill session脚本、表名、执行锁表的SQL等#xff09;1.2、解锁表的DDL锁1.2.1、解锁表的… Oracle查锁表 Oracle分两种锁一种是DDL锁一种是DML锁。一、Oracle DDL锁的解锁dba_ddl_locks视图1.1、查表的DDL锁的详情kill session脚本、表名、执行锁表的SQL等1.2、解锁表的DDL锁1.2.1、解锁表的DDL锁 - 1、执行kill session脚本Ⅰ、打开命令窗口Ⅱ、执行上面生成好的kill session脚本 1.2.2、解锁表的DDL锁 - 2、调用auto_server_pkg包的kill_session存过执行杀会话kill session。 二、Oracle DML锁的解锁gv$locked_object视图2.1、查表的DML锁的详情kill session脚本、表名、执行锁表的SQL等2.2、解锁表的DML锁2.2.1、解锁表的DML锁 - 1、执行kill session脚本Ⅰ、打开命令窗口Ⅱ、执行上面生成好的kill session脚本 2.2.2、解锁表的DML锁 - 2、调用auto_server_pkg包的kill_session存过执行杀会话kill session。 三、附录3.1、根据sid查sql_textgv\$session、gv$sqlarea3.2、查锁表的详情dba_locks视图3.3、Oracle查询锁定表的会话信息gv\$session、gv\$process、gv$sqlarea3.4、gv$lock视图 Oracle分两种锁一种是DDL锁一种是DML锁。
一、Oracle DDL锁的解锁dba_ddl_locks视图
1.1、查表的DDL锁的详情kill session脚本、表名、执行锁表的SQL等
查DDL锁的数据字典SQL如下
SELECT DISTINCT alter system kill session || s.sid || , || s.serial# || , ||s.inst_id || immediate; AS kill_session_scripts,s.sql_id,a.sql_text,s.sid,s.serial#FROM dba_ddl_locks l,gv$session s,gv$sqlarea aWHERE 1 1AND l.session_id s.sidAND s.sql_id a.sql_idAND lower(a.sql_text) NOT LIKE %alter system kill session %
-- AND l.owner IN (TZQ,LOG)
;查表的DDL锁的详情的查询结果如下图所示
1.2、解锁表的DDL锁
有两种方式可以解锁表的DDL锁。
一是执行kill session脚本。二是调用auto_server_pkg包的kill_session存过执行杀会话kill session。
1.2.1、解锁表的DDL锁 - 1、执行kill session脚本
Ⅰ、打开命令窗口 Ⅱ、执行上面生成好的kill session脚本
alter system kill session 314,93,1 immediate;1.2.2、解锁表的DDL锁 - 2、调用auto_server_pkg包的kill_session存过执行杀会话kill session。
auto_server_pkg包的代码详见博客Oracle解锁表、包、用户、杀会话、停job 打开命令行窗口执行下面命令
AUTO_SERVER_PKG
execute sys.auto_server_pkg.kill_session(6335,15519);二、Oracle DML锁的解锁gv$locked_object视图
2.1、查表的DML锁的详情kill session脚本、表名、执行锁表的SQL等
查DML锁的数据字典SQL如下
SELECT DISTINCT alter system kill session || s.sid || , || s.serial# || , ||s.inst_id || immediate; AS kill_session_scripts,o.owner,o.object_name,s.sql_id,a.sql_text,s.sid,s.serial#FROM gv$locked_object l,dba_objects o,gv$session s,gv$sqlarea aWHERE l.object_id o.object_idAND l.session_id s.sidAND l.inst_id s.inst_idAND s.sql_id a.sql_id-- AND o.owner IN (TZQ,LOG)
;查表的DML锁的详情的查询结果如下图所示
2.2、解锁表的DML锁
有两种方式可以解锁表的DML锁。
一是执行kill session脚本。二是调用auto_server_pkg包的kill_session存过执行杀会话kill session。
2.2.1、解锁表的DML锁 - 1、执行kill session脚本
Ⅰ、打开命令窗口 Ⅱ、执行上面生成好的kill session脚本
alter system kill session 314,93,1 immediate;2.2.2、解锁表的DML锁 - 2、调用auto_server_pkg包的kill_session存过执行杀会话kill session。
auto_server_pkg包的代码详见博客Oracle解锁表、包、用户、杀会话、停job 打开命令行窗口执行下面命令
AUTO_SERVER_PKG
execute sys.auto_server_pkg.kill_session(6335,15519);三、附录
3.1、根据sid查sql_textgv$session、gv$sqlarea
SELECT s.sid,s.serial#,s.sql_id,s.sql_hash_value,s.username,a.sql_textFROM gv$session sLEFT JOIN gv$sqlarea aON s.sql_id a.sql_idWHERE s.sql_id IS NOT NULLAND a.sql_text NOT LIKE %AND a.sql_text NOT LIKE %;3.2、查锁表的详情dba_locks视图
SELECT DISTINCT alter system kill session || s.sid || , || s.serial# || , ||s.inst_id || immediate; AS kill_session_scripts,l.session_id,s.serial#,l.lock_TYPE,l.mode_held,l.mode_requested,CASEWHEN o1.object_name IS NOT NULLTHEN o1.owner||.||o1.object_nameELSE NULLEND AS id1_object_name,CASEWHEN o2.object_name IS NOT NULLTHEN o2.owner||.||o2.object_nameELSE NULLEND AS id2_object_name,l.last_convert,l.blocking_others,a.SQL_TEXTFROM dba_locks lLEFT JOIN dba_objects o1ON l.lock_id1 o1.OBJECT_IDLEFT JOIN dba_objects o2ON l.lock_id2 o2.OBJECT_IDLEFT JOIN gv$session sON l.session_id s.SIDLEFT JOIN v$sqlarea aON s.sql_id a.sql_idWHERE 11AND a.SQL_TEXT IS NOT NULLAND (o1.owner IN (TZQ,LOG) ORo2.owner IN (TZQ,LOG))
;3.3、Oracle查询锁定表的会话信息gv$session、gv$process、gv$sqlarea
Oracle查询锁定表的会话信息可以执行下面的SQL来进行查询
SELECT s.sid,s.serial#,p.spid,s.username,s.osuser,s.program,s.module,s.action,s.logon_time,s.type,a.sql_textFROM gv$session s,gv$process p,gv$sqlarea aWHERE s.paddr p.addrAND s.sql_id a.sql_idAND s.status ACTIVEAND s.username IS NOT NULLAND s.type ! BACKGROUNDAND a.sql_text NOT LIKE %gv$sqlarea a%ORDER BY s.logon_time DESC;3.4、gv$lock视图
此查询将返回被锁定的表的会话ID、用户名、机器名、锁模式、锁定类型以及锁定对象的ID等信息。请注意如果有多个锁定类型则此查询可能会返回多行。
SELECT s.sid,s.serial#,s.username,s.osuser,s.machine,l.type,l.block,l.id1,l.id2,a.SQL_TEXT,CASEWHEN o1.object_name IS NOT NULLTHEN o1.owner||.||o1.object_nameELSE NULLEND AS id1_object_name,CASEWHEN o2.object_name IS NOT NULLTHEN o2.owner||.||o2.object_nameELSE NULLEND AS id2_object_nameFROM gv$session s,gv$lock l,gv$sqlarea a,dba_objects o1,dba_objects o2WHERE s.sid l.sidAND s.sql_id a.sql_idAND l.id1 o1.OBJECT_ID()AND l.id2 o2.OBJECT_ID()AND a.SQL_TEXT NOT LIKE %,gv$sqlarea a%
;查询结果如下图