2012-10-13 57 views
0

所以我在這裏真的很尷尬的話題。 Oracle服務器10g上的一個表被刪除並重新創建,它不應該是。表格的結構發生了變化,現在我無法將其閃回。轉儲是前一天,但我不確定如何恢復一個表。任何想法如何進行這個話題?表恢復oracle10g

非常感謝。 彼得

+0

這是一個商業數據庫?如果是這樣,你不能從磁帶恢復,並使用事務日誌前滾到表被刪除之前的一個點? – w0051977

+0

是的,這是紀錄分貝。即使我不是數據庫管理員,所以實際上我不知道有什麼可能恢復它。 – user1275513

+0

這個問題太含糊。數據庫是否備份?例如使用網絡備份? – w0051977

回答

2

要恢復已刪除的表(你要麼它應該使用不同的名稱恢復或刪除具有相同的名稱正在恢復的表的表),您可以使用imp實用程序(例如)和通過指定表名作爲tables參數(tables=(your_table_name))的值指定的轉儲文件(在這種情況下,您必須刪除已存在的具有相同名稱表的模式,或將表導入不同的模式)。 ,或者如果啓用recycle bin選項,則可以使用flashback語句恢復表。 這裏是恢復使用flashback語句表的例子:

SQL> drop table tb_test; 

Table dropped 

SQL> drop table tb_test1; 

Table dropped 

SQL> show parameter recyclebin; 

NAME         TYPE  VALUE 
------------------------------------ ----------- ------------------------------ 
recyclebin       string  on 

SQL> create table tb_test(id number); 

Table created 

SQL> insert into tb_test(id) values(123); 

1 row inserted 

SQL> commit; 

Commit complete 

SQL> select object_name, original_name, operation from recyclebin; 

OBJECT_NAME     ORIGINAL_NAME     OPERATION 
------------------------------------------------------------------------------ 
BIN$sCyDUbMsQ9qOotUQZUTt9g==$0 TB_TEST1       DROP 
BIN$uVD0HKOsQv26JTT3Q0PuOg==$0 TB_TEST       DROP  

SQL> purge recyclebin; 

Done 

SQL> select object_name, original_name, operation from recyclebin; 

OBJECT_NAME     ORIGINAL_NAME     OPERATION 
------------------------------------------------------------------------------ 

SQL> drop table tb_test; 

Table dropped 

SQL> select object_name, original_name, operation from recyclebin; 

OBJECT_NAME     ORIGINAL_NAME     OPERATION 
------------------------------------------------------------------------------ 
BIN$+shfpD3rQKy/ry5LKtkJaw==$0 TB_TEST       DROP  

SQL> create table tb_test(id number, col1 varchar2(11)); 

Table created 

SQL> insert into tb_test(id, col1) values(11, 'string'); 

1 row inserted 

SQL> commit; 

Commit complete 

SQL> flashback table tb_test to before drop; 

flashback table tb_test to before drop 

ORA-38312: original name is used by an existing object 

SQL> flashback table tb_test to before drop rename to tb_test1; 

Done 

SQL> select * from tb_test1; 

     ID 
---------- 
     123 

SQL> select * from tb_test; 

     ID COL1 
---------- ----------- 
     11 string 

SQL>