На oracle 12c, совместимом с 12.0.0, изменено на расширенное с привилегиями sysdba. Теперь я могу создать таблицу со столбцом varchar2 (16000) и вставить строку > 4000 байт; но только при подключении как sysdba. При подключении как обычный пользователь, а не sysdba, я не могу играть с varchar2>4000 байт, выдается ошибка ORA-60019. Кто-нибудь может объяснить, почему? параметр max_string_size=extended and compatible=12.0.0 при входе в систему как пользователь, не являющийся sysdba.
Oracle 12c расширен для поддержки varchar2 › 4000 байт не работает для пользователя, который не является sysdba
Ответы (2)
Выполните следующие шаги и дайте мне знать, если проблема решена. Я прошу установить параметр еще раз, чтобы убедиться, что все в порядке.
1) Сделайте резервную копию вашего spfile (получите расположение spfile)
sqlplus / as sysdba
show parameter spfile;
2) Закройте базу данных.
sqlplus / as sysdba
shutdown immediate
3) Перезапустите базу данных в режиме UPGRADE.
startup upgrade
4) Измените настройку MAX_STRING_SIZE на EXTENDED.
alter system set MAX_STRING_SIZE ='EXTENDED' scope=spfile;
5)
sqlplus / as sysdba
@%ORACLE_HOME%\RDBMS\ADMIN\utl32k.sql
@%ORACLE_HOME%\RDBMS\ADMIN\utlrp.sql
Примечание. Сценарий utl32k.sql увеличивает максимальный размер столбцов VARCHAR2, NVARCHAR2 и RAW для представлений, где это требуется. Сценарий не увеличивает максимальный размер столбцов VARCHAR2, NVARCHAR2 и RAW в некоторых представлениях из-за способа написания SQL для этих представлений.
Скрипт rdbms/admin/utlrp.sql помогает перекомпилировать некорректные объекты. Вы должны быть подключены КАК SYSDBA для запуска скрипта.
6) Перезапустите базу данных в НОРМАЛЬНОМ режиме.
sqlplus / as sysdba
shutdown immediate
startup;
show parameter MAX_STRING_SIZE;
7) создать новую таблицу с типом данных столбца varchar2 размером более 4000.
Вы должны изменить свой файл "TNSNAMES.ORA" для подключения через PDB. Я был с той же проблемой. Я решил с информацией по ссылке ниже.
Причина такого поведения заключается в том, что вы находитесь в многопользовательской среде, т. е. в главном контейнере, называемом CDB («База данных контейнеров»), и любом количестве PDB («Подключаемые базы данных»).
CDB («контейнер») — это своего рода «системная» база данных, которая содержит фактические базы данных клиентов («подключаемые базы данных» или PDB). CDB не предназначена для получения каких-либо данных о клиентах. Все входит в одну или несколько PDB.
При подключении без указания какой-либо службы вы автоматически попадаете в БД. Параметр расширенных строк игнорируется для CDB: предел остается 4000 байт. Следующее подключается к CDB. Создание таблицы с длинной строкой отклоняется, как и в вашем случае: