Tag Archives: rownum

ORA-7445(kkfipbr)错误

在客户的10.2.0.4 RAC for X86-64环境中碰到了这个错误。 错误信息为: Fri Apr 27 13:40:20 2012 Errors IN file /opt/app/oracle/admin/ora/udump/ora1_ora_1851.trc: ORA-07445: exception encountered: core dump [kkfipbr()+8] [SIGSEGV] [Address NOT mapped TO object] [0x000000000] [] [] 对应的TRACE文件内容为: *** 2012-04-27 13:40:20.422 ksedmp: internal OR fatal error ORA-07445: exception … Continue reading

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

小议ROWNUM

如何使用ROWNUM是个老生常谈的问题了,本来没有打算专门强调这个问题,但是最近在看Oracle的官方PL/SQL文档时发现了一个严重的错误,借这个机会还是简单说一下。 首先来看Oracle文档的描述,在10.2的PL/SQL文档中,Oracle关于PL/SQL中直接使用SELECT的查询描述为: Selecting At Most One ROW: SELECT INTO Statement IF you expect a query TO ONLY RETURN one ROW, you can WRITE a regular SQL SELECT statement WITH an additional INTO clause specifying the PL/SQL variable TO hold the … Continue reading

Posted in ORACLE | Tagged , | Leave a comment

查询条件为ROWNUM=1仍产生长时间等待

正常情况下,指定了ROWNUM=1会迅速的返回结果,但是也有异常的情况产生。 其实ROWNUM=1之所以可以快速的返回结果,是由于执行计划中采用了STOPKEY的方式,当查询到第一条符合要求的记录后,执行就中止了。 但是ROWNUM=1并非对所有情况都适用,比如如果内存查询包含GROUP BY操作,那么ROWNUM=1就无法推到GROUP BY查询内部,因此这时的ROWNUM=1的条件对于查询速度的提高就非常有限了。还有一种情况,在指定了一个限制条件后,加上ROWNUM=1后,发现查询效率仍然不高。这时因为表中满足指定限制条件的记录非常少或者根本没有,以致于Oracle要扫描全部表数据后才能返回结果。 但是客户碰到了的现象和上面描述的几种情况都不相符,查询只是一个单表查询,唯一的限制条件就是ROWNUM=1,没有GROUP BY和ORDER BY语句,语句就是简单到不能再简单的:select * from RTDRULETRACEHISTORY where rownum = 1。 检查了这个语句的执行计划,并未发现异常之处: Id Operation Name ROWS Bytes Cost (%CPU) TIME 0 SELECT STATEMENT 2 (100) 1 COUNT STOPKEY 2 TABLE ACCESS FULL RTDRULETRACEHISTORY 1 827 2 … Continue reading

Posted in ORACLE | Tagged , , | Leave a comment

ROWNUM固化外部表结果集存在问题(二)

在客户的11.2.0.2环境中碰到了这个问题,Oracle在处理包含ROWNUM固化的外部表加载数据时返回错误的结果。 这一篇描述利用ROW_NUMBER来避免错误的产生。 外部表构造描述可以参考:http://yangtingkun.net/?p=35 ROWNUM固化外部表结果集存在问题::http://yangtingkun.net/?p=38 这个例子是在本机上运行,因此只是告警日志的名称发生了变化,其他的语法和上一篇文章中的一致,当然D_ALERT目录需要指向background_dump_dest参数指定的路径: SQL> CREATE TABLE T_ALERT 2 (TEXT VARCHAR2(4000) 3 ) 4 ORGANIZATION EXTERNAL 5 (TYPE ORACLE_LOADER 6 DEFAULT DIRECTORY D_ALERT 7 ACCESS PARAMETERS 8 (RECORDS DELIMITED BY NEWLINE 9 FIELDS (TEXT (1:255) CHAR)) 10 LOCATION (’ … Continue reading

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

ROWNUM固化外部表结果集存在问题

在客户的11.2.0.2环境中碰到了这个问题,Oracle在处理包含ROWNUM固化的外部表加载数据时返回错误的结果。 外部表构造描述可以参考:利用外部表读取告警日志文件 客户环境中创建的外部表和上面链接中的例子几乎完全一致: SQL> CREATE TABLE T_ALERT 2 (TEXT VARCHAR2(4000) 3 ) 4 ORGANIZATION EXTERNAL 5 (TYPE ORACLE_LOADER 6 DEFAULT DIRECTORY D_ALERT 7 ACCESS PARAMETERS 8 (RECORDS DELIMITED BY NEWLINE 9 FIELDS (TEXT (1:255) CHAR)) 10 LOCATION (’alert_xshdb1.log’)); TABLE created. … Continue reading

Posted in BUG | Tagged , , | 2 Comments