我想删除数据库中数据文件名称具有特定模式的所有表空间。
下面的查询为我提供了数据文件名称遵循此模式的所有表空间:
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/