统计信息的32位限制
原帖在此:http://www.itpub.net/thread-1339053-1-1.htmlOracle在对于varchar等字符型字段收集统计信息时,并不会对每个值都进行精确的统计,而是,对值进行substr(,32)。一般来讲,这种方式没有什么问题,但是,如果恰巧列中存储的数据,前32bytes相同,那么,Oracle的统计就会与实际情况不符。请看下面的例子:[@more@]SQL*Plus: Release 11.2.0.1.0 Production on 星期五 8月 20 10:40:54 2010Copyright (c) 1982, 2010, Oracle. All rights reserved.SQL> conn test/test已连接。SQL> drop table t;表已删除。SQL> create
关于delete还是update会产生更多日志的问题
论坛上有兄弟问http://www.itpub.net/thread-1338094-1-1.html对于redo而言,不仅仅需要记录数据块的更改,还需要记录相关undo的信息。因此,由于delete操作需要记录全部列的undo信息,redo量往往大于update。但是,考虑到supplemental log(附加日志)时,是什么情况呢?[@more@]SQL> select SUPPLEMENTAL_LOG_DATA_MIN, 2 SUPPLEMENTAL_LOG_DATA_PK, 3 SUPPLEMENTAL_LOG_DATA_UI, 4 SUPPLEMENTAL_LOG_DATA_ALL 5 from v$database 6 ;SUPPLEME SUP SUP SUP-------- --- --- ---YES YES YES NOS
INDEX RANGE SCAN DESCENDING的逻辑读问题
itpub:http://www.itpub.net/thread-1335784-1-1.htmlINDEX RANGE SCAN DESCENDING的逻辑读126明显大于INDEX RANGE SCAN 5,但优化器依然选择了INDEX RANGE SCAN DESCENDING这里先不讨论优化器的选择,仅仅看看是否INDEX RANGE SCAN DESCENDING的逻辑读会高的这么厉害下面是测试代码:[@more@]SQL> create table emp (id,name) as select object_id,object_name from dba_objects;表已创建。SQL> create index t_idx_emp on emp(id);索引已创建。SQL> set arraysize 5000SQL> select id,name from emp where id between 100 a
PRECOMPUTE_SUBQUERY应用的一个例子
SQL> select * from v$version;BANNER----------------------------------------------------------------Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64biPL/SQL Release 10.2.0.4.0 - Productio...
日期转换为raw的函数
在论坛上看到有需要日期转raw的兄弟,写了个函数:create or replace function date_to_raw(rv varchar2) return varchar2as rv_century number; rv_year number; rv_month number; rv_day number; rv_hour number; rv_mil number; rv_sec number;begin rv_century:=to_number(substr(rv,1,2))+100; rv_year:=to_number(substr(rv,3,2))+100; rv_month:=to_number(substr(rv,5,2)); rv_day:=to_number(substr(rv,7,2)); rv_hour:=to_number(substr(rv,9,2))+1; rv_mil:=to_number(substr(rv,11,2))+1; rv_sec:=to_number(s
11.2 绑定变量执行计划怎么这样?求助!
本来是想在11G下实验一下http://www.itpub.net/thread-1323480-1-1.html没想到,发现了新的问题,新开帖求助C:\Users\Administrator>sqlplus /nologSQL*Plus: Release 11.2.0.1.0 Production on 星期一 7月 12 15:14...
关闭bind peeking功能的测试
http://www.itpub.net/thread-1323402-1-1.html提到是否可以关闭data binds peeking功能,查了一下,有个隐含参数_optim_peek_user_binds,顺便做下测试,Oracle版本为10.2.0.4 IA64 LinuxSQL> create table t (id ...
11G Adaptive Cursor Sharing(ACS)自适应游标测试
被10G变量窥视搞得很头痛,看看11G的ACS新特性。SQL*Plus: Release 11.2.0.1.0 Production on 星期四 7月 8 14:18:36 2010Copyright (c) 1982, 2010, Oracle. All rights reserved.SQL> conn test/test已连接。SQL> create table t(id integer,text varchar2(4000));表已创建。SQL> insert into t select 1,object_name from dba_objects;已创建63861行。SQL> insert into t values(2,'aaa');已创建 1 行。SQL> insert into t select 3,object_name from dba_objects where rownum<10000;已创建9999行。SQL> commit
伪造基于ASSM表空间的数据块
从底向上第一篇--了解DML操作从底向上第二篇--了解行迁移从底向上第三篇--了解index的compress从底向上第四篇--了解行链接从底向上第五篇--了解表的压缩属性从底向上第六篇--compress for oltp真正压缩的阈值触发条件从底向上第七篇--超255列表的存储从底向上第八篇--伪造基于ASSM表空间的数据块突发奇想,既然Oracle数据块的格式我们基本都能了解,那么,伪造一个数据块也应该是可行的,做个实验,测试一下SQL> conn test/test已连接。SQL> create table t as select * from dba_objects where rownum=1;表已创建。SQL> select
从底向上第八篇--伪造基于ASSM表空间的数据块
从底向上第一篇--了解DML操作从底向上第二篇--了解行迁移从底向上第三篇--了解index的compress从底向上第四篇--了解行链接从底向上第五篇--了解表的压缩属性从底向上第六篇--compress for oltp真正压缩的阈值触发条...
索引ROWID转换函数
SQL> create table t as select * from dba_objects;表已创建。SQL> create index t_idx on t(object_name);索引已创建。SQL> alter system checkpoint;系统已更改。SQL> select header_file,header_block from dba_...
ASSM表空间FIRST LEVEL BITMAP BLOCK位图标志位意义
offset 3961 FULL2 0-25% free3 25-50% free4 50-75% free5 75-100% free6 Shrink Complete[@more@]
ORA-04031的傻瓜解决办法(原创)
数据库版本:8.1.6.0操作系统:WINDOWS 2000 SERVER应用过程中总是出现ORA-04031错误,采用该方法后运行2个月没有再次出现过该错误。可以提交一个JOB来自动运行这个过程。可以将存储过程先钉在缓冲区中。但是现在还不...
PL/SQL WhiteBoxTester PL/SQL白盒测试工具
不说了,看图吧:0.1.jpg0.2.jpg0.3.jpg0.4.jpg0.5.jpg1.jpg2.jpgPLSQL WriteBoxTester.rar(2008-01-15 17:13:41, Size: 1.2 MB, Downloads: 13)
看到unwrap的,咱也做个自动wrap当前用户的procedurefunctionpackage脚本
看到unwrap的,咱也做个自动wrap当前用户的procedurefunctionpackage脚本原先都是用wrap命令行来打包代码,但是,这个工具有版本的限制,如果高版本的wrap想刷到低版本的服务器里就会有问题。头疼了很久了。现在写了个存储过程脚本,可以在服务器端自动wrap没有wrap的代码。嘿嘿。只用把源码刷进去,执行,就可以了。当然,也可以改成wrap指定的过程、函数、包。http://www.itpub.net/viewthread.php?tid=1209011[@more@]
看到unwrap的,咱也做个自动wrap当前用户的procedure\function\package脚本
原先都是用wrap命令行来打包代码,但是,这个工具有版本的限制,如果高版本的wrap想刷到低版本的服务器里就会有问题。头疼了很久了。现在写了个存储过程脚本,可以在服务器端自动wrap没有wrap的代码。嘿嘿。只用把源...
从底向上第七篇--超255列表的存储
从底向上第一篇--了解DML操作从底向上第二篇--了解行迁移从底向上第三篇--了解index的compress从底向上第四篇--了解行链接从底向上第五篇--了解表的压缩属性从底向上第六篇--compress for oltp真正压缩的阈值触发条...
索引压缩在实际生产中应用的探讨
关于索引压缩的Internal请参见http://www.itpub.net/thread-1285279-1-1.html主要是想探讨一下索引压缩在什么情况下使用会更有意义?采用的是如下的测试方法:CODE:conn test/testdrop table t purge;create table ...
从底向上第六篇--compress for oltp真正压缩的阈值触发条件
从底向上第一篇--了解DML操作 从底向上第二篇--了解行迁移 从 底向上第三篇--了解index的compress 从 底向上第四篇--了解行链接 从 底向上第五篇--了解表的压缩属性 从 底向上第六篇--compress for oltp真正压缩的阈值触发条件 在Oracle 11.2里,新增加了compress for oltp压缩方式,Oracle声称这种方式是专为OLTP系统定制的,其原理图如下: Oracle has put in a significant amount of work to minimize this overhead for OLTP Table Compression. Oracle compresses blocks in batch mode rather than compressin
segment createion deferred
问题来源于一次导出C:UsersAdministrator>exp acms/acms tables=acms_light_time file=aaa.dmpExport: Release 11.2.0.1.0 - Production on 星期五 5月 28 13:44:06 2010Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - ProductionWith the Partitioning option已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集即将导出指定的表通过常规路径...EXP-00011: ACMS.ACMS_LIGHT_TIME 不存在导出成功终止, 但出现警告。C:UsersAdminist