Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

11

积分

0

好友

4

主题
1#
发表于 2012-7-10 10:22:38 | 查看: 5928| 回复: 2
测试的内容参考的是 http://www.oracle-base.com/articles/11g/ddl-lock-timeout-11gr1.php
操作系统 RedHat 5
数据库版本
SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production


会话1   创建表并插入记录,但是不进行提交
SQL> CREATE TABLE lock_tab (  id  NUMBER);

Table created.

SQL> INSERT INTO lock_tab VALUES (1);

1 row created.

SQL>
SQL> select  * from lock_tab;

        ID
----------
         1



会话2
SQL> select * from lock_tab;

no rows selected

SQL> alter session set ddl_lock_timeout =10;

Session altered.

SQL> set timing on
SQL> set time on
10:03:37 SQL>
10:03:39 SQL> show parameter ddl_lock

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
ddl_lock_timeout                     integer     10
10:03:46 SQL>
10:03:56 SQL> ALTER TABLE lock_tab ADD (  description  VARCHAR2(50));


会话2 hang 在这里了,并没有出现,
ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired
这样的错误。
请问一下 是我的环境的参数设置有问题导致没有测试出网页的结果吗?还是原本就是这样
会话的等待事件与锁的请求类型

select sid,username,event from v$session where username is not null;
      SID USERNAME                       EVENT
---------- ------------------------------ ----------------------------------------
         1 TEST                           SQL*Net message from client
        33 SYS                            SQL*Net message from client
        41 TEST                           enq: TX - row lock contention

SQL> select decode(request, 0, 'holder:', 'waiter:') holder,sid,id1, id2,lmode,request,type,ctime,block
  2    from v$lock
  3   where (id1, id2, type) in
  4         (select id1, id2, type from v$lock where request > 0)
  5   order by id1, request;

HOLDER         SID        ID1        ID2      LMODE    REQUEST TY      CTIME      BLOCK
------- ---------- ---------- ---------- ---------- ---------- -- ---------- ----------
holder:          1     524307        639          6          0 TX       1080          1
waiter:         41     524307        639          0          4 TX        888          0
2#
发表于 2012-7-10 10:45:51
利用 http://space.itpub.net/26110315/viewspace-730451
这篇文章的测试 可以,

回复 只看该作者 道具 举报

3#
发表于 2012-7-10 11:17:33
Since this is expected behavior, there is no workaround.

In 11g,  ALTER TABLE ADD COLUMN is not covered by an exclusive ddl lock; therefore, it will not wait for specified time in DDL_LOCK_TIMEOUT parameter and it will not raise the ORA-00054 error.


11g 中 add column 不使用排他的  DDL锁, 所以DDL_LOCK_TIMEOUT 无效

session A:

[oracle@nas ~]$ sqlplus  / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Tue Jul 10 04:12:28 2012

Copyright (c) 1982, 2011, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL>
SQL>
SQL> CREATE TABLE lock_tab (  id  NUMBER);

Table created.

SQL> INSERT INTO lock_tab VALUES (1);

1 row created.

SQL> commit;

Commit complete.

SQL> INSERT INTO lock_tab VALUES (1);

1 row created.

SQL> select  * from lock_tab;

        ID
----------
         1
         1



session B:

SQL> select * from lock_tab;

        ID
----------
         1

SQL> alter session set ddl_lock_timeout =10;

Session altered.

SQL> show parameter ddl_lock

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
ddl_lock_timeout                     integer     10
SQL> ALTER TABLE lock_tab ADD (  description  VARCHAR2(50));

ddl_lock_timeout => 对于add column无效


SQL> drop table lock_tab;
drop table lock_tab
           *
ERROR at line 1:
ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired

但是对其他 DDL有效

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-12-26 03:00 , Processed in 0.047727 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569