sql> alter user hr identified by hr;
sql> connect hr/hr;
sql> create table prueba as (select * from employees);
sql> select count(*) from prueba;
sql> drop table prueba;
sql> select * from prueba;
sql> flashback table prueba to before drop;
sql> create table prueba as (select * from employees);
sql> drop table prueba;
sql> show recyclebin;
sql> purge recyclebin;
Borrado e Investigación de Recycle Bin
scott@LAB10G> DROP TABLE emp_flash; Tabla borrada.
scott@LAB10G> SHOW RECYCLEBIN; ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE ---------------- ------------------------------ ------------ DROP TIME ------------------- EMP_FLASH BIN$sOdkxF+YR8C+UxoQnqCdPQ==$0 TABLE 2007-08-30:15:59:29
scott@LAB10G> SELECT object_name, original_name, type FROM recyclebin; OBJECT_NAME ORIGINAL_NAME TYPE ------------------------------ --------------- ---------- BIN$w0Kbu7YCT+itQjl0RD9PCQ==$0 EMP_FLASH_TRG TRIGGER BIN$sOdkxF+YR8C+UxoQnqCdPQ==$0 EMP_FLASH TABLE BIN$yfqwjE40Q+ueUv019AJaSA==$0 EMP_FLASH_PK INDEX
Observamos que cuando ejecuto el comando SHOW RECYCLEBIN solo veo el objeto “padre” y no los objetos asociados. Para ver todos los objetos borrados debo consultar la vista RECYCLEBIN.
Recupero con Flashback DROP
scott@LAB10G> FLASHBACK TABLE emp_flash TO BEFORE DROP; Flashback terminado.
scott@LAB10G> SHOW RECYCLEBIN;
scott@LAB10G> SELECT object_name, original_name, type FROM recyclebin; ninguna fila seleccionada
scott@LAB10G> SELECT count(1) FROM emp_flash; COUNT(1) ---------- 6
scott@LAB10G> SELECT object_name, object_type 2 FROM user_objects WHERE object_name like 'EMP_FLASH%'; OBJECT_NAME TYPE ------------------------------ ---------- EMP_FLASH TABLE
scott@LAB10G> SELECT index_name, index_type 2* FROM user_indexes WHERE table_name = 'EMP_FLASH'; INDEX_NAME INDEX_TYPE ------------------------------ --------------------------- BIN$yfqwjE40Q+ueUv019AJaSA==$0 NORMAL
scott@LAB10G> SELECT name, type 2* FROM user_dependencies WHERE referenced_name = 'EMP_FLASH'; NAME TYPE ------------------------------ ---------- BIN$w0Kbu7YCT+itQjl0RD9PCQ==$0 TRIGGER
scott@LAB10G> ALTER INDEX "BIN$yfqwjE40Q+ueUv019AJaSA==$0" RENAME TO emp_flash_pk; Indice modificado.
scott@LAB10G> ALTER TRIGGER "BIN$w0Kbu7YCT+itQjl0RD9PCQ==$0" RENAME TO emp_flash_trg; Disparador modificado.
scott@LAB10G> ALTER TRIGGER emp_flash_trg COMPILE; Disparador modificado.
scott@LAB10G> SELECT object_name, object_type 2 FROM user_objects WHERE object_name like 'EMP_FLASH%'; OBJECT_NAME TYPE ------------------------------ ---------- EMP_FLASH TABLE EMP_FLASH_PK INDEX EMP_FLASH_TRG TRIGGER
Cuando una tabla es recuperada desde el Recycle Bin, se restaura la tabla y se renombra automáticamente con su nombre original.
Los objetos asociados como los índices, constraints o triggers también son restaurados, pero sus nombres originales no se recuperan, lo que significa que siguen siendo de la forma BIN$.
Una vez que finalizamos la operación de FLASHBACK no hay manera de averiguar los nombres originales de estos objetos. Por lo tanto siempre es buena idea consultarlos antes de realizar el recupero, entonces luego del FLASHBACK DROP de la tabla podemos hacer un RENAME de los objetos asociados a su nombre original.
Más de una versión en Recycle Bin
scott@LAB10G> DROP TABLE emp_flash; Tabla borrada. scott@LAB10G> CREATE TABLE emp_flash AS (select * from emp where empno > 7700); Tabla creada. scott@LAB10G> DROP TABLE emp_flash; Tabla borrada. scott@LAB10G> SHOW RECYCLEBIN; ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE ---------------- ------------------------------ ------------ DROP TIME ------------------- EMP_FLASH BIN$4PK0jfk4R1uFiZLIQ7HHIg==$0 TABLE 2007-08-30:16:55:41 EMP_FLASH BIN$C+EJy7/qThipip4yLQM8fQ==$0 TABLE 2007-08-30:16:54:59 scott@LAB10G> SELECT object_name, original_name, type, droptime, base_object FROM RECYCLEBIN; OBJECT_NAME ORIGINAL_NAME TYPE ------------------------------ --------------- ---------- DROPTIME BASE_OBJECT ------------------- ----------- BIN$4PK0jfk4R1uFiZLIQ7HHIg==$0 EMP_FLASH TABLE 2007-08-30:16:55:41 53938 BIN$PyLtYlEpTPOUVUDbW/vTrQ==$0 EMP_FLASH_PK INDEX 2007-08-30:16:54:59 53934 BIN$DTlnXxLtQ0u5d4XPW9auZQ==$0 EMP_FLASH_TRG TRIGGER 2007-08-30:16:54:59 53934 BIN$C+EJy7/qThipip4yLQM8fQ==$0 EMP_FLASH TABLE 2007-08-30:16:54:59 53934
scott@LAB10G> FLASHBACK TABLE "BIN$C+EJy7/qThipip4yLQM8fQ==$0" TO BEFORE DROP RENAME TO emp_flash_v1; Flashback terminado. scott@LAB10G> FLASHBACK TABLE "BIN$4PK0jfk4R1uFiZLIQ7HHIg==$0" TO BEFORE DROP RENAME TO emp_flash_v2; Flashback terminado.
No hay comentarios:
Publicar un comentario