En desarrollo de software es habitual que la base de datos sobre la cual se esta trabajando deba ser respaldada y restaurada algunas veces, el respaldo es habitual ya que este es nuestro soporte en desarrollo (ya sea del dba encvargado o de algunos desarrolaldores que trabajen con la bd) en caso de fallas ó migraciones, etc. sobre estos casos debe ser restaurada..pero algunas veces necesitamos es sobre un mismo schema al cual se le han echo cambios a la estructura, volver a montar un respaldo anterior sin borrar todo el schema, y el respaldo echo haya sido por el utilitario EXP ó EXPDP.

Para no tener muchos incovenientes es mejor borrar todos los objetos y restaurar por medio del IMPDP, para tener mayor certeza sobre los objetos que realmente estaran en nuestra base de datos.

Para automatizar este borrardo de los objetos puede usar el siguiente script:

SET SERVEROUTPUT ON SIZE 1000000
BEGIN
FOR cur_rec IN (SELECT object_name, object_type
FROM user_objects
WHERE object_type IN (‘TABLE’, ‘VIEW’, ‘PACKAGE’, ‘PROCEDURE’, ‘FUNCTION’, ‘SEQUENCE’, ‘SNAPSHOT’, ‘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;
/

Debe ser ejecutado por el mismo usuario propietario dle schema a borrar…lo puede hacer si desea desde una herramienta como SQLDeveloper.

Anuncios