触发器和函数使用了游标,结果出现“Oracle ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小”错误,需要将sga值设置得大一些,并且清空sga。
使用
sql>alter system set db_cache_siza=****** scope=spfile;
正常执行。
结果重启发现,oracle起不来了,出现ora-00384错误,因为memory_target=sga+pga,但是memory_target<sga,就会出问题,oracle居然不提示参数错误。
此时需要
c>sqlplus /nolog
sql>connect / as sysdba
sql>create pfile='/home/oracle/initora11g.ora' from spfile;--- 不一定叫这个名字,找安装文件夹,然后找最近修改的那个ora就行了
File created.
SQL> host echo "memory_target=367001600" >> /home/oracle/initora11g.ora---我在这一步是用notepad手工修改的memory_target的值
SQL> startup pfile=/home/oracle/initora11g.ora
ORACLE instance started.Total System Global Area 267825152 bytesFixed Size 1299316 bytesVariable Size 176163980 bytesDatabase Buffers 88080384 bytesRedo Buffers 2281472 bytesDatabase mounted.Database opened.
SQL> create spfile from pfile='/home/oracle/initora11g.ora'
File created.
还有一个原因如下:
远程发送过来的数据的定义为char(3),接口表为char(1),修改了该接口表的字段长度定义,但相关的sp的相应字段定义没有修改,导致出现错误,彻底修改后即可。
另:数据类型也要检查,一定要一致,否则出错。