0

所以我在这里有一个非常尴尬的话题。oracle server 10g 上的一个表被删除并重新创建,它不应该是。表的结构已更改,现在我无法将其闪回。转储来自前一天,但我不确定如何只恢复一张表。任何想法如何继续这个话题?

非常感谢。彼得

4

1 回答 1

2

要恢复已删除的表(您应该使用不同的名称恢复它或删除与正在恢复的表同名的表),您可以使用任一imp实用程序(例如)和您拥有的转储文件通过将表名指定为tables参数 ( tables=(your_table_name)) 的值(在这种情况下,您必须删除模式中已存在的同名表或将表导入到不同的模式中。),或者您可以使用恢复表flashback声明是否recycle bin启用选项。以下是使用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> 
于 2012-10-13T22:16:09.563 回答