> 文章列表 / Page 306

2010-08-05

Oracle中清除游标缓存的几种方法

9i以后引入了bind peeking绑定变量窥视特性,但该特性常有帮当忙之嫌,所以有了11g的自适应游标特性。排除因绑定变量窥视造成的因素外,统计信息讹误也会造成执行计划偏差,这时我们就可能需要清除指定游标的缓存信息,从而达到重新解析的目的。 下面我们列举几种可以达到清除游标缓存的方法,权作抛砖引玉: 1. alter system flush shared_pool;              /* 最简单最粗暴的方法,清除所有游标缓存,可能造成短期内大量解析,不推荐*/ 2. dbms_shared_pool 包很早就有了,但该包名下的purge过程却要到10.2.0.4才出现,Bug 5614566最早在2006年描述了需要清除游标缓存接口的要求: Hdr: 5614566 10.2.0.2 RDBMS 10.2.0.2 DICTIONARY PRODID-5 PORTID-176…
#POST 6 MIN READ
2010-08-04

哪里有深入学习Oracle的资料?

订阅了[email protected]邮件列表(顺便提一下,订阅这个邮件列表也是学习Oracle的好方法,它完全免费,且有许多Oracle界的”大师”出没于此,当然要通过审查才能发言;你可以从freelists.org上找到入口!)的朋友可能在若干天前收到了一封来自Guillermo Alan Bort关于到哪里可以找到学习Oracle内部工作原理资料的邮件。 热心的邮友给出了五花八门的答案,我们来梳理一下这些渠道,以方便来者。 著名的juliandyke的巢穴,他写了许多独创的专题,本人也从他的著作中获益良多 http://juliandyke.com oraktable.net上汇集了众多专家在博客上发表的最新技术文章 http://www.oaktable.net/members 致力于挖掘RAC技术,可以说是研究RAC最好的站点 http://www.oracleracsig.org Oracle 8i service internal作者的站点,虽然已经多年未更新,却是你不能错过的一课 http://www.ixora.com.au/ Tanel Poder可能是世界上真正的第一个OCM,他有很多关于internal和performance的著作 http://blog.tanelpoder.com/ 著名的《Cost Based…
#POST 2 MIN READ
2010-08-04

10g中HASH GROUP BY引起的临时表空间不足

今天早上应用人员反映一个原本在9i上可以顺利完成的CTAS脚本,迁移到10g后运行总是报“ORA-1652: unable to extend temp segment by 128 in tablespace TS_HQY1_TEMP “无法扩展临时表空间的错误。应用人员表示该脚本涉及的数据量在迁移前后变化不大,而且令人匪夷所思的是在新的10g库上临时表空间大小已达40多个G,要远大于原9i库。很显然这不是由于临时表空间过小导致的该问题,更多的原因肯定是出在迁移后Oracle不同的行为方式上。 该脚本每月执行一次用以汇总数据,其中一个单表接近4亿行记录,GROUP BY操作涉及到的数据量十分庞大。我们来具体看一下这个SQL: create table gprs_bill.zou_201007_cell_id as select /*…
#POST 7 MIN READ
2010-08-03

dbms_stats收集模式在9i和10g上的区别

大约2个月前,一位业内人士问我为什么9i CBO迁移到10g上会出现许多执行计划改变导致的性能,他当然是为了能考考我;实际上我接触过的环境大多在8i/9i下没有使用CBO优化模式,从8i/9i的RBO模式跨越到10g上较为成熟的CBO优化模式,这当中出现执行计划讹误可以说是情理之中的;而9i CBO到10上的CBO问题也不少,我首先想到的是统计信息收集上存在区别,但具体是什么区别却又说不上。那位业内人士听了我的回答,笑,笑而不语。 Oracle十分博大,博大到可以称为Oracle的世界,很多东西长期不用就会遭人淡忘;我们来复习下9i和10g上统计信息收集的一些改动。 在9i中收集统计信息时其默认的MOTHOD_OPT模式为’FOR ALL COLUMNS SIZE 1’,使用这种模式时Oracle只收集所有列上最基础的统计信息,包括了最小/大值,distinct值等信息;但是不会收集列上的直方图。对那些数据均匀分布和没有出现在SQL语句中where子句中作为条件的列来说,这样的统计信息完全足够了。然而如果列上的数据分布并不均匀就可能导致CBO的执行计划成本计算不准确,这时我们需要手动对这些列上的直方图进行统计。 10g上对dbms_stats包中默认的METHOD_OPT模式做了修正,这显然是引起9i CBO迁移到10g CBO后易发地执行计划变化的一个重要因素,也是那位业内人士所要问的题眼。 新的默认METHOD_OPT值为”FOR ALL COLUMNS SIZE AUTO”,这意味着Oracle将通过内部算法自动决定那些列上需要收集统计信息,而那些列上不需要。是否收集直方图取决于列上数据的分布情况和与对应表相关的工作负载,这种工作负载可以解释为数据库中存在某些需要参考这些列的详细信息来计算执行成本的SQL语句。 这种方式听上去十分理想,似乎Oracle可以默默无闻地为我们抓取所有急需的统计信息。 然而问题是在许多环境中Oracle没有做出是否需要收集列上直方图的正确决定。实践证明Oracle有可能收集许许多多不必要的直方图,同时又放弃了许多需要收集的直方图。 在轻量级的应用环境中这种直方图收集不当的问题造成的影响大多数时间不为人们所察觉,相反在performance…
#POST 3 MIN READ
2010-08-02

Oracle中SQL解析的流程

Oracle中SQL解析的主要流程: 我们说的游标概念比较复杂,它可以是客户端程序中的游标,服务进程中的私有游标,以及服务器端共享池里的共享游标。假设一个游标被打开了,一般来说它的共享游标信息(包括执行计划,优化树等)总是会在SQL AREA里,无需再次软/硬解析。 SESSION_CACHED_CURSORS是Oracle中的一个初始化参数(修改必须重启实例),指定了每个会话缓存的游标上限(保留在PGA中);客户端程序中open cursor的要求仍会被传递给服务进程,服务进程首先扫描自身缓存的游标信息,如果命中则可以避免软解析,也有人称它为“软软解析”。 HOLD_CURSOR是预编译程序中的一个参数,它指定了私有游标是否因该被缓存,这里不做展开。 在分析工具tkprof中hard parse与soft parse被同等对待,都被认为是parse;软解析即会造成parse总数上升。 软解析避免了硬解析过程中的几个步骤,但仍包括了初始化的语法,语义解析并计算语句HASH值与SQL AREA中已有语句进行对比;若匹配则查询优化等昂贵的操作得以避免。 另请注意,10053事件仅在硬解析过程中被触发。
#POST 2 MIN READ
2010-08-02

JailbreakMe.com-最新浏览器模式破解iPhones,iPads和iPod Touches方法

一位黑客建立了该网站(JailbreakMe.com),可以通过浏览器登录的形式破解几乎所有的iOS,这包括了iPhone,iPad,和iPod Touch,将解除Apple对这些设备的软件限制。 用户如果想尝试未经授权的app或者想在多个不同国家使用这些设备,都可以登录http://jailbreakme.com来实现破解。 很显然这是自上周关于破解iPhone等设备并不属于非法行为的判决后,对于Apple反对破解行为并声称破解对设备安全与稳定会造成影响的公然挑衅;我们不得不赞叹于黑客的卓越技术和开发速度。 破解设备将影响到设备正常的保修,Apple这样解释。但是实际上,破解操作可以很容易地被例如重置到出厂设置等操作撤销,如果安装了新版本的Apple mobile Operating System-iOS, 也可以达到撤销破解效果的目的。 “JailbreakMe”迅速成为Twitter上的热门话题,这极有可能是第一个以浏览器为基础的破解程序。在过去,用户一般都采用下载破解程序到个人电脑上,然后连通电脑与需要破解的设备的模式。 已经尝试的用户反映除了针对运行3.2.1版本的iPad存在问题外破解程序近乎完美。从打开Safari浏览器到登陆JailbreakMe.com下载程序完成大约耗时1分钟,程序会告知已将自身加入home screen,并祝你”have fun”!
#POST 2 MIN READ
2010-07-30

DataGuard Managed recovery hang

Our team deleted some archivelog by mistake. Rolled the database forwards by RMAN incremental recovery to an SCN. Did a…
#POST 5 MIN READ
2010-07-29

装修记

2010年7月4日的样子,敲了很多墙: 7月31日,开始吊顶,大多数瓷砖都进场了,今天还去把马赛克买了。 买的马赛克: 厅里用的瓷砖到了: 开始铺客厅瓷砖: ‘
#POST 1 MIN READ
2010-07-29

利用Toad for Data Analysts软件生成查询语句

下午尝试用Toad For Data Analysts生成查询语句和ER模型图,感觉还不错;同时配有图形化的执行计划示意图,配合Toad的SQL optimizer可以算是一个很不错的数据库开发组合。 生成查询的Query Builder界面: 生成的SQL语句: 图形化的执行计划:
#POST 1 MIN READ