この章では、Oracle Databaseのグローバリゼーション・サポートの概要を説明します。この章の内容は、次のとおりです。
Oracle Databaseのグローバリゼーション・サポートにより、データを各国語で格納、処理、取得できます。データベース・ユーティリティ、エラー・メッセージ、ソート順序、日付、時刻、通貨、数値、カレンダ規則が、各国の言語およびロケールに自動的に調整されます。
Oracleのグローバリゼーション・サポート機能は、以前はNational Language Support(NLS)機能と呼ばれていました。実際のところ、NLSはグローバリゼーション・サポートのサブセットです。NLSとは、各国語を選択してデータを特定のキャラクタ・セットで格納する機能です。グローバリゼーション・サポートを使用すると、世界中から同時にアクセスして実行できる多言語アプリケーションやソフトウェア製品の開発が可能になります。アプリケーションでは、ユーザー・インタフェースの内容表示とデータ処理に、ユーザーの母国語と選択したロケールを使用できます。
Oracle Databaseのグローバリゼーション・サポートは、Oracle NLS Runtime Library(NLSRTL)とともに実装されます。NLS RTLは、広範囲にわたる言語非依存の関数のパッケージを提供します。これによって、適切なテキストと文字の処理および言語規則に従った操作を行うことができます。特定の言語や地域に対応した関数の動作は、実行時に指定してロードされたロケール固有データ・セットによって制御されます。
ロケール固有データは、Oracle Databaseでサポートされるロケールごとに独立したデータ・セットとしての構造を持ちます。特定のロケールのデータを、他のロケール・データに依存せずにロードできます。
この設計の利点は、次のとおりです。
必要なロケール・セットを選択してメモリー消費を管理できます。
他のロケールに影響を与えずに、特定のロケールのロケール・データを追加してカスタマイズできます。
次の図では、実行時のロケール固有データのロードを示します。この例では、フランス語データと日本語データが多言語データベースにロードされますが、ドイツ語データはロードされません。
ロケール固有のデータは、ORACLE_HOME/nls/data
ディレクトリに格納されます。ORA_NLS10
環境変数は、複数のOracle Databaseホームが、同じロケール固有データ・ファイルを共有する場合のように、ロケール固有データ・ファイルに応じて、デフォルトのディレクトリの場所を変更する必要がある場合にのみ定義するようにしてください。
ロードする有効なNLSオブジェクトは、ブート・ファイルを使用して指定します。Oracle Databaseでは、システムとユーザーの両方のブート・ファイルをサポートしています。ユーザーのブート・ファイルを使用すると、そのデータベースで使用可能なNLSロケール・オブジェクトを柔軟に調整できます。また、新しいロケール・データを追加したり、一部のロケール・データ・コンポーネントをカスタマイズすることができます。
関連項目:
Oracle Databaseは、データベースの構成に使用される言語を複数層アプリケーションとクライアント/サーバー・アプリケーションでサポートできるようにしています。
ロケール依存操作は、クライアントとデータベース・サーバーの両方にある複数のパラメータと環境変数によって制御されます。データベース・サーバーでは、クライアント用に起動された各セッションが他のセッションと同じまたは異なるロケールで実行され、同じまたは異なる言語要件が指定されることがあります。
Oracle Databaseには、セッションに依存しないNLSパラメータのセットがデータベースの作成時に指定されます。その2つのパラメータによって、データベース・キャラクタ・セットと各国語キャラクタ・セット、つまりNCHAR
、NVARCHAR2
およびNCLOB
データに指定できる代替Unicodeキャラクタ・セットを指定します。このパラメータは、テキスト・データをデータベースに格納するために使用するキャラクタ・セットを指定します。他のパラメータ(言語や地域など)は、CHECK制約の評価で使用されます。
クライアント・セッションとデータベース・サーバーが異なるキャラクタ・セットを指定している場合、データベースではキャラクタ・セットの文字列を自動的に変換します。
グローバリゼーション・サポートの観点では、すべてのアプリケーションは、Oracle Databaseインスタンスと物理的に同じマシン上で実行している場合でも、クライアントとみなされます。たとえば、Oracleソフトウェア所有者であるUNIXユーザーが、SQL*PlusをRDBMSソフトウェアがインストールされているOracleホームから起動し、ORACLE_SID
パラメータを指定してアダプタ経由でデータベースに接続している場合、このSQL*Plusはクライアントとみなされます。その動作はクライアント側のNLSパラメータによって規定されます。
別の例をあげると、中間層がアプリケーション・サーバーの場合に、アプリケーションがクライアントとみなされます。そのアプリケーション・サーバーによって起動される様々なセッションは、個別のクライアント・セッションとみなされます。
クライアント・アプリケーションが起動されると、環境設定に従ってクライアントのNLS環境が初期化されます。ローカルで実行されるNLS操作は、すべてこの設定を使用して実行されます。ローカルNLS操作の例を次に示します。
Oracle Developerアプリケーションの表示書式設定
OCI環境ハンドルを使用してNLS OCI関数を実行するユーザーOCIコード
アプリケーションをデータベースに接続すると、サーバー上でセッションが作成されます。新しいセッションは、初期化パラメータ・ファイルで指定されたNLSインスタンス・パラメータからNLS環境を初期化します。これらの設定は、ALTER
SESSION
文によって後で変更できます。この文によって変更されるのは、そのセッションのNLS環境のみです。ローカル・クライアントのNLS環境は変更されません。セッションのNLS設定は、サーバー上で実行されるSQLおよびPL/SQL文の処理に使用されます。たとえば、ALTER SESSION
文を使用して、NLS_LANGUAGE
初期化パラメータをイタリア語に設定できます。
ALTER SESSION SET NLS_LANGUAGE=Italian;
SELECT
文を入力します。
SQL> SELECT last_name, hire_date, ROUND(salary/8,2) salary FROM employees;
結果は次のようになります。
LAST_NAME HIRE_DATE SALARY ------------------------- --------- ---------- ... Sciarra 30-SET-05 962.5 Urman 07-MAR-06 975 Popp 07-DIC-07 862.5 ...
月名の略称にイタリア語が使用されていることに注意してください。
NLS_LANG
環境設定がクライアント側で定義されている場合は、接続直後にALTER
SESSION
文が暗黙的にクライアントとセッションのNLS環境を同期させます。
Unicode(エンコードされたユニバーサル・キャラクタ・セット)では、1つのキャラクタ・セットを使用して任意の言語の情報を格納できます。Unicodeでは、プラットフォーム、プログラムまたは言語に関係なく、すべての文字に一意のコード値が指定されます。データベース・キャラクタ・セットとしてAL32UTF8を使用することをお薦めします。AL32UTF8は、Unicode規格のUTF-8エンコーディング形式に準拠しています。
Unicodeには、次の利点があります。
キャラクタ・セット変換機能と言語ソート機能が簡素化されます。
ネイティブのマルチバイト・キャラクタ・セットに比べてパフォーマンスが改善されます。
Unicode規格に基づくUnicodeデータ型がサポートされます。
Unicode環境に移行しやすくなるように、Database Migration Assistant for Unicode(DMU)が用意されています。DMUは、直感的な操作が可能な、ユーザーに親しみやすいGUIを装備しており、そのインタフェースを介して作業負荷を軽減し、移行上の問題をすべて解決して、移行プロセス全体を効率化できるようになっており、また、データ変換も正確に効率よく行えるようになっています。DMUは従来のデータ移行方式と比べて様々な点で優れており、その例を次に示します。
ワークフローに沿って作業できるようになっています。
データのクレンジングの実行時に発生する障害などの特定の問題をどのように対処すればよいかを提言します。
データの変換方法を選択できます。
進行状況を確認できます。
関連項目:
『Oracle Database Migration Assistant for Unicodeガイド』
Oracle Databaseでは、データの格納、処理および取出しをネイティブ言語で行うことができます。データベースに格納できる言語は、Oracleがサポートしているキャラクタ・セットでエンコードされているスクリプトで記述されたすべての言語です。Unicodeデータベースとデータ型を使用することで、Oracle Databaseは、ほとんどの現代言語をサポートしています。
各国語のサブセットに対しては、追加サポートが用意されています。たとえば、データベースでは、翻訳された月の名前を使用して日付を表示し、文化的な慣習に従ってテキスト・データをソートできます。
このマニュアルで使用している言語サポートという用語は、言語依存の追加機能を指しており、特定の言語のテキストを格納できることを示すわけではありません。たとえば、言語サポートには、特定のロケールおよび文化的慣習に従った日付の表示やテキストのソートが含まれます。一部のサポート対象言語については、翻訳済エラー・メッセージやデータベース・ユーティリティに関する翻訳済ユーザー・インタフェースが用意されています。
関連項目:
Oracle Databaseがサポートする言語名とその略称リストは、「言語」を参照してください
Oracle Databaseのメッセージが翻訳されている言語のリストは、「翻訳済メッセージ」を参照してください
Oracle Databaseでは、地域に固有な文化的慣習をサポートしています。デフォルトのローカル時刻書式、日付書式、数値および通貨単位に関する規則は、ローカル地域設定によって異なります。多様なNLSパラメータの設定によって、データベース・セッションでは様々な文化的設定を使用できます。たとえば、地域がAMERICA
と定義されている場合でも、指定したデータベース・セッションに、第1通貨としてユーロ(EUR
)を、第2通貨として日本円(JPY
)を設定できます。
関連項目:
Oracle Databaseでサポートされている地域のリストは、「地域」を参照してください
時間、日、月および年に関する多様な表記規則は、ローカル書式で処理されます。たとえば、日付の表示の場合、英国ではDD-MON-YYYY
書式が使用され、日本では一般的にYYYY-MM-DD
書式が使用されます。
タイム・ゾーンや夏時間もサポートされます。
関連項目:
『Oracle Database SQL言語リファレンス』
通貨、貸方および借方の記号は、ローカル書式で表すことができます。基数記号と3桁区切りは、ロケールで定義できます。たとえば、小数点は、米国ではドット(.)ですが、フランスではカンマ(,)です。したがって、金額1,234の持つ意味は、国によって異なります。
関連項目:
世界中で様々な暦法が使用されています。Oracle Databaseでは8種類の暦法をサポートしています。
Gregorian(グレゴリオ暦)
Japanese Imperial(日本の元号暦)
ROC Official(台湾暦)
Thai Buddha(タイ仏教暦)
Persian(ペルシャ暦)
English Hijrah(英語版イスラム歴)
Arabic Hijrah(イスラム歴)
Ethiopian(エチオピア歴)
関連項目:
サポートされているカレンダの詳細は、「暦法」を参照してください
Oracle Databaseには、文化に応じた正確なソートおよび大/小文字の変換を行うために、言語の定義が用意されています。基本定義では、文字列を独立した文字の連続として扱います。拡張定義では、特殊な事例として扱う必要のある文字のペアを認識します。
基本定義を使用して大文字または小文字に変換された文字列は、常に同じ長さです。拡張定義を使用して変換された文字列は、長くなったり短くなったりすることがあります。
関連項目:
Oracle Databaseでは、多数のシングルバイト、マルチバイトおよび固定幅のコード体系をサポートしています。これらのコード体系は、各国の規格、国際規格およびベンダー固有の規格に基づいています。
関連項目:
サポートされるキャラクタ・セットのリストは、「キャラクタ・セット」を参照してください
Oracle Databaseには、キャラクタ・セマンティクスが用意されています。キャラクタ・セマンティクスは、可変幅のマルチバイト文字列の記憶要件をバイト数ではなく文字数で定義する場合に役立ちます。
関連項目:
Oracle Locale Builderを使用して、言語、キャラクタ・セット、地域または言語ソートなどのロケール・データをカスタマイズできます。
NLSカレンダ・ユーティリティを使用すると、カレンダをカスタマイズできます。
Unicodeはコンピュータによる一貫性のある表現および操作のために、すべての言語のテキストや記号を使用可能にする業界標準です。2013年8月時点でのUnicode規格の最新バージョンは6.2です。
Oracle Databaseは、Oracle 7からUnicode規格を採用しています。それ以降では、Oracle Database 10gリリース2がUnicode 4.0をサポートしています。Oracle Database 11gリリースでは、Unicode 5.0をサポートしています。Oracle Database 12cでは、Unicode 6.2をサポートしています。
次の2つの方法でUnicode文字をOracle Databaseに格納できます。
UTF-8エンコードされた文字をSQL CHAR
データ型として格納できるように、Unicodeデータベースを作成できます。
Unicodeデータ型を使用して、特定の列の多言語データをサポートできます。データベース・キャラクタ・セットの定義方法に関係なく、SQL NCHAR
データ型の列にUnicode文字を格納できます。NCHAR
データ型はUnicodeデータ型専用です。