公司开发出来的系统,由于各现场oracle数据库版本有10.2.0.4、11.2.0.1、11.2.0.3、11.2.0.4;
进而会导致版本不一导致错误问题。下面列举2个:
1.wm_concat 函数问题
由于本地开发、测试环境都是10.2.0.4,该函数运行正常,后来问题现场版本是11g,导致该函数报错。
后来经过排查,wm_concat这个函数中10.2.0.4之前返回都是varchar2类型,到10.2.0.5及以上版本返回为clob类型,
而返回的临时clob类型会时临时表空间一直增长。在11g里面推出了新函数listagg建议替代该函数。
但由于个现场数据库版本不一,即使改成里listagg,又会导致低版本不支持问题;
后来该问题的解决办法是:
从低版本(10.2.0.4一下)的oracle中拷贝如下三个文件到目标库:
$ORACLE_HOME/rdbms/admin/owmctab.plb、
$ORACLE_HOME/rdbms/admin/owmaggrs.plb、
$ORACLE_HOME/rdbms/admin/owmaggrb.plb。
然后删除wmsys用户,drop user wmsys cascade,再执行上述三个脚本。
2.sql语句 select * from tableA where exists (条件1) or exists (条件2) 报错
ORA-01790: expression must have same datatype as corresponding expression
现场环境是11.2.0.1。
该sql在10g环境正常,在11.2.0.3也正常。
后来该问题的解决办法:现场升级到11.2.0.3,问题解决。