修正执行计划的利器,SQL PROFILE脚本
点击这里下载 sql profile 脚本 profile.sql 我们先来看下如何手工创建sql profile来修正执行计划。创建两张表test1、test2,在表test2的列object_id 上创建索引,分析两张表。 create table test1 as select * from dba_objects;create table test2 as s...
ORACLE与hugepage(二)
由于传统的4K页大小,会导致占用非常多的内存用来存放pagetable entries(PTEs),因此一般在linux服务器上跑ORACLE,我都建议设置大页来避免这个问题大页带来的好处:1)设置大页,pagetable entry所占用的kenel memory将大大减少。传统4K页的情况下,越多的内存,越多的进程,会导致越多的pagetable entries,导致占用...
ORACLE与hugepage(一)
以下的内容是基于32位的系统,4K的内存页大小做出的计算1)目录表,用来存放页表的位置,共包含1024个目录entry,每个目录entry指向一个页表位置,每个目录entry,4b大小,目录表共4b*1024=4K大小2)页表,用来存放物理地址页的起始地址,每个页表entry也是4b大小,每个页表共1024个页表entry,因此一个页表的大小也是4K...
父游标可以拥有的子cursor数量
11GR1以前,经常可能会遭遇父游标下挂载子游标过多的问题,AWR报告的SQL StatisticsSQL ordered by Version Count也给出了按照子游标数量排序的SQL,某些情况下,这个数量可能会成千上万,一定程度上造成了...
查看SQL PROFILE使用的HINT
10G可以通过如下查询来获取SQL PROFILE使用的HINTSQL> SELECT attr_val 2 FROM sys.sqlprof$ p, sys.sqlprof$attr a 3 WHERE p.sp_name = 'opt_estimate' 4 AND p.signature = a.signature 5 AND p.cate...
如何查看哪些SQL使用了动态采样?
以下2个SQL在11.2.0.3下都能正常运行,11.1.0.7可能会遭遇错误,具体原因还没深入研究select p.sql_id, extractvalue(h.column_value,'/info') lvl from v$sql_plan p , &n...
ORACLE中的隐式数据类型转换(二)
http://space.itpub.net/22034023/viewspace-773574上一篇文章介绍了在查询列的类型和查询条件类型不匹配的时候,ORACLE一一般会在查询列上使用类型转换函数。但是事情不总是这样。SQL> create table a(id n...
ORACLE中的隐式数据类型转换(一)
[i=s] 本帖最后由 wei-xh 于 2013-9-29 10:34 编辑 ORACLE中的隐式数据类型转换可能有很多你没留意到的内容。create table test (id varchar2(100));create unique index test_id_ind on test(id);创建了...
深入分析direct path read(11G)
[i=s] 本帖最后由 wei-xh 于 2013-9-13 09:32 编辑 深入解析direct path read 传统读取数据的方式是服务器进程通过读取磁盘,然后把数据加载到共享内存中,这样后面的进程就可以通过共享内...
autotrace 和explain plan for可能导致执行计划错误
[i=s] 本帖最后由 wei-xh 于 2013-9-27 15:26 编辑 使用autotrace工具和explain plan for来获得SQL的执行计划,有可能会出现与实际的执行计划不符的情况。autotrace本身其实也是调用了explain plan for来获取...
漫谈log file sync
[i=s] 本帖最后由 wei-xh 于 2013-8-6 08:59 编辑 LOG FILE SYNC概述来新公司工作,很大的一段时间都在调优日志写,提升系统的TPS,在这方面也积累了一些理论知识和实践经验,之前零零散散在微博上也发了很...
深入oracle log buffer发展史
本帖最后由 wei-xh 于 2013-7-19 16:45 编辑log buffer在Oracle的各个版本里一共发生过2次重大的改变:1)多log buffer(redo strands)的出现(9I)2)private redo和in memory undo的出现(10g)你可能会补充说,...
关于索引空间的重用的几个场景
[i=s] 本帖最后由 wei-xh 于 2013-7-9 21:20 编辑 不知道你是否对这些有过疑问?我随机的删除了表里的一些记录,我不知道我的索引空间是不是会被重用?我删除了表里大部分记录,我不知道表上一个自增的索引的空间会...
你所不知道的LATCH
你所不知道的LATCH:你也许知道对于LATCH的获得和释放时间都是极短的,但是,对于LATCH所保护的资源的锁定时间,可能是比较长的(几MS,甚至几分钟,甚至。。更长)。redo writing latch的作用是获得后,修改redo写...
深度剖析:ORA-00018: maximum number of sessions exceeded
[i=s] 本帖最后由 wei-xh 于 2013-7-3 17:55 编辑 今天朋友遭遇了如下的问题,远程联系我解决SQL> select * from xxx ;select * from xxx ...
logfile的dump undo头的change vector是单独的record?
insert into a values(1);commit 对上面的一个简单事物进行LOGFILE的dump REDO RECORD - Thread:1 RBA: 0x00044d.00000002.0010 LEN: 0x0230 VLD: 0x05SCN: 0x0000.041b921c SUBSCN: 1 0...
ASM空间虚假耗尽
sys@DLSP>alter tablespace users add datafile '+DATA/dlsp/user93.dbf' size 20g;alter tablespace users add datafile '+DATA/dlsp/user93.dbf' size 20g*ERROR at line 1:ORA-01119: error in creating database...
索引回表操作,ORACLE所作的优化
create table t2 as select * from dba_objects where 1=0;beginfor i in 1 ... 1000000 loopinsert into t2(object_id) values(SEQ_AP_ISSUE.nextval);commit;end loop;end;/select 2 /*+ ga...
索引的5-5分裂RAC环境下一个有趣的“副作用”
索引的5-5分裂RAC环境下一个有趣的“副作用”索引的分裂,依据分裂后2个索引块上分布的数据比例,分为5-5分裂和9-1分裂:• 5-5分裂:新旧2个数据块上的数据基本相等;• &n...
关于ORACLE里的buffer cache 的命中率
昨天做技术分享被问到命中率的问题,今天有一个有意思的例子:SQL1:执行1百万次 但是这个SQL加起来其实就是在10个distinct数据块上不厌其烦的查询SQL2,SQL3,SQL4,SQL5,SQL6的总和执行了1000次 但是是在10000个d...