Oracle データベースからのパブリケーションの作成

適用対象:SQL Server

このトピックでは、SQL Server Management Studio または Transact-SQL を使用して、SQL Server の Oracle データベースからパブリケーションを作成する方法について説明します。

このトピックの内容

始める前に

前提条件

  • パブリケーションを作成する前に、Microsoft ディストリビューターに Oracle ソフトウェアをインストールし、Oracle データベースを構成する必要があります。 詳細については、「Configure an Oracle Publisher」(Oracle パブリッシャーの構成) をご覧ください。

SQL Server Management Studio を使用する

パブリケーションの新規作成ウィザードを使用して、Oracle データベースからスナップショット パブリケーションまたはトランザクション パブリケーションを作成します。

Oracle データベースからパブリケーションを最初に作成するときは、 SQL Server ディストリビューターで Oracle パブリッシャーを識別する必要があります (以降同じデータベースからパブリケーションを作成するときは、この作業は不要です)。 Oracle パブリッシャーの識別は、パブリケーションの新規作成ウィザードまたは [ディストリビューターのプロパティ - <ディストリビューター]> ダイアログ ボックスで行うことができます。このトピックでは、[ディストリビューターのプロパティ - <ディストリビューター]> ダイアログ ボックスについて説明します。

SQL Server ディストリビューターで Oracle パブリッシャーを識別するには

  1. SQL Server Management Studio で、Oracle パブリッシャーがディストリビューターとして使用する SQL Server インスタンスに接続し、サーバー ノードを展開します。

  2. [レプリケーション] フォルダーを右クリックし、 [ディストリビューターのプロパティ]をクリックします。

  3. [ディストリビューターのプロパティ - <ディストリビューター]> ダイアログ ボックスの [パブリッシャー] ページで、[追加] をクリックし、[Oracle パブリッシャーの追加] をクリックします。

  4. [サーバーへの接続] ダイアログ ボックスで、 [オプション] ボタンをクリックします。

  5. [ログイン] タブで、次の操作を実行します。

    1. Oracle データベースのインスタンス名を入力するか、または [サーバー インスタンス] コンボ ボックスで [参照] を選択します。

    2. [Oracle 標準認証] (推奨) または [Windows 認証]を選択してください。

      [Windows 認証] を選択する場合は、Windows 資格情報を使用した接続を許可するように Oracle サーバーが構成されている必要があります (詳細については、Oracle のマニュアルを参照してください)。また、レプリケーション管理ユーザー スキーマに指定した Microsoft Windows アカウントと同じアカウントを使用して現在ログインしている必要があります。

    3. [Oracle 標準認証]を選択する場合は、構成時に Oracle パブリッシャーで作成したレプリケーション管理ユーザー スキーマのログインおよびパスワードを入力します。

  6. [接続プロパティ] タブで、パブリッシャーの種類として [ゲートウェイ] または [完全]を選択します。

    [完全] オプションを選択した場合は、Oracle パブリッシング用にサポートされる完全な機能セットがスナップショットおよびトランザクション パブリケーションに提供されます。 [ゲートウェイ] オプションを選択した場合は、レプリケーションがシステム間のゲートウェイとして動作する場合のパフォーマンスを向上させるために、特定のデザインが最適化されます。 複数のトランザクション パブリケーションに同じテーブルをパブリッシュする場合は、 [ゲートウェイ] オプションは使用できません。 [ゲートウェイ]オプションを選択した場合、1 つのテーブルは、最大で 1 つのトランザクション パブリケーションおよび任意の数のスナップショット パブリケーションに含めることができます。

  7. [接続]をクリックします。これにより、Oracle パブリッシャーへの接続が作成され、レプリケーション用に構成されます。 [サーバーへの接続] ダイアログ ボックスが閉じ、[ディストリビューターのプロパティ - <ディストリビューター]> ダイアログ ボックスに戻ります。

    Note

    ネットワーク構成に問題がある場合は、この時点でエラーが返されます。 Oracle データベースへの接続中に問題が発生した場合は、「 Troubleshooting Oracle Publishers」の「SQL Server ディストリビューターが Oracle データベース インスタンスに接続できない」を参照してください。

  8. [OK] を選択します。

Oracle データベースからパブリケーションを作成するには

  1. Oracle パブリッシャーがディストリビューターとして使用する SQL Server インスタンスに接続し、サーバー ノードを展開します。

  2. [レプリケーション] フォルダーを展開します。

  3. [ローカル パブリケーション] フォルダーを右クリックし、 [新しい Oracle パブリケーション]をクリックします。

  4. パブリケーションの新規作成ウィザードの [Oracle パブリッシャー] ページで、Oracle パブリッシャーを選択します。 Oracle パブリッシャーが表示されていない場合は、 [Oracle パブリッシャーの追加]をクリックし、前の手順から操作を行います。

  5. [パブリケーションの種類] ページで、 [スナップショット パブリケーション] または [トランザクション パブリケーション]を選択します。

  6. [アーティクル] ページで、パブリッシュするデータベース オブジェクトを選択します。

    必要に応じて、テーブルを展開してから 1 つ以上の列のチェック ボックスをオフにし、テーブルの列をフィルター選択します。 [アーティクルのプロパティ] をクリックしてアーティクルのプロパティを表示および変更し、必要に応じて代替データ型マッピングを指定します。 データ型マッピングの詳細については、「Specify Data Type Mappings for an Oracle Publisher」(Oracle パブリッシャーのデータ型マッピング) を参照してください。

  7. [テーブル行のフィルター選択] ページで、必要に応じてフィルターを適用し、1 つ以上のテーブルからデータのサブセットをパブリッシュします。

  8. サブスクリプション データベースですべてのオブジェクトを作成し、必要なデータをすべて追加している場合に限り、 [スナップショット エージェント] ページで [スナップショットをすぐに作成する] をオフにします。

  9. [エージェント セキュリティ] ページで、スナップショット エージェントの資格情報 (すべてのパブリケーション用) およびログ リーダー エージェントの資格情報 (トランザクション パブリケーション用) を指定します。 エージェントが実行され、指定した Microsoft Windows アカウントのコンテキストを使用して SQL Server ディストリビューターへの接続が確立されます。 レプリケーション管理ユーザー スキーマとして指定したアカウントのコンテキストを使用して、エージェントから Oracle データベースへの接続が確立されます。 詳細については、「Configure an Oracle Publisher」(Oracle パブリッシャーの構成) をご覧ください。

    各エージェントで必要な権限の詳細については、「 Replication Agent Security Model 」および「 Replication Security Best Practices」を参照してください。

  10. [ウィザードのアクション] ページで、必要に応じてパブリケーションのスクリプトを作成できます。 詳細については、「レプリケーションのスクリプト作成」を参照してください。

  11. [ウィザードの完了] ページで、パブリケーションの名前を指定します。

Transact-SQL の使用

Oracle データベースをパブリッシャーとして構成した後で、システム ストアド プロシージャを使用して、 Microsoft SQL Server パブリッシャーから行う場合と同じ方法でトランザクション パブリケーションまたはスナップショット パブリケーションを作成できます。

Oracle パブリケーションを作成するには

  1. Oracle データベースをパブリッシャーとして構成します。 詳細については、「Configure an Oracle Publisher」(Oracle パブリッシャーの構成) をご覧ください。

  2. リモート ディストリビューターが存在しない場合は、リモート ディストリビューターを構成します。 詳細については、「 Configure Publishing and Distribution」をご参照ください。

  3. Oracle パブリッシャーが使用するリモート ディストリビューターで、sp_adddistpublisher (Transact-SQL) を実行します。 @publisher に Oracle データベース インスタンスの TNS (Transparent Network Substrate) 名を、 @publisher_typeORACLE or ORACLE GATEWAYの値を指定します。 次のいずれかの方法で、Oracle パブリッシャーからリモート SQL Server ディストリビューターに接続するときに使用される Specify セキュリティ モードを指定します。

    • 既定の Oracle 標準認証を使用するには、 @security_mode0を、 @loginに Oracle パブリッシャーで構成時に作成したレプリケーション管理ユーザー スキーマを、 @passwordにパスワードを指定します。

      重要

      可能であれば、実行時、ユーザーに対してセキュリティ資格情報の入力を要求します。 スクリプト ファイルに資格情報を格納する場合は、不正アクセスを防ぐために、そのファイルをセキュリティで保護する必要があります。

    • Windows 認証を使用するには、 @security_mode1を指定します。

      Note

      Windows 認証を使用する場合は、Windows 資格情報を使用した接続を許可するように Oracle サーバーが構成されている必要があります (詳細については、Oracle のマニュアルを参照してください)。また、レプリケーション管理ユーザー スキーマに指定した Microsoft Windows アカウントと同じアカウントを使用して現在ログインしている必要があります。

  4. パブリケーション データベースのログ リーダー エージェント ジョブを作成します。

    • パブリッシュされたデータベースにログ リーダー エージェント ジョブが存在するかどうか不明である場合は、ディストリビューション データベースの Oracle パブリッシャーによって使用されるディストリビューターで sp_helplogreader_agent (Transact-SQL) を実行します。 @publisherに Oracle パブリッシャーの名前を指定します。 結果セットが空の場合、ログ リーダー エージェント ジョブを作成する必要があります。

    • パブリケーション データベース用のログ リーダー エージェント ジョブが既に存在する場合、手順 5. に進みます。

    • Oracle パブリッシャーのディストリビューション データベースによって使用されるディストリビューターで、sp_addlogreader_agent (Transact-SQL) を実行します。 @job_login および @job_passwordに、エージェントを実行するときに使用する Windows 資格情報を指定します。

      Note

      @job_login パラメーターは、手順 3. で指定したログインと一致する必要があります。 パブリッシャーのセキュリティ情報を指定しないでください。 ログ リーダー エージェントは、手順 3. で指定されたセキュリティ情報を使用してパブリッシャーに接続します。

  5. ディストリビューター側のディストリビューション データベースに対して、パブリケーションを作成する sp_addpublication (Transact-SQL) を実行します。 詳しくは、「 パブリケーションを作成」をご覧ください。

  6. ディストリビューター側のディストリビューション データベースに対して、パブリケーションを作成する sp_addpublication_snapshot (Transact-SQL) を実行します。 手順 4. で使用したパブリケーション名を @publication に指定し、スナップショット エージェントを実行するときに使用される Windows 資格情報を @job_name@passwordに指定します。 パブリッシャーへの接続時に Oracle 標準認証を使用するには、 @publisher_security_mode0 を指定し、 @publisher_login および @publisher_passwordに Oracle ログイン情報を指定する必要があります。 これにより、パブリケーション用のスナップショット エージェント ジョブが作成されます。

参照

Oracle パブリッシャーの構成]
データとデータベース オブジェクトのパブリッシュ
Oracle パブリッシャー用のトランザクション セット ジョブの構成 (レプリケーション Transact-SQL プログラミング)
Oracle パブリッシングの概要
Oracle の権限を許可するためのスクリプト