こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ストアドプロシジャからデータベースリンクを使っての参照について

OracleツールのJDeveloperを使って、PL/SQLでストアドプロシジャを作成しています。
(Oracleは9i)

DBが2つありまして(DB-AとDB-Bとする)、
DB-Bから、データベースリンクを介してDB-Aのテーブルを参照しています。
(SELECT * FROM XXXXX.テーブル名@データベースリンク名)

DB-Bに接続してSQL*PLUS上で上記SELECT文を実行すると正しく処理されるのですが
上記SELECT文が組み込まれているDB-B上のプロシジャをコンパイルすると、
「ORA-04052」が返ってきてしまいます。

エラーコードを調べると、
DB-A側のテーブルを参照できていないようで、
「KGLR.SQLが実行されていることを確認してください」とのことなのですが、
この「KGLR.SQL」とやらが何者かわかりません。

タチの悪いことに、上記の現象が出る端末と出ない端末があります。
みんな同じIDでログインしているので権限の問題ではないと思ってるのですが・・・

「KGLR.SQL」は置いといて、このような事象に出くわしたことのある方、
推測でもなんらかの情報をお持ちの方がいらっしゃいましたらご教授ください。

よろしくお願い致します。

投稿日時 - 2006-02-23 09:50:26

QNo.1985593

暇なときに回答ください

質問者が選んだベストアンサー

catrpc.sqlですがクライアントにはインストールされませんのでサーバー側にしかありません。もしも、サーバー側も検索されたとなるとインストールに失敗している恐れがあるかも...。(あまり不安にはならないでください。)
あった場合の実行方法ですが、
1.SQL*Plusを起動
2.sysで接続(conn sys/[passwrod]@[dbname])
3.実行(@c:\oracle\ora92\rdbms\admin\catrpc.sql)
また、不明点がありましたら、補足お願いします。

投稿日時 - 2006-02-24 09:05:00

お礼

再度、ありがとうございます。
いろいろサイトで調べていたら、「catproc.sql」が出てきて、
desc ORA_KGLR7_DEPENDENCIES で記述が出てこなかったらカタログされていないので
「catproc.sql」を流してみたらどうか・・・というのが載っていました。
そこで、desc~を実行したところ、記述が出てきたので、catproc.sqlは実行済のようです。

この現象が発生する端末と発生しない端末があるので、
Oracleクライアントの設定に問題ありなのかとも考えています。
見当はつきませんが・・・

投稿日時 - 2006-02-24 21:31:54

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

またまたですが、
1.catproc.sqlとcatrpc.sqlは別物です。
2.catproc.sqlはOracleのToolでDBを作成したときに自動で流されるシステム用のPL/SQLです。厄介なことにcatproc.sqlは時たま壊れたりしますので、流しなおしは有効です。ちなみに、壊れている場合(validate=false)でもdescで表示されるはずです。両方再度流すことをお勧めします。

投稿日時 - 2006-02-25 11:01:03

お礼

三度ありがとうございます。

サーバー側の処理のため勝手にできない環境なので保守契約先にいろいろ確認してみます。

投稿日時 - 2006-03-06 21:42:11

ANo.1

[ora_home]\RDBMS\ADMINのcatrpc.sqlに
Rem glumpkin 10/20/92 - Renamed from KGLR.SQL
とコメントがあります。
ひょっとすれば、catrpc.sqlを再度実行(sysユーザーのみ)すればよいかもしれません。保障とかはできませんが...。

投稿日時 - 2006-02-23 13:18:21

お礼

回答ありがとうございます。
残念ながら、catrpc.sqlがありませんでした。
(ora_home以下で検索しても・・・)
ちなみにあったら、これをどのように実行すればよいのでしょうか?

投稿日時 - 2006-02-24 00:04:03

あなたにオススメの質問