15/9/10

ORA-38301

Está intentando borrar un objeto que está en la papelera de reciclaje(La papelera de reciclaje de Oracle10g: Recycle Bin)
Si esto se deve a un script generado para borrarlo todo, no debe de incluir los objetos que estén en la papelera de reciclaje.


Ejemplo
SQL> create table test(n varchar2(1));
Table created.

SQL> drop table test;

Table dropped.

SQL> select * from user_recyclebin;

OBJECT_NAME             ORIGINAL_NAME            OPERATION
----------------------- ------------------------ --------------------
TYPE              TS_NAME                CREATETIME
----------------- ---------------------- ----------------------------
DROPTIME       DROPSCN PARTITION_NAME           CAN CAN
-------------- -------------------------------- ---------------------
   RELATED BASE_OBJECT PURGE_OBJECT      SPACE
---------- ----------- ------------ ----------
BIN$BsQQFNUBE7jgRAAAAAAAAA==$0 TEST               DROP
TABLE             USERS                  2005-11-30:09:24:34
2005-11-30:09:24:40 8.3374E+12                  YES YES
   56784   56784       56784          8

SQL> drop table "BIN$BsQQFNUBE7jgRAAAAAAAAA==$0";

drop table "BIN$BsQQFNUBE7jgRAAAAAAAAA==$0"
           *
ERROR at line 1:
ORA-38301: can not perform DDL/DML over objects in Recycle Bin

Puedes realizar cambios en el script para eexcluir los objetos que están el papelera de reciclaje.
select 'drop ' || object_type || ' "' || object_name || '";' from user_objects
where object_name not in (select object_name from user_recyclebin);

O puedes purgar la papelera de reciclaje mediante el comando PURGE:
SQL> purge recyclebin;

Recyclebin purged.

SQL> select * from user_recyclebin;

no rows selected

1 comentario: