Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как установить NLS_LENGTH_SEMANTICS при импорте схемы из дампа? / 25 сообщений из 30, страница 1 из 2
08.04.2019, 21:46
    #39798425
Правильный Вася
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить NLS_LENGTH_SEMANTICS при импорте схемы из дампа?
ORA 12.2, дамп схемы сделан в 9.2, поэтому в дампе нет length qualifier для символьных типов.

При прямом импорте схемы ругается:
IMP-00019: строка отвергнута из-за ошибки ORACLE 12899
IMP-00003: ORACLE выдала ошибку 12899
ORA-12899: значение для столбца "U99"."AB"."SPEC_COMMENT" слишком велико (фактическое: 115, максимальное: 100)

Пытался указать NLS_LENGTH_SEMANTICS='CHAR' через переменные среды в винде. Не помогает.

Как импортнуть?
...
Рейтинг: 0 / 0
08.04.2019, 22:37
    #39798435
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить NLS_LENGTH_SEMANTICS при импорте схемы из дампа?
alter sysem
...
Рейтинг: 0 / 0
11.04.2019, 18:03
    #39800100
Правильный Вася
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить NLS_LENGTH_SEMANTICS при импорте схемы из дампа?
Не слишком ли это радикально?
Ведь эффект от этой команды мгновенный, значит, затронет всех юзеров.

Или можно так и оставить, не изменять назад на BYTE? Ничего не сломается в других местах?
(Я имею в виду, если при создании символьных поле явно указывать семантику длин, то эта настройка особого смысла не имеет?)
...
Рейтинг: 0 / 0
11.04.2019, 19:09
    #39800138
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить NLS_LENGTH_SEMANTICS при импорте схемы из дампа?
Правильный ВасяНе слишком ли это радикально?


Ну тогда DBMS_DATAPUMP. Или impdp в два этапа.

SY.
...
Рейтинг: 0 / 0
11.04.2019, 19:11
    #39800139
SeaGate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить NLS_LENGTH_SEMANTICS при импорте схемы из дампа?
Правильный ВасяНе слишком ли это радикально?
logon trigger.
...
Рейтинг: 0 / 0
11.04.2019, 19:37
    #39800149
Правильный Вася
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить NLS_LENGTH_SEMANTICS при импорте схемы из дампа?
Попробовал на отдельном сервере установить
Код: plsql
1.
ALTER SYSTEM SET nls_length_semantics='CHAR' container=CURRENT

После этого импорт все равно не идет, та же самая ошибка. Теперь уже не понимаю, почему...
В v$parameter видно, что значение CHAR, по идее должно помещаться...
...
Рейтинг: 0 / 0
11.04.2019, 22:01
    #39800196
Правильный Вася
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить NLS_LENGTH_SEMANTICS при импорте схемы из дампа?
SYimpdp в два этапа.
Это как? У меня только дамп 9.2, а его формат, насколько я знаю, несовместим с IMPDP.
...
Рейтинг: 0 / 0
12.04.2019, 07:42
    #39800267
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить NLS_LENGTH_SEMANTICS при импорте схемы из дампа?
Правильный ВасяПосле этого импорт все равно не идет, та же самая ошибка. Теперь уже не понимаю, почему...
В v$parameter видно, что значение CHAR, по идее должно помещаться...Ты глазками на ddl-и в дампе глянь. Может там byte гвоздями прибито.
9-шный экспорт выгружает явное указание char/byte, только если оно отличается от умалчиваемого.
...
Рейтинг: 0 / 0
12.04.2019, 07:48
    #39800270
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить NLS_LENGTH_SEMANTICS при импорте схемы из дампа?
SYНу тогда DBMS_DATAPUMP. Или impdp в два этапа.Можно поподробнее?
Кэйс: impdp-совместимая однобайтовая БД, в которой char/byte не указывался, а по умолчанию был байт. Это можно влить в мультибайтовую БД с преобразованием семантики в символьную?
...
Рейтинг: 0 / 0
12.04.2019, 20:39
    #39800761
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить NLS_LENGTH_SEMANTICS при импорте схемы из дампа?
ElicSYНу тогда DBMS_DATAPUMP. Или impdp в два этапа.Можно поподробнее?
Кэйс: impdp-совместимая однобайтовая БД, в которой char/byte не указывался, а по умолчанию был байт. Это можно влить в мультибайтовую БД с преобразованием семантики в символьную?

A, упустил у него export dump а не datapump. Тода можно imp rows=n затем "чиним" VARCHAR/CHAR поля c длинной в BYTE c той-же длинной в CHAR, disable FK, imp data_only=y, enable FK.

SY.
...
Рейтинг: 0 / 0
13.04.2019, 08:34
    #39800853
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить NLS_LENGTH_SEMANTICS при импорте схемы из дампа?
SYA, упустил у него export dumpКак раз наоборот, 9-шность дампа может дать возможность сменить семантику по умолчанию на уровне сеанса/экземпляра, потому что
Elic9-шный экспорт выгружает явное указание char/byte, только если оно отличается от умалчиваемого.

SYа не datapumpТак можно поподробнее?


SY"чиним" VARCHAR/CHAR поля c длинной в BYTE c той-же длинной в CHAR, disable FKFK, check, FBI, виртуальные колонки и прочее делают процесс "починки" сексуально нетривиальным.
...
Рейтинг: 0 / 0
13.04.2019, 17:49
    #39800927
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить NLS_LENGTH_SEMANTICS при импорте схемы из дампа?
ElicSYA, упустил у него export dumpКак раз наоборот, 9-шность дампа может дать возможность сменить семантику по умолчанию на уровне сеанса/экземпляра, потому что
Elic9-шный экспорт выгружает явное указание char/byte, только если оно отличается от умалчиваемого.

SYа не datapumpТак можно поподробнее?


SY"чиним" VARCHAR/CHAR поля c длинной в BYTE c той-же длинной в CHAR, disable FKFK, check, FBI, виртуальные колонки и прочее делают процесс "починки" сексуально нетривиальным.


Я делал в таком случае через indexfile, выбривая только таблицы
Кроме того, это позволяет менять tablespace

Но там свои засады с форматированием длинных строк, геморрой еще тот.

p.s. FBI для 9i не актуальны
...
Рейтинг: 0 / 0
13.04.2019, 18:50
    #39800936
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить NLS_LENGTH_SEMANTICS при импорте схемы из дампа?
Vadim Lejninp.s. FBI для 9i не актуальны

Это почему? FBI был еще в 8i. Но это не суть - придется компилировать (что довольно легко) весь импортируемый PL/SQL а не только FBI.

SY.
...
Рейтинг: 0 / 0
13.04.2019, 18:53
    #39800937
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить NLS_LENGTH_SEMANTICS при импорте схемы из дампа?
Да, забыл про триггеры - их тоже надо disable, imp, enable.

SY.
...
Рейтинг: 0 / 0
13.04.2019, 19:16
    #39800945
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить NLS_LENGTH_SEMANTICS при импорте схемы из дампа?
ElicFK, check, FBI, виртуальные колонки и прочее делают процесс "починки" сексуально нетривиальным.

1. Disable/enable FK & триггеры - элементарно
2. Поменять BYTE на CHAR через DBA_TAB_COLS - элементарно
3. Перекомпилировать PL/SQL - элементарно

Но все это только если ALTER SYSTEM, after logon trigger "слишком радикально" или какие то обьекты в экспорте имеют явно прописаный BYTE.

SY.
...
Рейтинг: 0 / 0
15.04.2019, 19:05
    #39801728
Правильный Вася
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить NLS_LENGTH_SEMANTICS при импорте схемы из дампа?
ElicТы глазками на ddl-и в дампе глянь. Может там byte гвоздями прибито.
Я еще в топике написал, что нету там length qualifier для символьных типов . Проверял ведь перед постом.
Стоят просто VARCHAR(30) или CHAR(3).

И
Код: plsql
1.
ALTER SYSTEM SET nls_length_semantics='CHAR'

не помогает, как я уже написал. Ругается теми же самыми кодами в тех же местах. Хотя явно видно, что в v$parameter стоит уже вместо BYTE значение CHAR.
...
Рейтинг: 0 / 0
15.04.2019, 19:12
    #39801730
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить NLS_LENGTH_SEMANTICS при импорте схемы из дампа?
Правильный ВасяElicТы глазками на ddl-и в дампе глянь. Может там byte гвоздями прибито.
Я еще в топике написал, что нету там length qualifier для символьных типов . Проверял ведь перед постом.
Стоят просто VARCHAR(30) или CHAR(3).

И
Код: plsql
1.
ALTER SYSTEM SET nls_length_semantics='CHAR'

не помогает, как я уже написал. Ругается теми же самыми кодами в тех же местах. Хотя явно видно, что в v$parameter стоит уже вместо BYTE значение CHAR.

А что говорит desc "U99"."AB"?
там char или byte?
...
Рейтинг: 0 / 0
15.04.2019, 20:24
    #39801753
Правильный Вася
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить NLS_LENGTH_SEMANTICS при импорте схемы из дампа?
Vadim Lejnin,
DESC показывает VARCHAR(30) без всяких модификаторов как для таблиц в этой схеме, так и в других, которые были созданы с NLS_LENGTH_SEMANTICS=BYTE до переключения на CHAR
...
Рейтинг: 0 / 0
16.04.2019, 01:08
    #39801808
DВА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить NLS_LENGTH_SEMANTICS при импорте схемы из дампа?
Vadim LejninКроме того, это позволяет менять tablespace

tablespace в дампе на ура меняется в режиме редактирования с сохранением длины строки.
Подозреваю изменение byte на char тоже вполне прокатит
...
Рейтинг: 0 / 0
16.04.2019, 08:59
    #39801863
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить NLS_LENGTH_SEMANTICS при импорте схемы из дампа?
DВАVadim LejninКроме того, это позволяет менять tablespace

tablespace в дампе на ура меняется в режиме редактирования с сохранением длины строки.
Подозреваю изменение byte на char тоже вполне прокатит
Именно так я и делал
Пркатывал через awk, дополнительно сносится initial
Что позволяет получить чистую схему

Но ... приходится контролировать скобки, бо imp тупо режет операторы по длине
...
Рейтинг: 0 / 0
16.04.2019, 10:46
    #39801945
Vivat!San
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить NLS_LENGTH_SEMANTICS при импорте схемы из дампа?
авторКак импортнуть?


работать с каждым полем отдельно, выгружать ddl и создавать уже модифицированную пустую таблицу.
В общем случае такое преобразование не всегда возможно,
представьте что у поля VARCHAR2 с 2-х байтной кодировкой типа 'CHAR' Вы хотите сделать 'BYTE'
и оно уже заполнено скажем на 3000 символов, даже увеличив поле до максимума данные Вы
там не сможете разместить.
...
Рейтинг: 0 / 0
16.04.2019, 10:53
    #39801953
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить NLS_LENGTH_SEMANTICS при импорте схемы из дампа?
Vivat!SanВы хотите сделать 'BYTE'О сколь предположений чудных готовит невниманья путь.
...
Рейтинг: 0 / 0
17.04.2019, 16:41
    #39802942
Правильный Вася
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить NLS_LENGTH_SEMANTICS при импорте схемы из дампа?
DВАв дампе на ура меняется в режиме редактирования с сохранением длины строки.
Подозреваю изменение byte на char тоже вполне прокатит
Если б было так просто, я бы и сам давно додумался и сделал бы в обычном hex-редакторе.
Но в моем дампе нет length qualifier для символьных типов , о чем я уже неоднократно писал.

А многоступенчатое "импортнуть только структуру, исправить в таблицах типы, импортнуть только данные" слишком трудозатратно, кода таблиц порядка 400 с множеством символьных полей, не говоря о других объектах, где тоже полно использований символьных типов.

И всё же - почему изменение nls_length_semantics на уровне системы не приводит к правильному импорту? Почему на него не действует это изменение? Может, для импорта как-то по-другому это нужно отдельно настраивать?

Или я вообще не в ту сторону изначально рою и причина сабжевой ошибки в чем-то другом?
...
Рейтинг: 0 / 0
17.04.2019, 16:49
    #39802948
DВА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить NLS_LENGTH_SEMANTICS при импорте схемы из дампа?
Правильный ВасяDВАв дампе на ура меняется в режиме редактирования с сохранением длины строки.
Подозреваю изменение byte на char тоже вполне прокатит
Если б было так просто, я бы и сам давно додумался и сделал бы в обычном hex-редакторе.
Но в моем дампе нет length qualifier для символьных типов , о чем я уже неоднократно писал.

а додуматься таким же макаром увеличить размерность столбца, не?


Правильный ВасяИ всё же - почему изменение nls_length_semantics на уровне системы не приводит к правильному импорту? Почему на него не действует это изменение? Может, для импорта как-то по-другому это нужно отдельно настраивать?

Или я вообще не в ту сторону изначально рою и причина сабжевой ошибки в чем-то другом?

Может потому что
ORA-12899: значение для столбца "U99"."AB"."SPEC_COMMENT" слишком велико (фактическое: 115, максимальное: 100)
а
DESC показывает VARCHAR(30)
...
Рейтинг: 0 / 0
17.04.2019, 17:26
    #39802990
Vivat!San
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить NLS_LENGTH_SEMANTICS при импорте схемы из дампа?
Правильный Васяпочему изменение nls_length_semantics на уровне системы не приводит к правильному импорту?

Потому что кто-то не понимает как это работает.
Читайте эту статью на MOS, там есть ответы на все вопросы:

Examples and limits of BYTE and CHAR semantics usage (NLS_LENGTH_SEMANTICS) (Doc ID 144808.1)
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как установить NLS_LENGTH_SEMANTICS при импорте схемы из дампа? / 25 сообщений из 30, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]