2008-07-21 Mon
As a supporter of Mao Zedong, Deng was named to several important government posts. However, Mao grew to fear Deng's popularity and forced him out of office after launching the 1966 Cultural Revolution. After Mao's death in 1976, Deng reemerged to serve as the de facto ruler of the People's Republic of China until the early 1990s. His reforms turned the world's most populous nation into an economic and political force, but his reputation was tarnished by his handling of what 1989 event?前两天处理了一个DMT表空间碎片的case,觉得还是蛮有意思的,写出来和大家分享一下
因为一些历史原因,表和索引的DMT tablespace存在大量的碎片(table表空间有6000多个,index表空间有8000多个),导致索引和表分配extent的速度太慢(10秒钟以上),大量的session被block住
解决这种问题根本的方法是将表和索引迁移到LMT表空间,但是整个表空间太大,单table表空间就有2个T,系统不能承受如此长的downtime,
而且想要一下子加2T的临时空间也是不太可能,所以想根本解决这个问题只能从长计议
但是问题还是要解决,必须寻求临时解决方案,我所采用的方法就是把这些小的extent分配给一些快速增长的segment
alter table(index) allocate extent后有三个选项 1. Size 2. Datafile 3. instance ,首先要说一下这三个选项
1. Size 指定所分配的extent的size大小,忽略next extent设置 (次方案必须指定size大小)
2. Datafile 指定datafile后,会到该datafile上分配extent (这是这个方案的关键)
3. instance 其本意是用于RAC环境中,指定到相应instance的freelist上,但是在单机环境里面这个选项也有用处。默认分配的extent不会加入到HWM之下,freelist上, 指定(instance 1)后会分配到freelists上,HWM之下,可用于解决一些HWM bump不够快而导致大量HW enqueue的问题,和本case无关。对此参数感兴趣的同学可以 参考我blog上的另外一篇文章 http://oracledba.spaces.live.com/blog/cns!57D0C396BA028F14!260.entry
所以解决本case的基本SQL语句就是
alter table xxx allocate extent (size xxx datafile ‘xxxxxxx’);
在执行前,这里还有很多问题需要注意的
1. 当该datafile上有多个free extents,比方说datafile ‘/data/index_01.dbf’上有两个free extents
extent1 size 10M , extent2 size 5M
如果这时 alter table temp allocate extent (size 5M datafile ‘/data/index_01.dbf’); 可能导致5M的extent没有被分配,而将10M拆开为两个5M的,非吾所愿也。所以在分配时要对当个datafile上的extent size进行排序,先分配大的,再分配小的。在PL/SQL中加上order by a.file_id,a.bytes desc
2. 这里我们并不想将所有的extent都分配用掉,我们只想处理掉那些小的extent,比方说50M以下的,但是如何保留50M以上的那些extent呢。
有人说遇到50M的跳过不就好了,问题是如上面第一点所说,你没有办法跳过大的extent,你必须严格按照大小次序来分配才能保证没有extent被拆分的情况
我想到的解决方案是建一临时表,遇到50M以上的就分配给该临时表,最后再将其drop掉,这样的话,50M以上的extent又还给了表空间
3. 在你分配extent快结束的时候,此时free extent太少可能会导致一些segment分配extent失败,所以要留出一些比较空的数据文件以防不测。在PL/SQL中加上file# not in (x,x,x,x,)
4. 因为是online操作,我们要考虑对数据库的影响。allocate extent是DDL语句,会导致hard parse,如果分配太快,在繁忙的系统上必然会导致大量的library cache pin/lock
所以分配中间要sleep一段时间,我选择的是每分配五次sleep 1秒钟。此时间视系统繁忙程度而定,如果真的非常繁忙的系统,建议放在outage时间里面完成
5. 注意对于partition的segment,分配extent的语法不同
alter index/table xxxxx modify partition xxx allocate extent (size xxxx datafile ‘xxxx’)
6. 当出现ORA-00054 error: resource busy的时候,要retry,如果表特别忙,一直得不到lock,就必须在downtime时间里做了。在PL/SQL中加入exception的处理
7. 分配给segment时,也许分配的比例不同,比如segment A的增长速度是segment B的两倍,我们在分配时就要分配给segment A多一点空间,这一点也是要考虑的。我是采用了mod的方法
一个理论看似简单的case,实际做起来却有如此多需要考虑的方面。完成分配后,free extent数目降至几百个。问题不再出现。
作者:Fenng 发布在 dbanotes.net.
| 转载文章是对互联网的伤害
连续看到几个和 Oracle 优化器隐含参数 _sort_elimination_cost_ratio 相关的优化案例(Refer Refer )。
如果用 _SORT_ELIMINATION_COST_RATIO 作为关键字在 Metalink 上查询,会发现很多和该参数有关的 Bug ,执行计划的出错特征是也走了索引,但是走了索引全扫描(INDEX FULL SCAN),如果做 10053 Trace ,会发现有个烦人的 Recost for ORDER BY 步骤,然后就会引到错误的执行计划上。
在 9i 升级到 10g 最容易遇到这个问题(原来好好的,到了 10g 发现执行计划有问题了). 出问题的 SQL 一般是走 INDEX RANGE SCAN 然后有个 ORDER BY 会触发,更多的时候优化器模式是 FIRST ROWS -- 这样 Oracle 会尽量消除排序,默认认为排序是开销昂贵的操作。通过控制 _SORT_ELIMINATION_COST_RATIO 隐含参数的值 (默认是0) 能够解决这个问题:
ALTER SESSION SET "_SORT_ELIMINATION_COST_RATIO"=5
其它可能的解决办法:对索引里面的排序保持和 SQL 里的 ORDER by 一致。
其实说白了,很多 Oracle 隐含参数就是为了解决 Oracle 特定情况下的 Bug 的,因为不具备普遍性,所以在某些版本中作为隐含参数出现。在生产数据库上,个别的时候启用隐含参数倒也不是不行的,只要明白了相应的隐含参数到底是干啥的就成了。
题外话:_SORT_ELIMINATION_COST_RATIO 相关的 Bug 频繁出现,倒是感觉和 Oracle 内部代码管理有关,本来应该消除掉的,怎么后面的版本又跑了出来?
目前关于 CBO 最好的书籍应该是Jonathan Lewis 的 Cost-Based Oracle Fundamentals ,有中文译本:《基于成本的Oracle优化法则》。是 DBA 不可错过的一本书。
--EOF--
相关文章|Related Articles
- Oracle-L有变动 Steve Adams重新出山 - Sep 1, 2004
- Oracle DBMS_SUPPORT HOW-to - Oct 24, 2004
- 书写历史的甲骨文--ORACLE公司传奇 - Oct 29, 2004
- 书写历史的甲骨文--ORACLE公司传奇(2) - Oct 29, 2004
评论数量(0)|Add Comments
本文网址:http://www.dbanotes.net/database/oracle_cbo__sort_elimination_cost_ratio.html
最近作者还说了什么? Follow Twitter / Fenng
DBA notes 理念: 用最简约的技术取得最大的收益!
上周五,到歌华帮助诊断了一起数据库故障。
在故障时,数据库及其缓慢,用户任何请求都无法响应,数据库体现以"Cache buffer Chian" Latch竞争处于等待,CPU 100%。
由于是Oracle10g的数据库,到现场采集了几个AWR报告,找到了当时的问题。
注意到故障时段每秒逻辑读为:Logical reads: 84,949.93 ,这远远超出了正常范围。
而进一步的,在问题时段,Buffer Gets 最高的两个SQL分别执行了3168次和2926次:
Buffer Gets Executions
70,568,785 3,168
69,189,653 2,926
而正常情况下,这两个SQL执行次数都在20次左右,这两个超长执行的SQL就是问题的罪魁祸首了。
在进一步的诊断发现,这两个SQL都是一个客户端不断发出的。我和客户开玩笑,这就是数据库攻击啊。
也许在客户端按一个F5,最终转嫁到数据库上的负荷就成为了灾难。有时候在应用程序端做出适当限制和约束是必须的。
奥运期间,安保第一,要加强防范。数据库也是如此!
-The End-
相关文章|Related Articles
- ORA-07445 数据库也会旧病复发
- 成功优化案例:解决ERP系统更新性能问题
- 解决ORA-600 [qmxiUnpPacked2]错误一则
- 成功恢复案例:解决字典表误Truncate故障
- 497天是一个轮回-记Linux时钟的回转
评论数量(1)|Add Comments
本文网址:http://www.eygle.com/archives/2008/07/bgctv_database.html
《郑眼看奥运》系列文章之七:
北京奥运会会歌应该摆脱哀乐模式
郑渊洁
近几届奥运会会歌,旋律如出一辙,受到很多人喜欢。但是总感觉其旋律和奥运的“更高更快更强”精神不完全匹配,甚至和我们中国的哀乐的旋律有相似之处。
希望北京奥运会会歌有强烈的中华民族特色,旋律健康、阳光,与奥运“更高更快更强”宗旨完全符合,而且与近几届奥运会会歌的旋律截然不同、泾渭分明,令全世界人民耳目一新。
《郑眼看奥运》系列文章之二:《功夫熊猫》在奥运前带给我们的遗憾
《郑眼看奥运》系列文章之三:《奥运期间,飞机头等舱金属刀叉应该改为塑料餐具》
《郑眼看奥运》系列文章之六:学生考试应该借鉴奥运跳高比赛的模式
很多人来信问我一些相同的问题,比如如何让自己写的文章在报纸、杂志上发表。唉,这问题不问不要紧,一问我就满眼都是泪。想当年我给报刊投稿,不知投出去多少篇,才有一篇当读者来信发表。而发表这篇“读者来信”的编辑恰恰戴方戴少爷,丫当时在《北京青年报》工作,我写了一篇稿子投给他,1500字,丫变成了82个字的读者来信发表了。不过就这还让我激动半天呢,我的名字居然印在《北京青年报》上了。
现在媒体发达了,一个县城都能有七八种报纸,需要大量稿件,因此有很多人希望能写点文字发表,最开始都是一种成就感,比如自己的名字印在纸媒体上,会兴奋的半天睡不着。然后就有远大追求了,比如写更多更长的文字,光发表在报刊上还不行,还要印成单行本。后来印成单行本都不行了,还要出文集,然后自己就变成作家了。大多数人的文学历程都是这个弧线。
其实这个问题余秋雨老师回答更合适一些,但是余老师最近很忙,正研究如何拍下一个马屁呢,比如他在研究《奥运与中国人文精神》这个庄严的课题,根本没时间搭里你们这些文学青年。我实在不忍心你们走弯路,所以,倚老卖老,告诉你们一点秘诀——一般人我是不告诉的。
Step 1——你首先要搞清楚你要写什么。很多同学最初都是不知道自己要写什么,好高骛远,一出手就想写出一部《红楼梦》。结果,写了40年,也没写成。要像我兄弟王小山一样,一出手就《红楼梦遗》,知道自己几斤几两。所以,你们都要从梦遗开始,不会梦遗的请从梦呓开始,循序渐进,才有希望摘到文学殿堂上的那颗明珠。
Step 2——其次你一定要搞清楚你不能写什么。很多同学都是熟悉什么写什么,比如写篇影评啊,书评啊,乐评啊,时评啊。这样很不好。你看了《赤壁》就写影评,读了《品三国》就写书评,听了《老鼠爱大米》就写乐评,貌似轻车熟路,其实最不明智。因为你想到的别人都想到了。作为一个媒体编辑,他们更愿意约一些有点名气的作者写这类题材的文章,根本不会把你当回事,你这么些简直是往枪口上撞,永无出头之日。我常常收到一些想来三联工作的同学的简历,里面总是强调自己对文化艺术很热爱,适合做文化记者。其实就是一些吃文化快餐长大的,甭说见解了,都一样。同理,编辑不会对一个吃文化快餐的文艺青年感兴趣。那么,你该怎么办呢?请看Step 3。
Step 3——你要学会使用元素。妈了逼的,现在动不动就什么元素,可见全球化把区域化糟蹋成什么样了。比如你很喜欢《功夫熊猫》吧,因为你很开心里面用了中国元素,还能找到出处,这是人家导演的高明,一个不了解中国的人,怎么让中国人认可他的作品,于是就要元素一下。假如你特喜欢看电影,对外国的各种电影了如指掌,那么,你千万别写电影评论,现在傻逼都能做影评人。你就写你们家门前那棵树、那块石头、那座楼、那条街……然后把你看过的电影里面出现的树啊、石头啊、楼啊、街道啊都用进去,记住,引用的电影越偏门越好。这样的文章,能把编辑吓得从网上掉下来。他要不用你的稿子,都觉得自己没文化。同理,当你描述你是如何变成怨妇的,要不停地引用一些歌曲、交响乐的名字,最好手头预备一本《牛津音乐百科全书》或者《欧美流行音乐指南》,一样能收到好效果。
Step 4——要学会正确使用汉语。如果你们写文章像我写博客这样干吧呲啦的,永无发表之日。汉语的语法是很丰富的,要琢磨语法该怎么用,同时还要捉摸语法该怎么活用,千篇一律千人一面的文章编辑是不感兴趣的。如何正确使用汉语?那就是在不违背语法规则前提下,尽可能出其不意。打个比方,你文章中有一句“走了这么长的路,拎东西的胳膊累得不行了”,这么写肯定不行,要改成“走了许久,臂有些乏倦”。你要尽量在文字上矫情一些,但不要太矫情,有句话说得好,做不了林志玲的女人不是好张爱玲。您不能两头都够不到。同时,您一定要出其不意在文章中用一个相对生僻的词汇,不要太多,一篇一个就足矣,让编辑好好翻翻辞典,让丫长长见识。比如你在文中写到“这件事让我期待了两年多”,这么写不好,要改成“这事我企足矫首两年”,显得有文化多了。再比如,“斯皮尔伯格是我非常喜爱和敬仰的导演”,这么说也不好,要说“斯皮尔伯格一直让我延颈举踵”……反正一句话,一定要在你的文章中冒出那么一两句不像人话的话。
Step 5——掌握行文要领,你就可以给媒体投稿了,这种写作思路非常适合给词藻华丽、内容空洞的各种时尚类媒体投稿,不能说百发百中吧,至少不会重蹈我当年一篇稿子变成读者来信的命运。你现在就可以动笔试试,如果不成的话,那只能说明你的肚子里真的没有东西。没有东西就跟人搞出点东西嘛。如果你还不甘心,非要做出点事情来,那么,请扶耳过来,我告诉你Step 6,这相当于《神龙秘籍》级别的秘诀。
Step 6——其实你更适合养猪。
=========================
友情提示:本文不是一篇说明文。

——张艾嘉《心动》
随机文章:
收藏到:Del.icio.us
这几天有人反映,我博客上的图片显示间或不正常。
因为最近一段时间我把图片都放到一个叫巴巴变的网站上了。
有时候我也看着不正常。
其实,我的博客空间是可以上传图片的,
但是每当我上传很多图片(两张以上),
服务器就开始加重负荷,
从后面的流量分析图中就能看到,
服务器进入量多的第二天。
如果放个七八张图片,
基本上就要当机了。
现在很多博客都不让外链图片了,
我觉得他们以后还可以更进一步连文字都不让外链,
再发展一步,连文字都不让复制才行。
像巴巴变这样的免费且让你外链的空间,
除了享受到免费的好处,就是经常让你看不到图片。
不知道有谁知道还有哪些空间比较靠普一点,
既可以允许外链,又可以显示正常。
Author:NinGoo posted on NinGoo.net
周五突然发现blog无法访问,显示“Site Temporarily Unavailable”,一开始没在意,以为Dreamhost又发生故障了。网上打开gmail才发现帐号被disable了:
Hello,
Your accounts has been permanently disabled for violations of our
anti-spam policy.Thanks!
Glen–
DreamHost Support Team + support@dreamhost.com
Earn over $97 for each referral: http://www.dreamhost.com/rewards.html
To continue this support case, just reply to this email.
Open a new case at: https://panel.dreamhost.com/?tab=support
再往前翻,果然三天前有封提示邮件,说我的帐号中某位合租的兄弟,由于发送垃圾邮件被投诉,要求立即处理,因为这几天都没看邮件,结果直接被“permanently disabled”了,登陆Dreamhost一看,帐号的所有管理功能都被冻结了,苦啊。因为时差,和Dreamhost的support team来来回回几封邮件花了三天的时间,说尽好话并且承诺永不再犯,才终于在今天将帐号要回来了,当然,犯规的域名和帐号被直接干掉了,数据都无法拿回。
在这里要跟受到牵连的其他合租的朋友说声抱歉,也请合租的兄弟们注意下,不要通过合租的空间和域名发送任何垃圾邮件,也不要在空间里上床盗版软件或者MP3等有可能引起争议的东西,当初发起合租的时候,就要求大家只能用于blog用途,希望大家能严格遵守,否则我有权在必要的时候将合租帐号删除,谢谢合作。
一个教训是,大家一定要随时对数据进行备份。我是用WordPress Database Backup插件每天将数据库备份发送到gmail邮箱了,如果你还有其他ftp空间,也可以通过crontab备份后将备份传到ftp去。还有如果你自己修改或者设计的theme和plugin等代码也要注意备份。这样即使帐号真的被永久删除,至少不至于就此烟消云散。“如果一件事情有可能向坏的方向发展,就一定会向最坏的方向发展”,有备无患。
另外一个教训是,域名和空间最好还是不要在同一个帐号中购买,这次taobaodba.com这个域名也受到牵连了,而这个域名设置了转向到http://rdc.taobao.com/blog/dba/,空间并不是用的dreamhost的。打算尽快将域名transfer到Godday.com去,转一个域名6.99$,并且在保持现有有效年限的基础上延长一年,还是挺合算的。
Related Articles
PermLink: http://www.ningoo.net/html/2008/dreamhost_account_been_disabled.html
Add Comments(0) | Follow NinGoo@Twitter | Google Reader

Google在很多场合都表示,Google不希望用户丢失数据,Google的服务非常多,已经有一些服务开始提供数据导入/导出功能了,这里总结一些从Google服务中导出数据的方法:
iGoogle可以让你下载所有小工具、Feeds、主题等信息,进入iGoogle设置页,在“Export / Import”选项中可以导入导出,由此产生的XML文件可以导入到另外一个Google账户中,熟悉XSLT的用户还可以将其转换为OPML文件。
Google Calendar可以在选项中逐一导出自己的ICAL文件,不过使用专用的工具到处会更容易一些,工具地址在这里。
Google Docs可以让你将你的DOC文档导出为HTML文件和图片,选中你的DOC文件,在“More actions”里选择“Save as HTML (zipped)”即可。
Blogger在实验版中增加了一个导出文章和评论为ATOM Feed的功能,通过一些格式转换工具可以将ATOM格式转换为其他Blog系统能够接受的格式。
Google Bookmarks可以点这里导出一个HTML文件,但是出于某种原因浏览器不能导入这个文件,搜索和网页浏览的历史记录可以点这里导出,将URL中的1000修改为一个很大的数字可以全部导出。
Gmail可以将联系人导出为一个CSV或vCard文件,不过Google会自动将你回复邮件的人添加到联系人中。
当然,最好的导出方式是在一个页面能导出用户全部的数据,这样你就可以删除你的Google账户或切换到竞争对手的服务而不用担心丢失任何数据。
英文原文:Export Data from Google's Services
中文翻译:William Long
中文译文:从Google的服务中导出数据
相关文章:
作者:Fenng 发布在 dbanotes.net.
| 转载文章是对互联网的伤害
广而告之: 7月26日QClub杭州站-- 支付宝首席架构师程立与您分享"当SOA遭遇现实"的心得
上周五去了一趟淘宝,在淘宝二楼实时展示交易信息的大屏幕前看了一会儿。发现关于商品显示的排序列表是两排,左右排列的。
1 商品名一 2 商品名二 3 商品名三 4 商品名四 5 商品名五 6 商品名六 ...... N-1 商品名N-1 N 商品名 N ......
尽管符合从左到右的阅读习惯,看起来感觉怪怪的。前一段时间有不少关于电梯楼层按钮排列问题的帖子(一,二),针对电梯的按钮应该说已经讨论的很好了,但我感觉如果针对 Web 页面上大量列表项的排列显示来说,很有值得商榷的地方。
我再抛一个另外的反面例子,关于百度 Mp3 歌曲 Top 500 的列表展示:
假设 M 行 x N 列的展示,如果 M 很大,而 N 很小,在前面几行过去之后(一般是 N行*N列后),会发现非常难以定位你要找的歌曲。尤其是越到后面效果越差。如果 M 和 N 都很小,那么相差是不大的(不知道这是什么心智模型? 尤其是对该项的描述也符合 M:N 值很小,比如 Flickr 的图片展示)。
这个其实和电梯楼层按钮排列的问题不太一样:电梯上面只有一个按钮(楼层号),而 MP3 列表排列项后面还有该项的名字或描述(MP3 名字, 艺术家名字)。需要展示的内容性质和信息量已经变化了。
这只是 UE 门外汉的个人看法。供参考。
--EOF--
BTW, 注意到火车站和机场的公示牌显示倒是挺符合阅读习惯的。
相关文章|Related Articles
- 密码提示问题的设计 - Mar 3, 2008
评论数量(8)|Add Comments
本文网址:http://www.dbanotes.net/web/list_items_arrange.html
最近作者还说了什么? Follow Twitter / Fenng
DBA notes 理念: 用最简约的技术取得最大的收益!
