小铁匠ME

导航

2013年8月5日 #

由 OR 引起的死循环

摘要: 在客商迁移测试时,程序一旦开始执行就不能自动停止。只能通过手动中断应用服务器的进程来停止。检查迁移的一个表,这个表迁移前没有数据,迁移最多会插入3w条左右数据,但是迁移过程执行2个多小时候再看,已经有32G了。 首先,这个表没有blob等大对象字段,按正常情况肯定不会占用32G空间。因为整个迁移过程是一个事务,迁移不结束无法查看这个表的真实行数。这个时候怀疑程序有死循环。开发在联测代码时,发现下面这个SQL,第一次查询后,后面不管第几次查都跟第一次结果一样,这也就是导致死循环的原因。下面看下这个SQL:select pk_cubasdoc from (select row_number... 阅读全文

posted @ 2013-08-05 13:30 小铁匠ME 阅读(325) 评论(0) 推荐(0) 编辑

隐式类型转换导致索引列不走索引

摘要: 请记住:Oracle一般都会根据统计信息生成相对高效的执行计划,如果没有,那肯定是有理由的。不要慌乱,需要仔细分析原因。测试数据:SQL> select count(*) from t2; COUNT(*)---------- 106688SQL> create index i_t2_objectid on t2(object_id);索引已创建。SQL> analyze table t2 compute statistics for table for all indexes for all indexed columns;表已分析。SQL> desc t2; 名称 阅读全文

posted @ 2013-08-05 11:43 小铁匠ME 阅读(2140) 评论(0) 推荐(0) 编辑

重复数据插入unique列时,锁加在哪?

摘要: 1.测试目的当插入重复数据到有unique索引的表中时,采用何种加锁机制。2.测试思路利用10046确定是什么操作导致加锁阻塞了进程;dump锁定前最近一次操作的块结构来分析加锁机制。3.测试环境SQL> select * from v$version where rownum=1;BANNER-----------------------------------------------------------------Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production4.测试过程表test2及其 阅读全文

posted @ 2013-08-05 11:21 小铁匠ME 阅读(423) 评论(0) 推荐(0) 编辑

cursor_sharing

摘要: CURSOR_SHARINGPropertyDescriptionParameter typeStringSyntaxCURSOR_SHARING = { EXACT | FORCE }Default valueEXACTModifiableALTER SESSION,ALTER SYSTEMBasicNoCURSOR_SHARINGdetermines what kind of SQL statements can share the same cursors.Values:FORCEAllows the creation of a new cursor if sharing an exis 阅读全文

posted @ 2013-08-05 11:00 小铁匠ME 阅读(470) 评论(0) 推荐(0) 编辑