ヘッダーをスキップ
Oracle Database Gatewayインストレーションおよび構成ガイド
11gリリース1(11.1) for Microsoft Windows
E05709-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

E DRDAのグローバリゼーション・サポート

この付録では、Oracle Database Gateway for DRDAのグローバリゼーション・サポート情報について説明します。ここでの内容は、『Oracle Databaseアドバンスト・アプリケーション開発者ガイド』に記載されているOracleの一般的なグローバリゼーション・サポート情報の補足になります。

グローバリゼーション・サポートにより、ユーザーは、自国言語と自国でのデータ表示規則を使用してOracleアプリケーションとやり取りできます。Oracleのグローバリゼーション・サポート・アーキテクチャは、データ駆動型であり、ソース・コードを変更することなく固有の言語および文字コード体系のサポートを追加できます。

ゲートウェイ、DRDAサーバー、Oracle Database 11gおよびクライアントには、グローバリゼーション・サポート処理に影響を与える多くの異なる設定があります。変換が正しく実行されるためには、これらのコンポーネントの文字設定に互換性がある必要があります。

この付録の内容は次のとおりです。

グローバリゼーション・サポートの相互作用の概要

図E-1は、システム内のグローバリゼーション・サポートの相互作用を示しており、システムの各コンポーネントと、分散環境のグローバリゼーション・サポート処理に影響する各コンポーネントのパラメータが含まれます。表E-1で、図E-1に記載されているアーキテクチャについて説明します。

図E-1 システム・コンポーネントにおけるグローバリゼーション・サポートの相互作用のアーキテクチャ

図E-1の説明が続きます。
「図E-1 システム・コンポーネントにおけるグローバリゼーション・サポートの相互作用のアーキテクチャ」の説明

表E-1では、システムの各環境(クライアント環境、Oracle Database、ゲートウェイおよびDRDAサーバー)内でのグローバリゼーション・サポート処理に必要なパラメータと変数について詳細に説明します。

表E-1 システムの各環境でのグローバリゼーション・サポート処理に必要なパラメータ

環境 パラメータまたは変数 説明

クライアント

NLS_LANG

これは環境変数です。NLS_LANGにより、サーバー・セッションとクライアント・アプリケーションの両方を対象に、データベースで使用されるグローバリゼーション・サポート環境が設定されます。これにより、データベースとクライアント・アプリケーションの両方の言語環境が自動的に同じになることが保証されます。NLS_LANGは環境変数であるため、起動時にクライアント・アプリケーションによって読み取られます。クライアントは、NLS_LANGに定義されている情報を接続時にサーバーに伝達します。詳細は、「クライアントおよびOracle Databaseの構成」を参照してください。

Oracle Database


CHARACTER SET

このオプションは、データベースの作成時に設定されます。CHARACTER SETにより、データベースで使用される文字コード体系が決定されます。CHARACTER SETは、CREATE DATABASE文でのデータベース作成時に定義されます。CHARVARCHAR2およびLONG型のすべてのデータ列では、そのデータがデータベースのキャラクタ・セットで格納されます。詳細は、「クライアントおよびOracle Databaseの構成」を参照してください。

Oracle Database Gateway for DRDA

ORA_NLS11

これは環境変数です。ORA_NLS11により、ゲートウェイがキャラクタ・セットとその他の言語データをロードするための場所が決定されます。詳細は、「ゲートウェイ言語とDRDAサーバーの相互作用」を参照してください。

Oracle Database Gateway for DRDA

NLS_LANG

これは環境変数です。NLS_LANGにより、ゲートウェイとOracle Database間の通信に使用されるキャラクタ・セットが定義されます。詳細は、「ゲートウェイ言語とDRDAサーバーの相互作用」を参照してください。

Oracle Database Gateway for DRDA

HS_LANGUAGE

初期化パラメータHS_LANGUAGEにより、ゲートウェイとDRDAサーバー間の通信に使用されるキャラクタ・セットが定義されます。詳細は、「ゲートウェイ言語とDRDAサーバーの相互作用」を参照してください。

Oracle Database Gateway for DRDA

HS_NLS_NCHAR

これは初期化パラメータです。HS_NLS_NCHARにより、ゲートウェイとDRDAサーバー間の通信に使用されるNCHARのキャラクタ・セットが定義されます。このパラメータは、ゲートウェイがDRDAサーバーのGRAPHICデータまたはマルチバイト・データにアクセスする場合は必須です。このパラメータは、HS_LANGUAGEパラメータのキャラクタ・セット構成部分と同じ値に設定します。詳細は、「ゲートウェイ言語とDRDAサーバーの相互作用」を参照してください。

Oracle Database Gateway for DRDA

HS_NLS_DATE_FORMAT

これは初期化パラメータです。HS_NLS_DATE_FORMATにより、DRDAサーバーで使用される日付書式が指定されます。詳細は、「ゲートウェイ言語とDRDAサーバーの相互作用」を参照してください。

Oracle Database Gateway for DRDA

HS_NLS_DATE_LANGUAGE

これは初期化パラメータです。HS_NLS_DATE_LANGUAGEにより、月日の名前や日付の略語に対してDRDAサーバーで使用される言語が指定されます。詳細は、「ゲートウェイ言語とDRDAサーバーの相互作用」を参照してください。

DRDAサーバー


CCSID

CCSIDは、ゲートウェイで等価のOracleキャラクタ・セットにマップされたサーバーのキャラクタ・セットです。CCSIDにより、DRDAデータベースがデータの格納に使用するキャラクタ・セットが指定されます。これは、データベースの作成時に定義されます。「ゲートウェイのコードページ・マップ機能」を参照してください。


クライアントおよびOracle Databaseの構成

Oracle Databaseとクライアント間のグローバリゼーション・サポート処理は、複数のグローバリゼーション・サポート・パラメータによって制御されます。言語に依存する動作のデフォルトをサーバーに対して設定できる他、それらのデフォルトを上書きするクライアントに対しても言語に依存する動作を設定できます。グローバリゼーション・サポート・パラメータの詳細は、『Oracle Database管理者ガイド』の「グローバリゼーション・サポート」を参照してください。これらのパラメータは、ゲートウェイ処理に直接影響することはありません。ただし、(Oracle DatabaseのNLS_LANG環境変数により指定される)クライアントのキャラクタ・セットが、ゲートウェイとDRDAサーバーで指定されているキャラクタ・セットと互換性があることを確認する必要があります。

Oracle Databaseを作成する場合、データの格納に使用するキャラクタ・セットは、CREATE DATABASE文のCHARACTER SET句で指定します。データベースの作成後、データベースのキャラクタ・セットは、データベースを再作成しないかぎり変更できません。

通常、CHARACTER SETのデフォルトは、26のラテン語アルファベット文字のみをサポートするUS7ASCIIです。ゲートウェイとDRDAサーバーで8ビットのキャラクタ・セットを指定している場合、互換性のある8ビットのキャラクタ・セットをデータベースで定義する必要があります。既存のデータベースのキャラクタ・セットを確認するには、次のコマンドを実行します。

SELECT USERENV('LANGUAGE') FROM DUAL;

詳細は、『Oracle Database管理者ガイド』のキャラクタ・セットの指定に関する項を参照してください。

ただし、ゲートウェイのキャラクタ・セットとOracle Databaseキャラクタ・セットは、必ずしも同じにする必要はありません。Oracle Netの機能により、Oracle Databaseキャラクタ・セットとゲートウェイのキャラクタ・セット間で暗黙的な変換が実行されます。

ゲートウェイ言語とDRDAサーバーの相互作用

ゲートウェイによるDRDAサーバーへのログオン時に、ゲートウェイとサーバー間で初期言語情報が交換されます。初めに、ゲートウェイは、通信で使用するCCSIDをDRDAサーバーに送信します。次の例では、Oracleキャラクタ・セットのWE8ISO8859P1は、CCSID 819ASCIIコードページ)にマップされています。このCCSIDは、DRDAサーバーに送信されます。DRDAサーバーは、通信で使用するCCSIDで応答します。これは、DB2データベースの生成時に指定されたCCSIDです。次の例では、これはCCSID 500EBCDICコードページ)です。図E-2「ゲートウェイ言語とDRDAサーバーの相互作用」は、このプロセスを示しています。

DB2インスタンスは、SYSIBM.SYSSTRINGS表を使用して不明なCCSIDをマップします(この表には、様々なDB2バージョンの異なる名前が含まれます)。DB2ユーティリティを使用して、この表に別のキャラクタ・セット・マッピングを追加することが可能です。詳細は、DB2のインストレーション・ガイドを参照してください。

ゲートウェイのinitsid.oraのHS_LANGUAGEパラメータの設定により、通信用にゲートウェイで使用されるCCSIDが決定されます。同様に、HS_NLS_NCHARパラメータの設定により、GRAPHICデータの交換用にゲートウェイで使用されるCCSIDが決定されます。CCSIDにマップされたASCIIベースのサポートされるOracleキャラクタ・セットのリストは、「ゲートウェイのコードページ・マップ機能」を参照してください。

ただし、ゲートウェイのキャラクタ・セットとOracle Databaseキャラクタ・セットは、同じにする必要はありません。DRDAサーバーでは有効な変換が行われないため、通常、ゲートウェイのキャラクタ・セットとOracle Databaseキャラクタ・セットを同じに設定することは現実的ではありません。かわりに、DRDAサーバーで使用されるキャラクタ・セットと最も完全に共通する部分を持つキャラクタ・セットを選択します。Oracle Netの機能により、ゲートウェイのキャラクタ・セットとOracle Databaseキャラクタ・セット間で任意の変換が実行されます。

図E-2 ゲートウェイ言語とDRDAサーバーの相互作用

図E-2の説明が続きます。
「図E-2 ゲートウェイ言語とDRDAサーバーの相互作用」の説明

ゲートウェイの構成

ゲートウェイのインストール後、いくつかのパラメータを変更してグローバリゼーション・サポート用にカスタマイズする必要があります。

ゲートウェイ初期化ファイルのグローバリゼーション・サポート・パラメータ

ゲートウェイ初期化ファイル(initsid.ora)には、グローバリゼーション・サポートに影響を与える次の4つのパラメータがあります。

  • HS_LANGUAGE

  • HS_NLS_NCHAR

  • HS_NLS_DATE_FORMAT

  • HS_NLS_DATE_LANGUAGE

HS_LANGUAGE

HS_LANGUAGEにより、ゲートウェイとDRDAサーバー間の通信に使用されるキャラクタ・セットが定義されます。このパラメータにより、ターゲット・システムからのメッセージに使用される言語、月日の名前、AD、BC、AM、PMの記号、デフォルトの言語ソート・メカニズムなどの規則が指定されます。

HS_LANGUAGEパラメータの構文は次のとおりです。

HS_LANGUAGE=language[_territory.character_set]

変数の意味は次のとおりです。

languageには任意の有効な言語を指定できます。

territoryはオプションで、デフォルトはAMERICAです。

character_setはオプションで、デフォルトはUS7ASCIIです。これは、ASCIIベースのキャラクタ・セット名である必要があり、ゲートウェイのコードページ・マップにリストされたキャラクタ・セットと一致する必要があります。付属のキャラクタ・セット・マッピングのリストは、「ゲートウェイのコードページ・マップ機能」を参照してください。

initsid.oraでHS_LANGUAGEパラメータを省略すると、デフォルトでAMERICAN_AMERICA.US7ASCIIに設定されます。EBCDICキャラクタ・セットはサポートされません。languageおよびterritoryAMERICAN_AMERICAなど)の値は有効である必要がありますが、これらの値は変換には影響しません。

HS_NLS_NCHAR

このパラメータの詳細は、 「HS_NLS_NCHAR」を参照してください。

HS_NLS_DATE_FORMAT

HS_NLS_DATE_FORMATにより、DRDAサーバーで使用される日付書式が指定されます。

NLS_DATE_FORMATパラメータの構文は次のとおりです。

HS_NLS_DATE_FORMAT=date_format

ここで、date_formatは、YYYY-MM-DD(ISO日付書式)である必要があります。このパラメータを他の値に設定した場合や、省略した場合、日付列を含む表を対象に更新、削除、選択または挿入を行うと、エラーが発生します。

HS_NLS_DATE_LANGUAGE

HS_NLS_DATE_LANGUAGEにより、月日の名前や日付の略語に対してDRDAサーバーで使用される言語が指定されます。ISO日付書式には数値のみが含まれるため、このパラメータはゲートウェイの日付処理に影響しません。このパラメータは省略する必要があります。

ゲートウェイのコードページ・マップ機能

ゲートウェイには、現在、データ変換目的でIBM Coded Character Set Identifier(CCSID)をOracleキャラクタ・セットにマップできる、ユーザー指定の可能な機能があります。

デフォルトのマップ名はcodepage.mapで、ORACLE_HOME\dg4drda\adminディレクトリにあります。DRDA_CODEPAGE_MAPパラメータの詳細は、付録C「初期化パラメータ」を参照してください。

マップには、2つの異なる形式の構文があります。第1の形式の構文では、次のようにCCSIDとOracle Databaseキャラクタ・セット間のマッピングを定義します。

[S|D|M] CCSID direction Oracle_CharacterSet {shift}

変数の意味は次のとおりです。

Sは、シングルバイト・キャラクタ・セットを指定します。

Dは、ダブルバイト・キャラクタ・セットを指定します。

Mは、マルチバイト・キャラクタ・セットを指定します。

CCSIDは、IBM Coded Character Set Identifierです。

directionは、次のいずれかです。

Oracle_CharacterSetは、有効なOracleキャラクタ・セットの名前です。

shiftは、Shift OUT/IN処理を必要とするキャラクタ・セットを示します。この属性は、EBCDICベースのダブルバイトおよびマルチバイト・マッピングに対してのみ設定してください。

第2の形式の構文では、次のようにマルチバイトCCSIDを等価のシングルバイトおよびダブルバイトCCSIDにマッピングするよう定義します。

MBC multi = single double

変数の意味は次のとおりです。

multiは、マルチバイトCCSIDです。

singleは、シングルバイトCCSIDです。

doubleは、ダブルバイトCCSIDです。

この機能は、ゲートウェイの出荷時点でマップされていなかったCCSIDをマップする方法として用意されています。このマップを変更する場合は、事前にOracleサポート・サービスに連絡してください。

次に、Oracle Database Gateway for DRDAの出荷時点におけるマップの内容を示します。

# Copyright (c) 2001, 2007, Oracle Corporation.  All rights reserved.
# Database Gateway for DRDA - CodePage/Oracle CharacterSet Map
# S==Single-byte, D==Double-byte, M==Multi-byte, MBC==SBC DBC mapping
#
# Single-byte codepage mappings
#
S    37 = WE8EBCDIC37   # United States/Canada                          EBCDIC
S   273 = D8EBCDIC273   # Austria/Germany                               EBCDIC
S   277 = DK8EBCDIC277  # Denmark/Norway                                EBCDIC
S   278 = S8EBCDIC278   # Finland/Sweden                                EBCDIC
S   280 = I8EBCDIC280   # Italy                                         EBCDIC
S   284 = WE8EBCDIC284  # Latin America/Spain                           EBCDIC
S   285 = WE8EBCDIC285  # United Kingdom                                EBCDIC
S   297 = F8EBCDIC297   # France                                        EBCDIC
#S   420 = AR8EBCDICX    # Arabic Bilingual (USA English)                EBCDIC
S   420 = AR8XBASIC     # Arabic Bilingual (USA English)                EBCDIC
S   424 = IW8EBCDIC424  # Israel (Hebrew)                               EBCDIC
S   437 = US8PC437      # Personal Computer,USA                         ASCII
S   500 = WE8EBCDIC500  # International                                 EBCDIC
S   813 = EL8ISO8859P7  # Greek                                         ASCII
S   819 = WE8ISO8859P1  # ISO/ANSI Multilingual                         ASCII
S   838 = TH8TISEBCDIC  # Thai w/Low-Tone Marks & Ancient Chars         EBCDIC
S   850 < US7ASCII      # Multilingual Page - Personal Computer         ASCII
S   850 = WE8PC850      # Multilingual Page - Personal Computer         ASCII
S   864 = AR8ISO8859P6  # Arabic - Personal Computer                    ASCII
S   870 = EE8EBCDIC870  # Latin 2, Multilingual/ROECE                   EBCDIC
S   871 = WE8EBCDIC871  # Iceland - CECP                                EBCDIC
S   875 = EL8EBCDIC875  # Greece                                        EBCDIC
S   904 > US7ASCII      # Traditional Chinese - PC-Data                 ASCII
S   912 = EE8ISO8859P2  # Latin 2 8-bit                                 ASCII
S   916 = IW8ISO8859P8  # Israel (Hebrew)                               ASCII
S  1025 = CL8EBCDIC1025 # Cyrillic, Multiling                           EBCDIC
S  1086 = IW8EBCDIC1086 # Israel                                        EBCDIC
S  1252 = WE8MSWIN1252  # Latin 1 - MS-Windows                          ASCII
S  1253 = EL8MSWIN1253  # Greek - MS-Windows                            ASCII
S 28709 > WE8EBCDIC37   # United States/Canada (CP28709==CP37)          EBCDIC
#
# Multibyte codepage mappings
#
#S   833 > KO16DBCS       # Korean Extended single-byte                  EBCDIC
#D   834 > KO16DBCS shift # Korean double-byte                           EBCDIC
#M   933 = KO16DBCS shift # Korean Mixed multi-byte                      EBCDIC

#MBC 933 = 833 834        # Korean Mixed multi-byte                      EBCDIC
#
#S  1088 > KO16MSWIN949 # Korean KS single-byte PC-Data                  ASCII
#D   951 > KO16MSWIN949 # Korean KS double-byte PC-Data                  ASCII
#M   949 = KO16MSWIN949 # Korean KS multi-byte PC-Data                   ASCII
#MBC 949 = 1088 951     # Korean KS multi-byte PC-Data                   ASCII
#
#S   891 > KO16KSC5601 # Korean single-byte                              ASCII
#S  1040 > KO16KSC5601 # Korean single-byte                              ASCII
#D   926 > KO16KSC5601 # Korean double-byte                              ASCII
#M   934 = KO16KSC5601 # Korean multi-byte                               ASCII
#M   944 > KO16KSC5601 # Korean multi-byte                               ASCII
#MBC 934 = 891 926     # Korean multi-byte                               ASCII
#MBC 944 = 1040 926    # Korean multi-byte Extended                      ASCII
#
#S 28709 > ZHT16DBCS       # Traditional Chinese single-byte             EBCDIC
#D   835 > ZHT16DBCS shift # Traditional Chinese double-byte             EBCDIC
#M   937 = ZHT16DBCS shift # Traditional Chinese multi-byte              EBCDIC
#MBC 937 = 28709 835       # Traditional Chinese multi-byte              EBCDIC
#
#S  1114 > ZHT16MSWIN950 # Traditional Chinese single-byte               ASCII
#D   947 > ZHT16MSWIN950 # Traditional Chinese double-byte               ASCII
#M   950 = ZHT16MSWIN950 # Traditional Chinese multi-byte                ASCII
#MBC 950 = 1114 947      # Traditional Chinese multi-byte                ASCII
#

#S   836 > ZHS16DBCS       # Simplified Chinese single-byte              EBCDIC
#D   837 > ZHS16DBCS shift # Simplified Chinese double-byte              EBCDIC
#M   935 = ZHS16DBCS shift # Simplified Chinese multi-byte               EBCDIC
#MBC 935 = 836 837         # Simplified Chinese multi-byte               EBCDIC
#
#S  1027 > JA16DBCS       # Japanese single-byte                         EBCDIC
#D   300 > JA16DBCS shift # Japanese double-byte                         EBCDIC
#D  4396 > JA16DBCS shift # Japanese double-byte                         EBCDIC
#M   939 = JA16DBCS shift # Japanese multi-byte                          EBCDIC
#M  5035 > JA16DBCS shift # Japanese multi-byte                          EBCDIC
#MBC  939 = 1027 300      # Japanese multi-byte                          EBCDIC
#MBC 5035 = 1027 4396     # Japanese multi-byte                          EBCDIC
#
#S   290 > JA16EBCDIC930       # Japanese single-byte                    EBCDIC
#D   300 > JA16EBCDIC930 shift # Japanese double-byte                    EBCDIC
#D  4396 > JA16EBCDIC930 shift # Japanese double-byte                    EBCDIC
#M   930 = JA16EBCDIC930 shift # Japanese multi-byte                     EBCDIC
#M  5026 > JA16EBCDIC930 shift # Japanese multi-byte                     EBCDIC
#MBC  930 = 290 300            # Japanese multi-byte                     EBCDIC
#MBC 5026 = 290 4396           # Japanese multi-byte                     EBCDIC
#

次のリストを参照して、既存のデータベースのキャラクタ・セットを確認してください。

ゲートウェイでのマルチバイトおよびダブルバイトのサポート

ゲートウェイでダブルバイトおよびマルチバイト・データを適切に処理するには、適切なマルチバイト・マップでコードページ・マップ機能を構成する必要があります。また、オプションとして、次のゲートウェイ構成パラメータを設定できます。

これらのパラメータ値の詳細は、付録C「初期化パラメータ」を参照してください。

コードページ・マップを構成する場合、DRDAサーバーのデータベースで構成されているコードページの知識と、互換性のあるOracle Databaseキャラクタ・セットの知識が必要です。

IBM Coded Character Set Identifier(CCSID)は、データベースのプライマリ・コードページとして構成するコードページと、データベースにロードする任意の変換キャラクタ・セットを示す際に使用します。DB2などを備えた一部のDRDAサーバーには、2つの互換性のあるキャラクタ・セット間でキャラクタ・セット変換をマップする変換機能があります。DB2/OS390の場合、これらの変換は表SYSIBM.SYSSTRINGSに格納され、CCSIDコードページが別のCCSIDコードページに変換されます。SYSSTRINGSでは、INおよびOUT列により、変換で使用されるCCSIDが指定されます。一般的な変換は、ASCIIとEBCDIC間の相互変換です。そのため、2つの特定のCCSIDに対して2つの変換が使用されます。

マルチバイト・コードページは、シングルバイト・コードページとダブルバイト・コードページの両方で構成されます。たとえば、韓国語のEBCDICマルチバイト・コードページ(CCSID 933)は、コードページ833(シングルバイト用)とコードページ834(ダブルバイト用)の2つのコードページで構成されています。したがって、DRDAサーバーは、これら3つのコードページのいずれかを使用してゲートウェイにデータを送信できます。ゲートウェイは、データが関連付けられているコードページに合せて適切に変換を行う必要があります。CCSID 933はEBCDICベースのコードページであり、ゲートウェイではASCIIベースのコードページを使用する必要があるため、ASCIIベースのコードページがコードページの等価セットとして識別されます。たとえば、韓国語のマルチバイト・コードページ(CCSID 949)は、コードページ1088(シングルバイト用)とコードページ951(ダブルバイト用)の2つのコードページで構成されています。

コードページ・マップ機能は、これらのCCSIDを等価なOracle Databaseキャラクタ・セットにマップする場合に使用されます。IBM CCSIDとは異なり、Oracle Databaseキャラクタ・セットは統合されており(シングルバイトとダブルバイトのキャラクタ・セットが1つのセットに結合されています)、3つのIDではなく1つのIDで識別されます。前述の例では、ASCII韓国語コードページに等価なOracle Databaseキャラクタ・セットはKO16MSWIN949となり、EBCDIC韓国語コードページの場合はKO16DBCSとなります。これらは、codepage.mapファイルの一連のマッピング・エントリの使用によりゲートウェイで識別されます。

EBCDIC韓国語セットは次のとおりです。

S   833 > KO16DBCS       # Korean Extended single-byte                  EBCDIC
D   834 > KO16DBCS shift # Korean double-byte                           EBCDIC
M   933 = KO16DBCS shift # Korean Mixed multi-byte                      EBCDIC
MBC 933 = 833 834        # Korean Mixed multi-byte                      EBCDIC

マルチバイト・セットは、KO16DBCSに対する双方向マップです。ただし、シングルバイトおよびダブルバイトのコードページは、KO16DBCSに対する一方向マップです。特定のペアについて存在可能なCCSIDとOracle Databaseキャラクタ・セットの双方向エントリは1つのみであるため、マルチバイト・セットは直接マップします。また、シングルバイトおよびダブルバイトのCCSIDは名目上はKO16DBCSのサブセットであるため、これらのCCSIDは一方向エントリとしてマップします。ダブルバイトおよびマルチバイトのマップには、shift属性のタグが付けられます。これは、データのシフトアウトおよびシフトイン・カプセル化の一環として、EBCDICダブルバイトおよびマルチバイト・コードページで必要です。シングルバイト・セットは、ダブルバイト・データを含むことが許可されておらず、シフト・カプセル化を使用できないため、シングルバイト・マップはマークされません。MBCエントリにより、複数のコードページが1つに結合されます。

ASCII韓国語セットも同様にマップされ、次のようになります。

S  1088 > KO16MSWIN949 # Korean KS single-byte PC-Data                  ASCII
D   951 > KO16MSWIN949 # Korean KS double-byte PC-Data                  ASCII
M   949 = KO16MSWIN949 # Korean KS multi-byte PC-Data                   ASCII
MBC 949 = 1088 951     # Korean KS multi-byte PC-Data                   ASCII

マルチバイト・セットは、KO16MSWIN949に対する双方向マップです。ただし、シングルバイトおよびダブルバイトのコードページは、KO16MSWIN949に対する一方向マップです。特定のペアについて存在可能なCCSIDとOracle Databaseキャラクタ・セットの双方向エントリは1つのみであるため、マルチバイト・セットは直接マップします。シングルバイトおよびダブルバイトのCCSIDは名目上はKO16MSWIN949のサブセットであるため、これらのCCSIDは一方向エントリとしてマップします。これらのマッピングには、shift属性はありません。その理由は、ASCIIベースのセットではシフトアウトおよびシフトイン・カプセル化を使用しないためです。かわりに、ASCIIベースのセットでは、異なる方法(シフトアウトおよびシフトイン・プロトコルを使用しない方法)を使用してダブルバイト文字を識別します。

前述のエントリにより、ゲートウェイに必要なコードページ・マッピングが提供されます。例を完成するには、ゲートウェイ初期化ファイルのHS_LANGUAGEおよびHS_NLS_NCHARパラメータに適切なキャラクタ・セットを指定する必要があります。ゲートウェイ初期化パラメータは、次のようになります。

HS_LANGUAGE=AMERICAN_AMERICA.KO16MSWIN949
HS_NLS_NCHAR=KO16MSWIN949

指定するキャラクタ・セットは、ASCIIベースである必要があります。

これにより、ゲートウェイの構成に対応します。最後の手順では、DRDAサーバー・データベースでEBCDICコードページとASCIIコードページ間の変換を設定します。通常、ゲートウェイでは、2つの方向の各ペアを1つとして、合計6つの変換を使用します。ASCIIからEBCDICへの変換のみをインストールすることで、表の領域を節約できます。この理由は、DRDAサーバーでは、ゲートウェイから送信されるASCIIデータのみを変換する必要があり、ASCIIデータを送信する必要はないためです。ゲートウェイは、EBCDICデータを受信して必要に応じて変換します。この一方的なデータ変換方法は、受信者解決方式(receiver-makes-right)と呼ばれます(つまり、送信者がどのようなキャラクタ・セットを使用していても、受信者がそれを変換する必要があります)。ここでの例では、DRDAサーバーはEBCDICベースのため、すべてのデータをEBCDICで送信します。したがって、サーバーでEBCDICからASCIIへの変換が使用されることはないため、この変換をサーバーに用意する必要はありません。

前述の例において、DRDAサーバー・データベースではEBCDICの使用が仮定されており、これは通常DB2/OS390データベースにも適用されます。ただし、DB2/UDBデータベースの場合、通常これは適用されません。ほとんどのDB2/UDBデータベースは、ASCIIベースのコンピュータ上で稼働するため、ASCIIベースのコードページを使用して作成されるのが普通です。このような場合、ゲートウェイでは、ASCIIセットに対応するコードページ・マップ定義のただ1つのセットを必要とします。また、DRDAサーバーとゲートウェイの両方で同じコードページを使用するため、DB2データベースにキャラクタ・セット変換をロードする必要はありません。このため、文字変換に関連するCPUオーバーヘッドの量を減らすことができます。

コードページ・マップのエントリに関する最後の留意事項として、一部のマルチバイト・コードページが、製品に付属のcodepage.mapファイルで定義済のシングルバイトCCSIDで構成されている可能性があることに注意してください。マルチバイト・セットをサポートする新規エントリ・セットを追加する場合、新規エントリが正しく使用されるように付属のエントリをコメント・アウトしてください。

製品に付属していないコードページ・マッピングを追加することも可能です。IBM CCSIDとOracle Databaseキャラクタ・セットの知識があれば、前述の例のようなエントリを構成できます。コードページの定義とOracle Databaseキャラクタ・セットの定義に関するIBM社のドキュメントを参照しても、この作業は複雑となる可能性があるため、本番環境に移行する前に、使用するすべての文字データ値の定義を十分にテストしてください。

不明な点がある場合は、Oracleサポート・サービスに連絡して適切なコードページ・マッピング・エントリをリクエストしてください。

メッセージの可用性

サーバー上で稼働するOracle製品セットにインストールされたモジュールに応じて、言語メッセージ・モジュールを使用できるかどうかが決定されます。特定の言語セット用のメッセージ・モジュールがインストールされていない場合、言語パラメータでその言語を指定しても、リクエストされた言語でメッセージは表示されません。

グローバリゼーション・サポート構成の例

次に、システム全体で言語とキャラクタ・セットが矛盾なく動作するように、ゲートウェイ、DRDAサーバー、Oracle Databaseおよびクライアントを構成するために必要なすべての設定の例を示します。この例の設定により、ドイツのユーザーがドイツ語でゲートウェイと通信できます。

ゲートウェイのinitsid.oraファイル:

HS_LANGUAGE=AMERICAN_AMERICA.WE8ISO8859P1
HS_NLS_DATE_FORMAT=YYYY-MM-DD

DRDAサーバーのCCSID:

273 (D8EBCDIC273)

Oracle Databaseおよびデータベース・クライアント設定:

SELECT USERENV('language') FROM DUAL;
USERENV('LANGUAGE')
-----------------------------
AMERICAN_AMERICA.WE8ISO8859P1

Oracle Databaseおよびクライアントの環境変数:

NLS_LANG=GERMAN_GERMANY.WE8ISO8859P1