drop tablespace 表空间名 including contents;通过这种方式都没法删除,因为不小心把物理文件删除了。
所以想在PL/SQL中再删除一次,提示:ORA-00604:递归SQL级别1出现错误
ORA-38301:无法对回收站中的对象执行DDL/DML

解决方案 »

  1.   

    shutdown database immediate;
    startup mount;
    alter database datafile '路径/文件名' offline drop;
    alter database open;
      

  2.   

    ...第一行命令多写了个database
    问题时实例装载状态下,数据文件应该是被锁定无法删除的
    如果删除了数据文件,无法根据控制文件找到对应数据文件而使数据库停在mount状态
    你是怎么删掉物理文件而又让数据库保持打开状态呢
      

  3.   

    ...楼上错了,表空间一定要在数据库open状态下才可以操作,因为表空间是逻辑对象
    open 状态不能删除的是数据文件,因为此时数据文件会被oracle进程锁定,只能通过oracle而非os来删除
      

  4.   

    SQL> startup mount;
    ORACLE 例程已经启动。Total System Global Area  171966464 bytes
    Fixed Size                   787988 bytes
    Variable Size             145488364 bytes
    Database Buffers           25165824 bytes
    Redo Buffers                 524288 bytes
    数据库装载完毕。
    SQL> recover database;
    ORA-00283: 恢复会话因错误而取消
    ORA-01110: 数据文件 11: 'F:\ORACLE\PRODUCT\10.1.0\ORADATA\BMS\MYTEMP.DBF'
    ORA-01157: 无法标识/锁定数据文件 11 - 请参阅 DBWR 跟踪文件
    ORA-01110: 数据文件 11: 'F:\ORACLE\PRODUCT\10.1.0\ORADATA\BMS\MYTEMP.DBF'
    SQL> alter database archivelog;数据库已更改。SQL> alter database datafile 'F:\ORACLE\PRODUCT\10.1.0\ORADATA\BMS\MYTEMP.DBF' offline;数据库已更改。SQL> alter database open;数据库已更改。