Globalization

ORA-12705: NLSデータファイルにアクセスできないか、無効な環境が指定されましたの解決方法

ORA-12705では、NLS設定が正しくないことを示しています。データベースに対して何かを実行する前に、まずそれらを修正する必要があります。

この投稿にはORA-12705の2つのエラーパターンがあります。

  1. 接続前のORA-12705
  2. 接続後のORA-12705

接続前のORA-12705

データベースに接続する前に故意に偽のNLS_LANGを設定しましょう。これは、Oracleが使用するために選択する環境変数です。NLS_LANGの形式については、NLS_LANG方法と理由を確認できます。

[oracle@test ~]$ export NLS_LANG=JAPAN_JAPAN.UTF8
[oracle@test ~]$ echo $NLS_LANG
JAPAN_JAPAN.UTF8

データベースに接続しようとしました。

[oracle@test ~]$ sqlplus /nolog
...
SQL> conn hr/hr
ERROR:
ORA-12705: Cannot access NLS data files or invalid environment specified


SQL> conn / as sysdba
ERROR:
ORA-12705: Cannot access NLS data files or invalid environment specified
SQL> exit

エラーORA-12705は、両方の接続がデータベースによって拒否されたことを示しています。 どうして?

ソリューション

選択する必要があります。1つ目はNLS_LANGの設定を解除すること、もう1つは環境に適した言語を設定することです。

1. NLS_LANGの設定を解除

NLS_LANGが設定されていない場合、データベースはセッションのデフォルトのNLS設定を使用します。 V$NLS_VALID_VALUESを照会して、データベースで有効な言語を確認しましょう。

[oracle@test ~]$ unset NLS_LANG
[oracle@test ~]$ sqlplus / as sysdba
...
SQL> set pagesize 100;
SQL> select value from v$nls_valid_values where parameter = 'LANGUAGE' AND isdeprecated = 'FALSE' order by 1;

VALUE
----------------------------------------------------------------
ALBANIAN
AMERICAN
ARABIC
ASSAMESE
AZERBAIJANI
BANGLA
BELARUSIAN
BRAZILIAN PORTUGUESE
BULGARIAN
CANADIAN FRENCH
CATALAN
CROATIAN
CYRILLIC KAZAKH
CYRILLIC SERBIAN
CYRILLIC UZBEK
CZECH
DANISH
DUTCH
EGYPTIAN
ENGLISH
ESTONIAN
FINNISH
FRENCH
GERMAN
GERMAN DIN
GREEK
GUJARATI
HEBREW
HINDI
HUNGARIAN
ICELANDIC
INDONESIAN
IRISH
ITALIAN
JAPANESE
KANNADA
KOREAN
LATIN AMERICAN SPANISH
LATIN SERBIAN
LATIN UZBEK
LATVIAN
LITHUANIAN
MACEDONIAN
MALAY
MALAYALAM
MARATHI
MEXICAN SPANISH
NORWEGIAN
ORIYA
POLISH
PORTUGUESE
PUNJABI
ROMANIAN
RUSSIAN
SIMPLIFIED CHINESE
SLOVAK
SLOVENIAN
SPANISH
SWEDISH
TAMIL
TELUGU
THAI
TRADITIONAL CHINESE
TURKISH
UKRAINIAN
VIETNAMESE

66 rows selected.

SQL> exit

2. 正しいNLS_LANGを設定

ご覧のとおり、有効なNLS言語の一覧には “JAPAN”はありません。 設定すべき有効な値は “JAPANESE”です。 それではやりましょう。

[oracle@test ~]$ export NLS_LANG=JAPANESE_JAPAN.UTF8
[oracle@test ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.4.0 Production on 金 5月 17 19:23:20 2019

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

SQL> conn hr/hr
Connected.

お分かりのように、私たちのつながりは成功しているだけでなく、ウェルカムメッセージの表示言語も日本語に適しています。

接続後のORA-12705

セッション中に、NLS設定に気付いていない場合は、依然としてORA-12705を受け取る可能性があります。 現在のセッションのNLS_DATE_LANGUAGE設定を変更してみましょう。

SQL> alter session set nls_date_language = 'Sweden';
ERROR:
ORA-12705: NLSデータファイルにアクセスできないか、無効な環境が指定されました

ご覧のとおり、日本語でORA-12705を取得しました。 次にNLS_DATE_LANGUAGEに有効な値を正しく設定します。

SQL> alter session set nls_date_language = 'Swedish';

Session altered.

ORA-12705の解決方法は常に同じです。NLS設定に有効な値を使用してください。

グローバリゼーションのサポートについては、データベースグローバリゼーションサポートガイド:グローバリゼーションサポートの概要

Leave a Reply

Your email address will not be published. Required fields are marked *