Oracle パブリッシャの構成
更新 : 2006 年 4 月 14 日
Oracle パブリッシャからパブリケーションを作成する方法は、通常のスナップショットおよびトランザクション パブリケーションを作成する方法と同じですが、Oracle パブリッシャからパブリケーションを作成する前に、次の手順を実行する必要があります (手順 1.、3.、および 4. については、このトピックで詳しく説明します)。
- 提供されているスクリプトを使用して Oracle データベース内にレプリケーション管理ユーザーを作成します。
- パブリッシュするテーブルに、各テーブルの SELECT 権限を、手順 1. で作成した Oracle 管理ユーザーに対して直接 (ロールを通じてではなく) 許可します。
- Oracle クライアント ソフトウェアと OLE DB プロバイダを Microsoft SQL Server ディストリビュータにインストールしてから、SQL Server インスタンスを停止して再起動します。ディストリビュータを 64 ビットのプラットフォームで実行している場合は、64 ビット バージョンの Oracle OLE DB プロバイダを使用する必要があります。
- SQL Server ディストリビュータで Oracle データベースをパブリッシャとして構成します。
Oracle データベースからレプリケートできるオブジェクトの一覧については、「Oracle パブリッシャの設計上の注意点および制限」を参照してください。
メモ : |
---|
パブリッシャまたはディストリビュータを有効にし、Oracle パブリケーションまたは Oracle パブリケーションのサブスクリプションを作成するには、sysadmin 固定サーバー ロールのメンバであることが必要です。 |
Oracle データベース内でのレプリケーション管理ユーザー スキーマの作成
レプリケーション エージェントは、Oracle データベースに接続して、ユーザー スキーマのコンテキストで操作を実行します。このユーザー スキーマは作成する必要があります。このスキーマには多くの権限を許可する必要があります。この権限については、次のセクションに示します。このスキーマは、Oracle パブリッシャでの Microsoft SQL Server レプリケーション プロセスで作成されたすべてのオブジェクト (パブリック シノニム MSSQLSERVERDISTRIBUTOR は除く) を所有します。Oracle データベースで作成したオブジェクトの詳細については、「Oracle パブリッシャ上で作成されたオブジェクト」を参照してください。
メモ : |
---|
MSSQLSERVERDISTRIBUTOR パブリック シノニムと、CASCADE オプションで構成した Oracle レプリケーション ユーザーを削除すると、Oracle パブリッシャからすべてのレプリケーション オブジェクトが削除されます。 |
Oracle レプリケーション ユーザー スキーマのセットアップに役立つサンプル スクリプトが提供されています。このスクリプトは、SQL Server のインストール後、<drive>:\\Program Files\Microsoft SQL Server\<InstanceName>\MSSQL\Install\oracleadmin.sql ディレクトリで使用できます。このスクリプトについては、「Oracle の権限を許可するためのスクリプト」でも説明します。
DBA 特権を持つアカウントを使用して Oracle データベースに接続し、スクリプトを実行します。このスクリプトでは、レプリケーション管理ユーザー スキーマのユーザーとパスワード、およびオブジェクトを作成するときに使用する既定のテーブルスペースの入力が要求されます (このテーブルスペースは Oracle データベース内に存在していることが必要です)。オブジェクトに他のテーブルスペースを指定する方法の詳細については、「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 インスタンスを停止して再起動してからすべての設定が更新されているかどうかを確認します (権限については、この後の「ディレクトリ権限の設定」を参照してください)。
メモ : |
---|
Oracle クライアント ネットワーク ソフトウェアは、最新バージョンであることが必要です。Oracle では、最新バージョンのクライアント ソフトウェアをインストールすることを推奨しています。このため、データベース ソフトウェアよりもクライアント ソフトウェアの方が新しいバージョンであることがよくあります。 |
クライアント ネットワーク ソフトウェアを最も簡単にインストールおよび構成するには、Oracle クライアント ディスクの Oracle Universal Installer と Net Configuration Assistant を使用します。
Oracle Universal Installer で、次の情報を指定します。
情報 | 説明 |
---|---|
Oracle ホーム |
Oracle ソフトウェアのインストール ディレクトリのパスです。既定値 (C:\oracle\ora90 など) をそのまま使用するか、別のパスを入力します。Oracle ホームの詳細については、このトピックの「Oracle ホームに関する注意点」を参照してください。 |
Oracle ホーム名 |
Oracle ホーム パスの別名 |
インストールの種類 |
Oracle 10g では、インストール オプションとして [Runtime] または [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 アカウントで実行している場合は、次の操作を行う必要があります。
- [スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックします。
- 「
cmd
」と入力して [OK] をクリックします。 - コマンド プロンプトで次のように入力します。
sqlplus <UserSchemaLogin>/<UserSchemaPassword>@<NetServiceName>
例 :sqlplus replication/$tr0ngPasswerd@Oracle90Server
- ネットワーク構成が正常に行われていれば、ログインは成功し、
SQL
プロンプトが表示されます。 - Oracle データベースへの接続中に問題が発生した場合は、「Oracle パブリッシャのトラブルシューティング」の「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 データベース インスタンスをパブリッシャとして識別します。ディストリビュータの構成の詳細については、「ディストリビューションの構成」を参照してください。
メモ : |
---|
Oracle パブリッシャの名前を、SQL Server ディストリビュータと同じ名前、または同じディストリビュータを使用する SQL Server パブリッシャと同じ名前にすることはできません。 |
Oracle データベースをパブリッシャとして識別する場合は、Oracle パブリッシング オプションの [Complete] または [Oracle (ゲートウェイ)] を選択する必要があります。パブリッシャの識別後、このオプションは、パブリッシャを削除して再構成しない限り変更できません。[Complete] オプションでは、スナップショット パブリケーションとトランザクション パブリケーションに、Oracle パブリッシングでサポートされるすべての機能セットが提供されます。[Oracle (ゲートウェイ)] オプションでは、システム間のゲートウェイとしてレプリケーションが機能する場合にパフォーマンスを向上させるための最適化が行われます。
Oracle パブリッシャを SQL Server ディストリビュータで識別した後、レプリケーションによって Oracle データベースの TNS サービス名と同じ名前のリンク サーバーが作成されます。このリンク サーバーはレプリケーションでのみ使用できます。リンク サーバー接続で Oracle パブリッシャに接続する必要がある場合は、別の TNS サービス名を作成してから、sp_addlinkedserver (Transact-SQL) を呼び出すときにこの名前を使用します。
Oracle パブリッシャを構成してパブリケーションを作成するには
- SQL Server Management Studio: Oracle データベースからパブリケーションを作成する方法 (SQL Server Management Studio)
- レプリケーション Transact-SQL プログラミング : Oracle データベースからパブリケーションを作成する方法 (レプリケーション Transact-SQL プログラミング)
参照
概念
Oracle パブリッシャの管理上の注意点
Oracle パブリッシャのデータ型マッピング
Oracle パブリッシングの用語
Oracle パブリッシングの概要
ヘルプおよび情報
変更履歴
リリース | 履歴 |
---|---|
2006 年 4 月 14 日 |
|