您的位置:首页 > 数据库 > Oracle

ORACLE 常见错误及解决汇总 ORA-20000 ORA-03113 ORA-14452 ORA-08103

2010-12-30 11:04 1376 查看
ORACLE 使用过程中,及调试plsql脚本过程中,碰到的错误,及其解决办法。不断更新...

 

 

 

 

 

ORA-20000 问题的解决:
 

ORA-20000: 是因为overflow,一般方法为设置值大一些。

set long 10000; 
set linesize 10000; 
set serverout on size 10000; 

 

下面是可能出现的几种情况。

 

1  ORU-10027:buffer overflow limit of 2000 bytes;

[b][b][b][b][b][b][/b][/b][/b][/b][/b][/b]

[b][b][b][b][b][b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b][b] [/b][/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][/b][/b][/b][/b][/b][/b]方法1:set serveroutput on size 10000000 //设置大点,默认为2000 bytes
方法2:exec dbms_output.enable(999999999999999999999); //默认为2000 bytes

 

2  ORU-10028:line length overflow,limit of 255 chars per line ;

oracle 10g release2中取消了255个字节的限制。之前的版本,会有255字节的限制。

 

上面的设置调整都不起作用。在10.2前的版本,对于不太长的内容,可以使用SUBSTR函数来解决这个问题。不确定长度的,目前还没找到解决办法。

 

 

 

 

 

 

 

 

 

ORA-03113 ,ORA-03114

    多表查询full outer join的时候,可能会出现ORA-03113:end-of-file on communication channel ,ORA-03114:not connected to ORACLE错误。原因之一是oracle底层的BUG。

    解决方法:

    方法1   将数据库打补丁,升级至10.2.0.4.0及以上。
    方法2   如果不能升级数据库,那么也可以使用left outer join和right outer join查询,然后union all两个结果集来得到full outer join的结果。
 

 

ORA-14452

ORA-14452  attempt to create, alter or drop an index on temporary table already in use

 

    创建更改或者删除临时表操作时,产生的错误,因为表还有session在使用。或者表中还有数据。
可能的解决方法
方法1  查看临时表的使用情景,是否是要用到事务级的临时表。
方法2  在删除表前,先trancate表数据。
方法3  kill掉使用的session(会影响到其他session的操作)
 

查出使用该临时表的session:

    sql>select ss.sid, ss.SERIAL#, ss.PROGRAM, ss.OSUSER, ss.SCHEMANAME, ss.MACHINE, ss.TERMINAL
    from v$lock l, user_objects o, v$session ss
    where ss.SID = l.SID  and l.ID1 = o.OBJECT_ID  and o.OBJECT_NAME = 'TTEMP_KHZLDR'
 

 

根据查到的sid和serial#,把session kill掉。
    sql>alter system kill session 'sid, serial#';
 

ORA-08103
ORA-08103: object no longer exists

 

产生:存储过程用到了临时表。

纠错:在提交后使用了临时表中的数据。查看是否设置了自动提交,或者事务提交前,使用时表数据已经被清空或表被删除。

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息