暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle Listagg功能在12c中失败,但在具有相同数据的11g中可以正常工作

ASKTOM 2020-07-21
558

问题描述

嗨,汤姆,

最近我们的数据库从11.2.0.4.0迁移到12.1.0.2.0-生产。
因此,目前我们有两个数据库,一个是11g,另一个是12c。解决12c问题后,我们将关闭11g并向客户公开12c数据库。
迁移后,我们的一些报告开始在12c数据库中失败。主要是我在listagg函数中看到了这个问题。最初我认为数据长度超过4000,这就是它失败的原因,但是当我开始调查时,我发现相同的数据在11g中工作正常,数据长度约为3200,比4000小得多

我使用转储函数来检查它是否考虑输入类型为raw。但令我惊讶的是varchar2。并且转储函数不会在同一数据上引发任何错误,甚至长度函数也会引发错误。

Ora错误是:-
Ora-01489: 字符串串联的结果太长

我检查了MAX_STRING_SIZE设置为标准

我尝试使用不同的数据集,发现只要输入数据长度超过2000,我们就会在12c中收到此查询错误。

我已经请求dba团队将MAX_STRING_SIZE设置为Extended (和utl32k.sql),但是我不太确定解决方案是否可行,因为我没有得到问题的根本原因。但是我担心如果我们将这个参数值更改为extended,那么我们将无法将其更改回标准,如果我们面临任何问题,那么我们必须重建数据库。这将是一个大问题。

我需要你的帮助和宝贵的建议

专家解答

1) 您是否在升级中更改了字符集?
2) 而不是使用 “length” 检查数据,请尝试使用 “lengthb” 功能-查看它们是否超过4000

要进行更多调查,我们需要查看一些示例数据。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论