Oracle ORA错误


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连接超时的错误。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值