我有使用Oracle db的java web应用程序。 Web应用程序使用hibernate。 我有2个oracle实例 - 第一个在服务器中,第二个在本地虚拟linux机器中。
当我连接到本地oracle实例时,我得到了
ORA-01792:表或视图中的最大列数为1000
异常。但是,当我连接到oracle(在服务器中)时,不会得到该异常。我正在做同样的动作和转储是一样的。所以我认为oracle存在问题。 也许一些配置是不同的。
有人能告诉我oracle服务器之间可能存在哪些区别导致这种情况?
更新。来自stacktrace的一些部分
Caused by: org.hibernate.exception.SQLGrammarException: could not initialize a collection:
Caused by: java.sql.SQLSyntaxErrorException: ORA-01792: maximum number of columns in a table or view is 1000
答案 0 :(得分:5)
ORA-01792:表或视图中的最大列数为1000
此限制不仅适用于表格和观看次数,还适用于临时内联视图和临时内部内存Oracle在执行子查询时创建的表。
例如,
Oracle基于合并选择创建临时内联视图,因此在此临时内联视图中实现了相同的限制。因此,您需要确保子选择或子查询中的列数也不会超过此1000
的限制。< / p>
引起:org.hibernate.exception.SQLGrammarException:无法初始化集合:
以上错误表示您尝试创建的集合超出列数允许的限制,即列总数超过{{1} }。
答案 1 :(得分:1)
要避免此异常并跳过此限制的检查,您可以设置_fix_control参数, 像:
ALTER SESSION SET“_fix_control”='17376322:OFF'
或
ALTER SYSTEM SET“_fix_control”='17376322:OFF'
(适用于Oracle 12.1.0.2标准版和企业版)