今天发现 www.dbanotes.net 和 www.dbanotes.net/blog 这两个入口 PR(PageRank) 值都变成了5.刚开始建立 Blog 的时候一个小目标就是期望一段时间之后 PR 值可以达到5 .不期然居然做到了.(eygle 的Blog还是4,"鄙视"他一下 :) )这段时间在新公司的确太忙,根本没时间上来写Blog -- 虽然这段时间的确有不少的素材可以写写.
April 2005 Archives
Blog 上看到的消息,Quest 刚刚收购了一家公司 Imceda.Imceda 公司一直致力于提供全方位的 SQL Server 平台的产品解决方案.
The acquisition is valued at approximately $61 million, of which 20% will be paid in shares of Quest Software Common Stock and the balance will be paid in cash. Quest currently expects that the transaction will be completed in the second quarter of 2005, subject to customary closing conditions and regulatory approvals including expiration of the applicable Hart-Scott-Rodino waiting period, and that it is estimated to be neutral to fully diluted earnings per share within the first 12 months of closing, and accretive thereafter.
长期以来,Quest一直在 SQL Server 相关的工具上少有建树.市场占有率十分微小.这次又故技重演,用杀手锏"收购"来获得市场的占有率.很多人都认为,Quest 是一家非常会收购的公司.
前一段时间还有人说 Quest 要被 Oracle 收购,没想到 Quest 还活得不错.
这个视图的来源大致是这样的:
SELECT inst_id, ksulosno, ksulosrn, ksulopna, ksulotna, ksulotde, ksulosfr, ksulotot, ksulouni, TO_DATE (ksulostm, 'MM/DD/RR HH24:MI:SS', 'NLS_CALENDAR=Gregorian'), TO_DATE (ksulolut, 'MM/DD/RR HH24:MI:SS', 'NLS_CALENDAR=Gregorian'), DECODE (SIGN (ksulotot - ksulosfr), -1, TO_NUMBER (NULL), DECODE (ksulosfr, 0, TO_NUMBER (NULL), ROUND (ksuloetm * ((ksulotot - ksulosfr) / ksulosfr)) ) ), ksuloetm, ksuloctx, ksulomsg, ksulounm, ksulosql, ksulosqh, ksuloqid FROM x$ksulop;补充信息: 一篇非常好的解释文档。有些内容我之前也不知道。
Tom 的 Expert one on one: Oracle 的一个Bug. 第三章讲到DML所的时候 Tom 用了一个脚本:
tkyte@TKYTE816> select username, 2 v$lock.sid, 3 trunc(id1/power(2,16)) rbs, 4 bitand(id1,to_number('ffff','xxxx'))+0 slot, 5 id2 seq, 6 lmode, 7 request 8 from v$lock, v$session 9 where v$lock.type = 'TX' 10 and v$lock.sid = v$session.sid 11 and v$session.username = USER 12 / USERNAME SID RBS SLOT SEQ LMODE REQUEST -------- ---------- ---------- ---------- ---------- ---------- ---------- TKYTE 8 2 46 160 6 0
产品库上最好别直接用这个脚本,很慢很慢的.
遇到一个ora-02248: invalid option for ALTER SESSION的错误.环境是 java/10g instant client连接到 Oracle 9206 数据库发生的
Do you Blog ?!
总算通过Proxy站点看到了Tom的Blog.Tom 的Blog技术内容不太多的,但是有很多关于他自己的信息.比如,这个大师每天的时间安排,生活习惯等..Tom也透漏了关于他的Oracle expert one on one 的很多信息,比如写作安排:
This month is unique for I've taken most of it off from Oracle to work on the second edition of Expert One on One Oracle (to be renamed as WROX went out of business and Apress lost rights to use the "Expert One on One" tagline when they bought it).
加了一个晚上的班,还是进展不大.但是看到了这个令人震惊的消息.Adobe and Macromedia.
具体的交易细节如下:
Adobe Systems Incorporated (Nasdaq: ADBE) has announced a definitive agreement to acquire Macromedia (Nasdaq: MACR) in an all-stock transaction valued at approximately $3.4 billion. Under the terms of the agreement, which has been approved by both boards of directors, Macromedia stockholders will receive, at a fixed exchange ratio, 0.69 shares of Adobe common stock for every share of Macromedia common stock in a tax-free exchange. Based on Adobe’s and Macromedia’s closing prices on Friday April 15, 2005, this represents a price of $41.86 per share of Macromedia common stock. (Copy from Adobe)
Adobe 和 Macromedia 都是令人喜欢的公司.这个年代用计算机的人恐怕没有人没用过Acrobat Reader,设计过网页的人怕是也都用"网页设计三剑客".毫无疑问,一个软件巨人诞生了.从04年到现在,并购的消息不断传来.看来,这是个并购/合并的年代.
DBA在一些场合下,要对无效的数据库对象进行重新编译.如果只是对all_objects等视图中选出来的无效对象进行重新编译,可能需要很多次:因为各个对象之间有依赖性的.这样并不是一个很好的办法.Raymond 在Recompiling invalid objects提到了如何有效地重新编译无效对象.提到了三种比较有效地方法(
- 利用$ORACLE_HOME/rdbms/admin下的utlrp.sql脚本编译.一般都是在迁移或者升级之后运行该脚本.Raymond说该方法的不足之处在于这个脚本是对整个数据库中的对象进行重新编译的,所以不可取.有网友指出utlrp.sql 实际上是调用utlrcmp.sql的这样就可以用utl_recomp包来做喽(这样就是比较好的方法).
- 用DBMS_UTILITY包来进行编译.但是也有一定的局限性.
- Raymond提到了自己的解决办法: 不过也立刻有人指出来,这样对 View 的重新编译是无能为力的(ALTER_COMPILE只能处理:PACKAGE, PACKAGE BODY, PROCEDURE, FUNCTION, TRIGGER).参见下面的脚本
CREATE OR REPLACE PROCEDURE RECOMPILE_SCHEMA IS v_Type USER_OBJECTS.OBJECT_TYPE%TYPE; v_Name USER_OBJECTS.OBJECT_NAME%TYPE; v_Stat USER_OBJECTS.STATUS%TYPE; CURSOR c_Obj IS SELECT BASE FROM (SELECT A.OBJECT_ID BASE , B.OBJECT_ID REL FROM USER_OBJECTS A , USER_OBJECTS B , SYS.DEPENDENCY$ C WHERE A.OBJECT_ID = C.D_OBJ# AND B.OBJECT_ID = C.P_OBJ# AND A.OBJECT_TYPE IN ('PACKAGE', 'PROCEDURE', 'FUNCTION', 'PACKAGE BODY', -- 'VIEW', 'TRIGGER') AND B.OBJECT_TYPE IN ('PACKAGE', 'PROCEDURE', 'FUNCTION', 'PACKAGE BODY', -- 'VIEW', 'TRIGGER') AND NOT A.OBJECT_NAME = B.OBJECT_NAME) OBJECTS CONNECT BY BASE = PRIOR REL GROUP BY BASE ORDER BY MAX(LEVEL) DESC; BEGIN -- loop through all objects in order of dependancy. FOR c_Row IN c_Obj LOOP -- select the objects attributes (type, name & status). SELECT OBJECT_TYPE , OBJECT_NAME , STATUS INTO v_Type , v_Name , v_Stat FROM USER_OBJECTS WHERE OBJECT_ID = c_Row.BASE; -- if the OBJECT is INVALID, recompile it. IF v_Stat = 'INVALID' THEN DBMS_DDL.ALTER_COMPILE(v_Type, USER, v_Name); END IF; END LOOP; -- Recompile all remaining INVALID OBJECTS (all those without dependencies). FOR c_Row IN ( SELECT OBJECT_TYPE , OBJECT_NAME FROM USER_OBJECTS WHERE STATUS = 'INVALID' AND OBJECT_TYPE IN ('PACKAGE', 'PROCEDURE', 'FUNCTION', 'TRIGGER', 'PACKAGE BODY', -- 'VIEW', 'TRIGGER') ) LOOP DBMS_DDL.ALTER_COMPILE(c_Row.OBJECT_TYPE, USER, c_Row.OBJECT_NAME); END LOOP; END RECOMPILE_SCHEMA;
调用 utl_recomp 包是比较好的做法.需要 sys 权限. BTW:刚才浏览eygle 的站点,发现他有一 Blog 说的正是这个事情: http://www.eygle.com/archives/2005/01/ecioaeaoeeeaoea.html ,晕倒Rem EXAMPLES Rem 1. Recompile all objects sequentially: Rem execute utl_recomp.recomp_serial(); Rem Rem 2. Recompile objects in schema SCOTT sequentially: Rem execute utl_recomp.recomp_serial('SCOTT'); Rem Rem 3. Recompile all objects using 4 parallel threads: Rem execute utl_recomp.recomp_parallel(4); Rem Rem 4. Recompile objects in schema JOE using the number of threads Rem specified in the paramter JOB_QUEUE_PROCESSES: Rem execute utl_recomp.recomp_parallel(NULL, 'JOE'); Rem Rem 5. Recompile all objects using 2 parallel threads, but allow Rem other applications to use the job queue concurrently: Rem execute utl_recomp.recomp_parallel(2, NULL, Rem utl_recomp.share_job_queue); Rem Rem 6. Restore the job queue after a failure in recomp_parallel: Rem execute utl_recomp.restore_job_queue();
估计是原来的专辑名字通不过审查。所以变成了《给你一点颜色》。个人觉得专辑中最好听的就是《蓝色骨头》,我对这首歌的喜爱程度可以和《盒子》相比。
在崔健的每一张专辑里几乎都会有一首歌可以描述一类人。比如《新长征路上的摇滚中》的《假行僧》,《解决》中的《投机分子》,《红旗下的蛋》中的《红旗下的蛋》,《无能的力量》中的《混子》,《给你一点颜色》老崔刻画了一幅“写字儿”的知识分子标准像。
老崔曾经喊过“我说爱情它到底是个什么 究竟是个什么东西 你说爱情就是自由加上你的人格”,现在又严肃的讨论起来人活着的目的:痛快加独立才算是有意义。
《蓝》中的一些话语有立刻成为流行语的可能,比如:
男人越是闲着 越是人缘儿好
哥儿们之间谈论爱情认真也是假的/ 只有在姑娘面前动感情才能算是真的/ 当你真的爱的时候理论就是虚的/ 只有分手的时候疼痛才是真的
这一则Blog的标题来自崔健新专辑的一首歌《网络处男》:
我是一个网络处男 各种各样的网站我都去过 从98年到现在 转眼过去了 我学会了一点儿打字就没别的了 我曾经叫过"蚊子"也叫过"困难户" 也叫过"苍孙"也叫过"假装酷" 后来还有太多的名字我记不清楚了 反正名字越是难听越是显得有个性
每天忙的昏头转向,还真得不知道这网络上都发生了什么事情
Oracle发布了新的CPU:Critical Patch Update - April 2005这个CPU 基本上是针对HTTP Server 的.
Here is a summary:http://www.petefinnigan.com/weblog/archives/00000304.htm
早晨跑到了机房,结果等到10点钟也不见货到,电话联系.说前几天北京大雨,都已经通知IBM的人了,说以为我和IBM的人在一起,就根本没通知我!Faint. 赶紧回到公司.说下午2:00 到三点肯定到货.
这次的供货商是青鸟.到了下午,这帮家伙也知道怎么想的,连统一口径都做不到.一会儿说今天可以到货,一会儿说明天肯定到.一回说已经到了,一回说货又弄回去了.真是服了他们了.
一口气忙了好久。每天的时间调度都会被打乱(Rudolf 建议我用起来Above & Beyond 做时间调度。正在慢慢适应中...)。MSN上很多朋友的信息都没能回。以前那种悠闲的状态看来一去不复返了。
看样子这种状态要一直持续到五月份。还好现在找到了一点点感觉。前几天的时候几乎每天都会遇到协调相关的问题,接下来的小型机项目也是比较令人头疼的。
周日早晨,Laura就来杭州了。这是对我最好的消息!
不久前,Oracle(甲骨文)公司在美国加州的总部宣布, Oracle 10g 数据库 与 Oracle RAC 在 TPC-H 基准测试中创造了新的世界纪录.这是个令人震惊的消息.因为这个测试是在 Linux ( Red Hat Enterprise Linux Advanced Server 3) 的平台上进行的. 这充分显示了 Oracle 在低成本 Linux 集群服务器上高效管理大规模数据仓库的能力, 也表明 Linux 在性能价格比上显而易见的优势,标志着Linux在大规模企业应用上已经成熟.
相信很多朋友已经对10g跃跃欲试了,现在从这里让我们开始10g之旅.
本文描述了在Red Hat Enterprise Linux Advanced Server 3 (RHEL 3)上安装Oracle 10g 必要的步骤和相关知识. 本文假定你的Linux 操作系统已经安装完毕,并且您应该具有一定的 Unix 操作系统背景知识.