如何擦拭一组Oracle模式?
擦拭我的意思是删除所有数据,表格,视图,程序,同义词等
启动sqlplus作为SYSTEM,然后键入:
drop user MYSCHEMA cascade;
重复所有您想要删除的模式。
这是一个开始,而不是一个完全烘焙的脚本 – 我敢肯定,如果用户有configuration了AQ的任何队列,它将会失败。
declare l_sql varchar2(2000); begin for i in (select object_type, object_name from dba_objects where owner = :user_to_be_wiped and object_type in ('TYPE', 'PACKAGE', 'PROCEDURE', 'FUNCTION', 'TABLE', 'VIEW', 'SEQUENCE', 'DATABASE LINK') loop l_sql := 'drop ' || :user_to_be_wiped || ' ' || i.object_type || '.' i.object_name; if i.object_type = 'TABLE' then l_sql := l_sql || ' cascade constraints'; end if; execute immediate l_sql; end loop; end; /
我发现要删除对象,必须使用以下命令禁用外键约束。
select status, 'alter table '||table_name||' disable constraint "' ||constraint_name||'";' from user_constraints where r_constraint_name is not null order by owner,table_name ;
这不起作用,我放下外键约束与以下。
select status, 'alter table '||table_name||' drop constraint "' ||constraint_name||'";' from user_constraints where r_constraint_name is not null order by owner,table_name ;