-
Recent Posts
Recent Comments
- yangtingkun on 非空字段空值对查询的影响
- Eric Zong on 非空字段空值对查询的影响
- Kamus on Oracle Ace Director
- 设置全局死锁优先级 | yangtingkun on RAC全局死锁检测时间
- ORA-600(krbounotread_noctx)错误 | yangtingkun on ORA-600(krboReadBitmap_badbitmap)错误
Archives
- December 2020
- February 2019
- December 2018
- November 2018
- October 2018
- July 2018
- June 2018
- May 2018
- July 2016
- July 2013
- June 2013
- November 2012
- October 2012
- September 2012
- August 2012
- July 2012
- June 2012
- May 2012
- April 2012
- March 2012
- February 2012
- January 2012
- December 2011
- November 2011
- October 2011
- September 2011
- August 2011
Categories
Meta
Monthly Archives: December 2011
2011年总结
2012马上就要到了,抓紧时间总结一下2011年。 2011是比较特殊的一年,是我加入恩墨的第一年,也是我工作的第十年,同时还是我接触Oracle的第十年,而今天的更是我注册到ITPUB的十周年纪念。 大学的专业是通信工程,对于数据库的认识还停留在Foxbase的层面上,到第一家工作单位实习的时候,机缘巧合接触到了Oracle,随后不久在网上搜索资料的时候歪打误撞找到了ITPUB。 我实习的公司就是我工作的第一家公司,以大学学习的那些知识,自然不能满足企业的实际需要,因此从事什么工作完全是公司的安排。当时我和另一个女同学由一个有经验的人带,当时给我们两个方向研究,一个是通过PRO*C程序访问Oracle数据库,另一个是二叉树添加和删除节点的算法。后一个虽然复杂,但是在大学的数据结构的课程中有所涉及,而当时对于Oracle是什么则完全没有概念。显然不能把困难的任务留给女生,于是我就义无反顾的踏上了Oracle这条不归路。 如果说接触Oracle,并将工作重心转到Oracle上是偶然的,那么遇到ITPUB可以说是一个必然。之所以这么说是因为ITPUB很快就发展成为国内最大的Oracle数据库论坛,在业内拥有最大的影响力,因此加入ITPUB只是迟早的事情。虽然注册日期是12月31日,但第一次访问ITPUB肯定是之前的事情,虽然具体的细节早就不记得,但是通过这个注册还是很容易推测当时的场景。在一年快要结束的最后一个工作日里,没有什么心思干活,于是就把常访问的论坛给注册了。应该说在注册这个论坛的时候,已经有了明确的在Oracle方面发展的想法了。 不管出于偶然还是必然,总之Oracle和ITPUB陪我走过了这十个年头。无论是ITPUB还是Oracle,这十年来值得记录的东西都太多太多了。不过好像都和当前的题目不沾边,明明是总结2011,怎么快变成回忆录了。 言归正传,如果要说2011年,那么肯定离不开两个字:恩墨。到了下半年,有了资本的加入,那么还要再加上两个字:云和。不管云和也好,恩墨也罢,今年注定是开花结果的一年。可能对于公司而言,今年只是打好基础,离收获还有一段距离,但是对于技术而言,今年确实是收获的一年。第一次可以把自己几乎所有的知识储备都应用到实际工作中,也是第一次发现自己的知识储备是如此的不足,几乎每天都会碰到新的挑战,几乎每天都会学习新的知识。以前靠每天的BLOG鞭策自己保持学习的惯性,有时候经常需要思考,今天研究什么,BLOG写点什么。而现在每天处理的案例,解决的bug堆成了一堆,就是没有时间整理,到了晚上同样会发愁写点什么,所以有的时候没有选择和选择太多都是痛苦。 BLOG坚持了六年,目前还在继续,能不能继续坚持不是有没有素材可写,而是有没有时间整理了。往年这个时候,肯定会更新一下我的BLOG索引,把去年一年的文章添加进去,目前看是没有这个时间了,连我新的BLOG都没有来得及补充以往的文章,何况是这个BLOG索引了,况且很多索引文章的长度都超过了BLOG所支持的最大长度,如果要再细化,又是巨大的工作量,看看以后能不能想个简单的办法解决这个问题。 今年要比往年啰嗦很多,还是赶紧打住,去帮客户解决问题去了。
Posted in NEWS
Leave a comment
使用Huge Pages后数据库启动失败
在配置Huge Pages后,启动数据库反应很慢,数据库无法正常打开。 检查告警日志,发现下面的错误: Fri DEC 30 13:38:11 2011 Starting ORACLE instance (normal) ****************** Huge Pages Information ***************** Huge Pages memory pool detected (total: 34596 free: 34596) Memlock LIMIT too small: 67584000000 TO accommodate segment SIZE: 68587356160 Huge Pages allocation failed … Continue reading
Database Firewall管理员手册总结
最近手头的事情太多,导致文档虽然看完了,还没有动手进行过测试。 Firewall的大部分功能基本上理解了,此外Kamus在公司里面装了一套Firewall在进行测试,因此整个安装和配置的过程也有了一定了解,不过最近实在事情太多,腾不出功夫自己动手,等过一阵闲一点的时候打算深入测试一下Firewall的功能。 虽然目前Firewall在国内的销量还不是很好,但是随着国内企业对于安全性重视程度不断增加,在加上最近各种安全事故频出,相信不久以后,Firewall的市场会有很大的发展,因此现在多做些知识储备可以未雨绸缪。
Posted in BOOKS
Leave a comment
ORA-600(unable to load XDB library)错误
AIX上的9206数据库出现这个错误。 在alert文件中发现大量的类似错误: Mon DEC 19 16:43:13 2011 Errors IN file /oracle9/app/admin/db/udump/db1_ora_15400980.trc: ORA-00600: internal error code, arguments: [unable TO LOAD XDB library], [], [], [], [], [], [], []Mon Dec 19 16:43:13 2011 Errors in file /oracle9/app/admin/db/udump/db1_ora_15400980.trc: ORA-00600: internal error code, … Continue reading
Posted in BUG
Tagged aix, LD_LIBRARY_PATH, LIBPATH, ORA-600, unable to load XDB library
Leave a comment
ORA-600(17087)错误
客户数据库出现这个ORA-600错误。 错误信息为: Mon Jun 28 10:27:07 2010 Errors IN file /oracle/admin/ccicdb/udump/ccicdb_ora_767494.trc: ORA-00600: internal error code, arguments: [17087], [0x70000076C3E8E90], [], [], [], [], [], []Mon Jun 28 10:27:07 2010 Errors in file /oracle/admin/ccicdb/udump/ccicdb_ora_767494.trc: ORA-00600: internal error code, arguments: [17087], [0x70000076C3E8E90], [], … Continue reading
ORA-7445(kcrfw_update_blk_list)错误
客户的11.2数据库测试环境中碰到了ORA-7445(kcrfw_update_blk_list)错误。 详细的错误信息如下: Tue DEC 20 22:00:02 2011 BEGIN automatic SQL Tuning Advisor run FOR special tuning task "SYS_AUTO_SQL_TUNING_TASK" Tue DEC 20 22:00:46 2011 Exception [TYPE: SIGBUS, Non-existent physical address] [ADDR:0x62652000] [PC:0x216E0C4, kcrfw_update_blk_list()+196] [flags: 0x0, COUNT: 1] Errors IN file /u01/app/oracle/diag/rdbms/fhacdb/fhacdb/trace/fhacdb_lgwr_24506.trc … Continue reading
JDBC使用INSERT RETURN语句报错ORA-439
在给客户开发人员讲解LOB列的访问方式后,开发人员尝试在JDBC中使用包含RETURN的INSERT语句,但是出现了ORA-439错误。 检查后发现客户的程序使用的还是PreparedStatement语句,而RETURNING语句,则是Oracle扩展的SQL语法,因此在声明语句的时候必须使用OraclePreparedStatement方式进行声明。 除了修改SQL语句外,使用OraclePreparedStatement声明语句变量外,还需要注册输出参数,类似的代码如下: OraclePreparedStatement sqlstmt = (OraclePreparedStatement)conn.prepareStatement ("insert into t_lob values (?, ?, empty_clob()) returning contents into ?"); sqlstmt.setInt(1, 1); sqlstmt.setString(2, "a"); sqlstmt.registerReturnParameter(3, OracleTypes.CLOB); sqlstat.executeUpdate(); ResultSet resset = sqlstmt.getReturnResultSet(); IF (resset.next()) { CLOB contents = (CLOB)resset.getClob(2); … }OraclePreparedStatement sqlstmt = … Continue reading
Posted in ORACLE
Tagged getReturnResultSet, JDBC, lob, ORA-439, OraclePreparedStatement, registerReturnParameter, RETURN
Leave a comment
插入LOB对象的方法
其实以前写过类似的文章,但是都是在其他例子中,没有专门针对这个问题进行过描述,最近发现,还有很多人不清楚,插入一个包含LOB对象的记录需要几个步骤。 在客户的环境中,发现插入一条包含LOB的记录,居然用了四个步骤: SQL> CREATE TABLE T_LOB (ID NUMBER, NAME VARCHAR2(30), CONTENTS CLOB); 表已创建。 SQL> DECLARE 2 V_CLOB CLOB; 3 V_STR VARCHAR2(32767) := LPAD(’A’, 4000, ‘A’); 4 BEGIN 5 INSERT INTO T_LOB 6 VALUES (1, ‘A’, EMPTY_CLOB()); 7 SELECT CONTENTS 8 … Continue reading
批量加载性能案例
客户在大量加载数据是遇到性能问题,检查后发现客户采用的是单条插入单条提交这种最缓慢的方式,为了给客户说明优化效果,现场做了几个代码。 最简单的优化方式莫过于减少COMMIT频度,而最优化的方式是采用批量插入的方式,简单的测试代码如下: SQL> CREATE TABLE T_INSERT (ID NUMBER, NAME VARCHAR2(30)); TABLE created. SQL> SET TIMING ON SQL> BEGIN 2 FOR I IN 1..100000 LOOP 3 INSERT INTO T_INSERT VALUES (I, ‘A’ || I); 4 COMMIT; 5 END LOOP; 6 END; … Continue reading