sql - Oracle:删除所有满足条件的表空间

标签 sql oracle

我想删除数据库中数据文件名称具有特定模式的所有表空间。

下面的查询为我提供了数据文件名称遵循此模式的所有表空间:

SELECT TABLESPACE_NAME FROM DBA_DATA_FILES WHERE FILE_NAME LIKE '/vol1/u06%' ;

我想删除上述查询返回的所有表空间。但我无法弄清楚外部查询应该如何,因为 DROP TABLESPACE 没有采用 WHERE 子句。
因此,外部查询应该类似于 DROP TABLESPACE tablespace_name.....,其中 tablespace_name 来自上述模式匹配查询。

(我正在使用甲骨文)

谢谢!

最佳答案

这就是您所需要的。但我要说的是,我不会推荐,因为在这样的动态脚本中删除表空间可能很危险。

BEGIN
   FOR rs in (SELECT TABLESPACE_NAME 
                FROM DBA_DATA_FILES WHERE FILE_NAME LIKE '/vol1/u06%')  LOOP
      BEGIN
         EXECUTE IMMEDIATE 'DROP TABLESPACE ' || rs.TABLESPACE_NAME || ' INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS';
      END;
   END LOOP;
END;

关于sql - Oracle:删除所有满足条件的表空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24536020/

相关文章:

linux - oracle 11g 关机中止后长时间启动

oracle - Oracle 中计划作业失败时发送通知电子邮件

c# - 我可以在位于 FTP 服务器上的数据库上远程运行 ACCESS 查询吗?

sql - Oracle SQL 说 NULL 而不是 0 (ZERO)

sql - ActiveRecord - 从每个组中选择第一条记录

java - JDBC 通过 PreparedStatement 中的 executeBatch 调用保证原子操作

php - ORA-06550 必须声明标识符

SQL风格问题: INNER JOIN in FROM clause or WHERE clause?

sql - 连续 N 行的最大总和

Oracle 选择 NCLOB 类似于某个字符串的位置