運用時に発生するエラー Oracle 10g

ORA-38301: リサイクルビンのオブジェクトにDDL/DMLを実行できません。

この ORA-38301: 〜 エラーは Oracle 10g からの、ごみ箱(=リサイクルビン RECYCLEBIN という名前) 機能により生成された オブジェクトにアクセスしようとしたことによるエラー。

原因

Oracle 10g から仕様が変更され、削除されたオブジェクトが USER_TABLES に $BIN+...+ XX という形式で表示されるようになっている。
このオブジェクトには、DDL、DML を実行することが許可されていない。

対応

もし不要なオブジェクトしか、ごみ箱にない場合には PURGE USER_RECYCLEBIN; を行ないユーザーごみ箱の内容を消去する。
(全体 ごみ箱の削除は、 PURGE RECYCLEBIN )
この ごみ箱は テーブルスペースの容量が不足すると自動的にパージが実行される。(期限やゴミ箱サイズは設定できない)

補足

以下の SQL または、SQL*Plus SHOW コマンドを実行することで ごみ箱 の中身を調べることができる。

SELECT ORIGINAL_NAME, OBJECT_NAME, DROPTIME
 FROM USER_RECYCLEBIN
ORDER BY DROPTIME DESC ;

または SQL*Plus から
SQL> SHOW RECYCLEBIN

ゴミ箱機能によって保護されないテーブル(即座に削除される)

ごみ箱機能を無効(有効)にする初期化パラメータ

初期化パラメータ RECYCLEBIN Oracle 10g Release2 (設定後、即時反映される)

-- ごみ箱機能を OFF
ALTER SYSTEM SET RECYCLEBIN = OFF;
-- ごみ箱機能を ON (デフォルト)
ALTER SYSTEM SET RECYCLEBIN = ON;

セッションで設定

ALTER SESSION SET RECYCLEBIN = OFF;

注意:セッション単位ではうまくいかないようである。(再接続で元に戻らない:Oracle 10.2.0.1.0)

 


関連事項

 

一覧ページへ戻る

OTN (Oracle Technology Network)によるエラーメッセージによる情報だけでは、対処に困ったエラーについてのプラクティスです。
ベスト・プラクティスというわけではないので、書いてあることに固執しないで広い視野でエラー対応してください。

日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ オラクルサポートセンター