- - PR -
Oracle10g : TRIGGER の INVALID を無くしたい
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 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'; で行なっています。 よろしくお願い致します。 | ||||
|
投稿日時: 2006-06-21 17:53
alter trigger ... compile を実行したときに何かエラーは出ないんですか?
alter .. 実行した後 show error を実行して何かメッセージは出ないでしょうか? _________________ もしもし@RMAN 友の会 | ||||
|
投稿日時: 2006-06-22 09:12
もしもしさん、お返事ありがとうございます。 はい。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 したところ、正常に動いております。 | ||||
|
投稿日時: 2006-06-22 09:56
これは DROP 某を実行したときに作成されるオブジェクトですが、 実際には DROP で即時に削除されるのではなく Windows のゴミ箱 みたいに一時的に残しておかれているオブジェクトですね。 これを消すのであれば SQL> purge recyclebin; で消えます。 _________________ もしもし@RMAN 友の会 | ||||
|
投稿日時: 2006-06-22 10:23
もしもしさん、お返事ありがとうございます。 消えました! ありがとうございます。 正常に動作しているものの、ゴミみたいで気になっておりました。 ORACLEいろいろメモメモ を見ますと、どうやらゴミ箱機能は「Oracle 10g」からの新機能なんですね。 知りませんでした。勉強になりました。 ありがとうございました。 | ||||
1
