1、ORA-64203
执行代码:to_char(content)
错误如下:ORA-64203: 目标缓冲区太小, 无法容纳字符集转换之后的 CLOB 数据。
报错原因:在网上查询了一下,应该是由于content字段是clob字段,字符长度超过了char类型的缓冲区最大限制,所以才报错的。
解决方法:通过dbms_lob.substr 函数取出子串,然后通过 || 拼接起来,比如:
select DBMS_LOB.SUBSTR(content,4000,1) ||
DBMS_LOB.SUBSTR(content,4000,4001) ||
DBMS_LOB.SUBSTR(content,4000,8001) ||
DBMS_LOB.SUBSTR(content,4000,12001)
from xxx;
2、ORA-30036
执行代码:存储过程
错误如下:ORA-30036: 无法按8扩展段(在还原表空间‘UNDOTBS’中) 。
报错原因:在网上查询了一下,由于commit之前,存储过程中执行了update、insert等操作产生了大量的undo数据,导致undo表空间没有足够的空间来存储事务所产生的undo数据,才报的这个错误。
解决方法:通过扩展undo表空间的大小,就能解决 这个问题,比如:
alter database datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\UNTOTBS_01.DBF'
resize 2048M;
或者给undo表空间增加文件:
alter tablespace UNDOTBS add datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\undo02.dbf'
size 100m reuse;
另外,可以通过如下的语句,来查询undo表空间的使用情况,包括:总的空间大小、以用空间、空闲空间、使用率:
SELECT a.tablespace_name AS tablespace_name ,
to_char(b.total / 1024 / 1024, 999999.99) AS "Total(MB)" ,
to_char(( b.total - a.free ) / 1024 / 1024, 999999.99) AS "Used(MB)" ,
to_char(a.free / 1024 / 1024, 999999.99) AS "Free(MB)" ,
to_char(ROUND(( total - free ) / total, 4) * 100, 999.99) AS Used_Rate
FROM ( SELECT tablespace_name ,
SUM(bytes) free
FROM DBA_FREE_SPACE
GROUP BY tablespace_name
) a
INNER JOIN ( SELECT tablespace_name ,
SUM(bytes) total
FROM DBA_DATA_FILES
GROUP BY tablespace_name
) b
ON a.tablespace_name = b.tablespace_name
WHERE a.tablespace_name = 'UNDOTBS1'
ORDER BY a.tablespace_name;
3、ORA-01762
执行代码:with as 写法
错误如下:ORA-01762 – vopdrv: view query block not in FROM
报错原因:由于with 中定义的查询,在后面没有用到,所以报错了,因为在写语句时,是一段一段写的,每写一段,就运行一段,一开始并没有报错(只运行了最后一段),但是越写越多时就报错了,在oracle 11g r2的环境,感觉是个bug。
解决方法:在最后的语句中用到了所有在with中定义的语句,就不报错了。
4、ORA-00947
执行代码:insert into t select 。。。
错误代码:ORA-00947: Not enough values 没有足够的值
报错原因:在执行insert语句时,目标表的列和 要插入的列,个数不一致。
5、ORA-12535
oracle双机热备模式下,tns为何不能监听虚拟ip?
用netca动态设置监听才可以正常访问数据库,否则会出现ora-12535连接超时的错误。
6、ORA-01427
执行存储过程:PROC_STORE_LONLAT_UPDATE
错误代码:ORA-01427: single-row subquery returns more than one row
报错原因:从字面上就可以看出是在单一行的子查询中,返回了多行,这种情况下就要改为 exists,或者是in,或者是表的关联
7、 ORA-12899
执行存储过程:call PROC_A_EXCEPTION
错误代码: ORA-12899: value too large for column "TT"."RPT_A_EXCEPTION"."LAST_ST_NAME" (actual: 228, maximum: 200)
报错原因:是由于表中某个字段的长度不够长,由于默认字符集是utf-8,而每个中文字符占用3个字节,所以超过了200个字节,增加字段长度就可以了。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/653220/viewspace-1982379/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/653220/viewspace-1982379/