Thursday, August 6, 2009, 08:09 PM ( 28 浏览 )
- 公告 - 发表 fuyuncat
网站内容已经很久没有更新了。现在太忙了,很难有时间写一些比较系统的文章了。实际上,日常工作中其实还是有不少典型案例、有价值的新发现、新经验。这些东西如果没有记录下来,最终还是成为记忆的经历。
作为DBA,亲身经历的经验当然是最可贵。但我们不能经历所有方面的东西,也不可能对所有与数据库相关东西做深入研究,所以更重要的是经验分享、相互学习,这也是我做这个网站的初衷。
以前申请的是一个静态空间,所以和大家的互动比较少,前两年还好,上班时能用msn,交流渠道畅通些,现在不能用msn了,只能通过邮件了,交流起来不是很方便。
现在好了,网站支持PHP了,所以放上了这个博客系统,一方面能方便让自己随时记录一些没有成系统的案例、知识点;另一方面也多了一个和其他朋友的交流渠道。
希望新、老朋友多多互动
0 引用
| 永久链接
| 







Saturday, August 1, 2009, 11:03 PM ( 11 浏览 )
- 技术文档 - 发表 fuyuncat
CBO is a relatively more accurate optimizer, it will choose the access path considering more objective factors, to draw a more reasonable execution plan. However, Oracle does not give us complete formula for calculating the cost, so we do not know the impact of these factors in the costs calculation. When we try to adjust some parameters, there is no formula that can be relied upon. However, Oracle provides a method of CBO and the output of the Trace (10053). This is for us the equivalent of a "black box", we are able to enter some data to the black box, and it will return the output.Many of us have probably done some IQ test questions, of which a very typical questions that are given a set of figures, but among the missing 1,2, and let you out of this by observing the law of numbers to supplement the lack of figures. For example, a group of figures 1,2,? , 5,8,? , 21, through observation, this group of figures can be such a law of Xn = Xn-1 + Xn-2, in accordance with this rule, we can draw the two missing figures were 3,13.
Then we can be black-box input and output to try to deduce how the black box in the end of this operation?
Full Article
Tuesday, July 7, 2009, 11:02 PM ( 14 浏览 )
- 技术文档 - 发表 fuyuncat
CBO是一种相对更加精确的优化器,它在选择访问路径时能够更多的考虑一些客观因素,得出更加合理的查询计划。但是,Oracle并没有给出完整的代价计算公式,所以我们并不清楚这些因素在整个代价中到底产生多大的影响,或者在尝试调整一些参数时,也没有可依靠的理论公式。不过,Oracle提供了对CBO的Trace方法和输出。这对于我们来说相当于是个“黑盒子”,我们可以向黑盒子输入一些数据,黑盒子会输出结果。很多人可能都做过一些IQ测试题,其中一种很典型的题型就是给出一组数字,但是中间缺1、2个,让你通过观察出这一组数字的规律来补充出缺少的数字。比如,一组数字1、2、?、5、8、?、21,通过观察,可以对这组数字得出一个这样的规律Xn = Xn-1 + Xn-2,根据这个规律,可以得出两个缺失的数字分别是3、13。
那么我们是否可以由黑盒子的输入、输出来尝试推导出黑盒子里到底如何运算的呢?
完整文章
Tuesday, July 7, 2009, 11:01 PM ( 12 浏览 )
- 技术文档 - 发表 fuyuncat
问:1. 关于Recycle buffer,在这个缓存区中数据是可以被清出去的,但是,什么条件才会让这里的数据被清理出去呢?
2.您写的文档说会即清除那些不在使用的数据缓存块.请问一下,在哪个文档上有更详细说明,谢谢您.
3. keep buffer和recycle buffer也是使用LRU吗?
答:
完整文章
Thursday, June 18, 2009, 11:01 PM ( 27 浏览 )
- 技术文档 - 发表 fuyuncat
在一致性读(Consistent Read)过程中,Oracle根据SCN从undo segment/buffer中读取脏数据块的undo数据来保证查询数据的一致性。当查询读取了CR数据块时,为了提高后续CR的性能,会将CR块copy到buffer中,后续的CR就直接读取buffer。在分析CR buffer之前,先简单看下buffer cache是怎么管理的。
我们知道,buffer cache的主要目的就是缓存那些被访问过的数据,以提高下次对这些数据的访问性能。由于一个数据库的被访问的数据量是很庞大的,但是buffer cache资源是有限的,这就需要一个对buffer cache的管理算法,以大大提高buffer cache的利用率。这一算法就是LRU算法,其基本思想就是让那些经常被访问的数据能尽量长时间的保留在buffer中,以提高数据库的整体性能。
完整文章
Monday, June 8, 2009, 09:13 AM ( 10 浏览 )
- 案例 - 发表 fuyuncat
· Troubleshooting:1st, Hosting report a program seems hung, DB server CPU raised up
2nd , Found a abnormal top SQL from statspack report
Buffer Gets Executions Gets per Exec %Total Time (s) Time (s) Hash Value
--------------- ------------ -------------- ------ -------- --------- ----------
110,089,488 1,555 70,797.1 40.0 2801.99 3369.20 3261003379
Module: SQL*Plus
SELECT ROWID FROM CSS_TP_SHMT_QUEUE WHERE CARRIER_ID = :B6 AND T
RDNG_PTNR_ID = :B5 AND CNTR_ID = :B4 AND SHMT_ID = :B3 AND EVENT
_TYPE_ID = :B2 AND TRANSHMT_SEQ = :B1 AND ROWNUM = 1
Sunday, June 7, 2009, 11:00 PM ( 30 浏览 )
- 技术文档 - 发表 fuyuncat
在之前的文章<Oracle中ROWNUM的使用技巧>中,我们已经介绍过ROWNUM的使用及一些要注意的问题。这里,再介绍一种由ROWNUM导致的性能陷阱。事实上,如果能清楚了解ROWNUM的基本机制,那么对这个陷阱就很容易理解。我们有定义如下视图,
完整文章
Sunday, May 10, 2009, 10:59 PM ( 7 浏览 )
- 技术文档 - 发表 fuyuncat
1、并行化跟踪设置在OLAP或DSS系统中,或者在OLTP中大批量处理数据时,我们经常会借助于并行化处理来最大化利用硬件资源使作业在更短的时间内返回结果。由于影响并行化的因素比较多,如cpu数量、系统参数设置、分区等等,在并行化过程中,又可能会遇到一些意想不到的问题,例如,语句不能并行化或者并行度(DOP Degree Of Parallel)和预期的不一致。这时我们就可以通过Parallel Trace对并行过程进行分析,找出问题所在。
在9i之前,可以通过设置10384~10399 event对并行会话进行trace,在9i以后,可以通过在会话中设置“_px_trace”来实现:
完整文章
Thursday, May 7, 2009, 10:57 PM ( 35 浏览 )
- 技术文档 - 发表 fuyuncat
接到开发组的一个调优请求,任务是对一张海量表CS2_CT_MVMT(近2亿多记录,表大小48G)进行数据update,而更新数据来自于另外一张海量的日志表CS2_TXN_LOG(同样近2亿,表大小42G),数据处理的语句如下:UPDATE CS2_CT_MVMT CT
SET CT.LAST_MOD_DT = (SELECT TL.MSG_GMT_DT
FROM CS2_TXN_LOG TL
WHERE TL.MSG_ID > 9000000000000000000
AND CT.MSG_ID = TL.MSG_ID
AND TL.MSG_GMT_DT IS NOT NULL)
WHERE EXISTS (SELECT 1
FROM CS2_TXN_LOG TL
WHERE TL.MSG_ID > 9000000000000000000
AND CT.MSG_ID = TL.MSG_ID
AND TL.MSG_GMT_DT IS NOT NULL);
完整文章
Tuesday, April 7, 2009, 10:57 PM ( 43 浏览 )
- 技术文档 - 发表 fuyuncat
数据库的作用就是实现对数据的管理和查询。任何一个数据库系统,必然存在对数据的大量读或者写或者两中操作都大量存在。IO问题也往往是导致数据库性能问题的重要原因。在这篇文章中,主要帮助大家在理解Oracle的读写操作机制的基础上,灵活解决遇到的各种常见的IO问题。1 Oracle中IO的产生
IO当然包括了读、写两部分,先介绍Oracle中写操作的产生。
完整文章





