Oracle 11g 鎖特性增加
Oracle 11g 鎖特性增加
在Oracle Database 11g Release 1 (11.1) 中鎖的增強如下
1.Serializing Locks
在Oracle 11g中允許DDL語句等待DML鎖.就是說當進行DML操作時,如果DML操作還沒有完成,DML所持有的鎖還沒有釋放,這時要進行DDL操作,比如刪除某列,在oracle 11g以前的版本
中會直接返回一個錯誤資訊,告訴我們資源正忙.而在oracle 11g中則可以由 DDL_LOCK_TIMEOUT這個引數來設定否要等待,等待多久.
DDL_LOCK_TIMEOUT的值預設是0,意為著是NOWAIT.
DDL_LOCK_TIMEOUT最大值可以設定到1000000(秒)意為著DDL語句為了DML鎖可以等待11.5天.
詳細測試如下
SQL> create table t as select * from all_objects;
表已建立。
C:>sqlplus yxyup
SQL*Plus: Release 11.1.0.6.0 - Production on 星期二 12月 18 20:54:13 2007
Copyright (c) 1982, 2007, Oracle. All rights reserved.
輸入口令:
連線到:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
T TABLE
SQL> create table tt as select * from all_objects;
表已建立。
SQL> drop table tt;
表已刪除。
SQL> update t set object_name='yxyup' ;
.......
再新開一個session
C:>sqlplus yxyup
SQL*Plus: Release 11.1.0.6.0 - Production on 星期二 12月 18 20:56:42 2007
Copyright (c) 1982, 2007, Oracle. All rights reserved.
輸入口令:
連線到:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> show parameter ddl_lock_time;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
ddl_lock_timeout integer 0
SQL> alter table t drop column object_name;
alter table t drop column object_name
*
第 1 行出現錯誤:
ORA-00054: 資源正忙, 但指定以 NOWAIT 方式獲取資源, 或者超時失效
SQL> alter session set ddl_lock_timeout=5;
會話已更改。
SQL> set time on
20:59:19 SQL> set timing on
20:59:24 SQL> alter table t drop column object_name;
alter table t drop column object_name
*
第 1 行出現錯誤:
ORA-00054: 資源正忙, 但指定以 NOWAIT 方式獲取資源, 或者超時失效
已用時間: 00: 00: 05.09
20:59:34 SQL> alter session set ddl_lock_timeout=10;
會話已更改。
已用時間: 00: 00: 00.00
20:59:47 SQL> alter table t drop column object_name;
alter table t drop column object_name
*
第 1 行出現錯誤:
ORA-00054: 資源正忙, 但指定以 NOWAIT 方式獲取資源, 或者超時失效
已用時間: 00: 00: 10.07
21:00:02 SQL> alter session set ddl_lock_timeout=0;
會話已更改。
已用時間: 00: 00: 00.00
21:00:12 SQL> alter table t drop column object_name;
alter table t drop column object_name
*
第 1 行出現錯誤:
ORA-00054: 資源正忙, 但指定以 NOWAIT 方式獲取資源, 或者超時失效
已用時間: 00: 00: 00.04
2.Locking Tables
我們知道在oracle 10g當執行LOCK TABLE命令時,如果正好有其他使用者對這個表持有了鎖,這時或是無限期的等待或是直接不等待(NOWAIT clause ).而在oracle 11g 中 LOCK
TABLE命令有了一個新子句,這個新子句允許我們指定一個等待DML鎖的時間,詳細語法如下:
LOCK TABLE … IN lockmode MODE [NOWAIT | WAIT integer]
可以看出比oracle 10g多了一個WAIT integer clause,並且這個integer是沒有限制的,也就是說可以無窮大也可以無窮小了.
詳細測試如下
C:>sqlplus yxyup
SQL*Plus: Release 11.1.0.6.0 - Production on 星期二 12月 18 21:42:24 2007
Copyright (c) 1982, 2007, Oracle. All rights reserved.
輸入口令:
連線到:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
22:34:42 SQL> create table tt as select * from t where rownum<10;
表已建立。
已用時間: 00: 00: 00.67
22:35:00 SQL> delete tt;
已刪除9行。
已用時間: 00: 00: 00.03
新開一個session 2
22:34:37 SQL> show user;
USER 為 "YXYUP"
22:36:02 SQL> lock table tt in exclusive mode nowait;
lock table tt in exclusive mode nowait
*
第 1 行出現錯誤:
ORA-00054: 資源正忙, 但指定以 NOWAIT 方式獲取資源, 或者超時失效
已用時間: 00: 00: 00.01
22:36:04 SQL> lock table tt in exclusive mode wait 10 ;
lock table tt in exclusive mode wait 10
*
第 1 行出現錯誤:
ORA-00054: 資源正忙, 但指定以 NOWAIT 方式獲取資源, 或者超時失效
已用時間: 00: 00: 10.03
22:36:32 SQL>
當然oracle 11g的鎖還有其他方面的增強,偶將慢慢一點一點的挖掘出來和大家分享
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7364032/viewspace-17485/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 11g 鎖特性增加(引數ddl_lock_time)Oracle
- ORACLE 11g新特性-允許DDL鎖等待DML鎖Oracle
- oracle 11g增加業務profileOracle
- Oracle 11g 新特性Oracle
- 【ORACLE新特性】11G 分割槽新特性Oracle
- oracle 11g 的新特性Oracle
- oracle 11g中的 oracle restart特性OracleREST
- Oracle 11g比10g及以前 增加列,並帶預設值的新特性Oracle
- Oracle 11g 新特性簡介Oracle
- Oracle 11g 新特性之DRCPOracle
- Oracle 11g新特性:Result CacheOracle
- Oracle 11g 新特性(轉載)Oracle
- Oracle 11g新特性之SecureFilesOracle
- oracle DG 11g新特性彙總Oracle
- ORACLE 11G新特性之列新增操作Oracle
- Oracle 11g 新特性 -- SecureFiles 說明Oracle
- oracle 11g 新特性 表壓縮Oracle
- Oracle 11g 新特性 -- SQL Plan Management 示例OracleSQL
- oracle 11g中的snapshot standby特性Oracle
- 天天學習ORACLE(三)-11G新特性Oracle
- oracle 11g 新特性 磁碟組檢查Oracle
- Oracle 11g十大精彩特性[zt]Oracle
- Oracle 11G 新特性 Automatic block repairOracleBloCAI
- [ORACLE 11G]Failed Logon Delays特性OracleAIGo
- 11g新特性--Oracle 11g 閃回資料歸檔Oracle
- Oracle 11g DG新特性--Automatic block repairOracleBloCAI
- Oracle 11g 新特性 – HM(Hang Manager)簡介Oracle
- ORACLE 11g新特性-統計值掛起Oracle
- oracle 11g 新特性 data recover AdvisorOracle
- oracle 11g 新特性 Flashback Data Archive 說明OracleHive
- Oracle 11g的新特性分割槽:System PartitionOracle
- 新特性:/dev/shm對Oracle 11g的影響devOracle
- Oracle 11g 中 Direct path reads 特性 說明Oracle
- 【11g新特性】Oracle 加密表空間-可下載Oracle加密
- oracle 11G新特性--SYSASM 角色--用來管理ASMOracleASM
- oracle 11g R1 asm 磁碟組新特性OracleASM
- oracle 11g新特性之密碼大小寫敏感Oracle密碼
- ORACLE 11G RAC 增加日誌組及增大日誌檔案Oracle