11.2的又一件神奇的事情,也是BUG?
CODE:select t.EXECUTIONS,t.BUFFER_GETS,t.ROWS_PROCESSED from v$sql t where t.SQL_TEXT='select 1 from dual';beginexecute immediate 'select 1 from dual';end;/select t.EXECUTIONS,t.BUFFER_GETS,t.ROWS_PRO...
Oracle 11.2的BUG?还是我的问题?
环境:Windows 7Oracle 11.2.0.1 32位相同的问题在10g,11g Linux下没有重现。不知道是不是我这里的11g Windows有问题?CODE:[font=宋体]C:\Users\Administrator>sqlplus /nologSQL*Plus: Release 11.2.0.1.0 Produc...
Index扫描生成返回记录的处理流程到底是什么
Branch Block->Leaf Block->Data Block这个流程是索引扫描的流程。 现在的问题是,对于一个索引扫描的执行计划,TABLE ACCESS BY INDEX ROWID到底意味着什么? 1.直接返回Data Block相关rowid的行,索引存在的意义仅为定位记录 2.读取Data Block相关rowid行的记录,并在索引的基础上补全记录,索引列的数据不是真正Data Block相对列的数据 [@more@]C:UsersAdministrator>sqlplus /nologSQL*Plus: Release 11.2.0.1.0 Production on 星期三 5月 19 10:16:41 2010Copyright (c) 1982, 2010, Oracle. All rights reserved.SQL> c
从底向上第四篇--了解行链接
从底向上第一篇--了解DML操作从底向上第二篇--了解行迁移从底向上第三篇--了解index的compress从底向上第四篇--了解行链接从底向上第五篇--了解表的压缩属性在从底向上系列的第二篇,从底向上了解行迁移时我们看到了行迁移的产生,以及oracle是如何在block里处理行迁移。行迁移、行链接是两个概念,但是很多人可能都不太了解两者的区别与相同的地方。我们这里就加以引申,来看看行链接的情况。SQL> create table t (a varchar2(4000),b varchar2(4000),c varchar2(4000)); --这里我们建一个3个列的表表已创建。SQL> insert into t v
从底向上第五篇--了解表的压缩属性
从底向上第一篇--了解DML操作从底向上第二篇--了解行迁移从底向上第三篇--了解index的compress从底向上第四篇--了解行链接从底向上第五篇--了解表的压缩属性在从底向上第三篇--了解index的compress中,我们看到了对于索引而言,使用compress属性是如何改变索引的存储方式的。这里,对表的compress及compress的适用情况做一下测试。SQL> conn test/test已连接。SQL> create table t compress as select * from dba_tables where 1=0; --以compress关键字建立一个空表表已创建。SQL> insert into t select * from dba_tables; -- 插
从底向上第三篇--了解index的compress
从底向上第一篇--了解DML操作从底向上第二篇--了解行迁移从底向上第三篇--了解index的compress从底向上第四篇--了解行链接从底向上第五篇--了解表的压缩属性对于创建index时,是否选择compress功能概念一直比较模糊,什么情况下适用compress,什么情况下应该避免使用,都不太清楚,于是,做了如下的实验。首先,交代环境。SQL> select * from v$version;BANNER----------------------------------------------------------------Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProdPL/SQL Release 10.2.0.1.0 - Product
从底向上了解行迁移
请先移步从底向上了解DML操作http://www.itpub.net/thread-1283537-1-1.html在上一篇从底向上了解DML操作的帖子里,描述了insert、update、delete操作,在block里是如何进行的。这篇来介绍行迁移。上篇的最后,block里剩下3条记录,id分别为C50B(1000000000),C103(2),C104(3)前两个的text列长度都已经是4000了,如果我们修改最后一个列的长度为4000,那么3*4000肯定大于8192的block大小,这时会发生什么呢?SQL> update tt set text=lpad('a',4000) where id=3;已更新 1 行。提交完成。SQL> alter system dump datafile 1 block 134
从底向上了解DML操作
些这些东西,扩展自这个帖子:[url=http://www.itpub.net/viewthread.php?tid=1266978&extra=&page=1]http://www.itpub.net/viewthread.php?tid=1266978&extra=&page=1[/url][b]Insert、update、delete,DML操作,大家耳熟能详,使用上也是非常熟练,但是,对于这些操作,oracle在存储底层,也就是在Block里是如何处理的呢?我们来做个实验,首先,交代环境:[/b][font=宋体]SQL> select * from v$version;BANNER----------------------------------------------------------------Oracle Database 10g Enterprise Edi