http://liwenshui322.iteye.com/blog/1166934

DDL锁有三种:

1.排他DDL锁(Exclusive DDL lock):这会防止其他会话得到它们自己的DDL锁或TM(DML)锁。这说明,在DDL操作期间你可以查询一个表,但是无法以任何方式修改这个表。

2.共享DDL锁(Share DDL lock):这些锁会保护所引用对象的结构,使之不会被其他会话修改,但是允许修改数据。

3.可中断解析锁(Breakable parse locks):这些锁允许一个对象(如共享池中缓存的一个查询计划)向另外某个对象注册其依赖性。如果在被依赖的对象上执行DDL,Oracle会查看已经对该对象注册了依赖性的对象列表,并使这些对象无效。因此,这些锁是“可中断的”,它们不能防止DDL出现。

排他DDL锁:如:Alter table t add new_column date

共享DDL锁:在创建存储的编译对象(如过程和视图)时,会对依赖的对象加这种共享DDL锁。例如,如果执行以下语句:

Create view MyView
          as
      select *  
      from emp, dept
      where emp.deptno = dept.deptno;

案例:删除一张表,无响应

SQL> select count(*) from T_LOG;

COUNT(*)
----------
9097
SQL> truncate TABLE "ELON"."T_LOG";
SQL> drop table "ELON"."T_LOG";

SQL> select owner,table_name,status from dba_tables where table_name='T_LOG';

OWNER TABLE_NAME STATUS
------------------------------ ------------------------------ --------
ELON T_LOG VALID

SQL> conn ELON/ELON

SQL> select sid,serial#,paddr,username,osuser,machine,program from v$session where sid in( select SESSION_ID from dba_ddl_locks where name='T_LOG');

SID SERIAL# PADDR USERNAME OSUSER MACHINE PROGRAM
---------- ---------- ---------------- ------------------------------ ------------------------------ --------------- -------------------------
58 61519 C000000CEB26D418 SYS oracle app01 sqlplus@app01 (TNS V1-
V3)

2808 16967 C000000CEB31B6E8 JDSS Administrator WIN-LLI9R4268RH JDBC Thin Client
5121 4795 C000000CEAF1F888 SYS oracle app01 oracle@app01 (J013)

查询持有DDL排它锁的会话
SQL>select sid,serial#,s.sql_id,sql_text,program from v$session s,v$sql l where sid in(58,2808,5121) and s.sql_id=l.sql_id

SID SERIAL# SQL_ID SQL_TEXT PROGRAM
---------- ---------- ------------- -------------------------------------------------- -------------------------
2808 16967 fgzbtnugq630d update T_LOG a set (a.STATUS,a.ZGSTATUS)=( JDBC Thin Client
select STATUS,ZGSTATUS from T_LOG@ELON_XHDoT_WH b where b.txid=a.txid) where a.STATUS<>'1' and a.STATUS<>'2' and a.modify_time>sysdate-5 and ts='GCN'

5121 4795 1cv2jg0a6m0k8 begin DBMS_STATS.CLEANUP_STATS_JOB_PROC(:1,:2,:3,: oracle@app01 (J013)
4,:5); end;

SQL> alter system kill session '2808,16967';
alter system kill session '2808,16967'
*
ERROR at line 1:
ORA-00031: session marked for kill

SQL> select spid, osuser, s.program from v$session s,v$process p where s.paddr=p.addr and s.sid=2808;

SPID OSUSER PROGRAM
------------------------ ------------------------------ -------------------------
23928 Administrator JDBC Thin Client

app01@/data/diag/rdbms/prod/prod/trace$ps -ef | grep 23928
oracle 21349 19923 0 17:28:48 pts/0 0:00 grep 23928
oracle 23928 1 0 4? 10 ? 1:22 oraclecddb (LOCAL=NO)

app01@/data/diag/rdbms/prod/prod/trace$kill -9 23928
app01@/data/diag/rdbms/prod/prod/trace$ps -ef | grep 23928
oracle 21680 19923 0 17:31:45 pts/0 0:00 grep 23928

从DBA_DDL_LOCKS视图获得DDL锁定信息的更多相关文章

  1. win7 将所有 视图 改为 '详细信息'

    1.随便进入某个文件夹->(菜单栏中)查看->选'详细信息' 2.(菜单栏中)工具->文件夹选项->查看->'应用到文件夹'

  2. ASP.NET MVC控制器里捕获视图的错误验证信息(ErrorMessage)

    ViewModel类: /// <summary> /// 评论用验证视图 /// </summary> public partial class VCreateShopCom ...

  3. Oracle - 创建表视图等 - DDL

    解锁scott: sqlplus / as sysdba; alter user scott account unlock; alter user scott identified by tiger; ...

  4. django关闭调试信息,打开内置错误视图

    1 内置错误视图 Django内置处理HTTP错误的视图,主要错误及视图包括: 404错误:page not found视图 500错误:server error视图 400错误:bad reques ...

  5. Hive 官方手册翻译 -- Hive DDL(数据定义语言)

    Hive DDL(数据定义语言) Confluence Administrator创建, Janaki Lahorani修改于 2018年9月19日 原文链接 https://cwiki.apache ...

  6. oracle系统视图SQL语句整理

    -- DBA/ALL/USER/V_$/GV_$/SESSION/INDEX开头的绝大部分都是视图 -- DBA_TABLES意为DBA拥有的或可以访问的所有的关系表. -- ALL_TABLES意为 ...

  7. db2look导出ddl 详细用法(转)

    DB2的db2look命令诠释如下:db2look 版本 8.2db2look:生成 DDL 以便重新创建在数据库中定义的对象语法: db2look -d DBname [-e] [-u Creato ...

  8. 查询01_DML锁和DDL锁的处理

    一.摘要 Oracle的手册上关于锁的分类说明如下: 1. DML锁:Date lock.执行DML时保护数据的锁.Row Lock(TX)保护特定行,Table Lock(TM)保护整个表,可以通过 ...

  9. DB2LOOK命令提取数据库对象信息

    提取复制数据库的DDL语句:db2look -d BCDLJS -e -o db2look.sql -a -a:导出所有用户的DDL-o: 定向结果到文件-d: 数据库名-e: 抽取复制数据库所需的 ...

随机推荐

  1. Ansible安装配置(CentOS 7)

    Ansible 中的概念 任务 Task——多个 Task 顺序执行,在每个 Task 执行结束可以通知 Hanlder 触发新操作. 变量 Variable——用户定义的变量. 环境 Facts—— ...

  2. Kubernetes kubeadm 安装记录

    Kubernetes kubeadm 安装记录 注:比较乱,都是一些预见到的错误 kubernetes yum 源 cat /etc/yum.repos.d/kubernetes.repo [kube ...

  3. 2019牛客暑期多校训练营(第五场) - C - generator 2 - BSGS

    https://ac.nowcoder.com/acm/contest/885/C 这个跟平时那种求离散对数的bsgs不一样,虽然可以转化成离散对数来做不过会T掉.展开递推式然后合并具有a的项,发现其 ...

  4. 收集慕课网讲解的border知识

    1.使用boeder辅助background-posi定位 2.使用border实现三道杠图标 3.利用border实现--鼠标放上去后,改变图标的颜色

  5. 回溯--- Permutations

    46.Permutations (Medium)](https://leetcode.com/problems/permutations/description/) [1,2,3] have the ...

  6. 第一个javascript脚本

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 一步一步玩控件:自定义TabControl——从山寨Safari开始

    作者:野比 (conmajia@gmail.com) 时间:May, 2012 封面图片为野比原创,请勿未经允许私自引用 #1-1 嗯,各位,又是我,生物钟颠倒的家伙. 今天我要山寨的是大名鼎鼎的Ap ...

  8. C#将MD5后的字符串转为字符数据,随机大小写

    一如下代码 public static string GenerateCode(Guid id, DateTime endTime, string Type) { string str = id + ...

  9. [好好学习]在VMware中安装Oracle Enterprise Linux (v5.7) - (2/5)

  10. Codeforces Round #426 (Div. 2) - A

    题目链接:http://codeforces.com/contest/834/problem/A 题意:给定4个图标,某些图标经过顺时针/逆时针旋转90°后能得到另外一些图标.现在给你开始的图标和结束 ...