Hi,
I will explain What is the Recycle bin and How to Restore Dropped Tables from Recycle Bin in this post.
You can read the Flash back articles from the following link if you want to learn more detail about Flash back.
Flashback Database, Table, Query Tutorials For Beginners in the Oracle Database
Recycle Bin in Oracle
Oracle database has the recycle bin which is a data dictionary table and contains information about dropped objects. Until you don’t use purge option, all dropped tables and its objects such as indexes, constraints and etc are not removed and still occupy space.
Actually the recycle bin is any life buoy for the database administrators, because sometime we can restore or flash back the dropped tables from recycle bin, if these objects are still in the recycle bin.
You can check if the recycle bin is on or off as follows.
SQL> show parameter recyclebin; NAME TYPE VALUE ------------------------------------ ----------- recyclebin string on
To disable the recycle bin, you can disable the recycle bin both for session and system level as follows.
ALTER SESSION SET recyclebin = OFF; ALTER SYSTEM SET recyclebin = OFF;
You can enable the recycle bin both for session and system level as follows.
ALTER SESSION SET recyclebin = ON; ALTER SYSTEM SET recyclebin = ON;
How to Restore Dropped Tables from Recycle Bin
Now, lets go to make an example and recover a dropped table from recycle bin as follows.
SQL> show parameter recyclebin NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ recyclebin string on
Following table has 53 rows.
SQL> select count(*) from msdeveci.test; COUNT(*) ---------- 53
Lets drop it.
SQL> drop table msdeveci.test; Table dropped.
Check if it exists.
SQL> select * from msdeveci.test; select * from msdeveci.test * ERROR at line 1: ORA-00942: table or view does not exist
Now lets go to flashback table from recycle bin as follows.
SQL> flashback table msdeveci.test to before drop; Flashback complete.
Check if table exists or not.
SQL> select count(*) from msdeveci.test; COUNT(*) ---------- 53
You can list the objects and droptime from recycle bin as follows.
SQL> select object_name, droptime from dba_recyclebin; OBJECT_NAME DROPTIME ------------------------------ ------------------- BIN$4YkbXtBoAdngQwEAAH8n+g==$0 2020-03-30:10:49:57 BIN$4YkbXtBpAdngQwEAAH8n+g==$0 2020-03-30:10:49:57 BIN$4YkbXtBqAdngQwEAAH8n+g==$0 2020-03-30:10:49:57 BIN$4YkbXtBrAdngQwEAAH8n+g==$0 2020-03-30:10:49:57 BIN$4YkbXtBsAdngQwEAAH8n+g==$0 2020-03-30:10:49:57 BIN$4YkcLLzGAd3gQwEAAH/TdQ==$0 2020-03-30:10:50:11 BIN$4YkcLLzHAd3gQwEAAH/TdQ==$0 2020-03-30:10:50:11 BIN$4YkcttMiAd/gQwEAAH8VjQ==$0 2020-03-30:10:50:20 BIN$4YkcttMjAd/gQwEAAH8VjQ==$0 2020-03-30:10:50:20 BIN$4YkdYIHCAeHgQwEAAH87MA==$0 2020-03-30:10:50:31 BIN$4YkdYIHDAeHgQwEAAH87MA==$0 2020-03-30:10:50:31
RECYCLEBIN
You can purge recycle bin as follows. purge recyclebin will remove all objects from the user’s recycle bin and release all space associated with objects in the recycle bin
SQL> purge recyclebin; Recyclebin purged.
Purge DBA_RECYCLEBIN
Purge dba_recyclebin needs sysdba privilige and it removes all objects from the system-wide recycle bin, and is equivalent to purging the recycle bin of every user
SQL> purge dba_recyclebin; DBA Recyclebin purged. SQL>
Tablespace Purge
purge tablespace option purges all the objects residing in the specified tablespace from the recycle bin.
SQL> purge tablespace Users; Tablespace purged. SQL>
You can purge any table as follows.
SQL> PURGE TABLE MSDEVECI.TEST; Table purged.
You can purge any dropped table as follows.
SQL> purge table "BIN$cxP2b6/dEnrgVQBAAAAADQ==$1"; Table purged.
Do you want to learn Oracle Database for Beginners, then read the following articles.
Oracle Tutorial | Oracle Database Tutorials for Beginners ( Junior Oracle DBA )