li
  当前位置:主页 > 性能优化 > 文章内容
li
Oracle11新特性——在线操作功能增强(七) (3)
来源: http://yangtingkun.itpub.net/  作者: yangtingkun    时间:2008-01-26   阅读:4  
本文章共5217字,分4页,当前第3页,快速翻页:
 

SQL> COMMIT;

提交完成。

SQL> DELETE T WHERE ID = 2;

已删除 1 行。

SQL> SELECT SID, TYPE, ID1, CTIME, BLOCK FROM V$LOCK WHERE SID IN (131, 149);

SID TY ID1 CTIME BLOCK
---------- -- ---------- ---------- ----------
149 AE 99 110 0
149 OD 70713 107 0
131 AE 99 138 0
149 DL 70712 107 0
149 DL 70712 107 0
149 OD 70712 107 0
149 TX 196637 10 0
149 TM 70712 107 0
149 TM 70715 107 0
131 TM 70712 10 0
149 TX 262171 107 0
131 TX 196637 10 1

已选择12行。

SQL> SELECT EVENT, P1TEXT, P1, SECONDS_IN_WAIT FROM V$SESSION_WAIT WHERE SID = 149;

EVENT P1TEXT P1 SECONDS_IN_WAIT
---------------------------------------- -------------------- ---------- ---------------
enq: TX - row lock contention name|mode 1415053316 15

最后在会话1再次提交:

SQL> COMMIT;

提交完成。

SQL> DELETE T WHERE ID = 3;

已删除 1 行。

这是会话2REBUILD操作完成:

索引已更改。

SQL2> SELECT * FROM V$VERSION;

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

看上去,10g和11g的ONLINE REBUILD操作并没有什么不同,在创建索引开始和结束的时候都要获取到表的锁。不过二者获取的锁信息不同,也就是说二者对于后续DML的影响并不相同。

在11g中,ONLINE REBUILD操作获取的锁不会阻塞后续DML操作,而11g以前的版本,在ONLINE REBUILD索引过程中,获取到锁的一个短暂时刻会阻止DML操作。

下面演示一下二者的区别,首先在11g中,一个会话运行ONLINE REBUILD,另一个会话同时运行对表的DML操作,第三个会话查询V$LOCK视图,检查ONLINE REBUILD操作是否会阻塞DML操作。

IXDBA.NET社区论坛

会话1

SQL> SELECT SID FROM V$MYSTAT WHERE ROWNUM = 1;

SID
----------
131

SQL> CREATE INDEX IND_T_ID ON T(ID);

索引已创建。

SQL> ALTER INDEX IND_T_NAME REBUILD ONLINE;

索引已更改。

会话2

SQL2> BEGIN
2 FOR I IN 1..100000 LOOP
3 UPDATE T SET ID = ID WHERE ID = 1;
4 COMMIT;
5 END LOOP;
6 END;
7 /

PL/SQL 过程已成功完成。

会话3

SQL> CONN YANGTK/yangtk@ORA11G已连接。
SQL> SET SQLP 'SQL3> '
SQL3> SET SERVEROUT ON
SQL3> DECLARE
2 V_NUM NUMBER;
3 V_TOTAL NUMBER DEFAULT 0;
4 BEGIN
5 FOR I IN 1..1000 LOOP
6 SELECT SUM(BLOCK) INTO V_NUM FROM V$LOCK WHERE SID = 154;
7 V_TOTAL := V_TOTAL NVL(V_NUM, 0);
8 END LOOP;
9 DBMS_OUTPUT.PUT_LINE(V_TOTAL);
10 END;
11 /
0

PL/SQL 过程已成功完成。

确保会话1REBUILD ONLINE与会话2、会话3的存储过程几乎同时运行。可以看到在整个REBUILD索引过程中,没有阻塞DML操作。

下面看看同样的操作在10g下执行的结果。

会话1

SQL> CONN YANGTK/YANGTK@YTK102已连接。
SQL> SELECT SID FROM V$MYSTAT WHERE ROWNUM = 1;



阅读更多内容<<上一页 · 1 · 2 · 3 · 4 · 下一页>>


  上一篇: Oracle11新特性——在线操作功能...   下一篇: Oracle11新特性——在线操作功能...
li
 §相关评论  
 热点文章

·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 编辑推荐
·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 相关篇章
·Oracle11新特性——在线操作功能...
·Oracle11新特性——在线操作功能...
·Oracle11新特性——在线操作功能...
·Oracle11新特性——在线操作功能...
·Oracle11新特性——PLSQL新特性(...
·Oracle11新特性——PLSQL新特性(...
·Oracle11新特性——PLSQL新特性(...
·Oracle11新特性——PLSQL新特性(...
·Oracle11新特性——PLSQL新特性(...
·Oracle11新特性——PLSQL新特性(...
·Oracle11新特性——在线操作功能...
·Oracle11DATA GUARD实时应用加实...
·Oracle11新特性——在线操作功能...
·Oracle11新特性——分区功能增强...
·Oracle11新特性——分区功能增强...
·Oracle11新特性——分区功能增强...
·Oracle11新特性——分区功能增强...
·Oracle11新特性——分区功能增强...
·Oracle11新特性——虚拟列
·Oracle11g INTERVAL分区新增分区...
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接