oracle:数据库版本问题导致的bug

   公司开发出来的系统,由于各现场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,问题解决。

 

 

 

你可能感兴趣的:(oracle)