powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / NLS_ при импорте дампа
10 сообщений из 10, страница 1 из 1
NLS_ при импорте дампа
    #39363361
Adtain
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что то запутался я уже. Гляньте со стороны:

Имеем дамп БД, рабочий. При импорте проскакивает глупая ошибка: ORA-01847: day of month must be between 1 and last day of month . Она связана с тем, что в паре таблиц есть поле, которое требует дефолтного значения:
Код: plsql
1.
revokeddate        DATE default '4000-01-01' not null



А теперь подробности.
Дамп без проблем заливается на:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE	11.2.0.4.0	Production
TNS for 64-bit Windows: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production



Где:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
SQL> select * from nls_database_parameters order by 1;
PARAMETER                      VALUE
------------------------------ ----------------------------------------
NLS_CALENDAR                   GREGORIAN
NLS_CHARACTERSET               CL8MSWIN1251
NLS_COMP                       BINARY
NLS_CURRENCY                   $
NLS_DATE_FORMAT                DD-MON-RR
NLS_DATE_LANGUAGE              AMERICAN
NLS_DUAL_CURRENCY              $
NLS_ISO_CURRENCY               AMERICA
NLS_LANGUAGE                   AMERICAN
NLS_LENGTH_SEMANTICS           BYTE
NLS_NCHAR_CHARACTERSET         AL16UTF16
NLS_NCHAR_CONV_EXCP            FALSE
NLS_NUMERIC_CHARACTERS         .,
NLS_RDBMS_VERSION              11.2.0.4.0
NLS_SORT                       BINARY
NLS_TERRITORY                  AMERICA
NLS_TIMESTAMP_FORMAT           DD-MON-RR HH.MI.SSXFF AM
NLS_TIMESTAMP_TZ_FORMAT        DD-MON-RR HH.MI.SSXFF AM TZR
NLS_TIME_FORMAT                HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT             HH.MI.SSXFF AM TZR



Ну и тут все окей:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
SQL> SELECT v.NAME, v.DISPLAY_VALUE, v.ISDEFAULT FROM v$parameter v WHERE v.name LIKE '%nls%';
NAME                                                                             DISPLAY_VALUE                                                                    ISDEFAULT
-------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ---------
nls_language                                                                     AMERICAN                                                                         TRUE
nls_territory                                                                    AMERICA                                                                          TRUE
nls_sort                                                                         BINARY                                                                           TRUE
nls_date_language                                                                AMERICAN                                                                         TRUE
nls_date_format                                                                  DD-MON-RR                                                                        TRUE
nls_currency                                                                     $                                                                                TRUE
nls_numeric_characters                                                           .,                                                                               TRUE
nls_iso_currency                                                                 AMERICA                                                                          TRUE
nls_calendar                                                                     GREGORIAN                                                                        TRUE
nls_time_format                                                                  HH.MI.SSXFF AM                                                                   TRUE
nls_timestamp_format                                                             DD-MON-RR HH.MI.SSXFF AM                                                         TRUE
nls_time_tz_format                                                               HH.MI.SSXFF AM TZR                                                               TRUE
nls_timestamp_tz_format                                                          DD-MON-RR HH.MI.SSXFF AM TZR                                                     TRUE
nls_dual_currency                                                                $                                                                                TRUE
nls_comp                                                                         BINARY                                                                           TRUE
nls_length_semantics                                                             BYTE                                                                             TRUE
nls_nchar_conv_excp                                                              FALSE                                                                            TRUE
17 rows selected



С указанием перед impdb следующих строк: set NLS_DATE_FORMAT=YYYY-MM-DD и set NLS_TIMESTAMP_FORMAT=YYYY-MM-DD HH24:MI:SS
Да, потом если сделать insert в таблицу, ошибка снова выскочит, если мы не укажем alter session set... . Да это и не важно сейчас. Отрабатываются совершенно другие задачи.


И есть вот такой вот сервер БД на RedHat , со слов ранее грузивших, что было всё окей - потом сервак завис, ребутнули и начались проблемы.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
SQL> select * from v$version;
BANNER                                                                               CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production                0
PL/SQL Release 12.1.0.2.0 - Production                                                    0
CORE	12.1.0.2.0	Production                                                                0
TNS for Linux: Version 12.1.0.2.0 - Production                                            0
NLSRTL Version 12.1.0.2.0 - Production                                                    0



Где:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
SQL> select * from nls_database_parameters order by 1;
PARAMETER                                                                        VALUE
-------------------------------------------------------------------------------- ----------------------------------------------------------------
NLS_CALENDAR                                                                     GREGORIAN
NLS_CHARACTERSET                                                                 CL8MSWIN1251
NLS_COMP                                                                         BINARY
NLS_CURRENCY                                                                     $
NLS_DATE_FORMAT                                                                  YYYY-MM-DD
NLS_DATE_LANGUAGE                                                                RUSSIAN
NLS_DUAL_CURRENCY                                                                $
NLS_ISO_CURRENCY                                                                 AMERICA
NLS_LANGUAGE                                                                     AMERICAN
NLS_LENGTH_SEMANTICS                                                             BYTE
NLS_NCHAR_CHARACTERSET                                                           AL16UTF16
NLS_NCHAR_CONV_EXCP                                                              FALSE
NLS_NUMERIC_CHARACTERS                                                           .,
NLS_RDBMS_VERSION                                                                12.1.0.2.0
NLS_SORT                                                                         BINARY
NLS_TERRITORY                                                                    RUSSIA
NLS_TIMESTAMP_FORMAT                                                             YYYY-MM-DD HH24:MI:SS
NLS_TIMESTAMP_TZ_FORMAT                                                          DD-MON-RR HH.MI.SSXFF AM TZR
NLS_TIME_FORMAT                                                                  HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT                                                               HH.MI.SSXFF AM TZR


Вроде формат то и нужный стоит у NLS_DATE_FORMAT , но что то не то.


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
SQL> SELECT v.NAME, v.DISPLAY_VALUE, v.DEFAULT_VALUE, v.ISDEFAULT, v.ISSES_MODIFIABLE, v.ISSYS_MODIFIABLE, v.ISPDB_MODIFIABLE, v.ISINSTANCE_MODIFIABLE FROM v$parameter v WHERE v.name LIKE '%nls%';
NAME                                                                             DISPLAY_VALUE                                                                    DEFAULT_VALUE                                                                    ISDEFAULT ISSES_MODIFIABLE ISSYS_MODIFIABLE ISPDB_MODIFIABLE ISINSTANCE_MODIFIABLE
-------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- --------- ---------------- ---------------- ---------------- ---------------------
nls_language                                                                     AMERICAN                                                                         NULL                                                                             TRUE      TRUE             FALSE            TRUE             FALSE
nls_territory                                                                    AMERICA                                                                          AMERICAN                                                                         FALSE     TRUE             FALSE            TRUE             FALSE
nls_sort                                                                         BINARY                                                                           AMERICA                                                                          TRUE      TRUE             FALSE            TRUE             FALSE
nls_date_language                                                                AMERICAN                                                                         NONE                                                                             FALSE     TRUE             FALSE            TRUE             FALSE
nls_date_format                                                                  dd/mm/yyyy                                                                       NONE                                                                             FALSE     TRUE             FALSE            TRUE             FALSE
nls_currency                                                                     $                                                                                NONE                                                                             TRUE      TRUE             FALSE            TRUE             FALSE
nls_numeric_characters                                                           .,                                                                               NONE                                                                             TRUE      TRUE             FALSE            TRUE             FALSE
nls_iso_currency                                                                 AMERICA                                                                          NONE                                                                             TRUE      TRUE             FALSE            TRUE             FALSE
nls_calendar                                                                     GREGORIAN                                                                        NONE                                                                             TRUE      TRUE             FALSE            TRUE             FALSE
nls_time_format                                                                  HH.MI.SSXFF AM                                                                   NONE                                                                             TRUE      TRUE             FALSE            TRUE             FALSE
nls_timestamp_format                                                             DD-MON-RR HH.MI.SSXFF AM                                                         NONE                                                                             FALSE     TRUE             FALSE            TRUE             FALSE
nls_time_tz_format                                                               HH.MI.SSXFF AM TZR                                                               NONE                                                                             TRUE      TRUE             FALSE            TRUE             FALSE
nls_timestamp_tz_format                                                          DD-MON-RR HH.MI.SSXFF AM TZR                                                     NONE                                                                             TRUE      TRUE             FALSE            TRUE             FALSE
nls_dual_currency                                                                $                                                                                NONE                                                                             TRUE      TRUE             FALSE            TRUE             FALSE
nls_comp                                                                         BINARY                                                                           NONE                                                                             TRUE      TRUE             FALSE            TRUE             FALSE
nls_length_semantics                                                             BYTE                                                                             BINARY                                                                           TRUE      TRUE             IMMEDIATE        TRUE             TRUE
nls_nchar_conv_excp                                                              FALSE                                                                            BYTE                                                                             TRUE      TRUE             IMMEDIATE        TRUE             TRUE
17 rows selected



Запускаю импорт на Redhat без указания (NLS_DATE_FORMAT и NLS_TIMESTAMP_FORMAT) переменных окружения - ошибка. Указываю
Код: plaintext
1.
2.
export NLS_DATE_FORMAT="YYYY-MM-DD"
export NLS_TIMESTAMP_FORMAT="YYYY-MM-DD HH24:MI:SS"


через export.. тоже. Да даже если укажу совершенно другой формат через export - ничего.
Посмотрел файлик .bash_profile , в нем указаны как и должно быть:
Код: plaintext
1.
2.
export NLS_DATE_FORMAT="YYYY-MM-DD"
export NLS_TIMESTAMP_FORMAT="YYYY-MM-DD HH24:MI:SS"



Пробовал приводить региональные настройки в соответствии с виндовым сервером, через startup restrict , поменял только кодировку (NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251).
Вот так вот пробовал, различные примеры ( но неизменные переменные NLS ):
Код: plsql
1.
2.
3.
4.
alter system set NLS_TIMESTAMP_FORMAT='DD-MON-RR HH.MI.SSXFF AM' SCOPE=MEMORY;;
alter system set NLS_DATE_FORMAT='DD-MON-RR' SCOPE=SPFILE;
alter system set NLS_DATE_LANGUAGE=AMERICAN SCOPE=SPFILE;
alter system set NLS_TERRITORY=AMERICA;


Потом уже понял, что скорее всего я их и не поменяю, дошел когда до вьюхи v$parameter )).

В какую сторону смотреть и что можно еще попробовать? Для сессии в оракле я могу их установить, какие нужны, но вот что делать с импортом, вопрос.
...
Рейтинг: 0 / 0
NLS_ при импорте дампа
    #39363414
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Adtain
Код: plsql
1.
DATE default '4000-01-01'

Быдло-архитектор подложил NLS-мину.
...
Рейтинг: 0 / 0
NLS_ при импорте дампа
    #39363426
Maxim Demenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Adtainчто делать с импортом, вопрос.

Doc ID 1632220.1

Regards

Maxim
...
Рейтинг: 0 / 0
NLS_ при импорте дампа
    #39363453
Adtain
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,
Подложил он давно, системе 12 лет уже.


Maxim Demenko,
Туда, к сожалению, доступа нет. Можно ли сюда как то скопировать информацию? Ну или в чем там суть то вообще?
...
Рейтинг: 0 / 0
NLS_ при импорте дампа
    #39363467
Maxim Demenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Adtain,

Предлагаются 3 workaround
1)
Код: plsql
1.
2.
export NLS_LANG='AMERICAN_AMERICA.UTF8'
export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'


2) Precreate target table с правильной маской в определении default и impdp TABLE_EXISTS_ACTION=append
3) Пересоздать исходную таблицу с правильной маской в определении default (исправить косяк архитектора ;-)

Regards

Maxim
...
Рейтинг: 0 / 0
NLS_ при импорте дампа
    #39363554
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AdtainПодложил он давно, системе 12 лет уже.Никто не умеет делать alter table?
...
Рейтинг: 0 / 0
NLS_ при импорте дампа
    #39363557
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim DemenkoПересоздать исходную таблицу с правильной маской в определении defaultБррррр…
...
Рейтинг: 0 / 0
NLS_ при импорте дампа
    #39363567
Maxim Demenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicMaxim DemenkoПересоздать исходную таблицу с правильной маской в определении defaultБррррр…
Вообще-то я процитировал Металинк, но если быть честным, то точно не помню, можно ли alter изменить значение default, так что бррррр принимается ;-)

Regards

Maxim
...
Рейтинг: 0 / 0
NLS_ при импорте дампа
    #39363582
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Demenkoне помню, можно ли alter изменить значение defaultСтранно, а ведь сколько дискуссий было про то, что нельзя отменить (до сих пор) default вместо установки его в NULL.
...
Рейтинг: 0 / 0
NLS_ при импорте дампа
    #39363628
Maxim Demenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicСтранно, а ведь сколько дискуссий было
И ведь правда... А хотел же больше не пить...
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / NLS_ при импорте дампа
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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