dポイントプレゼントキャンペーン実施中!

Oracle8iサーバ(サービス名:Aサーバ)と
Oracle10gサーバ(サービス名:Bサーバ)があります。

Aサーバに作られた、aスキーマに、test_tableというテーブルがあります。
そのtest_tableをBサーバに作られた、bスキーマから参照する為に、
DBリンク:BA_linkを作成しました。

実際に、bスキーマから参照する場合は、
同スキーマに、
CREATE SYNONYM test_table FOR test_table@BA_link;
のように作られたシノニムを利用して、参照します。

抽出に時間がかかるので、インデックスを作成しようと思うのですが、
どのスキーマにどのように作成すればよいのでしょうか?
ちなみにインデックスの対象にしたい項目は、
VAR_ITEM VARCHAR2(10)
NUM_ITEM NUMBER(5)
とします。

ちなみにbスキーマにて、
CREATE INDEX test_table_IX1
ON test_table (VAR_ITEM, NUM_ITEM);
と実行したところ、
ORA-02021: リモート・データベースに対するDDL操作が無効です・
というエラーが発生しました。

DBリンク先自身に、作成すべきということはなんとなく予想が
つくのですが、そのインデックスはDBリンク経由でも有効なのでしょうか?

A 回答 (1件)

Aサーバ上のテーブルに対する索引はAサーバ上に作成します。


Bサーバが受け付けたSQL文は、Aサーバのテーブルに対する検索SQLに組み立て直されて、Aサーバに託されます。
Aサーバのテーブルを検索するのは、あくまでAサーバですし、Aサーバが所有するテーブルの実行計画を立てるのも
Aサーバ自身です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す