DBLinkを使用してリモートデータベースにクエリを実行しています。クエリを高速化する方法を考えています。リモートテーブルのいくつかの列にインデックスを追加するにはどうすればよいですか。誰かが同じ周りの推奨事項を提供できれば幸いです。
5 に答える
リモート データベースで DBMS_JOB または DBMS_SCHEDULER パッケージを使用して、DDL を実行するジョブをスケジュールできます。
しかし、これを考慮してください。Oracleがデータベースリンクを介したDDLの例外をスローする場合、それには正当な理由があるはずですよね? データベース リンクを介してリモートで誰かにスキーマをいじられたくありません。代わりに、リモートの DBA と話し合って、解決策を見つけてください。
dblink を介して実行することはできません (dblink が所有スキーマを使用している場合でも) が表示されます。
ORA-02021: DDL operations are not allowed on a remote database
クエリに基づいてリモート データベースにマテリアライズド ビューを作成し、好みのインデックスを追加してから、必要に応じてそのマテリアライズド ビューのシノニムを作成できます。
リモート データベースにインデックスを作成し、ビュー フォームで (もちろんリモート データベースで) クエリを作成することができます。そうすれば、リモート データベースは取得したすべてのメソッド (インデックスなど) を使用してクエリを完了し、必要な結果のみを返します。
ジョン、「分散クエリのチューニング」に関する次の Oracle ドキュメントから始めるのがよいでしょう。
http://download.oracle.com/docs/cd/B28359_01/server.111/b28310/ds_appdev004.htm