« March 2005 | 首页

1 2 3 4 (Page 3 of 4)



| May 2005 »

April 18, 2005

重编译 invalid 对象

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;
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();
调用 utl_recomp 包是比较好的做法.需要 sys 权限. BTW:刚才浏览eygle 的站点,发现他有一 Blog 说的正是这个事情: http://www.eygle.com/archives/2005/01/ecioaeaoeeeaoea.html ,晕倒

April 17, 2005

崔健新专辑

估计是原来的专辑名字通不过审查。所以变成了《给你一点颜色》。个人觉得专辑中最好听的就是《蓝色骨头》,我对这首歌的喜爱程度可以和《盒子》相比。

在崔健的每一张专辑里几乎都会有一首歌可以描述一类人。比如《新长征路上的摇滚中》的《假行僧》,《解决》中的《投机分子》,《红旗下的蛋》中的《红旗下的蛋》,《无能的力量》中的《混子》,《给你一点颜色》老崔刻画了一幅“写字儿”的知识分子标准像。

老崔曾经喊过“我说爱情它到底是个什么 究竟是个什么东西 你说爱情就是自由加上你的人格”,现在又严肃的讨论起来人活着的目的:痛快加独立才算是有意义。

《蓝》中的一些话语有立刻成为流行语的可能,比如:

男人越是闲着 越是人缘儿好

哥儿们之间谈论爱情认真也是假的/ 只有在姑娘面前动感情才能算是真的/ 当你真的爱的时候理论就是虚的/ 只有分手的时候疼痛才是真的

不知道是不是可以的重复还是无心所为,有些歌词还有唱法是似曾相识的。甚至在同一张专辑里都由重复的地方,

为什么没有人告诉我 没有人告诉我 有人在追求我
,接下来就在《迷失的季节》里唱到:
为什么没有人告诉你 有人在追求你
,当然,专辑中有的地方是为了呼应而为的,比如"...叮当当...轰隆隆".

对于《农村包围城市》是我对老崔最为不满的地方,那么精彩的歌词,居然被弱化后处理,而且是用唐山方言唱出来的,怪怪的,莫非真的是向《鬼子来了》致敬?《超越那一天》的现场版也不应该加入到这个专辑里,前后很不衔接,而且,贝贝的说唱我是非常的不喜欢。有一点倒是终于证实了,《超越那一天》的确说的是香港,老崔自己的解释:

这首歌最早的版本是1997年的,当时香港回归,台湾人录了一张专辑是关于回归的。他当时不是命题让我创作一首歌嘛,后来我就写了这首歌。歌里那妹妹就是香港,超越的就是1997年7月1日。

妈妈 妹妹回来的那天将是一个机会
超越那个传统的家庭观念
你知道多年来你关闭了多少感觉
为了你那堂堂家长的尊严
......

蚊子,困难户,苍孙,假装酷

这一则Blog的标题来自崔健新专辑的一首歌《网络处男》:

我是一个网络处男
各种各样的网站我都去过
从98年到现在 转眼过去了
我学会了一点儿打字就没别的了
我曾经叫过"蚊子"也叫过"困难户"
也叫过"苍孙"也叫过"假装酷"
后来还有太多的名字我记不清楚了
反正名字越是难听越是显得有个性

每天忙的昏头转向,还真得不知道这网络上都发生了什么事情

好像是最近抗日成为时髦了。我所在的这家公司也因为投资者的问题变得比较敏感了。大街上开始游行了。网络上开始吵架了。

自己因为每天加班而变得疲惫不堪了。

其实这段时间也有令我更感兴趣的:崔健终于出了新专辑了.依然苍老的声音和宝刀不老的歌词还是给人以感动。

摘抄一下《蓝色骨头》
并不可惜 也并不可气
我经过了基本的努力 接受了基本的教育
我就是一个春天的花朵
正好长在一个春天里

我爸爸当初告诉我要想有出息
就得好好学习拿出好成绩
可是我曾经不太相信这个
我现在还是不太相信这个

我说人活着要痛快加独立才算是有意义
所以我学校还没毕业就开始找了工作
我要干我最喜欢干的不管挣钱多少
所以我的工作就是一个写字儿的

一开始我就是想用笔发发牢骚
可是谁知道这一开始就一发不可收拾
俗话说活人不能被尿憋死
只要我有笔谁都挡不住我

这就是我的事业 更是我兴趣
还有什么工作比这更来情绪呢
钱虽然不多所以并不太忙
正好剩下了时间让我琢磨活着的意义

三角架有三条腿才稳定
少了任何一条都要不停地运动
我的生活也要有三大要素才幸福
就是为了得到幸福人们才忙活着

第一 就是事业象我上面说的
能高高兴兴工作挣钱养活自己
有话就说 有话就写 而且要彻底
因为每次彻底之后才会出现美妙的空虚

第二 就是身体一定要健康
因为身体要是不舒服 什么都白给
所以我一周三次跑步加上一次游泳
在运动中想事儿是越想越起劲儿

第三 当然就是一个爱情了
其实姑娘不知道小伙心中的虚弱
没有爱情的日子自然哥儿们多
就是象男人越是闲着 越是人缘儿好

哥儿们之间谈论爱情认真也是假的
只有在姑娘面前动感情才能算是真的
当你真的爱的时候理论就是虚的
只有分手的时候疼痛才是真的

为什么没有人告诉我
没有人告诉我 有人在追求我
是不是我的工作太多了 感情已变坏了
还是身体一独立 欲望就变野了

反正这三条腿儿的原则听起来有点简单
可在现实生活中得到两个就不容易
如今金钱美女都需要好的身体
谁能告诉我爱情到底要我使出多大的力气

红色 黄色和蓝色
分别代表人的心 身体和智慧
如今这三个颜色统统被泥土盖了起来
就像眼前这个社会的大酱缸

多年的政治运动使人们厌倦了红色
周围黄色的肉体已经把灵魂埋没
只有扭曲一下我自己抬头看看上面
原来是少有的一片蓝蓝的天空

红色已经把鲜血污染了
真不知血和心到底哪个是热的
阳光和灯光同时照着我的身体
要么我选择孤独要么我选择堕落

蓝色的天空给我了无限的理性看起来却像是忍受
只有无限的感觉才能给我无穷的力量
爸爸 我就是一个春天的花朵正好长在一个春天里
因我为骨头也是蓝的

April 13, 2005

Oracle发布了新的CPU

Oracle发布了新的CPU:Critical Patch Update - April 2005这个CPU 基本上是针对HTTP Server 的.

Here is a summary:http://www.petefinnigan.com/weblog/archives/00000304.htm

安装这个CPU之前需要参考 Note:301045.1.涉及到的问题比较多.

本站相关标签|Tags Cloud