首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表恢复oracle10g

表恢复oracle10g
EN

Stack Overflow用户
提问于 2012-10-13 18:22:21
回答 1查看 1K关注 0票数 0

所以我在这里有一个非常尴尬的话题。oracle服务器10g上的一个表被删除并重新创建,但它不应该被删除。表的结构已经改变了,现在我不能再刷新它了。转储是从前一天,但我不是真正确定如何恢复只有一个表。有什么想法可以继续这个话题吗?

非常感谢。彼得

EN

回答 1

Stack Overflow用户

发布于 2012-10-14 06:16:10

要还原已删除的表(应使用不同的名称还原它,或者删除与要还原的表同名的表),可以使用imp实用程序(例如)或通过将表名指定为tables参数(tables=(your_table_name))的值来使用您拥有的转储文件(在这种情况下,必须删除方案中已存在的同名表或将表导入到不同的方案中),或者,如果启用了flashback选项,则可以使用recycle bin语句来还原表。以下是使用flashback语句恢复表的示例:

代码语言:javascript
复制
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> 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12872181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档