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. sql中的isnull

    ISNULL 使用指定的替换值替换 NULL. 语法ISNULL ( check_expression , replacement_value ) 参数check_expression 将被检查是否为 ...

  2. python为什么人们喜欢学习呢?

    软件的质和量. 既有量的积累也有质的区别.继承一定的前人研究基础. 基本上来说,python更加的注重可读性,一致性,可移植性,其中软件的质量也是比较的讲究的. python支持开发的高级重用机制,例 ...

  3. 【洛谷p1314】聪明的质监员

    聪明的质监员[题目链接] 有关算法: 二分答案: 但是你只二分答案是不够的,因为你check会炸,所以还要考虑前缀和: 首先假装我们的check已经写好了,main函数: int main() { n ...

  4. CodeForce 855B 暴力or线段树

    CodeForce 855B 暴力or线段树 题意 给你一串数,然后找出三个数,他们的前后关系和原来一样,可以相同,然后分别乘p,q,r,求他们积的和最大,并且输出这个数. 解题思路 这个可以使用线段 ...

  5. Codeforces 833B 题解(DP+线段树)

    题面 传送门:http://codeforces.com/problemset/problem/833/B B. The Bakery time limit per test2.5 seconds m ...

  6. JS—图片压缩上传(单张)

    *vue+webpack环境,这里的that指到vue实例 <input type="file" name="file" accept="ima ...

  7. 所有的数据处理都是map-reduce

    用reduce求和 const sum = [1,2,3,4,5,6].reduce((v,t)=>{ return v+t; //第一次v=0,t=1 //第二次v= 0+1,t=2 //第三 ...

  8. Int、bigint、smallint、tinyint的区别

    Bigint:从-2^63-2^63的整型数据(所有数字).存储大小为8个字节.Bigint已经有长度了,在mysql建表中的length,只是用于显示的位数. Int:从-2^31-2^31的整型数 ...

  9. Web学习之CSS总结

    银角大王武Sir的博客地址 1.positoin属性固定元素的定位类型 说明:这个属性定义建立元素布局所用的定位机制.任何元素都可以定位,不过绝对或固定元素会生成一个块级框,而无论该元素是什么类型.相 ...

  10. GitHub 搭建博客,出现 hexo g -d 报错

    想搭建一个个人博客,但是在将博客推送到Github上的时候在git bash 下运行hexo g -d命令出现错误: 错误如下:  fatal: HttpRequestException encoun ...