Author Archives: yangtingkun

20120324ACOUG活动

这次活动是ACOUG成立两周年的纪念活动。 这次活动恰好赶上Oracle公司数据库安全总监James Spooner先生在北京给Oracle内部人员培训Database Firewall,于是我们请他抽出半天时间为我们ACOUG带来《Oracle数据库防火墙深入探讨及实例分析》的主题,这种一般只面对内部的培训机会可是很难得的。 随后由OCM联盟的创始人侯圣文带来的《Oracle DBA成功之路 —— 成就一段精彩的技术生涯》。侯兄选择的技术道路有部分与我类似,有部分与我大相径庭。相似的是,他同样在坚持每天写BLOG,而且都是技术博客,而我却不敢保证每天的文章都是纯技术的,比如说今天。不同之处在于,他选择了认证的路线,早早就成为OCM且目前已经在讲OCM考试的课程,而我到目前连个OCA都没有。不过这也说明了一点,其实选择什么样的路线并不重要,重要的是找到适合你自己的道路,并且坚持不懈的走下去。侯兄的成功也正说明了这一点。 最后是我们公司的同事,同时也是ACOUG目前的组织者仇实带来的一个主题,为ACOUG两周年进行一个简短的总结,同时推出了我们自己的刊物,基于iPad的IBOOKS应用——ACOUG杂志。该杂志的下载地址为:http://vdisk.weibo.com/s/3qX5b。目前已经上传到APPLE商店中,由于审核的原因可能需要过一段时间才能下载。 祝ACOUG两周年生日快乐!

Posted in NEWS | Leave a comment

数据字典不一致造成大量ORA-600和ORA-7445错误

测试环境中,由于将数据字典表错误的导入到当前的数据库SYS用户下,导致数据字典出现了不一致的状态,反应出来的结果就是大量的ORA-600和ORA-7445错误。 列几个错误信息,简单记录一下这个问题: Fri Feb 10 16:30:14 CST 2012 Errors IN file /u01/app/oracle/admin/orcl10g/udump/orcl10g_ora_8690.trc: ORA-00600: internal error code, arguments: [16201], [1403], [], [], [], [], [], [] Fri Feb 10 16:30:16 CST 2012 Errors IN file /u01/app/oracle/admin/orcl10g/udump/orcl10g_ora_8690.trc: ORA-00600: internal error code, arguments: … Continue reading

Posted in ORACLE | Tagged , , , , , , , | Leave a comment

201203获得ITPUB年度最佳BLOG写作奖

好像是第三次获得这个奖项了,感谢老虎、感谢ITPUB、感谢IT168、感谢盛拓传媒,更要感谢大家的支持和鼓励。 似乎这个奖是3月10号评完的,而ITPUB上徽章的颁发日期是13日,我确实今天才发现,可谓后知后觉了。在这里感谢所有给我投票的朋友们。 目前BLOG中有2500多篇文章,浏览数超过了860W,而老版的BLOG目前还能使用,不知道有没有机会达到1000W的访问量。

Posted in NEWS | Leave a comment

默认值和触发器的顺序

今天在写触发器的时候突然想到这一点,为了验证想法,做了一个简单的例子。 如果一个字段拥有默认值,且包含一个BEFORE的行级触发器,当不指定值时,二者的生效顺序如何: SQL> CREATE TABLE t_trigger_default (id NUMBER, col varchar2(30) DEFAULT ‘default’); TABLE created. SQL> CREATE TRIGGER t_b_tri_def 2 BEFORE INSERT ON t_trigger_default 3 FOR each ROW 4 BEGIN 5 :NEW.col := ‘trigger’; 6 END; 7 / TRIGGER created. SQL> … Continue reading

Posted in ORACLE | Tagged , , | Leave a comment

设置到相同SID仍无法连接实例

今天有同事问,为什么设置了正确的SID后仍然连接到空闲实例,且启动到MOUNT状态就报错。 根据他的描述,基本上可以判断是ORACLE_HOME的设置问题,于是做了一个简单的例子重新了这个问题: [orat0@hpserver2 ~]$ env|grep ORACLE ORACLE_SID=orcl10g ORACLE_BASE=/t0/orat0/app/oracle ORACLE_HOME=/t0/orat0/app/oracle/product/10.2.0/db_1 [orat0@hpserver2 ~]$ sqlplus / AS sysdba SQL*Plus: Release 10.2.0.5.0 – Production ON Thu Mar 22 16:06:48 2012 Copyright (c) 1982, 2010, Oracle. ALL Rights Reserved. Connected TO an idle instance. SQL> … Continue reading

Posted in ORACLE | Tagged , , | Leave a comment

快速增加表的默认值的方法

看到ITPUB上有人提到,如何快速的在一个3亿条记录的表中增加一个包含DEFAULT值的新字段。描述一下如何快速的添加表的默认值。 Oracle11新特性——在线操作功能增强(二) :http://yangtingkun.itpub.net/post/468/401293 对于这个问题,常规的方法有三个: 一、直接ALTER TABLE ADD COLUMN,这种方法的好处是简单,一个命令就可以完成,缺点是耗时非常长,而且在漫长的执行过长中都会锁定表,导致应用无法修改数据,并且在完成后容易造成大量的行迁移,从而影响后续访问的性能; 二、CREATE TABLE AS SELECT的方式,这种方式相对第一种而言,效率更高,如果是非归档模式,那么完成速度会更快。但是缺点同样很明显,首先需要大量的停机时间,而且表上的索引、约束、触发器以及权限等都需要手工处理,比较麻烦; 三、在线重定义,这种方式应该算是这三种中最佳的,锁表时间非常短,对业务影响最小,但是缺点是整个操作的时间并不会变短,和第二种方式一样,都需要2倍的存储空间,而且操作相对复杂。 如果数据库的版本是11g,那么这就不是问题了,以前写过专门的文章,描述11g是如何快速添加一个包含非空DEFAULT值的列的。那么对于10g及以前版本的数据库而言,增加一个包含默认值的字段难道就真的要忍受漫长的执行时间和大量的REDO、UNDO的占用吗。 其实完全可以仿照11g的方式,来自己实现10g中字段的快速添加。记得Tom在描述数据库的解析时提到过,软解析要优于硬解析,软软解析要优于软解析,而速度最快的莫过于不解析。提高速度的最高境界就是根本不做。 那么对于添加默认值的方式也可以才有这种方法,对于已经存在的记录的默认值,我们根本不去添加,一个简单的例子如下: SQL> CREATE TABLE T_ADD_COLUMN (ID NUMBER, NAME VARCHAR2(30)); TABLE created. SQL> INSERT INTO T_ADD_COLUMN 2 SELECT ROWNUM, OBJECT_NAME 3 FROM DBA_OBJECTS; 11955 ROWS created. … Continue reading

Posted in ORACLE | Tagged , , , , | Leave a comment

oinstall组用户连接数据库报错error while loading shared libraries: libskgxp10.so

名称很长,不过仍然不足以描述这个错误的背景。确切的描述应该是oracle用户下的ORACLE_HOME,迁移到其他位置,并将oracle属主改变为其他用户,但是oinstall组未变。随后其他oinstall组用户,无法以/ as sysdba登录数据库。 公司测试环境,ORACLE_HOME为/u01/app/oracle/product/10.2.0/db_1,将ORACLE_HOME切换到/t0/orat0/app/oracle/product/10.2.0/db_1目录下,并将ORACLE_HOME的属主从oracle改为orat0。 授权后,orat0用户直接登录就出现这个错误: [orat0@hpserver2 ~]$ sqlplus / AS sysdba SQL*Plus: Release 10.2.0.5.0 – Production ON Sun Mar 18 16:12:03 2012 Copyright (c) 1982, 2010, Oracle. ALL Rights Reserved. oracleorcl10g: error while loading shared libraries: libskgxp10.so: cannot OPEN shared … Continue reading

Posted in ORACLE | Tagged , , , , , | Leave a comment

relink报错ldflags: No such file or directory relink

由于数据库的ORACLE_HOME发生了变化,需要对ORACLE_HOME进行relink操作,结果发现relink时报错。 错误信息摘录如下: [orat0@hpserver2 db_1]$ relink utilities – Linking Import utility (imp) rm -f /t0/orat0/app/oracle/product/10.2.0/db_1/rdbms/lib/imp gcc -o /t0/orat0/app/oracle/product/10.2.0/db_1/rdbms/lib/imp -L/t0/orat0/app/oracle/product/10.2.0/db_1/rdbms/lib/ -L/t0/orat0/app/oracle/product/10.2.0/db_1/lib/ -L/t0/orat0/app/oracle/product/10.2.0/db_1/lib/stubs/ /t0/orat0/app/oracle/product/10.2.0/db_1/rdbms/lib/s0impdrv.o /t0/orat0/app/oracle/product/10.2.0/db_1/rdbms/lib/defopt.o -ldbtools10 -lclntsh `cat /t0/orat0/app/oracle/product/10.2.0/db_1/lib/ldflags` -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10 -ln10 -lnnz10 -lnl10 -lnro10 `cat /t0/orat0/app/oracle/product/10.2.0/db_1/lib/ldflags` -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10 … Continue reading

Posted in ORACLE | Tagged , , | Leave a comment

ORACLE_HOME迁移后需要设置LD_LIBRARY_PATH环境变量

在10g以后,一般情况下环境变量中没有必要设置LD_LIBRARY_PATH,但是一旦将ORACLE_HOME迁移到其他目录,则环境变量中还需要添加这个变量。 Linux和Unix支持TAR方式迁移ORACLE_HOME,如果有需要将ORACLE_HOME放到其他路径下,那么一般都会使用tar的方式将整个路径拷贝到目标目录。 但是迁移后,如果直接尝试sqlplus启动,可能报错: [orat3@hpserver2 ~]$ sqlplus / AS sysdba sqlplus: error while loading shared libraries: libsqlplus.so: cannot OPEN shared object file: No such file OR directory[orat3@hpserver2 ~]$ sqlplus / as sysdba sqlplus: error while loading shared libraries: libsqlplus.so: cannot open … Continue reading

Posted in ORACLE | Tagged , , , , , | Leave a comment

ORA-600(19004)错误

客户数据库出现ORA-600(19004)错误。 错误信息如下: ORA-00600: internal error code, arguments: [19004], [], [], [], [], [], [], []ORA-00600: internal error code, arguments: [19004], [], [], [], [], [], [], [] 对应的详细TRACE为: *** 2012-03-15 13:10:31.283 ksedmp: internal OR fatal error ORA-00600: internal error code, … Continue reading

Posted in BUG | Tagged , , | Leave a comment