oracle clob raw 转换,ORA-22835: 缓冲区对于 CLOB 到 CHAR 转换或 BLOB 到 RAW 转换而言太小...

报错信息:

Tue Jan 06 09:34:24 2015

Errors in file /ggs/oracle_log/diag/rdbms/orayy3/oyy3a/trace/oyy3a_ora_10028532.trc:

ORA-22835: 缓冲区对于 CLOB 到 CHAR 转换或 BLOB 到 RAW 转换而言太小 (实际: 9419, 最大: 4000)

Tue Jan 06 09:34:31 2015

Errors in file /ggs/oracle_log/diag/rdbms/orayy3/oyy3a/trace/oyy3a_ora_39191072.trc:

ORA-22835: 缓冲区对于 CLOB 到 CHAR 转换或 BLOB 到 RAW 转换而言太小 (实际: 12131, 最大: 4000)

Tue Jan 06 09:34:45 2015

Errors in file /ggs/oracle_log/diag/rdbms/orayy3/oyy3a/trace/oyy3a_ora_39191072.trc:

ORA-22835: 缓冲区对于 CLOB 到 CHAR 转换或 BLOB 到 RAW 转换而言太小 (实际: 5375, 最大: 4000)

Tue Jan 06 09:34:50 2015

Errors in file /ggs/oracle_log/diag/rdbms/orayy3/oyy3a/trace/oyy3a_ora_48103584.trc:

ORA-22835: 缓冲区对于 CLOB 到 CHAR 转换或 BLOB 到 RAW 转换而言太小 (实际: 4607, 最大: 4000)

Tue Jan 06 09:35:26 2015

[oracle@c4oyy3a] /arch5>more /ggs/oracle_log/diag/rdbms/orayy3/oyy3a/trace/oyy3a_ora_10028532.trc

Trace file /ggs/oracle_log/diag/rdbms/orayy3/oyy3a/trace/oyy3a_ora_10028532.trc

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

With the Partitioning, Real Application Clusters, OLAP, Data Mining

and Real Application Testing options

ORACLE_HOME = /oracle/app/oracle/product/11.2.0/dbhome_1

System name:    AIX

Node name:      c4oyy3a

Release:        1

Version:        6

Machine:        00F6FA744C00

Instance name: oyy3a

Redo thread mounted by this instance: 1

Oracle process number: 1782

Unix process pid: 10028532, image: oracle@c4oyy3a

*** 2015-01-06 09:34:24.121

*** SESSION ID:(2339.62773) 2015-01-06 09:34:24.121

*** CLIENT ID:() 2015-01-06 09:34:24.121

*** SERVICE NAME:(orayy3) 2015-01-06 09:34:24.121

*** MODULE NAME:(JDBC Thin Client) 2015-01-06 09:34:24.121

*** ACTION NAME:() 2015-01-06 09:34:24.121

ORA-22835: 缓冲区对于 CLOB 到 CHAR 转换或 BLOB 到 RAW 转换而言太小 (实际: 9419, 最大: 4000)

Dump of memory from 0x0700000BD4F54350 to 0x0700000BD4F54BA0

700000BD4F54350 77697468 20736572 76696365 7461736B [with servicetask]

700000BD4F54360 4C697374 20617320 20202873 656C6563  [List as   (selec]

700000BD4F54370 7420746F 5F636861 7228776D 5F636F6E [t to_char(wm_con]

700000BD4F54380 63617428 73742E73 65727669 63656E6F  [cat(st.serviceno]

700000BD4F54390 29292073 65727669 63656E6F 2C20746F  [)) serviceno, to]

700000BD4F543A0 5F636861 7228776D 5F636F6E 63617428  [_char(wm_concat(]

700000BD4F543B0 64696374 322E6469 63746E61 6D652929  [dict2.dictname))]

700000BD4F543C0 20736572 76696365 6E6F6E61 6D652020  [ servicenoname  ]

700000BD4F543D0 20202020 66726F6D 20646963 745F6974  [    from dict_it]

700000BD4F543E0 656D2064 69637432 2C206D6D 5F776B5F  [em dict2, mm_wk_]

700000BD4F543F0 73657276 69636574 61736B20 73742020  [servicetask st  ]

700000BD4F54400 20202077 68657265 20646963 74322E67  [   where dict2.g]

700000BD4F54410 726F7570 6964203D 2073742E 73657276  [roupid = st.serv]

700000BD4F54420 69636574 79706569 64202020 20616E64  [icetypeid    and]

700000BD4F54430 20646963 74322E64 69637469 64203D20  [ dict2.dictid = ]

700000BD4F54440 73742E73 65727669 63656E6F 20202020  [st.serviceno    ]

700000BD4F54450 616E6420 73742E72 6567696F 6E203D20  [and st.region = ]

700000BD4F54460 35333020 20202061 6E642073 742E736F  [530    and st.so]

700000BD4F54470 75726365 6F696420 3D203A31 292C2020  [urceoid = :1),  ]

700000BD4F54480 20736D6D 734C6973 74206173 20202028  [ smmsList as   (]

700000BD4F54490 73656C65 63742074 6F5F6368 61722877  [select to_char(w]

700000BD4F544A0 6D5F636F 6E636174 28736D6D 732E7365  [m_concat(smms.se]

700000BD4F544B0 72766E75 6D626572 29292073 6572766E  [rvnumber)) servn]

700000BD4F544C0 756D6265 722C2074 6F5F6368 61722877  [umber, to_char(w]

700000BD4F544D0 6D5F636F 6E636174 28736D6D 732E7365  [m_concat(smms.se]

700000BD4F544E0 72766E61 6D652929 20736572 766E616D  [rvname)) servnam]

700000BD4F544F0 65202020 20202066 726F6D20 6D6D5F77  [e      from mm_w]

700000BD4F54500 6B5F736D 6D732073 6D6D7320 20202020  [k_smms smms     ]

700000BD4F54510 77686572 6520736D 6D732E72 6567696F  [where smms.regio]

700000BD4F54520 6E203D20 35333020 20202061 6E642073  [n = 530    and s]

700000BD4F54530 6D6D732E 62617463 68696420 3D203A32  [mms.batchid = :2]

700000BD4F54540 29202020 20202020 20205345 4C454354  [)         SELECT]

700000BD4F54550 20534552 564C4F47 2E4F4944 204F4944  [ SERVLOG.OID OID]

700000BD4F54560 2C202020 20202020 20205345 52564C4F  [,         SERVLO]

700000BD4F54570 472E5245 47494F4E 2C202020 20202020  [G.REGION,       ]

700000BD4F54580 20205345 52564C4F 472E5345 52564943  [  SERVLOG.SERVIC]

700000BD4F54590 45545950 4549442C 20202020 20202020  [ETYPEID,        ]

700000BD4F545A0 20202020 20202020 20202020 20202020  [                ]

从trc文件里可以看出,当时影响ORA错误的语句如下:

with servicetaskList as   (select to_char(wm_concat(st.serviceno)) serviceno, to_char(wm_concat(dict2.dictname)) servicenoname      from dict_item dict2, mm_wk_servicetask st     where dict2.groupid = st.servicetypeid    and dict2.dictid = st.serviceno    and st.region = 530    and st.sourceoid = :1),   smmsList as   (select to_char(wm_concat(smms.servnumber)) servnumber, to_char(wm_concat(smms.servname)) servname      from mm_wk_smms smms     where smms.region = 530    and smms.batchid = :2)         SELECT SERVLOG.OID OID,         SERVLOG.REGION,         SERVLOG.SERVICETYPEID,                                    (select st.serviceno from servicetaskList st) serviceno,           (select st.servicenoname from servicetaskList st) servicenoname,           (select smms.servnumber from smmsList smms) LINKPHONE,           (select smms.servname from smmsList smms) NAME,           servlog.CHIEFCUSTMGR,           servlog.SENDSMS,                              SERVLOG.CUSTNO CUSTNO,         SERVLOG.CUSTNAME CUSTNAME,         SERVLOG.SERVICEMETHOD,         TO_CHAR(SERVLOG.SERVICEDATE, 'YYYY-MM-DD HH24:MI:SS') SERVICEDATE,         SERVLOG.SERVICECONTENT SERVICECONTENT,         SERVLOG.SOURCEOID SOURCEOID,         SERVLOG.CUSTTYPE CUSTTYPE,         SERVLOG.STATUS,         SERVLOG.CUSTOMERTYPE,         (SELECT T.RESNAME            FROM T_PUB_SRVRESOURCE T           WHERE T.OID = to_number(SERVLOG.RESID)) RESID,         SERVLOG.RESNUM,         SERVLOG.TOUCHSUCCEED,         SERVLOG.CONCERTDEGREE,         SERVLOG.SATISFYDEGREE,         SERVLOG.EVALUATESTAFFNO,         (SELECT OPER.OPERNAME || '[' || SERVLOG.EVALUATESTAFFNO || ']'            FROM OPERATOR OPER           WHERE OPER.OPERID = SERVLOG.EVALUATESTAFFNO) EVALUATESTAFFNAME,                      SERVLOG.MEMBERTYPE,                 (      SELECT SIGN.LONGITUDE FROM MM_MK_CUSTMGR_SIGN SIGN WHERE SIGN.REGION = 530 AND SIGN.OID=SERVLOG.OID      ) LONGITUDE,      (      SELECT SIGN.LATITUDE FROM MM_MK_CUSTMGR_SIGN SIGN WHERE SIGN.REGION = 530 AND SIGN.OID=SERVLOG.OID      ) LATITUDE    FROM MM_WK_COMMONWORKLOG SERVLOG   WHERE SERVLOG.OID = :3

问题分析:

该语句多处使用wm_concat()这个函数转换,这个函数的功能是列转行以逗号分隔;

正因如此,假如查询的结果很多,to_char(vm_concat()) 超过4000时会报错,因为varchar2最大字节4000;

解决方法:

1.减少查询的返回结果集;

2.可能通过to_char(substr(vm_concat()))来截取字符串长度

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值