Jer*_*oen 6 oracle oracle-11g-r2 oracle-12c
我们最近将服务器从 Oracle 11 迁移到 Oracle 12c,但遇到了一些烦人的问题。其中之一是一些报告给出了以下错误:
ORA-01792: 表或视图中的最大列数为 1000
好的,好的,我知道必须有一些限制。问题是该查询以前工作过,而且我认为数据库没有理由加载所有列。查询中没有一个表的列数超过 1000。结合他们可以有。因此,如果我从所有内容中选择 *;我知道输出会遇到限制,因为结果集实际上与视图/表相同(是吗?我只是在这里猜测?)
“问题查询”多次连接一堆大表和一些小表,所以是的,总列数可能超过 1000。
但是,查询仅选择 30 列左右。添加用于连接的字段,甚至可能是索引在后台使用的一些其他字段,它可能会添加多达 50 到 70 列来执行查询。所有这些信息都在查询和表信息中得到了很好的定义。那么为什么 DB 甚至会关心所有额外的列呢?
到目前为止,我读过的解决方案是更改查询或禁用此警告/错误。这两个对我来说都不是解决方案。我能想到的禁用警告的唯一原因是 Oracle 决定更早地通知用户,并且这个“问题”在两个版本的后台都存在。
关于这个的任何想法?或者我对如何处理“大”查询的理解?
ato*_*pas 12
根据 My Oracle Support,ORA-01792
是由于未发布的错误引起的。
Oracle 建议更改查询和/或视图定义以避免错误。但是,在无法调整 SQL 的情况下,可以通过以下方式禁用检查:
SQL> alter system set "_fix_control"='17376322:OFF';
Run Code Online (Sandbox Code Playgroud)
或者,可以应用临时补丁(补丁 19509982)来默认禁用该错误。
参考:
归档时间: |
|
查看次数: |
34998 次 |
最近记录: |