Oracle10g New Feature -- 3.Flashback Table
Oracle 10g引入了recyclebin,類似於windows的回收站,使你能夠很方便的恢復誤刪的表。
但是對於truncate table,好像還是沒有一種快速的恢復方法
[@more@]1. Flashback TableExample:SQL>select object_name,object_type from user_objects
OBJECT_NAME OBJECT_TYPE
------------------------ --------- -------------------
FLASH TABLE
IDX1_FLASH INDEX
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
FLASH TABLE
SQL> drop table flash;
Table dropped.
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
BIN$NHMSE3qoQlmhlzmeiDOQpw==$0 TABLE
SQL>select object_name,object_type from user_objects
OBJECT_NAME OBJECT_TYPE
--------------------------------------------------------------- -------------------
BIN$NHMSE3qoQlmhlzmeiDOQpw==$0 TABLE
BIN$fJd3Ze8AQJODogj64ZE+7A==$0 INDEX
dropped table FLASH, instead of completely disappearing, was renamed to a system-defined name. It stays in the same tablespace, with the same structure as that of the original table.
The indexes or triggers defined on the table, they are renamed too, using the same naming convention used by the table
The table and its associated objects are placed in a logical container known as the "recycle bin,"
SQL> show recyclebin
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
-------------------------- ------------------------------------------- ------------------- -------------------
FLASH BIN$NHMSE3qoQlmhlzmeiDOQpw==$0 TABLE 2004-09-08:16:56:11
ORIGINAL NAME: the original name of the table
RECYCLEBIN NAME: the new name in the recycle bin
reinstate the table
SQL> flashback table flash to before drop;
Flashback complete.
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
FLASH TABLE
SQL>select object_name,object_type from user_objects
OBJECT_NAME OBJECT_TYPE
-------------------------------------------------- -------------------
FLASH TABLE
BIN$fJd3Ze8AQJODogj64ZE+7A==$0 INDEX
SQL>alter index “BIN$fJd3Ze8AQJODogj64ZE+7A==$0” rename to idx1_flash;
SQL> show recyclebin
“EMPTY”
The un-drop feature brings the table back to its original name, but not the associated objects like indexes and triggers, which are left with the recycled names.
To free the space
SQL>purge recyclebin
drop the table completely
SQL> drop table flash purge;
Table dropped.
SQL> show recyclebin
“EMPTY”
Managing the Recycle Binpurge the specific table named TEST from the recycle bin after its dropSQL>PURGE TABLE TEST;
or using its recycle bin name:
SQL>PURGE TABLE "BIN$04LhcpndanfgMAAAAAANPw==$0";
permanently drop an index from the recycle binSQL> drop table flash;
Table dropped.
SQL>select object_name,object_type from user_objects
OBJECT_NAME OBJECT_TYPE
--------------------------------------------------------- -------------------
BIN$RGaBIxRdSW65NUWeQ6NOAg==$0 TABLE
BIN$uix7J5C2TomXdYKjdzGXOQ==$0 INDEX
SQL> purge index idx1_flash;
Index purged.
SQL>select object_name,object_type from user_objects
OBJECT_NAME OBJECT_TYPE
--------------------------------------------------------- -------------------
BIN$RGaBIxRdSW65NUWeQ6NOAg==$0 TABLE
purge all the objects in recycle bin in a tablespace USERSPURGE TABLESPACE USERS;
purge only the recycle bin for a particular user in that tablespacePURGE TABLESPACE USERS USER SCOTT;
A user such as SCOTT would clear his own recycle bin with
PURGE RECYCLEBIN;
You as a DBA can purge all the objects in any tablespace using
PURGE DBA_RECYCLEBIN;
Table Versions and Flashback
CREATE TABLE TEST (COL1 NUMBER);
INSERT INTO TEST VALUES (1);
COMMIT;
DROP TABLE TEST;
CREATE TABLE TEST (COL1 NUMBER);
INSERT INTO TEST VALUES (2);
COMMIT;
DROP TABLE TEST;
CREATE TABLE TEST (COL1 NUMBER);
INSERT INTO TEST VALUES (3);
COMMIT;
DROP TABLE TEST;
At this point, if you were to flash-back the table TEST, the third version of the table is retrieved, not the first. So the column COL1 will have the value 3, not 1.
you can also retrieve the other versions of the dropped table
- Use the rename option:
SQL>FLASHBACK TABLE TEST TO BEFORE DROP RENAME TO TEST2;
SQL>FLASHBACK TABLE TEST TO BEFORE DROP RENAME TO TEST1;
- Use the specific recycle-bin names of the table to restore. To do that, first identify the table's recycle bin names and then issue:
SQL>FLASHBACK TABLE "BIN$04LhcpnoanfgMAAAAAANPw==$0" TO BEFORE DROP RENAME TO TEST2;
SQL>FLASHBACK TABLE "BIN$04LhcpnqanfgMAAAAAANPw==$0" TO BEFORE DROP RENAME TO TEST1;
SQL>select object_name,object_type from user_objects
OBJECT_NAME OBJECT_TYPE
------------------------ --------- -------------------
FLASH TABLE
IDX1_FLASH INDEX
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
FLASH TABLE
SQL> drop table flash;
Table dropped.
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
BIN$NHMSE3qoQlmhlzmeiDOQpw==$0 TABLE
SQL>select object_name,object_type from user_objects
OBJECT_NAME OBJECT_TYPE
--------------------------------------------------------------- -------------------
BIN$NHMSE3qoQlmhlzmeiDOQpw==$0 TABLE
BIN$fJd3Ze8AQJODogj64ZE+7A==$0 INDEX
dropped table FLASH, instead of completely disappearing, was renamed to a system-defined name. It stays in the same tablespace, with the same structure as that of the original table.
The indexes or triggers defined on the table, they are renamed too, using the same naming convention used by the table
The table and its associated objects are placed in a logical container known as the "recycle bin,"
SQL> show recyclebin
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
-------------------------- ------------------------------------------- ------------------- -------------------
FLASH BIN$NHMSE3qoQlmhlzmeiDOQpw==$0 TABLE 2004-09-08:16:56:11
ORIGINAL NAME: the original name of the table
RECYCLEBIN NAME: the new name in the recycle bin
reinstate the table
SQL> flashback table flash to before drop;
Flashback complete.
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
FLASH TABLE
SQL>select object_name,object_type from user_objects
OBJECT_NAME OBJECT_TYPE
-------------------------------------------------- -------------------
FLASH TABLE
BIN$fJd3Ze8AQJODogj64ZE+7A==$0 INDEX
SQL>alter index “BIN$fJd3Ze8AQJODogj64ZE+7A==$0” rename to idx1_flash;
SQL> show recyclebin
“EMPTY”
The un-drop feature brings the table back to its original name, but not the associated objects like indexes and triggers, which are left with the recycled names.
To free the space
SQL>purge recyclebin
drop the table completely
SQL> drop table flash purge;
Table dropped.
SQL> show recyclebin
“EMPTY”
Managing the Recycle Binpurge the specific table named TEST from the recycle bin after its dropSQL>PURGE TABLE TEST;
or using its recycle bin name:
SQL>PURGE TABLE "BIN$04LhcpndanfgMAAAAAANPw==$0";
permanently drop an index from the recycle binSQL> drop table flash;
Table dropped.
SQL>select object_name,object_type from user_objects
OBJECT_NAME OBJECT_TYPE
--------------------------------------------------------- -------------------
BIN$RGaBIxRdSW65NUWeQ6NOAg==$0 TABLE
BIN$uix7J5C2TomXdYKjdzGXOQ==$0 INDEX
SQL> purge index idx1_flash;
Index purged.
SQL>select object_name,object_type from user_objects
OBJECT_NAME OBJECT_TYPE
--------------------------------------------------------- -------------------
BIN$RGaBIxRdSW65NUWeQ6NOAg==$0 TABLE
purge all the objects in recycle bin in a tablespace USERSPURGE TABLESPACE USERS;
purge only the recycle bin for a particular user in that tablespacePURGE TABLESPACE USERS USER SCOTT;
A user such as SCOTT would clear his own recycle bin with
PURGE RECYCLEBIN;
You as a DBA can purge all the objects in any tablespace using
PURGE DBA_RECYCLEBIN;
Table Versions and Flashback
CREATE TABLE TEST (COL1 NUMBER);
INSERT INTO TEST VALUES (1);
COMMIT;
DROP TABLE TEST;
CREATE TABLE TEST (COL1 NUMBER);
INSERT INTO TEST VALUES (2);
COMMIT;
DROP TABLE TEST;
CREATE TABLE TEST (COL1 NUMBER);
INSERT INTO TEST VALUES (3);
COMMIT;
DROP TABLE TEST;
At this point, if you were to flash-back the table TEST, the third version of the table is retrieved, not the first. So the column COL1 will have the value 3, not 1.
you can also retrieve the other versions of the dropped table
- Use the rename option:
SQL>FLASHBACK TABLE TEST TO BEFORE DROP RENAME TO TEST2;
SQL>FLASHBACK TABLE TEST TO BEFORE DROP RENAME TO TEST1;
- Use the specific recycle-bin names of the table to restore. To do that, first identify the table's recycle bin names and then issue:
SQL>FLASHBACK TABLE "BIN$04LhcpnoanfgMAAAAAANPw==$0" TO BEFORE DROP RENAME TO TEST2;
SQL>FLASHBACK TABLE "BIN$04LhcpnqanfgMAAAAAANPw==$0" TO BEFORE DROP RENAME TO TEST1;
purge the specific table named TEST from the recycle bin after its dropSQL>PURGE TABLE TEST;
or using its recycle bin name:
SQL>PURGE TABLE "BIN$04LhcpndanfgMAAAAAANPw==$0";
permanently drop an index from the recycle binSQL> drop table flash;
Table dropped.
SQL>select object_name,object_type from user_objects
OBJECT_NAME OBJECT_TYPE
--------------------------------------------------------- -------------------
BIN$RGaBIxRdSW65NUWeQ6NOAg==$0 TABLE
BIN$uix7J5C2TomXdYKjdzGXOQ==$0 INDEX
SQL> purge index idx1_flash;
Index purged.
SQL>select object_name,object_type from user_objects
OBJECT_NAME OBJECT_TYPE
--------------------------------------------------------- -------------------
BIN$RGaBIxRdSW65NUWeQ6NOAg==$0 TABLE
purge all the objects in recycle bin in a tablespace USERSPURGE TABLESPACE USERS;
purge only the recycle bin for a particular user in that tablespacePURGE TABLESPACE USERS USER SCOTT;
A user such as SCOTT would clear his own recycle bin with
PURGE RECYCLEBIN;
You as a DBA can purge all the objects in any tablespace using
PURGE DBA_RECYCLEBIN;
Table Versions and Flashback
CREATE TABLE TEST (COL1 NUMBER);
INSERT INTO TEST VALUES (1);
COMMIT;
DROP TABLE TEST;
CREATE TABLE TEST (COL1 NUMBER);
INSERT INTO TEST VALUES (2);
COMMIT;
DROP TABLE TEST;
CREATE TABLE TEST (COL1 NUMBER);
INSERT INTO TEST VALUES (3);
COMMIT;
DROP TABLE TEST;
At this point, if you were to flash-back the table TEST, the third version of the table is retrieved, not the first. So the column COL1 will have the value 3, not 1.
you can also retrieve the other versions of the dropped table
- Use the rename option:
SQL>FLASHBACK TABLE TEST TO BEFORE DROP RENAME TO TEST2;
SQL>FLASHBACK TABLE TEST TO BEFORE DROP RENAME TO TEST1;
- Use the specific recycle-bin names of the table to restore. To do that, first identify the table's recycle bin names and then issue:
SQL>FLASHBACK TABLE "BIN$04LhcpnoanfgMAAAAAANPw==$0" TO BEFORE DROP RENAME TO TEST2;
SQL>FLASHBACK TABLE "BIN$04LhcpnqanfgMAAAAAANPw==$0" TO BEFORE DROP RENAME TO TEST1;
SQL> drop table flash;
Table dropped.
SQL>select object_name,object_type from user_objects
OBJECT_NAME OBJECT_TYPE
--------------------------------------------------------- -------------------
BIN$RGaBIxRdSW65NUWeQ6NOAg==$0 TABLE
BIN$uix7J5C2TomXdYKjdzGXOQ==$0 INDEX
SQL> purge index idx1_flash;
Index purged.
SQL>select object_name,object_type from user_objects
OBJECT_NAME OBJECT_TYPE
--------------------------------------------------------- -------------------
BIN$RGaBIxRdSW65NUWeQ6NOAg==$0 TABLE
purge all the objects in recycle bin in a tablespace USERSPURGE TABLESPACE USERS;
purge only the recycle bin for a particular user in that tablespacePURGE TABLESPACE USERS USER SCOTT;
A user such as SCOTT would clear his own recycle bin with
PURGE RECYCLEBIN;
You as a DBA can purge all the objects in any tablespace using
PURGE DBA_RECYCLEBIN;
Table Versions and Flashback
CREATE TABLE TEST (COL1 NUMBER);
INSERT INTO TEST VALUES (1);
COMMIT;
DROP TABLE TEST;
CREATE TABLE TEST (COL1 NUMBER);
INSERT INTO TEST VALUES (2);
COMMIT;
DROP TABLE TEST;
CREATE TABLE TEST (COL1 NUMBER);
INSERT INTO TEST VALUES (3);
COMMIT;
DROP TABLE TEST;
At this point, if you were to flash-back the table TEST, the third version of the table is retrieved, not the first. So the column COL1 will have the value 3, not 1.
you can also retrieve the other versions of the dropped table
- Use the rename option:
SQL>FLASHBACK TABLE TEST TO BEFORE DROP RENAME TO TEST2;
SQL>FLASHBACK TABLE TEST TO BEFORE DROP RENAME TO TEST1;
- Use the specific recycle-bin names of the table to restore. To do that, first identify the table's recycle bin names and then issue:
SQL>FLASHBACK TABLE "BIN$04LhcpnoanfgMAAAAAANPw==$0" TO BEFORE DROP RENAME TO TEST2;
SQL>FLASHBACK TABLE "BIN$04LhcpnqanfgMAAAAAANPw==$0" TO BEFORE DROP RENAME TO TEST1;
PURGE TABLESPACE USERS USER SCOTT;
A user such as SCOTT would clear his own recycle bin with
PURGE RECYCLEBIN;
You as a DBA can purge all the objects in any tablespace using
PURGE DBA_RECYCLEBIN;
Table Versions and Flashback
CREATE TABLE TEST (COL1 NUMBER);
INSERT INTO TEST VALUES (1);
COMMIT;
DROP TABLE TEST;
CREATE TABLE TEST (COL1 NUMBER);
INSERT INTO TEST VALUES (2);
COMMIT;
DROP TABLE TEST;
CREATE TABLE TEST (COL1 NUMBER);
INSERT INTO TEST VALUES (3);
COMMIT;
DROP TABLE TEST;
At this point, if you were to flash-back the table TEST, the third version of the table is retrieved, not the first. So the column COL1 will have the value 3, not 1.
you can also retrieve the other versions of the dropped table
- Use the rename option:
SQL>FLASHBACK TABLE TEST TO BEFORE DROP RENAME TO TEST2;
SQL>FLASHBACK TABLE TEST TO BEFORE DROP RENAME TO TEST1;
- Use the specific recycle-bin names of the table to restore. To do that, first identify the table's recycle bin names and then issue:
SQL>FLASHBACK TABLE "BIN$04LhcpnoanfgMAAAAAANPw==$0" TO BEFORE DROP RENAME TO TEST2;
SQL>FLASHBACK TABLE "BIN$04LhcpnqanfgMAAAAAANPw==$0" TO BEFORE DROP RENAME TO TEST1;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/207/viewspace-778638/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 12c Recover Table New FeatureOracle
- Oracle10g New Feature -- 8. Tablespace ManagementOracle
- Oracle10g New Feature -- 4. Flashback DatabaseOracleDatabase
- Oracle10g New Feature -- 2.Flashback RecordsOracle
- Oracle10g New Feature -- 11. Wait InterfaceOracleAI
- Oracle10g New Feature -- 7. Rollback MonitoringOracle
- Oracle10g New Feature -- 6. Oracle Data PumpOracle
- Oracle10g New Feature -- 5.Temporary Tablespace GroupOracle
- oracle10g new feature -- 1. SqlplusOracleSQL
- Oracle10g New Feature:CRS(Cluster Ready Services) (zt)Oracle
- Oracle10g New Feature -- 9. ASM (Automatic Storage Management)OracleASM
- java new featureJava
- Oracle10g New Feature -- 14. OEM ( Oracle Enterprise Manager)Oracle
- Oracle10g New Feature -- 13. Automatic Shared Memory ManagementOracle
- Oracle10g New Feature --12. ASSM ( Automatic Segment Space Management )OracleSSM
- Oracle10g New Feature -- 10. AWR (Automatic Workload Repository)Oracle
- oracle10g new feature:對expdp並行方式的幾個測試Oracle並行
- 12c new feature
- 版本新特性(new feature)
- new feature ——>mysql to oracle MigrationMySqlOracle
- Oracle Database 12C New FeatureOracleDatabase
- 11g New Feature: Health monitor
- oracle 12c new feature 列不可見Oracle
- j2ee1.4 new feature請教banq
- Oracle10g New Features(1)Oracle
- 11g New Feature: Health monitor (Doc ID 466920.1)
- oracle 11g ocp new feature 1z0-050Oracle
- Add a Field To New Condition Table in Pricing
- oracle10g刪除Table的困惑Oracle
- Test Negtive Role Set in a stream environmnet- 10g_new_feature
- oracle 12cR2 new feature dbca 命令可以建立standby 庫Oracle
- SAP Table function 執行報錯 feature not supported 該如何分析Function
- Does Goldengate Support The New Oracle 10g Flashback Feature? [ID 966212.1]GoOracle 10g
- New redo log sizing advisor in Oracle10gOracle
- New S4 HANA table browser transaction SE16H
- Oracle10g 回收站及徹底刪除table : drop table xx purge 以及flashbackOracle
- zt_楊老師yangtingkun_11g new feature新特性系列文章
- oracle 12c R2 new feature 支援執行過的歷史命令Oracle