Baby I Love You!

2010年7月27日下午1点53分,我的儿子张小事儿诞生了,八斤半啊,医生说,“好久没抱过这么沉的新生儿了”。 祝愿我的儿子会健康壮实,成为名副其实的属老虎的狮子座男子汉。 诸位一直以来关心我们的朋友,我的儿子用小老虎一样的哈欠向各位问好且表示感谢。:) 谢谢我的弟弟,你的房子和你今天来回地跑几趟,亲弟弟我才敢这么支使你。 谢谢600的媳妇儿寿影帮忙在医院跑前跑后,没有你就没有这样顺利的过程,你是当之无愧的干妈。 谢谢eygle帮我cover这段时间本应我去做的工作,辛苦了。 谢谢coolyl让我住在离医院更近的他的房子里,减少了我来回奔波的距离。 谢谢老丈人,丈母娘,姐姐,老姑,你们的精心照顾让我完全没有后顾之忧。 谢谢爸妈和小阿姨在老家的惦记和嘱咐,虽然你们没有在身边,但是我知道你们比我们更焦急更关心。 谢谢医生,护士,六院是很好的医院。 当然,最需要感谢的是我漂亮勇敢的老婆,你是我的骄傲,我爱你。

User Experience Suggesion for Dameng Database

试用了达梦数据库6.02 for Linux版本。测试的操作系统为CentOS 5虚拟机,数据库软件从此处下载。 本文并未像老杨那样做产品功能性的测试,实际上老杨已经测试的够详细了。 只是作为Oracle的重度用户,在用户体验上将DM和Oracle做些许比较,大部分集中在DM的isql和Oracle的sql*plus上,当然这些比较还很肤浅,权当一看。 1. 最重要的,最诚恳的建议,达梦应该在网上提供完全没有任何技术限制的软件下载,包括达梦企业版和安全版。达梦不需要怕别人免费用自己的数据库,而应该怕别人没有兴趣用自己的数据库。如果免费使用的人数有1万,那么希望进行技术讨论的人数就可能会有1千,而1千个踊跃讨论的用户将会带来更多的免费使用人群,这些人群中只要有1%愿意付费,就是达梦的成功。只有虚怀若谷才能海纳百川。 2. 字符界面的静默安装速度很快,但是安装过程中的英文提示有“Whether to ”字样,我明白是想表达“是否要”的意思,但是出现在安装提示中比较奇怪,建议全部去掉。比如: Whether to Initialize the Database (Y/y,N/n) [Y/y]:y Whether to Modify DataBase Initiation Parameter (Y/y,N/n) [N/n]:y Whether to Modify SYSDBA Password (Y/y,N/n) [N/n]: 3. 安装文档中并没有提及在Linux环境需要创建另外的用于安装DMDBMS的用户组和用户,因此这可能会让大家都使用root用户来安装DM数据库,实际上在我的测试环境中也是使用root用户的。建议对于安装程序和文档都做相应修改,明确建议DM数据库应该安装在自己的用户下。比如用户组是dba,用户是dmusr。 4. 即使在安装过程中选择了安装示例数据库,但是在安装结束以后并没有发现有BOOKSHOP数据库。 5. 安装完毕以后需要重新login,因为 export LD_LIBRARY_PATH=/u01/dmdbms/bin这样的设置仅仅更新在.bash_profile中了,但是当前环境没有生效,此时运行isql会报错: ./isql: error while loading shared libraries: libdmapi.so: cannot open shared obj 建议不要依靠LD_LIBRARY_PATH这样的设置,或者在安装后立刻在当前环境中使 LD_LIBRARY_PATH设置生效。…

Oracle Histogram Investigation

这段时间有客户的10gR2数据库经常遭遇执行计划不稳定的现象,应该是直方图信息(Histogram)+绑定变量窥视(Bind Variable Peeking)造成的问题,藉此分享一下直方图的使用经验,但是我非常希望能听到针对本文的不同声音。测试环境Oracle 11.2.0.1 for Windows X64。 创建一个测试表。 drop table t; create table t as select rownum n1, ROUND(rownum / 100) n2, ‘xxxx’ n3 from dba_objects where rownum <= 10000; 这样我们生成了一张表T,其中有一万行记录。 N1字段可以认为是主键,有10000个distinct值(1-10000),这是一个数据分布均匀的字段; N2字段有101个distinct值,除了第一个值0和最后一个值101之外,其它的值都有100行记录,我们可以认为这是一个数据分布均匀的字段; N3字段有10000个值都是xxxx,实际上这也仍然是一个分布均匀的字段。 对于这三种类型的字段,我们都不应该去收集直方图信息,因为没有意义。那么直方图信息之所以需要存在的根本意义在哪里? 一. 我们何时该做 直方图究其根本实际上就是一个数据分布的图示,这个图示是为了在生成SQL执行计划的时候给Oracle的CBO更多的信息,换句话说,就是当在where条件中的某些列可能由于列值的不同而希望CBO制定出不同的执行计划时,我们需要直方图。 反过来说,什么情况下我们不需要直方图呢?或者说直方图的存在是没有意义的呢? 1. 当此列不用于查询时,也就是这个字段永远不会出现在where条件中(注意:即使是用于表连接那也算是出现在where条件中)。 2. 当此列无论给予什么比较值,我们都希望永远是一种执行计划时。上面例子中的3个字段都属于这种情况。 对于N1或者N2出现在where条件中,我们希望永远是用该列上的索引扫描(当然需要在该列上先创建索引),对于N3出现在where条件中,我们希望永远是全表扫描。这样的执行计划的制定,只要有表级别的统计信息就足够了,直方图信息的出现不但不会对制定正确的执行计划有帮助,甚至会出现奇怪的现象导致执行计划不稳定。 二. 我们可以怎样做 那么我们继续看一下收集直方图信息的方法,众所周知,是需要使用DBMS_STATS.GATHER_TABLE_STATS存储过程的,并且是由这个存储过程中的method_opt参数决定的。可以由以下几种选择。 method_opt=>’for columns size skewonly [column_name]’ 什么是SKEWONLY?先看一下Oracle官方文档中的定义。 Oracle determines…