ORA-01792: максимальное количество столбцов в таблице или представлении - 1000
У меня есть Java-приложение, использующее Oracle db.
В веб-приложении используется спящий режим.
У меня есть 2 экземпляра oracle - первый в сервере, второй - в локальной виртуальной машине linux.
Когда я подключаюсь к локальному экземпляру oracle в какой-то момент, я получаю
ORA-01792: максимальное количество столбцов в таблице или представлении 1000
исключение. Но когда я подключился к oracle (который находится на сервере), не получайте это исключение. Я делаю точно такое же действие, и дамп - то же самое. Так что я думаю, проблема в оракуле.
возможно, какая-то конфигурация отличается.
Может ли кто-нибудь сказать мне, что может быть различием между серверами оракула, что приводит к этой ситуации?
UPDATE. некоторые части из 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
Ответы
Ответ 1
ORA-01792: максимальное количество столбцов в таблице или представлении 1000
Этот предел применим не только к таблицам и представлениям, но также к временному встроенному представлению и временной внутренней памяти таблицы, которые Oracle создает при выполнении подзапроса.
Например,
Oracle создает временное встроенное представление, основанное на выборе слияния, поэтому на этом временном встроенном представлении реализовано одно и то же ограничение. Таким образом, вы должны убедиться, что количество столбцов в подвыборке или подзапроса также не превышает этот предел 1000
.
Вызвано: org.hibernate.exception.SQLGrammarException: не удалось инициализировать коллекцию:
Приведенная выше ошибка указывает на то, что вы пытаетесь создать коллекцию, которая превышает допустимый предел количества столбцов, то есть общее количество столбцов превышает 1000
.
Ответ 2
Чтобы избежать этого исключения и пропустить проверку этого предела, вы можете установить параметр _fix_control,
как:
ALTER SESSION SET "_fix_control" = '17376322: OFF'
или
ALTER SYSTEM SET "_fix_control" = '17376322: OFF'
(работает с Oracle 12.1.0.2 Standard и Enterprise)