- PR -

Oracle10g : TRIGGER の INVALID を無くしたい

1
投稿者投稿内容
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2006-06-21 16:58
■Oracle10g Release2
■WindowsXP Pro SP2

Oracle で TRIGGER を作成していますが、

  DROP TRIGGER 〜
  CREATE TRIGGER 〜

を繰り返していたところ、STATUS が INVALID のものがたくさん出来てしまいました。
きっと、再コンパイル待ちのものだと思うのですが、

  ALTER TRIGGER 〜 COMPILE

をやっても消えてくれません。何か STATUS が INVALID のものを消す方法がありますでしょうか?

ちなみに、TRIGGER の確認は、

select * from user_objects where object_type = 'TRIGGER';

で行なっています。
よろしくお願い致します。
もしもし
ぬし
会議室デビュー日: 2004/10/15
投稿数: 280
投稿日時: 2006-06-21 17:53
alter trigger ... compile を実行したときに何かエラーは出ないんですか?
alter .. 実行した後 show error を実行して何かメッセージは出ないでしょうか?

_________________
もしもし@RMAN 友の会
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2006-06-22 09:12
引用:

もしもしさんの書き込み (2006-06-21 17:53) より:

alter trigger ... compile を実行したときに何かエラーは出ないんですか?
alter .. 実行した後 show error を実行して何かメッセージは出ないでしょうか?


もしもしさん、お返事ありがとうございます。

はい。ALTER TRIGGER を実行すると「トリガーが変更されました」と出ます。
 <SQL*Plus で実行しています>
その直後に「SHOW ERROR」を実行しても「エラーはありません」となります。

元々、BATファイルで SQL*Plus を起動し、

   DROP TRIGGER 〜
   CREATE TRIGGER 〜

を繰り返しておりました。
 <この時は、ALTER TRIGGER 〜 COMPILE は実施せず>
で、ある時、正常に TRIGGER が動かなくなったので、

select * from user_objects where object_type = 'TRIGGER';

を確認したところ、OBJECT_NAME が「BIN$bAD8GmBlRCqw4UTspdTVUA==$」といったものがたくさんあったため、これが原因かと思い、何とか削除したいと思っています。

TRIGGER 自体は、その後、再度 DROP & CREATE したところ、正常に動いております。
もしもし
ぬし
会議室デビュー日: 2004/10/15
投稿数: 280
投稿日時: 2006-06-22 09:56
引用:

ひろれいさんの書き込み (2006-06-22 09:12) より:

OBJECT_NAME が「BIN$bAD8GmBlRCqw4UTspdTVUA==$」といったものが



これは DROP 某を実行したときに作成されるオブジェクトですが、
実際には DROP で即時に削除されるのではなく Windows のゴミ箱
みたいに一時的に残しておかれているオブジェクトですね。
これを消すのであれば

SQL> purge recyclebin;

で消えます。

_________________
もしもし@RMAN 友の会
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2006-06-22 10:23
引用:

もしもしさんの書き込み (2006-06-22 09:56) より:

これは DROP 某を実行したときに作成されるオブジェクトですが、
実際には DROP で即時に削除されるのではなく Windows のゴミ箱
みたいに一時的に残しておかれているオブジェクトですね。
これを消すのであれば

SQL> purge recyclebin;

で消えます。


もしもしさん、お返事ありがとうございます。

消えました! ありがとうございます。
正常に動作しているものの、ゴミみたいで気になっておりました。

  ORACLEいろいろメモメモ

を見ますと、どうやらゴミ箱機能は「Oracle 10g」からの新機能なんですね。
知りませんでした。勉強になりました。

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)