MIRACLE

メールサービス申込 ユーザー登録&ログイン パートナー情報
お問い合わせ FAQ サイトマップ
MIRACLE LINUXの特長 製品紹介 サービス案内 購入 サポート 技術フォーラム

テクノロジー情報

カテゴリ:Oracle
2002/12/17
NLS_LANG 設定のヒント
Standard Edition V1.x 対応 Standard Edition V2.x 対応 Advanced Server 2.1対応

[質問]

NLS_LANG設定のヒント

[対象となる製品のバージョン]

OSに依存しない

[対象となるパッケージ]

すべてのOracleデータベース

[回答]

NLS_LANGは、Oracleにおいて、表示する文字コードやメッセージの言語、日付の表示形式などを決定する重要な環境変数です。

「言語_地域.キャラクタセット」

のように指定します。NLS_LANGに「Japanese_Japan.JA16EUC」と指定した場合、日本語のメッセージが選択されるため、コンソール上でOracleを使用すると文字化けが発生します。これはX Windowを起動する前の標準コンソールが日本語に対応していないためです。konを使用すればコンソール上でも日本語を表示できますが、データベースの自動起動/停止時のメッセージは、コンソール上に出力されるため、やはり文字化けは発生してしまいます。

この文字化けは表示上の問題なので、使用上の問題はありません。また起動/停止時のログは /var/log/boot.log に保存されるので、あとで確認することもできます。しかしながら、メッセージ類は英語のほうが使いやすいという方も多いでしょう。メッセージを英語にすることで、自動起動/停止時の文字化けの問題を回避できます。メッセージを英語表示にするときには、NLS_LANGに次のいずれかの値を設定します。

  • American_America.JA16EUC
  • メッセージは英語。日付の形式は米国式(DD-MON-YY)。表示する言語は日本語EUC。

  • American_Japan.JA16EUC
  • メッセージは英語。日付の形式は日本式(YY-MM-DD)。表示する言語は日本語EUC。

ただし前者の場合、地域(NLS_LANGの2番目の部分)もAmericaになっているので、日付のデフォルト表示形式は米国式になり、次のSQL文は失敗します。

INSERT INTO foo VALUES('02-12-31')

なぜならば米国の日付フォーマットでは、'31-DEC-02'という入力を期待しているからです。American_Americaに指定した場合、メッセージが英語になるだけでなく、日付や通貨の表示形式も米国式になります。この問題を解決する方法は、TO_DATE関数やNLS_DATE_FORMATパラメータを使用するなどがあるのですが、お勧めは「American_Japan.JA16EUC」です。これだとアプリケーションに変更を加えることなく簡単に変更できます。

[参考資料]

特になし

[更新履歴]

2002/12/17 新規作成


会社情報 採用情報 個人情報保護方針 情報セキュリティ基本方針 商標等取り扱い事項 English
Copyright(c)2000-2013 MIRACLE LINUX CORPORATION. All Rights Reserved.