una - ver todas las bases de datos en oracle
Cómo soltar todas las tablas de usuario? (6)
¿Cómo puedo eliminar todas las tablas de usuario en Oracle?
Tengo un problema con las restricciones. Cuando desactivo todo, todavía no es posible.
La forma más simple es soltar al usuario que posee los objetos con el comando en cascada.
DROP USER username CASCADE
La manera más fácil sería soltar el tablespace y luego crear una copia de seguridad del tablespace. Pero preferiría no tener que hacer eso. Esto es similar al de Henry, excepto que solo hago una copia / pega en el conjunto de resultados en mi gui.
SELECT
''DROP''
,object_type
,object_name
,CASE(object_type)
WHEN ''TABLE'' THEN ''CASCADE CONSTRAINTS;''
ELSE '';''
END
FROM user_objects
WHERE
object_type IN (''TABLE'',''VIEW'',''PACKAGE'',''PROCEDURE'',''FUNCTION'',''SEQUENCE'')
Otra respuesta que funcionó para mí es (crédito a http://snipt.net/Fotinakis/drop-all-tables-and-constraints-within-an-oracle-schema/ )
BEGIN
FOR c IN (SELECT table_name FROM user_tables) LOOP
EXECUTE IMMEDIATE (''DROP TABLE "'' || c.table_name || ''" CASCADE CONSTRAINTS'');
END LOOP;
FOR s IN (SELECT sequence_name FROM user_sequences) LOOP
EXECUTE IMMEDIATE (''DROP SEQUENCE '' || s.sequence_name);
END LOOP;
END;
Tenga en cuenta que esto funciona inmediatamente después de ejecutarlo. NO produce un script que deba pegar en alguna parte (como otras respuestas aquí). Se ejecuta directamente en la base de datos.
Si solo quieres una forma realmente simple de hacer esto ... Aquí hay un script que he usado en el pasado
select ''drop table ''||table_name||'' cascade constraints;'' from user_tables;
Esto imprimirá una serie de comandos de soltar para todas las tablas en el esquema. Enrolle el resultado de esta consulta y ejecútelo.
Fuente: https://forums.oracle.com/forums/thread.jspa?threadID=614090
Del mismo modo, si desea borrar más de las tablas puede editar lo siguiente para satisfacer sus necesidades
select ''drop ''||object_type||'' ''|| object_name || '';'' from user_objects where object_type in (''VIEW'',''PACKAGE'',''SEQUENCE'', ''PROCEDURE'', ''FUNCTION'', ''INDEX'')
BEGIN
FOR cur_rec IN (SELECT object_name, object_type
FROM user_objects
WHERE object_type IN
(''TABLE'',
''VIEW'',
''PACKAGE'',
''PROCEDURE'',
''FUNCTION'',
''SEQUENCE'',
''SYNONYM'',
''PACKAGE BODY''
))
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;
/
begin
for i in (select ''drop table ''||table_name||'' cascade constraints'' tbl from user_tables)
loop
execute immediate i.tbl;
end loop;
end;