<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
		<id>https://dosideas.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Oracle_Flashback_Drop</id>
		<title>Oracle Flashback Drop - Historial de revisiones</title>
		<link rel="self" type="application/atom+xml" href="https://dosideas.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Oracle_Flashback_Drop"/>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Oracle_Flashback_Drop&amp;action=history"/>
		<updated>2026-05-09T14:56:34Z</updated>
		<subtitle>Historial de revisiones para esta página en el wiki</subtitle>
		<generator>MediaWiki 1.28.2</generator>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Oracle_Flashback_Drop&amp;diff=2990&amp;oldid=prev</id>
		<title>Admin en 18:10 26 ago 2009</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Oracle_Flashback_Drop&amp;diff=2990&amp;oldid=prev"/>
				<updated>2009-08-26T18:10:59Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='es'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revisión del 18:10 26 ago 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Línea 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Oracle]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;El FLASHBACK DROP revierte el efecto de la sentencia DROP TABLE. Tambien es una funcionalidad existente a partir de [Oracle10g].&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;El FLASHBACK DROP revierte el efecto de la sentencia DROP TABLE. Tambien es una funcionalidad existente a partir de [Oracle10g].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Oracle_Flashback_Drop&amp;diff=290&amp;oldid=prev</id>
		<title>201.251.185.130: Página nueva: El FLASHBACK DROP revierte el efecto de la sentencia DROP TABLE. Tambien es una funcionalidad existente a partir de [Oracle10g].  La funcionalidad de FLASHBACK DROP está construida s...</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Oracle_Flashback_Drop&amp;diff=290&amp;oldid=prev"/>
				<updated>2008-07-25T15:11:32Z</updated>
		
		<summary type="html">&lt;p&gt;Página nueva: El FLASHBACK DROP revierte el efecto de la sentencia DROP TABLE. Tambien es una funcionalidad existente a partir de [Oracle10g].  La funcionalidad de FLASHBACK DROP está construida s...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;El FLASHBACK DROP revierte el efecto de la sentencia DROP TABLE. Tambien es una funcionalidad existente a partir de [Oracle10g].&lt;br /&gt;
&lt;br /&gt;
La funcionalidad de FLASHBACK DROP está construida sobre el mecanismo llamado Recycle Bin, que a partir de 10g, Oracle usa para administrar objetos borrados de la base de datos hasta que el espacio que ocupan sea necesitado para almacenar nuevos datos o los mismos sean purgados manualmente.&lt;br /&gt;
&lt;br /&gt;
=Recycle Bin=&lt;br /&gt;
&lt;br /&gt;
El Recycle Bin es un container virtual donde residen todos los objetos borrados.  Los objetos borrados siguen ocupando el mismo espacio que al momento de ser borrados, solo que no aparecen en el listado de objetos disponibles.&lt;br /&gt;
&lt;br /&gt;
De esta manera si la tabla EMP fue creada en el tablespace USERS, cuando borro la tabla, esta permanece en el tablespace USERS ocupando el mismo espacio.&lt;br /&gt;
&lt;br /&gt;
Las tablas borradas y cualquiera de sus objetos asociados, como índices, constraints, nested tables, y otros objetos dependientes no son movidos, sino que simplemente son renombrados con la forma BIN$globalUID$version.&lt;br /&gt;
&lt;br /&gt;
Se puede consultar el contenido del Recycle Bin con el comando SHOW RECYCLEBIN o consultando la siguiente vista:&lt;br /&gt;
&lt;br /&gt;
 scott@LAB10G&amp;gt; desc recyclebin&lt;br /&gt;
 Nombre                   Nulo?   Tipo&lt;br /&gt;
 ----------------------- -------- ----------------&lt;br /&gt;
 OBJECT_NAME             NOT NULL VARCHAR2(30)&lt;br /&gt;
 ORIGINAL_NAME                    VARCHAR2(32)&lt;br /&gt;
 OPERATION                        VARCHAR2(9)&lt;br /&gt;
 TYPE                             VARCHAR2(25)&lt;br /&gt;
 TS_NAME                          VARCHAR2(30)&lt;br /&gt;
 CREATETIME                       VARCHAR2(19)&lt;br /&gt;
 DROPTIME                         VARCHAR2(19)&lt;br /&gt;
 DROPSCN                          NUMBER&lt;br /&gt;
 PARTITION_NAME                   VARCHAR2(32)&lt;br /&gt;
 CAN_UNDROP                       VARCHAR2(3)&lt;br /&gt;
 CAN_PURGE                        VARCHAR2(3)&lt;br /&gt;
 RELATED                 NOT NULL NUMBER&lt;br /&gt;
 BASE_OBJECT             NOT NULL NUMBER&lt;br /&gt;
 PURGE_OBJECT            NOT NULL NUMBER&lt;br /&gt;
 SPACE                            NUMBER&lt;br /&gt;
&lt;br /&gt;
Podemos seguir consultando los objetos borrados usando el nombre asignado automáticamente por Oracle. Cada usuario tiene los mismos privilegios sobre los objetos del Recycle Bin que tenían antes de que fueran borrados.&lt;br /&gt;
&lt;br /&gt;
Los objetos permanecerán en el Recycle Bin hasta que el dueño del objeto decda removerlo permanentemente usando el nuevo comando PURGE o cuando la necesidad de espacio lo reclame. Las necesidades de espacio pueden ser, cuando el usuario supera su cuota dentro del tablespace o cuando el tablespace se llena. Ante cualquiera de estos 2 eventos, Oracle eliminará automáticamente los objetos más antiguos del Recycle Bin hasta que logre el espacio solicitado que necesita.&lt;br /&gt;
&lt;br /&gt;
Podemos purgar manualmente el Recycle Bin con los siguientes comandos:&lt;br /&gt;
 PURGE TABLE &amp;lt;tabla&amp;gt;;&lt;br /&gt;
 PURGE INDEX &amp;lt;índice&amp;gt;;&lt;br /&gt;
 PURGE RECYCLEBIN;&lt;br /&gt;
 PURGE TABLESPACE &amp;lt;tablespace&amp;gt; [USER &amp;lt;usuario&amp;gt;];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El purgado se puede hacer tambien en el momento del DROP del objeto con la siguiente cláusula;&lt;br /&gt;
&lt;br /&gt;
 DROP TABLE &amp;lt;tabla&amp;gt; PURGE;&lt;br /&gt;
&lt;br /&gt;
Por default el Recycle Bin está habilitado pero se puede deshabilitar mediante el parámetro de configuración RECYCLEBIN=[ON|OFF] ya sea para todo el sistema o solo para la sesión.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Flashback Drop==&lt;br /&gt;
&lt;br /&gt;
Mediante el comando FLASHBACK DROP podemos recuperar las tablas que residen en el Recycle Bin.&lt;br /&gt;
&lt;br /&gt;
 FLASHBACK TABLE &amp;lt;tabla&amp;gt;  TO BEFORE DROP [RENAME TO &amp;lt;nuevo nombre tabla&amp;gt;] ;&lt;br /&gt;
&lt;br /&gt;
=Ejemplo=&lt;br /&gt;
&lt;br /&gt;
==Creación de Tabla Ejemplo==&lt;br /&gt;
&lt;br /&gt;
 scott@LAB10G&amp;gt; CREATE TABLE emp_flash AS SELECT * FROM emp WHERE empno &amp;lt; 7700;&lt;br /&gt;
 Tabla creada.&lt;br /&gt;
&lt;br /&gt;
 scott@LAB10G&amp;gt; SELECT COUNT(1) FROM emp_flash;&lt;br /&gt;
   COUNT(1)&lt;br /&gt;
 ----------&lt;br /&gt;
          6&lt;br /&gt;
&lt;br /&gt;
 scott@LAB10G&amp;gt; ALTER TABLE emp_flash ADD CONSTRAINT emp_flash_pk&lt;br /&gt;
   2  PRIMARY KEY (EMPNO);&lt;br /&gt;
 Tabla modificada.&lt;br /&gt;
&lt;br /&gt;
 scott@LAB10G&amp;gt; CREATE OR REPLACE TRIGGER emp_flash_trg&lt;br /&gt;
  2    BEFORE INSERT OR UPDATE OR DELETE ON emp_flash&lt;br /&gt;
  3  BEGIN&lt;br /&gt;
  4    DBMS_OUTPUT.PUT_LINE('Esto es un trigger');&lt;br /&gt;
  5  END emp_flash_trg;&lt;br /&gt;
  6  /&lt;br /&gt;
 Disparador creado.&lt;br /&gt;
&lt;br /&gt;
 scott@LAB10G&amp;gt; SELECT object_name, object_type&lt;br /&gt;
  2* FROM user_objects WHERE object_name like 'EMP_FLASH%'&lt;br /&gt;
&lt;br /&gt;
 OBJECT_NAME      TYPE&lt;br /&gt;
 ---------------- ----------&lt;br /&gt;
 EMP_FLASH        TABLE&lt;br /&gt;
 EMP_FLASH_PK     INDEX&lt;br /&gt;
 EMP_FLASH_TRG    TRIGGER&lt;br /&gt;
&lt;br /&gt;
Creamos la tabla EMP_FLASH con objetos asociados (una PK y un trigger) para ver que sucede al realizar el DROP y el FLASHBACK de la tabla.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Borrado e Investigación de Recycle Bin==&lt;br /&gt;
&lt;br /&gt;
 scott@LAB10G&amp;gt; DROP TABLE emp_flash;&lt;br /&gt;
 Tabla borrada.&lt;br /&gt;
&lt;br /&gt;
 scott@LAB10G&amp;gt; SHOW RECYCLEBIN;&lt;br /&gt;
 ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE&lt;br /&gt;
 ---------------- ------------------------------ ------------&lt;br /&gt;
 DROP TIME&lt;br /&gt;
 -------------------&lt;br /&gt;
 EMP_FLASH        BIN$sOdkxF+YR8C+UxoQnqCdPQ==$0 TABLE&lt;br /&gt;
 2007-08-30:15:59:29&lt;br /&gt;
&lt;br /&gt;
 scott@LAB10G&amp;gt; SELECT object_name, original_name, type FROM recyclebin;&lt;br /&gt;
 OBJECT_NAME                    ORIGINAL_NAME   TYPE&lt;br /&gt;
 ------------------------------ --------------- ----------&lt;br /&gt;
 BIN$w0Kbu7YCT+itQjl0RD9PCQ==$0 EMP_FLASH_TRG   TRIGGER&lt;br /&gt;
 BIN$sOdkxF+YR8C+UxoQnqCdPQ==$0 EMP_FLASH       TABLE&lt;br /&gt;
 BIN$yfqwjE40Q+ueUv019AJaSA==$0 EMP_FLASH_PK    INDEX&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Recupero con Flashback DROP==&lt;br /&gt;
&lt;br /&gt;
 scott@LAB10G&amp;gt; FLASHBACK TABLE emp_flash TO BEFORE DROP;&lt;br /&gt;
 Flashback terminado.&lt;br /&gt;
&lt;br /&gt;
 scott@LAB10G&amp;gt; SHOW RECYCLEBIN;&lt;br /&gt;
&lt;br /&gt;
 scott@LAB10G&amp;gt; SELECT object_name, original_name, type FROM recyclebin;&lt;br /&gt;
 ninguna fila seleccionada&lt;br /&gt;
&lt;br /&gt;
 scott@LAB10G&amp;gt; SELECT count(1) FROM emp_flash;&lt;br /&gt;
   COUNT(1)&lt;br /&gt;
 ----------&lt;br /&gt;
         6&lt;br /&gt;
&lt;br /&gt;
 scott@LAB10G&amp;gt; SELECT object_name, object_type&lt;br /&gt;
  2  FROM user_objects WHERE object_name like 'EMP_FLASH%';&lt;br /&gt;
 OBJECT_NAME                    TYPE&lt;br /&gt;
 ------------------------------ ----------&lt;br /&gt;
 EMP_FLASH                      TABLE&lt;br /&gt;
&lt;br /&gt;
 scott@LAB10G&amp;gt; SELECT index_name, index_type&lt;br /&gt;
  2*  FROM user_indexes WHERE table_name = 'EMP_FLASH';&lt;br /&gt;
 INDEX_NAME                     INDEX_TYPE&lt;br /&gt;
 ------------------------------ ---------------------------&lt;br /&gt;
 BIN$yfqwjE40Q+ueUv019AJaSA==$0 NORMAL&lt;br /&gt;
&lt;br /&gt;
 scott@LAB10G&amp;gt; SELECT name, type&lt;br /&gt;
  2*  FROM user_dependencies WHERE referenced_name = 'EMP_FLASH';&lt;br /&gt;
 NAME                           TYPE&lt;br /&gt;
 ------------------------------ ----------&lt;br /&gt;
 BIN$w0Kbu7YCT+itQjl0RD9PCQ==$0 TRIGGER&lt;br /&gt;
&lt;br /&gt;
 scott@LAB10G&amp;gt; ALTER INDEX &amp;quot;BIN$yfqwjE40Q+ueUv019AJaSA==$0&amp;quot; RENAME TO emp_flash_pk;&lt;br /&gt;
 Indice modificado.&lt;br /&gt;
&lt;br /&gt;
 scott@LAB10G&amp;gt; ALTER TRIGGER &amp;quot;BIN$w0Kbu7YCT+itQjl0RD9PCQ==$0&amp;quot; RENAME TO emp_flash_trg;&lt;br /&gt;
 Disparador modificado.&lt;br /&gt;
&lt;br /&gt;
 scott@LAB10G&amp;gt; ALTER TRIGGER emp_flash_trg COMPILE;&lt;br /&gt;
 Disparador modificado.&lt;br /&gt;
&lt;br /&gt;
 scott@LAB10G&amp;gt; SELECT object_name, object_type&lt;br /&gt;
   2  FROM user_objects WHERE object_name like 'EMP_FLASH%';&lt;br /&gt;
 OBJECT_NAME                    TYPE&lt;br /&gt;
 ------------------------------ ----------&lt;br /&gt;
 EMP_FLASH                      TABLE&lt;br /&gt;
 EMP_FLASH_PK                   INDEX&lt;br /&gt;
 EMP_FLASH_TRG                  TRIGGER&lt;br /&gt;
&lt;br /&gt;
Cuando una tabla es recuperada desde el Recycle Bin, se restaura la tabla y se renombra automáticamente con su nombre original.&lt;br /&gt;
&lt;br /&gt;
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$.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Más de una versión en Recycle Bin==&lt;br /&gt;
&lt;br /&gt;
 scott@LAB10G&amp;gt; DROP TABLE emp_flash;&lt;br /&gt;
 Tabla borrada.&lt;br /&gt;
 scott@LAB10G&amp;gt; CREATE TABLE emp_flash AS (select * from emp where empno &amp;gt; 7700);&lt;br /&gt;
 Tabla creada.&lt;br /&gt;
 scott@LAB10G&amp;gt; DROP TABLE emp_flash;&lt;br /&gt;
 Tabla borrada.&lt;br /&gt;
 scott@LAB10G&amp;gt; SHOW RECYCLEBIN;&lt;br /&gt;
 ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE&lt;br /&gt;
 ---------------- ------------------------------ ------------&lt;br /&gt;
 DROP TIME&lt;br /&gt;
 -------------------&lt;br /&gt;
 EMP_FLASH        BIN$4PK0jfk4R1uFiZLIQ7HHIg==$0 TABLE&lt;br /&gt;
 2007-08-30:16:55:41&lt;br /&gt;
 EMP_FLASH        BIN$C+EJy7/qThipip4yLQM8fQ==$0 TABLE&lt;br /&gt;
 2007-08-30:16:54:59&lt;br /&gt;
 scott@LAB10G&amp;gt; SELECT object_name, original_name, type, droptime, base_object FROM RECYCLEBIN;&lt;br /&gt;
 OBJECT_NAME                    ORIGINAL_NAME   TYPE&lt;br /&gt;
 ------------------------------ --------------- ----------&lt;br /&gt;
 DROPTIME            BASE_OBJECT&lt;br /&gt;
 ------------------- -----------&lt;br /&gt;
 BIN$4PK0jfk4R1uFiZLIQ7HHIg==$0 EMP_FLASH       TABLE&lt;br /&gt;
 2007-08-30:16:55:41       53938&lt;br /&gt;
 BIN$PyLtYlEpTPOUVUDbW/vTrQ==$0 EMP_FLASH_PK    INDEX&lt;br /&gt;
 2007-08-30:16:54:59       53934&lt;br /&gt;
 BIN$DTlnXxLtQ0u5d4XPW9auZQ==$0 EMP_FLASH_TRG   TRIGGER&lt;br /&gt;
 2007-08-30:16:54:59       53934&lt;br /&gt;
 BIN$C+EJy7/qThipip4yLQM8fQ==$0 EMP_FLASH       TABLE&lt;br /&gt;
 2007-08-30:16:54:59       53934&lt;br /&gt;
&lt;br /&gt;
 scott@LAB10G&amp;gt; FLASHBACK TABLE &amp;quot;BIN$C+EJy7/qThipip4yLQM8fQ==$0&amp;quot; TO BEFORE DROP RENAME TO emp_flash_v1;&lt;br /&gt;
 Flashback terminado.&lt;br /&gt;
 scott@LAB10G&amp;gt; FLASHBACK TABLE &amp;quot;BIN$4PK0jfk4R1uFiZLIQ7HHIg==$0&amp;quot; TO BEFORE DROP RENAME TO emp_flash_v2;&lt;br /&gt;
 Flashback terminado.&lt;br /&gt;
&lt;br /&gt;
Para recuperar desde el Recycle Bin cuando hay mas de una versión de la tabla, debemos usar el nombre generado por Oracle.&lt;br /&gt;
&lt;br /&gt;
Si no usamos este nombre (BIN$) la sentencia FLASHBACK DROP recuperará a su nombre original la última versión existente en el Recycle Bin.&lt;br /&gt;
&lt;br /&gt;
=Ver también=&lt;br /&gt;
* [[Oracle Flashback Technology]]&lt;/div&gt;</summary>
		<author><name>201.251.185.130</name></author>	</entry>

	</feed>