建立外部表 发生ORA-29913错误
CREATE TABLE log_tab ( text VARCHAR2(80) )
ORGANIZATION EXTERNAL (
TYPE oracle_loader
DEFAULT DIRECTORY alertlog
    ACCESS PARAMETERS (        
        RECORDS DELIMITED BY NEWLINE
    )
LOCATION('orcl_opt_log.log')
)
REJECT LIMIT 999999999;
/建立成功后
SELECT *
FROM   ALERT_TAB
WHERE  TEXT LIKE '%INS_%';
报告
ORA-29913 ...
ORA-29400
KUP-04020 found record longer than buffer size supported 514288, in e:\log\orcl_opt_log.log

解决方案 »

  1.   

     text VARCHAR2(80)-- 肯定在你的外部表文件中有某行数据超过了80个字节。
      

  2.   

    -- 我一般是这样定义的(监控报警日志文件中的报错信息)
    CREATE TABLE "DATA_MONITOR"."TB_ALERT_INFO" 
       ( "TEXT" VARCHAR2(400 BYTE)
       ) 
       ORGANIZATION EXTERNAL 
        ( TYPE ORACLE_LOADER
          DEFAULT DIRECTORY "ALERT_DIR"
          ACCESS PARAMETERS
          ( records delimited by newline
          nobadfile
          nodiscardfile
          nologfile
            )
          LOCATION
           ( 'alert_ORCL.log'
           )
        )
       REJECT LIMIT UNLIMITED;
      

  3.   

    我测试过了,
    text clob都不行你给的例子也还是这个错误
      

  4.   

    给你个例子:--使用外部表访问alert文件:SQL> create directory bdump as
    2 'E:oracleproduct10.2.0admintestbdump'
    3 ;目录已创建。SQL> create table alert_log(
    2 log_text varchar2(4000)
    3 )
    4 organization external
    5 (
    6 type oracle_loader
    7 default directory bdump
    8 access parameters
    9 (
    10 records delimited by newline
    11 nobadfile
    12 nodiscardfile
    13 nologfile
    14 )
    15 location('alert_test.log')
    16 )
    17 reject limit unlimited
    18 /表已创建。SQL> select count(*) from alert_log;COUNT(*)
    ----------
    165510SQL> SELECT COUNT(*) FROM ALERT_LOG WHERE LOG_TEXT LIKE 'ORA-%';COUNT(*)
    ----------
    57402