静水流深's profile静水流深PhotosBlogListsMore Tools Help

静水流深

Occupation
Location
Photo 1 of 2
July 04

[转载] 推荐老片:碧海蓝天

【 以下文字转载自 Movies 讨论区 】

【 原文由 jean85 所发表 】

吕克.贝松导演。很清新的一部电影,没有任何杂质,很纯粹,看了很舒服。

碧海蓝天

附百度百科影评:

影片评价  

       作为法国人吕克.贝松的成名作,《碧海蓝天》没有任何的商业气息,她就是一部圆梦 的电影,她带着一个男人童年印迹和对大海的眷恋、对爱对生命的思考,讲述着简单而 又永恒的故事。当音乐涌动将希腊爱琴海的海水宽阔地推入眼前,我凝神屏息。在宁静的 海岛小镇上,雅克和恩佐的友谊和战争从一枚硬币开始,童年愉快地穿梭于白色和蓝色之 间,在希腊闪烁的阳光下,他们纵身一跃,各自寻找自己的梦想。   

       让·雷诺扮演了伟大的潜水员恩佐。是的,我喜欢说“伟大的恩佐”,你一定记得他 的小汽车,他滑稽的意大利潜水服,他自负的表情,他的不可一世,他的爽朗,他的柔情 ,他在海边穿一身白衣弹着钢琴,他用尚.雷诺最具有特征的嗓音说:“我要找一个人,我 要找到雅克!”。因为只有童年的伙伴雅克才是他真正的对手,只有雅克才能够明白海洋 的秘密。   

       “你知道怎么才会遇见美人鱼吗?要游到海底,那里的海更蓝,在那里蓝天变成了回 忆,躺在寂静中,你决定留在那里,抱着必死的决心,美人鱼才会出现。她们来问候你, 考验你的爱。如果你的爱够真诚,够纯洁,她们就会接受你,然后永远地带你走……”   

       雅克和恩佐就这样在蓝色的背景下,一次次的潜入深海,恩佐为了征服海洋和雅克, 而雅克,雅克无需征服,因为他本身就属于海洋,在那里他没有拘束,像逃离人类的异族 回归了故乡。任何一个女人都无法忘记雅克,他那样容易的获取了你的心。你无法忘记他 的眼神,他眸子里害羞的友善的光彩,但他不属于任何人,我们只能远远的爱着他,眷恋 他。我有时候也做点白日梦,一次次的将自己当成是乔安娜,梦想着能够被雅克抚摸一次 ,能够和他在希腊美丽的夜晚对视一回,在秘鲁那片白色冰原上,和他初次相遇,直到最 后对他说:去吧,我的爱人,去海里。   

       吕克·贝松没有让相爱的人在一起,或者说这个故事是要远远的将俗事抛开的。恩佐 在一次潜水失误中将生命交给了大海,雅克护送他的灵魂走入海底的深处;那些来自海的 声音,那些海豚伙伴们无时无刻不在另一个世界召唤雅克的归来。在寂静的夜晚,这是最 后的抉择,雅克听见了那些声音,他的灵魂告诉他要什么,他告别了他的乔安娜,潜入深 海,这是生命的回归,是永恒的大爱,纯洁的雅克拥有了一切,那些同他一同追逐嬉戏的 海豚,也许其中一个是他少年时就消失的爸爸,也许其中一个是他的乔安娜,他伟大的朋 友恩佐。   

       我们从哪里来?我们又该往哪儿去呢?在《the big blue》里,在海洋的背景下,躺 在宽大的蓝色中听一首天籁,直到光滑的海水覆盖我们,一同回归生命最初的宁静之地。

March 06

zz软件学院创建记事

昨天中午睡醒后,惯例在百合上逛。
无意中看到一人blog里有《南京大学软件学院创建记事》。
立即查看院版,看到记事系列的三篇帖子,jabbar转了骆院的新浪blog


比较无聊的是五分钟不到,那四篇帖子都被删了,搞不懂某些人怎么想的。


一、起步的艰难——南京大学软件学院创建记事
二、筹建的艰辛——南京大学软件学院创建记事
三、创建的愉悦——南京大学软件学院创建记事

December 30

一次ORA-01000: maximum open cursors exceeded处理过程

用户A邮件上报问题:

主题: 关于stag1数据库报错的问题

下发生产时候没有问题,

在同步stag2数据库时候也是OK的

但在同步stag1库时候就一直报这个问题:

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production

With the Partitioning, OLAP and Data Mining options

declare

*

ERROR at line 1:

ORA-01000: maximum open cursors exceeded

ORA-06512: at line 31

SQL> show err

No errors.

SQL> rollback;

脚本的执行方式,用过并行也用过串行,都还是包这个错误

刚才查了查数据,发现一条数据都没有同步过去。

会否是环境问题呢?

请DBA查查原因。谢谢

 

解决过程:

该问题用户报了多次,第一次同事调大open_cursors,结果仍然报错。

第二次通过重启库,暂时锁定其他使用cursor过多的用户,让该用户执行脚本,依然报错。

第三次同事发现控制用户脚本中循环计数可以避免该问题发生,建议用户修改脚本,减少循环计数。

用户修改脚本后,虽然成功执行,但是并未达到要求的效果。

经过多次试验,测试发现:

stag1上缺少一个序列:DATA1.SEQ_TAB1 该序列在生产库上存在

在用户的同步脚本003.sql中

下面语句调用pub_seq_package.fetch_seq去获得主键值:

v_pk_serial#:=pub_seq_package.fetch_seq( 'TAB1', 'PK_SERIAL#', 'DATA1')

方法pub_seq_package.fetch_seq又调用方法get_seq。

在get_seq中如下代码:

--这部分根据输入的参数取得对应表的序列名:SEQ_TAB1

select seq_name,

         is_new_created

    into v_seq_name,

         v_is_new_created

    from pub_seq_info

   where table_name=upper(p_table_name)

     and column_name=upper(p_column_name)

     and table_owner=upper(p_table_owner)

     and rownum=1;

  …..

---这里通过cursor取出SEQ_TAB1的next值,可以看到cursor使用后就关闭。

     v_cursor:=sys.dbms_sql.open_cursor;

     v_sqlstr:='select '||v_seq_name||'.nextval '||' from '||' dual';

     dbms_sql.parse(v_cursor, v_sqlstr,1);

     ........

     v_temp := dbms_sql.execute( v_cursor);

     ........

     dbms_sql.close_cursor(v_cursor);

 

而实际上stag1上该sequence不存在,生产库prd上存在。

SQL> conn dba@stag1

Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.3.0

Connected as dba

SQL>

SQL> select seq_name, is_new_created

  2    from PUB_SEQ_CONFIG_INFO

  3   where table_name = 'TAB1'

  4     and column_name = 'PK_SERIAL#'

  5     and table_owner = 'DATA1'

  6     and rownum = 1;

SEQ_NAME                       IS_NEW_CREATED

------------------------------ --------------

SEQ_TAB1      Y

SQL> select owner, object_name, object_type, created

  2    from dba_objects

  3   where object_name = 'SEQ_TAB1';

OWNER      OBJECT_NAME                         OBJECT_TYPE     CREATED

---------- ----------------------------------- --------------- -----------

PUBLIC     SEQ_TAB1           SYNONYM         12/10/2008

SQL>  select * from dba_synonyms where synonym_name='SEQ_TAB1';

OWNER                          SYNONYM_NAME                   TABLE_OWNER                    TABLE_NAME                     DB_LINK

------------------------------ ------------------------------ ------------------------------ ------------------------------ --------------------------------------------------------------------------------

PUBLIC                         SEQ_TAB1      DATA1                       SEQ_TAB1     

SQL>

SQL> disconn

Not logged on

SQL> conn user1@prd

SQL>

SQL> select seq_name, is_new_created

  2    from PUB_SEQ_CONFIG_INFO

  3   where table_name = 'TAB1'

  4     and column_name = 'PK_SERIAL#'

  5     and table_owner = 'DATA1'

  6     and rownum = 1;

SEQ_NAME                       IS_NEW_CREATED

------------------------------ --------------

SEQ_TAB1      Y

SQL> select owner, object_name, object_type, created

  2    from dba_objects

  3   where object_name = 'SEQ_TAB1';

OWNER      OBJECT_NAME                         OBJECT_TYPE     CREATED

---------- ----------------------------------- --------------- -----------

PUBLIC     SEQ_TAB1           SYNONYM         12/10/2008

DATA1   SEQ_TAB1           SEQUENCE        12/10/2008

SQL>  select * from dba_synonyms where synonym_name='SEQ_TAB1';

OWNER                          SYNONYM_NAME                   TABLE_OWNER                    TABLE_NAME                     DB_LINK

------------------------------ ------------------------------ ------------------------------ ------------------------------ --------------------------------------------------------------------------------

PUBLIC                         SEQ_TAB1      DATA1                       SEQ_TAB1     

SQL> disconn

Not logged on

SQL>

 

正是缺少该sequence,导致ora-01000.下面试验过程找出该问题所在:

cursor_test2.sql是测试所用的脚本。

test_fetch_seq是在用户dba下复制用户user2的pub_seq_pkg.get_seq方法,只是把参数换成具体值了。

test_pub_seq_pkg是在用户dba下复制用户user2的包pub_seq_pkg的全部内容。

在cursor_test2.sql中对方法test_fetch_seq,test_pub_seq_pkg.test_fetch_seq,pub_seq_pkg.fetch_seq

分别进行测试:循环1009次(stag1上参数open_cursors改为和生产一致)

declare

  count_no     integer := 0;

  v_pk_serial# tab1.pk_serial#%type;

  -- 使用rowid进行修改                   

  v_rowid urowid;

  cursor cur_big_table is

    select rowid from big_table where rownum < 1010;

begin

open cur_big_table;

  loop

    v_rowid := null;

    fetch cur_big_table

      into v_rowid;

    exit when cur_big_table%NOTFOUND;

  ---测试三种情况:

    v_pk_serial# :=test_fetch_seq;

    --v_pk_serial# :=test_pub_seq_pkg.test_fetch_seq('TAB1','PK_SERIAL#','DATA1');

    --v_pk_serial# :=pub_seq_pkg.fetch_seq('TAB1','PK_SERIAL#','DATA1');

    count_no := count_no + 1;

    dbms_output.put_line('rowid->' || v_rowid);

    dbms_output.put_line('count_no->' || count_no);

    dbms_output.put_line('v_pk_serial->' || v_pk_serial#);

  end loop;

  close cur_big_table;

没有seq: SEQ_TAB1情况下

A、测试:v_pk_serial# :=test_fetch_seq;

SQL> conn dba @stag1

Connected.

SQL> set serveroutput on size 999999

SQL> @cursor_test2.sql

declare

*

ERROR at line 1:

ORA-06502: PL/SQL: numeric or value error: character string buffer too small

ORA-06512: at "DBA.TEST_FETCH_SEQ", line 57

ORA-02289: sequence does not exist

ORA-06512: at line 20

SQL>

B、测试:v_pk_serial# :=test_pub_seq_pkg.test_fetch_seq('TAB1','PK_SERIAL#','DATA1');

在下面可以看到循环进行了1009次,v_pk_serial没有取得值。

在exit时报错:ORA-01000: maximum open cursors exceeded

SQL> conn dba@stag1

Connected.

SQL> set serveroutput on size 999999

SQL> @cursor_test2.sql

…….

rowid->AAANebAATAABgQ4AAD

count_no->1006

v_pk_serial->

rowid->AAANebAATAABgQ4AAE

count_no->1007

v_pk_serial->

rowid->AAANebAATAABgQ4AAF

count_no->1008

v_pk_serial->

rowid->AAANebAATAABgQ4AAG

count_no->1009

v_pk_serial->

PL/SQL procedure successfully completed.

SQL> exit

ERROR:

ORA-02002: error while writing to audit trail

ORA-00604: error occurred at recursive SQL level 1

ORA-01000: maximum open cursors exceeded

Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production

With the Partitioning, Oracle Label Security, OLAP and Data Mining options (with complications)

检查该测试打开的cursor (这一步在上面未exit时执行,exit后会话消失,看不到)

发现最大值:1000

SQL> conn dba@stag1

Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.3.0

Connected as dba

SQL>

SQL> select b.SID, c.NAME, c.CLASS, b.VALUE

  2    from v$session a, v$sesstat b, v$statname c

  3   where a.sid = b.SID

  4     and b.STATISTIC# = c.STATISTIC#

  5     --and a.OSUSER = 'osuser'

  6     and a.PROGRAM='sqlplus.exe'

  7     and a.USERNAME = 'DBA'

  8     and c.name like '%cursor%'

  9  /

SID NAME                                                    CLASS  VALUE

---- -------------------------------------------------- ---------- ------

333 opened cursors cumulative                                   1   1045

333 opened cursors current                                      1   1000

333 session cursor cache hits                                  64     21

333 session cursor cache count                                 64     16

333 cursor authentications                                    128      0

SQL>

C、测试:v_pk_serial# := pub_seq_pkg.fetch_seq('TAB1','PK_SERIAL#','DATA1');

情况同B;

SQL> conn dba@stag1

Connected.

SQL> set serveroutput on size 999999

SQL> @cursor_test2.sql

v_pk_serial->

rowid->AAANebAATAABgQ4AAF

count_no->1008

v_pk_serial->

rowid->AAANebAATAABgQ4AAG

count_no->1009

v_pk_serial->

PL/SQL procedure successfully completed.

SQL> exit

ERROR:

ORA-02002: error while writing to audit trail

ORA-00604: error occurred at recursive SQL level 1

ORA-01000: maximum open cursors exceeded

检查打开的cursor:(这一步在上面未exit时执行,exit后会话消失,看不到)

SQL> select b.SID, c.NAME, c.CLASS, b.VALUE

  2    from v$session a, v$sesstat b, v$statname c

  3   where a.sid = b.SID

  4     and b.STATISTIC# = c.STATISTIC#

  5     --and a.OSUSER = 'osuser'

  6     and a.PROGRAM='sqlplus.exe'

  7     and a.USERNAME = 'DBA'

  8     and c.name like '%cursor%'

  9  /

SID NAME                                                    CLASS  VALUE

---- -------------------------------------------------- ---------- ------

351 opened cursors cumulative                                   1   1047

351 opened cursors current                                      1   1000

351 session cursor cache hits                                  64     21

351 session cursor cache count                                 64     17

351 cursor authentications                                    128      1

SQL>

创建seq: SEQ_TAB1后

在dba下创建seq:

SQL> create sequence SEQ_TAB1

  2  minvalue 1

  3  maxvalue 99999999999999

  4  start with 123

  5  increment by 1

  6  nocache

  7  cycle;

Sequence created

SQL> select SEQ_TAB1.Currval from dual;

   CURRVAL

----------

       123

SQL> select owner, object_name, object_type, created

  2    from dba_objects

  3   where object_name = 'SEQ_TAB1';

OWNER                          OBJECT_NAME                         OBJECT_TYPE     CREATED

------------------------------ ----------------------------------- --------------- -----------

PUBLIC                         SEQ_TAB1           SYNONYM         12/10/2008

DBA                          SEQ_TAB1           SEQUENCE        12/30/2008

SQL>

A、   测试:v_pk_serial# :=test_fetch_seq;

这次v_pk_serial有结果,exit时也未报错。

SQL> conn dba@stag1

Connected.

SQL> set serveroutput on size 999999

SQL> @cursor_test2.sql

….

count_no->1008

v_pk_serial->00200800000000001130

rowid->AAANebAATAABgQ4AAG

count_no->1009

v_pk_serial->00200800000000001131

PL/SQL procedure successfully completed.

SQL> exit

B、  测试:v_pk_serial# :=test_pub_seq_pkg.test_fetch_seq('TAB1','PK_SERIAL#','DATA1');

v_pk_serial有值,且exit时未报错。

SQL> conn dba@stag1

Connected.

SQL> set serveroutput on size 999999

SQL> @cursor_test2.sql

….

count_no->1008

v_pk_serial->00200800000000002140

rowid->AAANebAATAABgQ4AAG

count_no->1009

v_pk_serial->00200800000000002141

PL/SQL procedure successfully completed.

SQL> exit

Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production

检查打开的cursor,很少:

SQL> select b.SID, c.NAME, c.CLASS, b.VALUE

  2    from v$session a, v$sesstat b, v$statname c

  3   where a.sid = b.SID

  4     and b.STATISTIC# = c.STATISTIC#

  5     --and a.OSUSER = 'osuser'

  6     and a.PROGRAM='sqlplus.exe'

  7     and a.USERNAME = 'DBA'

  8     and c.name like '%cursor%'

  9  /

SID NAME                                                    CLASS  VALUE

---- -------------------------------------------------- ---------- ------

104 opened cursors cumulative                                   1   2071

104 opened cursors current                                      1     11

104 session cursor cache hits                                  64   2037

104 session cursor cache count                                 64     20

104 cursor authentications                                    128      2

SQL>

C、测试:v_pk_serial# := pub_seq_pkg.fetch_seq('TAB1','PK_SERIAL#','DATA1');

注意:此时user2对seq:SEQ_TAB1没有查询权限

rowid->AAANebAATAABgQ4AAF

count_no->1008

v_pk_serial->

rowid->AAANebAATAABgQ4AAG

count_no->1009

v_pk_serial->

PL/SQL procedure successfully completed.

SQL> exit

ERROR:

ORA-02002: error while writing to audit trail

ORA-00604: error occurred at recursive SQL level 1

ORA-01000: maximum open cursors exceeded

对user2用户授权,并修改公共同义词指向:

SQL> grant select on  SEQ_TAB1 to user2;

Grant succeeded

SQL> create or replace public SYNONYM SEQ_TAB1 for dba.SEQ_TAB1;

Synonym created

SQL>  select * from dba_synonyms where synonym_name='SEQ_TAB1'

  2  ;

OWNER                          SYNONYM_NAME                   TABLE_OWNER                    TABLE_NAME                     DB_LINK

------------------------------ ------------------------------ ------------------------------ ------------------------------ --------------------------------------------------------------------------------

PUBLIC                         SEQ_TAB1      DBA                          SEQ_TAB1     

SQL>

再次测试:v_pk_serial# := pub_seq_pkg.fetch_seq('TAB1','PK_SERIAL#','DATA1');

v_pk_serial有值,exit未报错:

……

count_no->1008

v_pk_serial->00200800000000005167

rowid->AAANebAATAABgQ4AAG

count_no->1009

v_pk_serial->00200800000000005168

PL/SQL procedure successfully completed.

SQL> exit

Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production

检查打开的cursor,仍然很少:

SQL> select b.SID, c.NAME, c.CLASS, b.VALUE

  2    from v$session a, v$sesstat b, v$statname c

  3   where a.sid = b.SID

  4     and b.STATISTIC# = c.STATISTIC#

  5     --and a.OSUSER = 'osuser'

  6     and a.PROGRAM='sqlplus.exe'

  7     and a.USERNAME = 'DBA'

  8     and c.name like '%cursor%'

  9  /

SID NAME                                                    CLASS  VALUE

---- -------------------------------------------------- ---------- ------

105 opened cursors cumulative                                   1   2070

105 opened cursors current                                      1     11

105 session cursor cache hits                                  64   2034

105 session cursor cache count                                 64     20

105 cursor authentications                                    128      1

最后,回收权限,恢复同义词指向:

SQL> create or replace public SYNONYM SEQ_TAB1 for DATA1.SEQ_TAB1;

Synonym created

SQL> revoke select on  SEQ_TAB1 from user2;

Revoke succeeded

SQL>

 

November 27

感恩节及oca考试

今天下班后参加oca考试,没有一点悬念。

自从做了决定,就感觉给自己下了套。打印600多页的英文教材,工作之余就去图书馆看书。

10月,11月几乎每个周末都有项目。上周末容灾演习--本年度最后一个项目结束。

意味着可以轻松下了。就决定本周三考试,周四是感恩节可以找同事庆贺下。

 

上周末夜班结束后连续休息四天。周二上午起床不久,接到同事电话:领导让去公司参加RAC培训。

于是牺牲休息时间去公司参加两天的培训,这样周三的考试计划再次被推迟。

今天早班,下午4点就可以走人。临下班前还有人报p1事件,没时间处理,电话不接,邮件不回。

 

下楼取钱,直接去公司附近的考点。

考试题目没有意外。sybex的教材比oracle官方的workshop详细,workshop更像是老师讲课用的ppt。

大部分问题都是工作中经常遇到的,rman除外。看完教材正好将概念重新理一遍,理解得更加深刻。

itpub上有题库,昨晚又看了一遍。我是那种不记答案的人,以前做错的题目,如果没有理解的话,

这次还是一如既往的错。

虽然两天的RAC培训耽误了第二遍看书,培训课上跟oracle工程师讨论了一些疑点。对该次考试也有帮助。

 

考试完毕后看到成绩太兴奋以至于取包时把手机摔到地上,拿起手机,键盘被锁。解锁键按不动。

重新开机后仍然锁定键盘,nokia太智能了。琢磨诺黑不至于这么挫吧?研究下键盘构造。

原来解锁键被摔得翘起来了,用力按下去恢复正常。

 

这门课结束,目标完成了一步,接下来要准备明年的ocp考试。

暂时轻松下,理发。

从头做起!

October 14

oca 要加课了

上周听同事说oca从12月起要加一门课,本打算明年考的。

看来得提前了,一门考试费1000多呢。

今天上午去公司对面的考点报名了,得益于rmb升值,考试费比以前便宜些。

这个月项目比较多,周末总是要加班配合,下月搞定它。

ps:

http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=231

Oracle Certification Program

Announcing new SQL exam requirement for the Oracle Database 10g OCA track

June 06, 2008
On December 1, 2008, Oracle Certification Program will introduce an additional SQL exam requirement for the Oracle Database 10g Administrator Certified Associate certification track.
In addition to the existing exam, Oracle Database 10g: Administration I (1Z0-042), candidates will also be required to pass any one of the three following Oracle SQL exams to earn the certification:
Introduction to Oracle: SQL® and PL/SQL™ (1Z0-001) or,
Introduction to Oracle9i: SQL (1Z0-007) or,
Oracle Database 11g: SQL Fundamentals I (1Z1-051) or,
Oracle Database SQL Expert (1Z0-047)
Please note that there are no compulsory training requirements for the OCA certification path.

October 08

一次ora-600 [17095]错误处理过程

最近部门有个项目,将sz的所有开发测试库集中到几个服务器上。

我顺便借用多余的存储建了几个库:ubuntu(8.1.7),debian(9.2.0.8),opensuse(9.2.0.8),hdsuse(10.2.0.3).留作试验用。

建库时都选择默认的方式。

去年买了本ttom的《oracle 高效设计》,边看边做实验。

在下面的实验中,deian和opensuse上遇到了该死的ora-600 [17095]

实验步骤如下:

1,执行下面的sql:
Conn scott@debian
create user a identified by a;
grant create session to a;
grant create table to a;
create user b identified by b;
grant create session to b;
grant create table to b;
create user c identified by c;
grant create session to c;
grant create table to c;
create user d identified by d;
grant create session to d;
grant create table to d;
alter user a default tablespace users;
alter user b default tablespace users;
alter user c default tablespace users;
alter user d default tablespace users;
alter user a quota unlimited on users;
alter user b quota unlimited on users;
alter user c quota unlimited on users;
alter user d quota unlimited on users;
create public synonym emp for d.emp;
alter system flush shared_pool;
conn a/a@debian
select * from emp;
conn b/b@debian
select * from emp;
conn d/d@debian
grant select on emp to c;
select * from emp;
conn c/c@debian
select * from emp;
2,scott用户执行该sql,得到三条记录
select address,executions,sql_text
from v$sql
where upper(sql_text) like 'SELECT * FROM EMP%';
3,scott用户执行该sql,hang住,长久无结果;用sys用户执行该sql,很快就返回。

再用其它用户执行,还是hang.
select kglhdpar, address,
       auth_check_mismatch, translation_mismatch
  from v$sql_shared_cursor
  where kglhdpar in
  (select address
from v$sql
where upper(sql_text) like 'SELECT * FROM EMP%'
);
4,查看步骤3等待事件,latch free
执行下面的sql:可以看到步骤3对应的sql记录中vsersion_count列数字不断增加,最后到32767时报ora-600错误。
vsersion_count本来应该是1:明显的是sql共享失败。

select sql_text,version_COUNT,loads,first_load_time from v$sqlarea
where version_count > 1000 order by first_load_time desc;

alert log里信息:

Errors in file /paic/g2bh8040/soft/9i/app/oracle/admin/debian/udump/debian_ora_18449.trc:
ORA-00600: internal error code, arguments: [17059], [0xC0000002C3F30CE0], [], [], [], [], [], []

trc文件中部分信息:

Oracle process number: 18
Unix process pid: 1244, image: oracle@g2bh8040 (TNS V1-V3)

*** 2008-10-06 23:40:55.619
*** SESSION ID:(12.41213) 2008-10-06 23:40:55.618
LIBRARY OBJECT HANDLE: handle=c0000002c1b5a118
name=select kglhdpar, address,
       auth_check_mismatch, translation_mismatch
  from v$sql_shared_cursor
  where kglhdpar in
  (select address
from v$sql
where upper(sql_text) like 'SELECT * FROM EMP%'
)
hash=2ff48c73 timestamp=10-06-2008 22:30:42
namespace=CRSR flags=RON/KGHP/TIM/OBS/PN0/MED/[50410000]
kkkk-dddd-llll=0000-0001-0001 lock=N pin=S latch#=4
lwt=c0000002c1b5a148[c0000002c1b5a148,c0000002c1b5a148] ltm=c0000002c1b5a158[c0000002c1b5a158,c0000002c1b5a158]
pwt=c0000002c1b5a178[c0000002c1b5a178,c0000002c1b5a178] ptm=c0000002c1b5a208[c0000002c1b5a208,c0000002c1b5a208]
ref=c0000002c1b5a128[c0000002c1b5a128, c0000002c1b5a128] lnd=c0000002c1b5a220[c0000002c1b5a220,c0000002c1b5a220]
  LOCK OWNERS:
      lock     user  session count mode flags
  -------- -------- -------- ----- ---- ------------------------
  c0000002c0bdc8e8 c0000002bf2d56e0 c0000002bf2d56e0     1 N   PNC/[04]
  PIN OWNERS:
       pin     user  session     lock count mode mask
  -------- -------- -------- -------- ----- ---- ----
  c0000002c0bddb28 c0000002bf2d56e0 c0000002bf2d56e0 c0000002c0bdc8e8     1 S    0001
  LIBRARY OBJECT: object=c0000002c496a440
  type=CRSR flags=EXS[0001] pflags= [00] status=VALD load=0

 
CHILDREN: size=32768-- 这里达到数据库的限制32767
  child#    table reference   handle
  ------ -------- --------- --------
       0 c0000002c496a6a0 c0000002c496a370 c0000002c4969f58
       1 c0000002c496a6a0 c0000002c1dc8758 c0000002c4969aa0

在网上及metalink上查找相关资料,没有头绪。

原来的数据库迁移前移前版本大多数是9206,9207的,迁移后要统一升级到9208。

在迁移的库上实施该实验,无报错。猜想可能是9208的库有些组件创建未能更新到正确的版本上。

于是在opensuse上实施升级过程(如下),升级后,600错误不再出现。

cd $ORACLE_HOME/rdbms/admin
SQL> startup migrate
SQL>@catpatch.sql;
SQL> shutdown immediate
SQL> startup
SQL>@utlrp.sql
SQL>@utlrcmp.sql

September 14

无聊时分--说说房子

今天和朋友聊天时,提到cctv6正在直播金鸡百花奖。就去客厅看电视,没找到cctv6,却找到凤凰卫视。

正在直播牛刀博客中提到那期和邹涛PK的关于房市的节目,比较感兴趣看了下。

其中来自北京的嘉宾老刘提到目前房市是四方博弈:政府、银行、开发商、老百姓,前面三者都是获利的,买单的自然是老百姓。

本来,政府出让部分土地,将获得的资金为低收入者提供住房,分解部分买房需求。这样正好对房价有个制约,使之不致于过高。但政府也不能过多的分流买房需求,这样开发商无利益驱动,自然政府无法获得满足民生的资金。这里需要一个平衡。

1,在GDP的驱动下,地方政府以卖地为荣,将卖地所得用于建自己的办公大楼。并没有用于低收入者的住房需求上。几乎将所有的住房需求全部推向市场,人为的加剧了住房供需矛盾。

2,土地价格长期看是涨,房价也是如此。开发商为了获取暴利,囤积部分土地,减少房子供应。政府出台了限制政策:两年内没有开发完毕的土地要强制收回。但是政府的监察力度不够,来自北京的嘉宾指出北京有很多这种土地却没有被回收。而且在征地过程中,政府扮演了错误的角色,更降低开发商的成本。

3,房地产业的过高利润使得其他行业资金更多流入,造成其他行业开工不足,加剧就业矛盾。

4,为了普通民众能买房子,国家出台了住房贷款政策。本来这是一个利好政策,由于银行没有严格的审核,给炒房者提供了资金来源,加剧了房价的高企。(这里多说一句,很BS炒房者,虽然从商业行为,这是正常的。但是道义上无法接受。毕竟他们的参与认为的加剧需求矛盾,让别人为他们当奴隶)而政府又没有很好的政策来限制炒房。炒房使房价像气球一样越吹越大。

而目前政府严格控制贷款,缩紧银根,控制了买房的资金来源,直接打击房市。需求暂时抑制,炒房行为被压制,房价慢慢止升回跌。跌市更是抑制需求,买涨不买跌大家都清楚。这个一刀切的方式也影响了其他行业。

老刘说现在是买单的老百姓不陪那三家玩了,他们就干瞪眼了。他就不相信房地产商能把房子当面包吃了。

 

如果政府能够更加理智的关注民生,分离部分需求;加大监察力度,严厉打击土地囤积行为;银行加强住房贷款审核,控制炒房行为。房地产才是合理、理性的市场。

不过个人对前景并不看好,除非北京为全国做个示范:政府的归政府,市场的归市场。

PS:对于治安不好的地方,我不吝惜一个词来评价:官匪勾结。而目前的房市,用“官商勾结”最恰当。