Как вы можете стереть набор схем Oracle?
Под стиранием я подразумеваю удаление всех данных, таблиц, представлений, процедур, синонимов и т. Д. И т. Д.
Запустите sqlplus как SYSTEM и введите:
drop user MYSCHEMA cascade;
Повторите эти действия для всех схем, которые вы хотите удалить.
Это начало, а не полностью готовый сценарий - я почти уверен, что он потерпит неудачу, если пользователь, например, настроил какие-либо очереди с помощью 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
;