老婆孩子回青岛后的第一天

Posted by boypoo on February 3rd, 2010

昨天早上从浦东机场送走老婆孩子后,坐在大巴上,美美的笑了一下:接下来的几天自由了!

可是早上出门换了件衣服,没带钱,售票员走过来的时候,才发现钱包里除了一堆出租车票,只有1枚硬币。

搜刮衣服的各个兜,终于找到一张5元,一张十元的纸钞和另外4个钢蹦。从浦东机场到龙阳路是16块,从龙阳路到杨高南路地铁是3块,剩余2块!又乐了一下:)

地铁快到站的时候,才找钥匙,发现钥匙也在另一件衣服里,心情有点郁闷。

打电话给老爹,问问老妈有没有在门外什么地方给我放过钥匙。可惜老爹不在家,说等回家后给我打回来。

那只能等了,笔记本也在家里,哪也去不了。转眼已经11点了,肚子有点饿,从裤兜里再搜出3个硬币,去菜市场吃了碗2两的河南拉面。

时间还早,老婆至少要到30分钟后才会达到机场。给岳父打个电话,他已经到机场等着接了,告诉他等她们到了后给我打个电话。

无聊,烦躁,天还下起了小雨!

到50 的时候,老婆来短信说,到了。

于是回了个短信说我钥匙没带,门外钥匙没有钥匙的话,我就要找师傅来开锁了。

过了两分钟,短信还没回来,打电话过去,没人接。估计是在路上了。老丈人估计把我的话忘记了。没辙,去农工商超市逛逛,我有信用卡,可以在里面卖点吃的喝的。

再不知过了多久,老婆终于来电,说换锁吧,本来老婆还要埋怨两句的,我手机电只有2格了,赶快匆匆挂掉,打电话给换锁师傅(换过2次了,所以电话我一直留着)。

师傅说人在三林,明天换行不?我说不行,他说那我30分钟到吧。

回到小区,雨有点大了,去门卫室,一老头在。

我看到门卫室居然有电脑在开着,桌面上什么也没有,就问他这里怎么会有电脑呢?

他说“×头”,我问他是不是摄像头,他还说是“X头”,我还是没听懂,他走到门外指给我看,原来就是摄像头,他说的是啥我还是没搞懂。

我问他,那怎么不开画面啊,他说坏了。反正没事,就想帮他看看。原来是28号小区停电后,就一直没用,要输入密码,说明书上是说密码已经设置过,只要点OK就行,可是用户名和密码栏是空白的。

他说管他呢,公安局来装的(包含小区的防盗电缆),这东西又没啥用,由着他吧(类似的话)。

看看那些设备:一台PC机,3台华三的交换机(没搞懂用来干啥),一台viewsonic显示器,机柜大小倒是刚刚合适。

我说,唉,纳税人的钱啊。他说,哪啊,政府的钱,我们下岗了也不让我们退休,买这些破玩意摆样子。

我想,这世道不就是这样么?那么多下岗工人,政府给的起么?

换锁师傅穿着皮裤,骑着摩托进了小区,还是挺快的,明显不到30分钟。

撬锁,换把手,锁芯。老婆临出门没有提把手(上锁),所以整个过程很快,师傅准备的电钻没有用上。

师傅问,你打电话到公司了没,我说没,他说那200,打到公司的话是300。我说,我上次换锁锁芯才100不是?

他说,那是去年了吧,现在经理换了,铜价也涨了,所以全部提价了。

已经1点多了,进公司。

快下班了,找人吃饭。丫的,都有安排了。

快7点,回到家,煮面条,牛肉,鸡蛋,白菜。

吃完了,看电视,连换了几个台,好久没看电视,连兴趣都没有了。看来要是很久不茉莉,可能性趣也会消失的。

看看书,居然开着灯就睡着了。醒来是早上6点了。

围城无处不在啊

OCM,与技术能力无关

Posted by boypoo on January 15th, 2010

我在招聘帖子里说过,我这里提供OCM免费考试机会,当然也欢迎OCM加入我们的团队。

但是,并非是说OCM就真的是Master(大师)了,因为几乎绝大多数考试到了中国后,都可以在5年之内泛滥,OCM也不例外。

最近面试了一些朋友,其中有一个都在09年通过了OCM。但是我的同事们面试过后,却连连摇头。这多少让我有些诧异。

为了安全起见,同一个人,我都会安排2-3个同事先后电话面试,结束前他们不能交流各自的看法。

但是当聚集在会议室的讨论,意见却基本一致————OCM已经失去意义。他们认为,这位朋友的经验和基础能力只能算作中级水平。

其实这不是个案,在这里也不是为了贬低这位朋友。因为老耿在去年5月份考完OCM就曾向我吹嘘,这玩意,三天我就搞定了。

所以,如果有免费的机会参加OCM考试,那不要拒绝,go!

如果自费去,那坚决不要!

如果你看到了OCM,那不要迷信,看看再说!

OCM终归来说,就是一场已经基本透明化的考试而已!

按照机械的步骤,只要你的运气不是太酶,收获率还是大大地!

不过,我要说一句,我不是OCM,也不准备是。

—eof—

女儿会走路了

Posted by boypoo on January 12th, 2010

时间非快,女儿已经会走路了。大概2个月前,已经可以站得比较好了,但一直不敢自己走。前天,居然勇敢的自己走了。

昨天我买回一筐核桃,打开以后,她自己一个一个来回搬运,拾到茶几上。有一次,她想一下搬运3个,不小心掉了一个在地上。她就不再搬运了,开始一个个往地板上扔。扔的一个角落都是的时候,小家伙不扔了,斜着头来看我。我说:”你不继续扔了?”  她呵呵一笑,不理我了,自己去看书去了。

最近看了薛涌的几本书,有点想记录女儿成长的冲动了。

————————————–

PS:今天一个朋友推荐了一封简历给我。看了简历,就已经许多文字错误(粗心),有点不想打电话,但还是忍着打了。打电话过去,居然不是他的手机,是另一个朋友的,说等他打回来(不用自己的手机,投简历干什么?)。小伙子其实还是不错的,很快电话就回过来了,不过明显过于紧张,自我介绍逻辑不清。 这显然不太好,因为我们面对的是客户,客户很难信任一个粗心、没有逻辑的专家?所以,不仅仅是投简历的时候,平时我们还是应该注意,提高自己。

挥手2009

Posted by boypoo on December 30th, 2009

挥手一般就是要说再见啦,但这里的挥手显然是不要再见的意思。

国庆后,oliver多次在QQ上跟我说,你最近真的很忙么,怎么不见你更新blog。HI,现在终于更新了,那是因为,终于可以借着元旦前夕,又可以胡乱说一通了。

2009年,

对于个人来说,基本上没有任何闪光点。找到了自己的一个缺点—-轻易相信他人,但没找到克服的方法。

对于家庭来说,也没有。女儿的成长主要靠母亲和老婆。

对于公司来说,只是协助其他部门完成公司年初的quota。其他方面略有进步。

所以,2009,过去吧,几乎没有值得留念的。

明年怎么样呢?谁知道!

没有人知道,做几点期望,到明年底来回顾一下吧:

1.看10本非计算机方面的英语书籍(这个应该很容易)

2.非节假日带女儿到国内旅游(最好是桂林)一次(应该不是太难,还得听取老婆的意见)

3.读点股市方面的书,解除“maiden”的状态

4.回老家一次

5.再学点我今天仍然不会的东西

 

over,在元旦前想到再补充。

Can U restore the dropped procedure?

Posted by babyblue on December 23rd, 2009

这是个挺极端的话题,因为标题中问题的前提是:没有任何备份。

不要抱怨,“命苦不能怪政府,点背不能怨社会” ^_^

而我一个同事,就真正碰上这样的问题。当然,最后也成功恢复了。

有人会想到logminer和archive log,但是sp被删除时archive log并不记录sp的文本内容。当然logminer有用处,起码能定位到准确的删除时间。

存储过程的文本内容通常被记录在source$中。

SQL> conn blue/blue

Connected.

SQL> create or replace procedure sp_test2

2     is

3     begin

4       dbms_output.put_line(‘procedure restore’);

5     end;

6     /

Procedure created.

SQL> conn / as sysdba

Connected.

SQL> select s.obj#,s.source from source$ s,obj$ o

2  where s.obj#=o.obj#

3  and o.name=’SP_TEST’;

OBJ# SOURCE

———- ————————————————–

53258 procedure sp_test

53258    is

53258    begin

53258      dbms_output.put_line(‘procedure restore’);

53258    end;

不过可惜的是,当sp或整个schema被drop后,source$中对应的内容也一并被删除。

21:56:42 SQL> drop procedure blue.sp_test;

Procedure dropped.

21:56:54 SQL> select s.obj#,s.source from source$ s,obj$ o

21:57:20   2  where s.obj#=o.obj#

21:57:20   3  and o.name=’SP_TEST’;

no rows selected

我们想要得到的,是过去某个时间点里source$中的内容。

然而,sys schema下不支持flashback table,Oracle不允许你这么干,如果部分数据字典表被回退到过去的时间点,这全乱套了。

有人用flashback database,没错,这确实可以实现,只是,这也太小题大作了吧?辛辛苦苦几十年,一下回到解放前。

so,why not flashback query?

21:59:53 SQL> select obj#,name from obj$ as of timestamp  sysdate-5/1440

21:59:55   2  where name =’SP_TEST’;

OBJ# NAME

———- ——————————

53258 SP_TEST

22:00:22 SQL> select obj#,source from source$ as of timestamp sysdate-6/1440

22:00:24   2  where obj#=53258;

OBJ# SOURCE

———- ————————————————–

53258 procedure sp_test

53258    is

53258    begin

53258      dbms_output.put_line(‘procedure restore’);

53258    end;

回到最开始的话题,2点警示:

1、制订完善的备份策略并实施

2、规划日常操作

how to find out implicit conversion

Posted by babyblue on December 11th, 2009

隐式转换是DBA们所不愿意看到的,有人说“I believe implicit conversion to be bad. Badder. Evil. A serious no-no!”

举个例子:

有一条SQL

select * from t_table where id=:1;

说明:t_table记录量在数万条,id varchar2类型,主键。

1.用户用pl/sql等工具执行非常快。

2.在应用中执行该语句非常慢,通过statspack,awr等发现,并且发现是全表扫描。

这种情况很有可能是绑定变量类型不匹配而导致的。

某些情况下,隐式转换会让数据库性能变得很糟糕。有同事处理过这样的案例,在消灭隐式转换后,原本一个需要2小时的业务操作可以在6秒内便可完成。
Oracle也强烈建议使用explicit conversion而不是implicit conversion,explicit conversion相比implicit conversion有如下的好处:

SQL statements are easier to understand when you use explicit datatype conversion functions.

Implicit datatype conversion can have a negative impact on performance, especially if the datatype of a column value is converted to that of a constant rather than the other way around.

Implicit conversion depends on the context in which it occurs and may not work the same way in every case. For example, implicit conversion from a datetime value to a VARCHAR2 value may return an unexpected year depending on the value of the NLS_DATE_FORMAT parameter.

Algorithms for implicit conversion are subject to change across software releases and among Oracle products. Behavior of explicit conversions is more predictable.

在发生隐式转换SQL的诊断过程中,我们使用一些第三方的工具看到的执行计划往往没有异常。因为在使用这些工具的时候,解释的是用户手工输入的而不是应用程序产生的SQL.

那么,如何确定应用程序的SQL是不是发生了隐式转换呢?

在Oracle 10g提供过滤谓词的信息当中,包含了是否发生转换。

查看过滤谓词的方式较多,比如autotrace  、explain plan、utlxpls、dbms_xplan等。

前面3种方法需要手工输入SQL文本,所以看到的同样不是我们需要的结果。而10g中dbms_xplan可以通过指定SQLID来查看用户关心的特定SQL。

SQL> select /*+ hint1 */hiredate from scott.emp where    hiredate between ‘17-DE

C-80′ and ‘20-FEB-81′ ;

HIREDATE

———

17-DEC-80

20-FEB-81

SQL> col sql_id for a20

SQL> select sql_id,sql_text from v$sql where sql_text like ‘%hint1%’;

SQL_ID

——————–

SQL_TEXT

——————————————————————————–

2k4kk1zvp8jz1

select /*+ hint1 */hiredate from scott.emp where    hiredate between ‘17-DEC-80′

and ‘20-FEB-81′

28n8kr51sv6s6

select sql_id,sql_text from v$sql where sql_text like ‘%hint1%’

SQL> select * from table(dbms_xplan.display_cursor(‘&SQLID’));

Enter value for sqlid: 2k4kk1zvp8jz1

old   1: select * from table(dbms_xplan.display_cursor(‘&SQLID’))

new   1: select * from table(dbms_xplan.display_cursor(‘2k4kk1zvp8jz1′))

PLAN_TABLE_OUTPUT

——————————————————————————-

SQL_ID  2k4kk1zvp8jz1, child number 0

————————————-

select /*+ hint1 */hiredate from scott.emp where    hiredate between

‘17-DEC-80′ and ‘20-FEB-81′

Plan hash value: 3896240783

—————————————————————————

| Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |

—————————————————————————

|   0 | SELECT STATEMENT   |      |       |       |     3 (100)|          |

PLAN_TABLE_OUTPUT

——————————————————————————-

|*  1 |  FILTER            |      |       |       |            |          |

|*  2 |   TABLE ACCESS FULL| EMP  |     1 |     8 |     3   (0)| 00:00:01 |

—————————————————————————

Predicate Information (identified by operation id):

—————————————————

1 – filter(TO_DATE(‘17-DEC-80′)<=TO_DATE(‘20-FEB-81′))

2 – filter((“HIREDATE”<=’20-FEB-81′ AND “HIREDATE”>=’17-DEC-80′))

21 rows selected.

SQL>

然而9i的过滤谓词没这么详细的信息,v$sql 视图中不包含SQLID信息,dbms_xplan中也不提供display_cursor这样的function。就是说,9i不能用以上的方法来辅助判断。

那Oracle 9i下怎么办呢?

试试10046吧,部分级别的10046 trace内容中包含了绑定变量及其变量类型dty信息。

Trace文件可能会包含类似内容:

bind 3: dty=180 mxl=11(11) mal=00 scl=00 pre=00 oacflg=01 oacfl2=0 size=0 offset=72

bfp=ffffffff7f5500f0 bln=11 avl=11 flg=01

value=

Dump of memory from 0xFFFFFFFF7F5500F0 to 0xFFFFFFFF7F5500FB

FFFFFFFF7F5500F0 78640101 0A353619 08B10000           [xd...56.....]

bind 4: dty=180 mxl=11(11) mal=00 scl=00 pre=00 oacflg=01 oacfl2=0 size=0 offset=88

bfp=ffffffff7f550100 bln=11 avl=11 flg=01

value=

下表为Oracle内部的数据类型代码

Data Type Numeric Type Codes

0 placeholder for procedures with no arguments
1 VARCHAR, VARCHAR2, STRING, NVARCHAR2
2 NUMBER, INTEGER, SMALLINT, REAL, FLOAT, DECIMAL
3 BINARY_INTEGER, PLS_INTEGER, POSITIVE, NATURAL
8 LONG
11 ROWID (old)
12 DATE
23 RAW
24 LONG RAW
58 OPAQUE TYPE
69 ROWID (new)
96 CHAR (ANSI FIXED CHAR), NCHAR, CHARACTER
100 BINARY_FLOAT
101 BINARY_DOUBLE
106 MLSLABEL
121 OBJECT
122 NESTED TABLE
123 VARRAY
178 TIME
179 TIME WITH TIME ZONE
180 TIMESTAMP
181 TIMESTAMP WITH TIME ZONE
231 TIMESTAMP WITH LOCAL TIME ZONE
250 PL/SQL RECORD
251 PL/SQL TABLE
252 PL/SQL BOOLEAN

武汉 南京 杭州 招oracle工程师

Posted by boypoo on November 16th, 2009

要求: 初、中级别
职责: 1.给客户提供Oracle技术支持工作
基本条件:
1、有2年或以上数据库维护经验,理解oracle概念
2、熟悉1种以上UNIX操作系统(AIX, HP-UX, Linux, Solaris),对存储及网络有一定了解
3、了解RAC、DG、Partition
4、对oracle产品线有一定了解
5、良好的文档编写习惯
6、有较强的学习能力,很快地掌握新技术
7、有很好的职业道德及团队精神

这里有:

1.宽松的工作环境,良好的工作氛围
2.友好、协作、积极的团队
3.每年有Oracle、AIX、存储的培训机会
4.每年一次与全国工程师见面交流的机会
5.定期区域技术交流
6.3年内通过OCM考试,培训、考试费公司报销

待遇,视能力而定,面议!

有意者请发简历到boypoo@gmail.com (希望您:1.不要用附件,附件的邮件一律忽略;2.在邮件标题上写上您的名字)

满足条件的请多多支持! 所有朋友的邮件,我将一一回复,谢谢!

夫贤则妇惠

Posted by boypoo on October 28th, 2009

这半年多,有三个词一直在我的心里徘徊:国家、公司、家庭。这一篇,想说说家庭。

关于家庭,我结婚2年多,基本上每过一段时间,都会有新的感悟。

这两年多来,我们发生了很多变化:购房、简装、结婚、女儿出生……

但所有这些,我都是配角,主要的工作都是老婆在完成。

在我的观念里,男人的基本义务就是应该去挣足够多的钱来养活这个家,使家人生活得更舒畅一些;女人就应该用好男人挣来的钱,而男人不比关心钱是怎么用的。

居于此,我们间偶有争吵,有时还挺激烈,一天之内大家都不搭理对方。

因为我忽略了一点,现代的女人解放了。

老婆在怀女儿之前考上了复旦的博士,接着是女儿出生,教材编写、研究课题、SCI、女儿的营养等等问题,都是压在老婆心上的重担。

任何人,都需要一定的宣泄。

女人的宣泄,也许就是男人简单的一个眼神,一句话,一个拥抱。

人生的转变也许就是那么一点点。

所以,和睦健康的家庭从健全的爸爸做起。

有人说,骆驼的速度虽然没有马快,但骆驼一生的足迹是马的两倍。那么,

为了未来,每天改进一点点…….

ps:publish出来,为的是监督自己,过段时间来看看自己是否真的进步了。

—-EOF—-

坐台小姐应该怎么选择?

Posted by boypoo on October 26th, 2009

一个技术较好的同事,是部门里的干将之一,经常被客户指明要求去服务,出台较多多。但最近由于不堪某客户的态度,出于对该职业的悲观情绪,出离愤怒的想要辞职了。

这是一个很好的同事,有着技术工程师最重要的学习能力和技术爱好。因此,这引起了我的思考。

于是杜撰了如下故事:

一群身强力壮的男人进了一家夜总会,然后老鸨带着很多小姐过来了。其中一个人,是老板,但是身上有很严重的狐臭,隔老远都能闻到。很自然的,老板先挑。小姐们一批批的来,一批批的去,终于,这家夜总会的镇店之宝,文成公主,出现了,老板满意之。

然,公主一被搂入怀中,就猛打喷嚏。

她会怎么做呢?

为什么故事里要是一群男人,且该男子是老板。代表甲方是强势群体。

如果是一两个人,遇到这种情况,我猜想,文成公主有可能直接发飙,怒斥该男子。但是,一群人,她就得掂量掂量,一发飙可能会被揍死。

那么,这种情况,最好的选择似乎是小姐就只好自认倒霉。

如果接二连三的发生这种情况,这公主是不是就考虑从良或自尽呢?

唐太宗(夜总会老板)是否可以帮助这位文成公主么?

不得而知,不能入眠。仅记之200910110335。

OCM考试路途与市场链

Posted by boypoo on October 18th, 2009

Oracle的考试花样百出,最开始,与别的公司差不多,规规矩矩整了个Certified Professional。

到了9i,用的人多了,丫连续搞了几个花样,一个是OCA,一个是OCM,最强势的地方在于考试比花钱(版本升级考试除外)。

后面搞了个不论不类的OCT,考的人不是太多。

那下一步呢?

有网友在itpub上贴出了武汉大学与其他培训学校联合搞的武汉大学OCM方向工程硕士

尽管这种联合招生还没有得到oracle的公开认可,但是应该有不少机构在想这块肥肉了。

那再之后呢?

在之后也许是OCXX。  为什么是XX不是X呢,那是因为oracle的产品线更加丰富了,一个X不能够清晰的代表认证所代表的内容。

比如做数据库的,将形成这样一个链条:OCAàOCPàOCMàOCDD(Oracle Certified Database Doctor)

Middleware的,形成这样一个链条:OCMAàOCMPàOCMMàOCMD

做SUN软硬件(不含java),形成这样一个链条:OCSAàOCSPàOCSPàOCSD

再其次,在所有的OCXD都拿到的人中,再颁发一个新的认证,或是:OCG(Oracle Certified Guru),代表在上述领域都有发言权。

这样,oracle的市场也许就可以毒霸了。

这么说来,OCM也许仅仅是整个认证市场的起步而已,也即是说,兄弟们,你们的考试机会还很多呢。


Copyright © 2007 数据工人. All rights reserved.