|
Как установить NLS_LENGTH_SEMANTICS при импорте схемы из дампа?
|
|||
---|---|---|---|
#18+
Vivat!SanПравильный Васяпочему изменение nls_length_semantics на уровне системы не приводит к правильному импорту? Потому что кто-то не понимает как это работает. Читайте эту статью на MOS, там есть ответы на все вопросы: Examples and limits of BYTE and CHAR semantics usage (NLS_LENGTH_SEMANTICS) (Doc ID 144808.1) сам-то читал? и что автор не так сделал? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2019, 17:43 |
|
Как установить NLS_LENGTH_SEMANTICS при импорте схемы из дампа?
|
|||
---|---|---|---|
#18+
DВАПравильный Васясделал бы в обычном hex-редакторе а додуматься таким же макаром увеличить размерность столбца, не? Ну, как вариант, хотя это немногим легче ковыряния в каждой импортнутой таблице. Ведь их много, и нет внятного шаблона массовой замены типа BYTE -> CHAR. Кроме того, количество знакомест не везде сохранится в дампе при замене. Да и самое главное - останется ведь BYTE, если я правильно понимаю. А хотелось бы все-таки CHAR. DВАМожет потому что ORA-12899: значение для столбца "U99"."AB"."SPEC_COMMENT" слишком велико (фактическое: 115, максимальное: 100) а DESC показывает VARCHAR(30) Ну, тут 30 - это просто пример показа формата (без спецификатора длины), а не конкретная величина конкретного поля, бо их там сотни. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2019, 18:52 |
|
Как установить NLS_LENGTH_SEMANTICS при импорте схемы из дампа?
|
|||
---|---|---|---|
#18+
А ты давай конкретную величину конкретного поля для данной конкретной ошибки Ну, чтоб обсуждать можно было конкретно Проверь, какая семантика используется для конкретного столбца -- ALL_TAB_COLUMNS.CHAR_USED (и сколько поместится символов текущей кодировки CHAR_LENGTH). Да и точный тип поля Есть подозрение, что ты выгрузил из одной многобайтной кодировки (с семантикой CHAR), но которая считает, что символу достаточно 1-2 байт, в другую многобайтную кодировку, в которой размер символа (в байтах) будет больше. Правда, это должно было выстрелить только на предельных размерах (2000-4000 байт), но чем черт не шутит. И еще, насколько помню, в некоторых версиях 9-ки можно было установить AL16UTF16 в качестве дефолтовой кодировки и это создавало подобные проблемы exp/imp Так что, чисто для конкретики, желательно знать исходную и целевую кодировки ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2019, 02:44 |
|
Как установить NLS_LENGTH_SEMANTICS при импорте схемы из дампа?
|
|||
---|---|---|---|
#18+
РЕШЕНИЕ НАЙДЕНО. Как оказалось, ALTER SYSTEM здесь бесполезно. Как видно на скриншоте заголовка дампа, прямо в нем прописываются некоторые значимые сессионные параметры, используемые при импорте. Примеры выделены красным. CHAR - это уже исправленное мной в HEX-редакторе (наугад, но помогло) значение NLS_LENGTH_SEMANTICS, которое до этого было BYTE. А рядом - скорее всего PLSQL_CODE_TYPE = { INTERPRETED | NATIVE } Кстати, перед созданием каждого PL/SQL-объекта в дампе тоже присутствует Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2019, 20:01 |
|
Как установить NLS_LENGTH_SEMANTICS при импорте схемы из дампа?
|
|||
---|---|---|---|
#18+
Правильный Вася РЕШЕНИЕ НАЙДЕНО. Забавненько. Даже пошел почитал. В Doc ID 756180.1 сказано, что exp/imp сохраняют semantics источника и не позволяют перебить, рекомендуют expdp, который понятным причинам не вариант для 9i. В Doc ID 313175.1 рассказывают как решить проблему "штатно" - обычная трехходовка, imp rows=N, скрипт, импорт строк. Я бы до кучи попробовал изменить семантику скриптом прямо в таблицах на источнике (если тот физически доступен) перед экспортом. Источник не сломается, ибо монобайту пофиг. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2019, 20:50 |
|
|
start [/forum/topic.php?fid=52&msg=39805552&tid=1882554]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 142ms |
0 / 0 |