Oracle パブリッシャーの構成]

適用対象:SQL Server

Oracle パブリッシャーからパブリケーションを作成する方法は、通常のスナップショットおよびトランザクション パブリケーションを作成する方法と同じですが、Oracle パブリッシャーからパブリケーションを作成する前に、次の手順を実行する必要があります (手順 1、3、および 4 については、このトピックで詳しく説明します)。

  1. 提供されているスクリプトを使用して Oracle データベース内にレプリケーション管理ユーザーを作成します。

  2. パブリッシュするテーブルに、各テーブルの SELECT アクセス許可を、手順 1. で作成した Oracle 管理ユーザーに対して直接 (ロールを通じてではなく) 許可します。

  3. Oracle クライアント ソフトウェアと OLE DB プロバイダーを Microsoft SQL Server ディストリビューターにインストールしてから、SQL Server インスタンスを停止して再起動します。 ディストリビューターを 64 ビットのプラットフォームで実行している場合は、64 ビット バージョンの Oracle OLE DB プロバイダーを使用する必要があります。

  4. SQL Server ディストリビューターで Oracle データベースをパブリッシャーとして構成します。

SQL Server は、トランザクション レプリケーションとスナップショット レプリケーションに対する次の異種シナリオをサポートします。

  • SQL Server 以外のサブスクライバーへの SQL Server からのデータのパブリッシュ

  • Oracle に対するデータのパブリッシュには次の制限があります。

シナリオ 2016 以前 2017 以降
Oracle からのレプリケーション Oracle 10g 以前のみをサポート Oracle 10g 以前のみをサポート
Oracle へのレプリケーション Oracle 12c まで サポートされていません

SQL Server 以外のサブスクライバーへの異種レプリケーションは非推奨とされます。 Oracle パブリッシングは非推奨とされます。 データを移動するには、変更データ キャプチャと SSIS を使用してソリューションを作成します。

Oracle データベースからレプリケートできるオブジェクトの一覧については、「Design Considerations and Limitations for Oracle Publishers (Oracle パブリッシャーの設計上の注意点と制限)」を参照してください。

Note

パブリッシャーまたはディストリビューターを有効にし、Oracle パブリケーションまたは Oracle パブリケーションのサブスクリプションを作成するには、 sysadmin 固定サーバー ロールのメンバーであることが必要です。

Oracle データベース内でのレプリケーション管理ユーザー スキーマの作成

レプリケーション エージェントは、Oracle データベースに接続して、ユーザー スキーマのコンテキストで操作を実行します。このユーザー スキーマは作成する必要があります。 このスキーマには多くの権限を許可する必要があります。この権限については、次のセクションに示します。 このスキーマは、Oracle パブリッシャーでの Microsoft SQL Server レプリケーション プロセスで作成されたすべてのオブジェクト (パブリック 同意語 MSSQLSERVERDISTRIBUTOR は除く) を所有します。 Oracle データベースで作成したオブジェクトの詳細については、「 Objects Created on the Oracle Publisher」を参照してください。

Note

MSSQLSERVERDISTRIBUTOR パブリック シノニムと、 CASCADE オプションで構成した Oracle レプリケーション ユーザーを削除すると、Oracle パブリッシャーからすべてのレプリケーション オブジェクトが削除されます。

Oracle レプリケーション ユーザー スキーマのセットアップに役立つサンプル スクリプトが提供されています。 このスクリプトは、SQL Server の以下のインストール後に、ディレクトリで使用できます。<drive>:\\Program Files\Microsoft SQL Server\<InstanceName>\MSSQL\Install\oracleadmin.sql。 このスクリプトについては、「 Script to Grant Oracle Permissions」でも説明します。

DBA 特権を持つアカウントを使用して Oracle データベースに接続し、スクリプトを実行します。 このスクリプトでは、レプリケーション管理ユーザー スキーマのユーザーとパスワード、およびオブジェクトを作成するときに使用する既定のテーブルスペースの入力が要求されます (このテーブルスペースは Oracle データベース内に存在していることが必要です)。 オブジェクトに他のテーブルスペースを指定する方法の詳細については、「Manage Oracle Tablespaces (Oracle テーブルスペースの管理)」を参照してください。 ユーザー名と複雑なパスワードを選択しますが、後で Oracle データベースをパブリッシャーとして構成するときにこの情報を提供する必要があるため、どちらもメモしておいてください。 スキーマはレプリケーションに必要なオブジェクトでのみ使用し、このスキーマではパブリッシュするテーブルを作成しないでください。

手動によるユーザー スキーマの作成

レプリケーション管理ユーザー スキーマを手動で作成する場合は、スキーマに次の権限を直接またはデータベース ロールを通じて許可する必要があります。

  • CREATE PUBLIC SYNONYM および DROP PUBLIC SYNONYM

  • CREATE PROCEDURE

  • CREATE SEQUENCE

  • CREATE SESSION

また、次の権限を、(ロールを通じてではなく) 直接ユーザーに許可する必要もあります。

  • CREATE ANY TRIGGER。 これは、スナップショット レプリケーションとトランザクション レプリケーションの両方の場合にのみ必要です。

  • CREATE TABLE

  • CREATE VIEW

SQL Server ディストリビューターへの Oracle クライアント ネットワーク ソフトウェアのインストールと構成

Oracle クライアント ネットワーク ソフトウェアおよび Oracle OLE DB プロバイダーを SQL Server ディストリビューターにインストールして構成し、ディストリビューターが Oracle パブリッシャーと接続できるようにします。 ソフトウェアをインストールしたら、ソフトウェアがインストールされているフォルダーに適切な権限を設定し、 SQL Server インスタンスを停止して再起動してからすべての設定が更新されているかどうかを確認します (権限については、この後の「ディレクトリ権限の設定」を参照してください)。

Note

Oracle クライアント ネットワーク ソフトウェアは、最新バージョンであることが必要です。 Oracle では、最新バージョンのクライアント ソフトウェアをインストールすることを推奨しています。 このため、データベース ソフトウェアよりもクライアント ソフトウェアの方が新しいバージョンであることがよくあります。

クライアント ネットワーク ソフトウェアを最も簡単にインストールおよび構成するには、Oracle クライアント ディスクの Oracle Universal Installer と Net Configuration Assistant を使用します。

Oracle Universal Installer で、次の情報を指定する必要があります。

情報 説明
Oracle ホーム Oracle ソフトウェアのインストール ディレクトリのパスです。 既定値 (C:\oracle\ora90 など) をそのまま使用するか、別のパスを入力します。 Oracle ホームの詳細については、このトピックの「Oracle ホームに関する注意点」を参照してください。
Oracle ホーム名 Oracle ホーム パスの別名
インストールの種類 Oracle 10g では、インストール オプションとして [Administrator] を選択してください。

Oracle Universal Installer が完了したら、Net Configuration Assistant を使用してネットワーク接続を構成します。 ネットワーク接続を構成するには、4 つの情報を指定する必要があります。 Oracle データベース管理者は、データベースとリスナーをセットアップするときにネットワークを構成しています。この情報が不明な場合は、管理者に問い合わせてください。 以下の操作を行う必要があります。

アクション 説明
データベースを識別する データベースは 2 とおりの方法で識別できます。 1 つ目は、SID (Oracle System Identifier) を使用する方法で、すべての Oracle リリースで使用できます。 2 つ目は、サービス名を使用する方法で、Oracle リリース 8.0 以降で使用できます。 どちらの方法も、データベースの作成時に構成される値を使用します。データベースのリスナーの構成時に管理者が使用したものと同じ命名方法を、クライアント ネットワーク構成でも使用することが重要です。
データベースのネットワークの別名を識別する Oracle データベースへのアクセスに使用するネットワークの別名を指定する必要があります。 Oracle データベースを、 SQL Server ディストリビューターでパブリッシャーとして識別するときに、この別名を指定します。 ネットワークの別名とは、基本的にはデータベースの作成時に構成されたリモート SID またはサービス名へのポインターです。ネットワークの別名は、各種の Oracle リリースや製品では、ネット サービス名や TNS 別名など、複数の名前で呼ばれています。 SQL*Plus では、ログイン時に "ホスト文字列" パラメーターとしてこの別名の入力画面が表示されます。
ネットワーク プロトコルを選択する サポート対象とする適切なプロトコルを選択します。 ほとんどのアプリケーションでは TCP を使用します。
データベース リスナーを識別するホスト情報を指定する ホストは、Oracle リスナーを実行中のコンピューターの名前または DNS 別名で、通常はデータベースが存在しているコンピューターです。 プロトコルによっては、追加情報を指定する必要があります。 たとえば、TCP を選択した場合は、リスナーが対象データベースへの接続要求を受信待ちしているポートを指定する必要があります。 既定の TCP 構成ではポート 1521 を使用します。

ディレクトリ権限の設定

ディストリビューター上の SQL Server サービスが実行されるアカウントには、Oracle クライアント ネットワーク ソフトウェアがインストールされているディレクトリ (およびすべてのサブディレクトリ) に対する読み取り権限と実行権限を付与する必要があります。

SQL Server ディストリビューターと Oracle パブリッシャー間の接続のテスト

Net Configuration Assistant の終了間際に、Oracle パブリッシャーへの接続をテストするオプションを選択できます。 接続をテストする前に、Oracle データベース インスタンスがオンラインで、Oracle リスナーが実行中であることを確認してください。 テストが成功しなかった場合、接続しようとするデータベースを担当する Oracle DBA に連絡してください。

Oracle パブリッシャーへの接続に成功したら、作成したレプリケーション管理ユーザー スキーマに関連付けられたアカウントとパスワードを使用してデータベースにログインします。 SQL Server サービスが使用しているアカウントと同じ Windows アカウントで実行している場合は、次の操作を行う必要があります。

  1. [スタート] ボタンをクリックし、 [ファイル名を指定して実行] をクリックします。

  2. cmd 」と入力して [OK] をクリックします。

  3. コマンド プロンプトに、次のコマンドを入力します。

    sqlplus <UserSchemaLogin>/<UserSchemaPassword>@<NetServiceName>

    例: sqlplus replication/$tr0ngPasswerd@Oracle90Server

  4. ネットワーク構成が正常に行われていれば、ログインは成功し、SQL プロンプトが表示されます。

  5. Oracle データベースへの接続中に問題が発生した場合は、「 Troubleshooting Oracle Publishers」の「SQL Server ディストリビューターが Oracle データベース インスタンスに接続できない」を参照してください。

Oracle ホームに関する注意点

Oracle では、アプリケーション バイナリをサイド バイ サイド インストールできますが、ある時点でレプリケーションが使用できるバイナリ セットは 1 つだけです。 各バイナリ セットは Oracle ホームに関連付けられ、バイナリはディレクトリ %ORACLE_HOME%\bin に格納されます。 レプリケーションが Oracle パブリッシャーに接続するときに、正しいバイナリ セット (具体的には最新バージョンのクライアント ネットワーク ソフトウェア) が使用されるようにしてください。

SQL Server サービスおよび SQL Server エージェント サービスで使用されるアカウントを使ってディストリビューターにログインし、適切な環境変数を設定します。 %ORACLE_HOME% 変数は、クライアント ネットワーク ソフトウェアをインストールしたときに指定したインストール ポイントを参照するように設定する必要があります。 %PATH% には、最初に検出される Oracle エントリとして %ORACLE_HOME% \bin ディレクトリを含める必要があります。 環境変数の設定の詳細については、Windows のマニュアルを参照してください。

SQL Server ディストリビューターでの Oracle データベースのパブリッシャーとしての構成

Oracle パブリッシャーは常にリモート ディストリビューターを使用するため、Oracle パブリッシャーのディストリビューターとして機能するように SQL Server のインスタンスを構成する必要があります。1 つの Oracle パブリッシャーは 1 つのディストリビューターのみ使用しますが、1 つのディストリビューターは複数の Oracle パブリッシャーに対応できます。 ディストリビューターを構成したら、 SQL Server ディストリビューターで、SQL Server Management Studio、Transact-SQL、レプリケーション管理オブジェクト (RMO) を通じて Oracle データベース インスタンスをパブリッシャーとして識別します。 ディストリビューターの構成の詳細については、「Configure Distribution (ディストリビューションの構成)」を参照してください。

Note

Oracle パブリッシャーの名前を、SQL Server ディストリビューターと同じ名前、または同じディストリビューターを使用する SQL Server パブリッシャーと同じ名前にすることはできません。

Oracle データベースをパブリッシャーとして識別する場合は、Oracle パブリッシング オプションの [Complete] または [Oracle (ゲートウェイ)] を選択する必要があります。 パブリッシャーを識別した後は、パブリッシャーをいったん削除して再構成しない限り、このオプションは変更できません。 [完全] オプションを選択した場合は、Oracle パブリッシング用にサポートされる完全な機能セットがスナップショットおよびトランザクション パブリケーションに提供されます。 [Oracle (ゲートウェイ)] オプションでは、システム間のゲートウェイとしてレプリケーションが機能する場合にパフォーマンスを向上させるための最適化が行われます。

Oracle パブリッシャーを SQL Server ディストリビューターで識別した後、レプリケーションによって Oracle データベースの TNS サービス名と同じ名前のリンク サーバーが作成されます。 このリンク サーバーはレプリケーションでのみ使用できます。 リンク サーバー接続で Oracle パブリッシャーに接続する必要がある場合は、別の TNS サービス名を作成してから、sp_addlinkedserver (Transact-SQL) を呼び出すときにこの名前を使用します。

Oracle パブリッシャーを構成してパブリケーションを作成するには、「 Create a Publication from an Oracle Database」を参照してください。

参照

Oracle パブリッシャーの管理上の注意点
Oracle パブリッシャーのデータ型マッピング
Oracle パブリッシングの用語
Oracle パブリッシングの概要