Maneira fácil de limpar um conjunto de esquemas do Oracle

1

Como você pode limpar um conjunto de esquemas do Oracle?

Por limpeza, quero dizer remover todos os dados, tabelas, visualizações, procedimentos, sinônimos, etc, etc.

    
por Marcus Leon 27.08.2010 / 20:09

3 respostas

2

Inicie o sqlplus como SYSTEM e digite:

drop user MYSCHEMA cascade;

Repita para todos os esquemas que você deseja eliminar.

    
por 27.08.2010 / 20:43
0

Este é um começo, não um script totalmente preparado - Tenho certeza de que ele falhará se o usuário tiver, por exemplo, alguma fila configurada com 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;
/
    
por 02.09.2010 / 16:41
0

Acho que para poder eliminar os objetos, você precisa desativar os construtores de chave estrangeira com o seguinte.

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
;

Isso não funciona, eu derrubo as restrições de chave estrangeira com o seguinte.

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
;
    
por 12.11.2014 / 02:20