Note_Tech

All technological notes.


Project maintained by simonangel-fong Hosted on GitHub Pages — Theme by mattgraham

Flashback - Flashback Table

Back


Flashback Table

diagram_flashback_table

FLASHBACK TABLE hr.departments
TO_TIMESTAMP ('2019-01-25 21:00:00', 'YYYY-MM-DD HH24:MI:SS');


Lab: Restoring a Dropped Table

Setup Environment

sqlplus / as sysdba
ALTER SESSION SET container=orclpdb;

-- CLEANUP from previous run
DROP USER bar CASCADE;
DROP TABLESPACE bartbs INCLUDING CONTENTS AND DATAFILES;

-- Create tablespace
CREATE TABLESPACE bartbs
DATAFILE '/u01/app/oracle/oradata/ORCL/orclpdb/bartbs1.dbf' SIZE 10M REUSE
SEGMENT SPACE MANAGEMENT MANUAL;

-- Create user
CREATE USER BAR IDENTIFIED BY pass4BAR
DEFAULT TABLESPACE bartbs
QUOTA UNLIMITED ON bartbs;

GRANT CREATE SESSION TO BAR;

-- create table and populate
-- be sure table is at least 2 blocks long
CREATE TABLE BAR.barcopy
TABLESPACE bartbs
AS SELECT * FROM HR.EMPLOYEES;

INSERT INTO BAR.BARCOPY
SELECT * FROM BAR.BARCOPY;

INSERT INTO BAR.BARCOPY
SELECT * FROM BAR.BARCOPY;
#-- Create backup of the bartbs tablespace
rman target /
BACKUP AS COPY TABLESPACE orclpdb:bartbs;
#-- update the table
sqlplus / as sysdba
ALTER SESSION set container=orclpdb;

UPDATE BAR.BARCOPY SET salary = salary+1;
COMMIT;
sqlplus / as sysdba

alter session set container=orclpdb;

-- create tb bar101
create table bar.bar101
as select * from BAR.BARCOPY;

ALTER TABLE BAR.BAR101
add (address_line1 VARCHAR2(200), address_line2 VARCHAR2(200));

-- create tb bar102
create table bar.bar102
as select * from BAR.BARCOPY;

ALTER TABLE BAR.BAR102
add (address_line1i VARCHAR2(200), address_line2 VARCHAR2(200));

-- drop tb bar102
drop table BAR.BAR102;

-- create new tb bar102
create table bar.bar102
as select * from BAR.BARCOPY;

ALTER TABLE BAR.BAR102
add (location_id NUMBER(12));

-- drop tb bar102
drop table bar.bar102;

-- drop tb bar101
drop table bar.bar101;

-- create new tb bar102
create table bar.bar102
as select * from BAR.BARCOPY;

ALTER TABLE BAR.BAR102 add (photo BLOB);

Flashback dropped table

Requirement:


sqlplus sys@orclpdb as sysdba;

SHOW RECYCLEBIN
-- return none

Note: The SHOW RECYCLEBIN command shows only those objects that belong to the current user. Because you are logged in as the sys user, the SHOW RECYCLEBIN command does not show the dropped tables you are interested in restoring.

select original_name, object_name, droptime
from dba_recyclebin
where owner ='BAR';

lab_flashback_tb

-- find the correct object with experted column
SELECT location_id
FROM BAR."BIN$GYdu7BtlD3fgYyUAqMCkFg==$0"
WHERE rownum = 1;

lab_flashback_tb

lab_flashback_tb

FLASHBACK TABLE BAR."BIN$GYdu7BtlD3fgYyUAqMCkFg==$0"
TO BEFORE DROP
RENAME TO BAR102A;
-- Flashback succeeded.
select *
from BAR.BAR102A
where rownum = 1;

lab_flashback_tb


Clean up

rman target /
delete NOPROMPT copy of tablespace orclpdb:bartbs;
exit;
sqlplus / as sysdba

ALTER SESSION set container=orclpdb;

-- CLEANUP from previous run
DROP USER bar CASCADE;
DROP TABLESPACE bartbs INCLUDING CONTENTS AND DATAFILES;
PURGE DBA_RECYCLEBIN;

TOP