是否可以删除Oracle中方案中的所有内容?我找到了这个脚本:
Begin
for c in (select table_name from user_tables) loop
execute immediate ('drop table '||c.table_name||' cascade constraints);
end loop;
End;
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有任何东西可以删除模式,索引,表格,约束中的所有内容......但不是模式(删除用户...).
谢谢.
ven*_*nki 37
通常,删除和添加用户最简单.如果您具有对数据库的系统或sysdba访问权限,那么这是首选方法.
如果您没有系统级访问权限,并且想要擦除模式,则以下sql将生成一系列drop语句,然后可以执行这些语句.
select 'drop '||object_type||' '|| object_name|| DECODE(OBJECT_TYPE,'TABLE',' CASCADE CONSTRAINTS','') || ';' from user_objects
Run Code Online (Sandbox Code Playgroud)
然后,我通常清洗回收站,以真正清理.说实话,我没有看到oracle的回收站有很多用途,并希望我可以禁用它,但无论如何:
purge recyclebin;
Run Code Online (Sandbox Code Playgroud)
这将生成一个drop语句列表.并非所有这些都会执行 - 如果你使用级联删除,丢弃PK_*索引将失败.但最终,你将拥有一个非常干净的架构.确认:
select * from user_objects
Run Code Online (Sandbox Code Playgroud)
另外,只需添加,问题中的Pl/sql块将仅删除表,它不会删除所有其他对象.
ps:从某个网站复制,对我很有用.经过测试和工作就像一个魅力.
在 github 上找到了以下开箱即用的脚本(SQL*Plus:版本 12.2.0.1.0 Production):
https://gist.github.com/rafaeleyng/33eaef673fc4ee98a6de4f70c8ce3657
感谢作者 Rafael Eyng。
只需登录到您要删除其对象的架构即可。
BEGIN
FOR cur_rec IN (SELECT object_name, object_type
FROM user_objects
WHERE object_type IN
('TABLE',
'VIEW',
'PACKAGE',
'PROCEDURE',
'FUNCTION',
'SEQUENCE',
'TYPE',
'SYNONYM',
'MATERIALIZED VIEW'
))
LOOP
BEGIN
IF cur_rec.object_type = 'TABLE'
THEN
EXECUTE IMMEDIATE 'DROP '
|| cur_rec.object_type
|| ' "'
|| cur_rec.object_name
|| '" CASCADE CONSTRAINTS';
ELSE
EXECUTE IMMEDIATE 'DROP '
|| cur_rec.object_type
|| ' "'
|| cur_rec.object_name
|| '"';
END IF;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line ( 'FAILED: DROP '
|| cur_rec.object_type
|| ' "'
|| cur_rec.object_name
|| '"'
);
END;
END LOOP;
END;
/
Run Code Online (Sandbox Code Playgroud)
仍然可能有公共同义词指向刚刚删除的表。以下脚本也会删除这些内容:
BEGIN
FOR cur_syn IN (SELECT synonym_name
FROM all_synonyms
WHERE table_owner = 'MY_USER')
LOOP
BEGIN
EXECUTE IMMEDIATE 'drop public synonym ' || cur_syn.synonym_name ;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.PUT_LINE ('Failed to drop the public synonym ' || cur_syn.synonym_name || '! ' || sqlerrm);
END;
END LOOP;
END;
/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
59626 次 |
| 最近记录: |