1 グローバリゼーション・サポートの概要
この章では、Oracle Databaseのグローバリゼーション・サポートの概要を説明します。この章では、以下のトピックについて説明します。
1.1 グローバリゼーション・サポートのアーキテクチャ
Oracle Databaseのグローバリゼーション・サポートにより、データを各国語で格納、処理、取得できます。データベース・ユーティリティ、エラー・メッセージ、ソート順序、日付、時刻、通貨、数値、カレンダ規則が、各国の言語およびロケールに自動的に調整されます。
Oracleのグローバリゼーション・サポート機能は、以前はNational Language Support(NLS)機能と呼ばれていました。実際のところ、NLSはグローバリゼーション・サポートのサブセットです。NLSとは、各国語を選択してデータを特定の文字セットで格納する機能です。グローバリゼーション・サポートを使用すると、世界中から同時にアクセスして実行できる多言語アプリケーションやソフトウェア製品の開発が可能になります。アプリケーションでは、ユーザー・インタフェースの内容表示とデータ処理に、ユーザーの母国語と選択したロケールを使用できます。
1.1.1 オンデマンドのロケール・データ
Oracle Databaseのグローバリゼーション・サポートは、Oracle NLS Runtime Library(NLSRTL)とともに実装されます。NLS RTLは、広範囲にわたる言語非依存の関数のパッケージを提供します。これによって、適切なテキストと文字の処理および言語規則に従った操作を行うことができます。特定の言語や地域に対応した関数の動作は、実行時に指定してロードされたロケール固有データ・セットによって制御されます。
ロケール固有データは、Oracle Databaseでサポートされるロケールごとに独立したデータ・セットとしての構造を持ちます。特定のロケールのデータを、他のロケール・データに依存せずにロードできます。
この設計の利点は、次のとおりです。
-
必要なロケール・セットを選択してメモリー消費を管理できます。
-
他のロケールに影響を与えずに、特定のロケールのロケール・データを追加してカスタマイズできます。
次の図に、実行時のロケール固有データのロードを示します。この例では、フランス語データと日本語データが多言語データベースにロードされますが、ドイツ語データはロードされません。
ロケール固有のデータは、ORACLE_HOME/nls/data
ディレクトリに格納されます。ORA_NLS10
環境変数は、複数のOracle Databaseホームが、同じロケール固有データ・ファイルを共有する場合のように、ロケール固有データ・ファイルに応じて、デフォルトのディレクトリの場所を変更する必要がある場合にのみ定義するようにしてください。
ロードする有効なNLSオブジェクトは、ブート・ファイルを使用して指定します。Oracle Databaseでは、システムとユーザーの両方のブート・ファイルをサポートしています。ユーザーのブート・ファイルを使用すると、そのデータベースで使用可能なNLSロケール・オブジェクトを柔軟に調整できます。また、新しいロケール・データを追加したり、一部のロケール・データ・コンポーネントをカスタマイズすることができます。
関連項目:
1.1.2 多言語アプリケーションをサポートするアーキテクチャ
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環境を同期させます。
1.1.3 多言語データベースでのUnicodeの使用
Unicode(エンコードされたユニバーサル文字セット)では、1つの文字セットを使用して任意の言語の情報を格納できます。Unicodeでは、プラットフォーム、プログラムまたは言語に関係なく、すべての文字に一意のコード値が指定されます。データベースの文字セットには、AL32UTF8
を使用することをお薦めします。AL32UTF8
は、Unicode規格のUTF-8エンコーディング形式に準拠しています。
ノート:
Oracle Database 12cリリース2以降、データベースの作成にOracle Universal Installer (OUI)またはOracle Database Configuration Assistant (DBCA)を使用する場合、使用されるデフォルトのデータベース文字セットはUnicode文字セットAL32UTF8
です。
Unicodeには、次の利点があります。
-
文字セット変換機能と言語ソート機能が簡素化されます。
-
ネイティブのマルチバイト文字セットに比べてパフォーマンスが改善されます。
-
Unicode規格に基づくUnicodeデータ型がサポートされます。
Unicode環境に移行しやすくなるように、Database Migration Assistant for Unicode(DMU)が用意されています。DMUは、直感的な操作が可能な、ユーザーに親しみやすいGUIを装備しており、そのインタフェースを介して作業負荷を軽減し、移行上の問題をすべて解決して、移行プロセス全体を効率化できるようになっており、また、データ変換も正確に効率よく行えるようになっています。DMUは従来のデータ移行方式と比べて様々な点で優れており、その例を次に示します。
-
ワークフローに沿って作業できるようになっています。
-
データのクレンジングの実行時に発生する障害などの特定の問題をどのように対処すればよいかを提言します。
-
データの変換方法を選択できます。
-
進行状況を確認できます。
1.2 グローバリゼーション・サポートの機能
1.2.1 言語サポート
Oracle Databaseでは、データの格納、処理および取出しをネイティブ言語で行うことができます。データベースには、Oracleがサポートする文字セットでエンコードされたスクリプトに記述されているすべての言語を格納できます。Unicodeデータベースとデータ型を使用することで、Oracle Databaseは、ほとんどの現代言語をサポートしています。
各国語のサブセットに対しては、追加サポートが用意されています。たとえば、データベースでは、翻訳された月の名前を使用して日付を表示し、文化的な慣習に従ってテキスト・データをソートできます。
このマニュアルで使用している言語サポートという用語は、言語依存の追加機能を指しており、特定の言語のテキストを格納できることを示すわけではありません。たとえば、言語サポートには、特定のロケールおよび文化的慣習に従った日付の表示やテキストのソートが含まれます。一部のサポート対象言語については、翻訳済エラー・メッセージやデータベース・ユーティリティに関する翻訳済ユーザー・インタフェースが用意されています。
関連項目:
-
Oracle Databaseがサポートする言語名とその略称のリストは、「言語」を参照してください
-
Oracle Databaseのメッセージが翻訳されている言語のリストは、「翻訳済メッセージ」を参照してください
1.2.2 地域サポート
Oracle Databaseでは、地域に固有な文化的慣習をサポートしています。デフォルトのローカル時刻書式、日付書式、数値および通貨に関する規則はローカル地域設定によって異なります。異なるNLSパラメータを設定することにより、データベース・セッションにおいて異なる文化的設定を使用できます。たとえば、地域がAMERICA
と定義されている場合でも、指定したデータベース・セッションに、第1通貨としてユーロ(EUR
)を、第2通貨として日本円(JPY
)を設定できます。
関連項目:
-
Oracle Databaseでサポートされている地域のリストは、「地域」を参照してください
1.2.3 日付と時刻の書式
時間、日、月および年に関する多様な表記規則は、ローカル書式で処理されます。たとえば、日付の表示の場合、英国ではDD-MON-YYYY
書式が使用され、日本では一般的にYYYY-MM-DD
書式が使用されます。
タイム・ゾーンや夏時間もサポートされます。
1.2.4 通貨と数値の書式
通貨、貸方および借方の記号は、ローカル書式で表すことができます。基数記号と3桁区切りは、ロケールで定義できます。たとえば、小数点は、米国ではドット(.)ですが、フランスではカンマ(,)です。したがって、金額1,234の持つ意味は、国によって異なります。
関連項目:
1.2.5 暦法
世界中で様々な暦法が使用されています。Oracle Databaseでは8種類の暦法をサポートしています。
-
Gregorian(グレゴリオ暦)
-
Japanese Imperial (日本の元号暦)
-
ROC Official(台湾暦)
-
Thai Buddha (タイ仏教暦)
-
ペルシア語
-
English Hijrah (英語版イスラム暦)
-
Arabic Hijrah (イスラム暦)
-
Ethiopian (エチオピア暦)
関連項目:
-
サポートされているカレンダの詳細は、「暦法」を参照してください
1.2.6 言語ソート
Oracle Databaseには、文化に応じた正確なソートおよび大/小文字の変換を行うために、言語の定義が用意されています。基本定義では、文字列を独立した文字の連続として扱います。拡張定義では、特殊な事例として扱う必要のある文字のペアを認識します。
基本定義を使用して大文字または小文字に変換された文字列は、常に同じ長さです。拡張定義を使用して変換された文字列は、長くなったり短くなったりすることがあります。
関連項目:
1.2.8 キャラクタ・セマンティクス
Oracle Databaseには、キャラクタ・セマンティクスが用意されています。キャラクタ・セマンティクスは、可変幅のマルチバイト文字列の記憶要件をバイト数ではなく文字数で定義する場合に役立ちます。
関連項目:
1.2.9 ロケール・データとカレンダ・データのカスタマイズ
Oracle Locale Builderを使用して、言語、文字セット、地域または言語ソートなどのロケール・データをカスタマイズできます。
NLSカレンダ・ユーティリティを使用すると、カレンダをカスタマイズできます。
1.2.10 Unicodeのサポート
Unicodeはコンピュータによる一貫性のある表現および操作のために、すべての言語のテキストや記号を使用可能にする業界標準です。
Oracle Databaseは、Oracle 7からUnicode規格を採用しています。それ以降では、Oracle Database 12cリリース2 (12.2)がUnicode 7.0をサポートしています。Oracle Database18cおよびOracle Database 19cでは、Unicode 9.0をサポートしています。Oracle Database 21cでは、Unicode 12.1をサポートしています。Oracle Database 23aiでは、Unicode 15.0をサポートしています。
次の2つの方法でUnicode文字をOracle Databaseに格納できます。
-
Unicodeデータベースを作成すると、UTF-8でエンコードされた文字をSQL
CHAR
データ型のVARCHAR2
、CHAR
、LONG
(非推奨)およびCLOB
として格納できます。 -
SQL
NCHAR
データ型のNVARCHAR2
、NCHAR
およびNCLOB
を使用すると、特定の列の多言語データをサポートできます。データベース文字セットの定義方法に関係なく、NCHAR
データ型の列にUnicode文字を格納できます。NCHAR
データ型はUnicodeデータ型専用です。ノート:
Oracle Database 12cリリース2 (12.2)以降、データベースの作成にOracle Universal Installer (OUI)またはOracle Database Configuration Assistant (DBCA)を使用する場合、使用されるデフォルトのデータベース文字セットはUnicode文字セットAL32UTF8です。