问题描述
在我们的生产数据库中,已经决定删除表空间,因为已经丢失了数据文件,因为
意外地,文件被命令rm -rf丢弃在操作系统级别,幸运的是,没有太大的损失,但是后来创建了一些索引。
在该表空间中有许多数据文件,后来决定将所有其余对象从现有表空间移动到新表空间,并删除旧表空间,现有表空间脱机。
在这种情况下,我们发现我们无法选择表,但是我们可以删除表并闪回表。
请事先解释一下场景谢谢 ......
意外地,文件被命令rm -rf丢弃在操作系统级别,幸运的是,没有太大的损失,但是后来创建了一些索引。
在该表空间中有许多数据文件,后来决定将所有其余对象从现有表空间移动到新表空间,并删除旧表空间,现有表空间脱机。
在这种情况下,我们发现我们无法选择表,但是我们可以删除表并闪回表。
请事先解释一下场景谢谢 ......
专家解答
我需要看到一些闪回工作的证据。“Drop” 将起作用,因为它不需要触摸数据-只是字典。
示例-表空间在线
=
示例-表空间处于脱机状态
=
示例-表空间在线
=
SQL> create table t tablespace no_assm
2 as select * from dba_objects;
Table created.
SQL>
SQL> alter table t enable row movement;
Table altered.
SQL>
SQL> select count(*) from t;
COUNT(*)
----------
78804
1 row selected.
SQL>
SQL> select dbms_flashback.get_system_change_number x from dual;
X
----------------------------
14816199469542
1 row selected.
SQL>
SQL> delete from t
2 where rownum < 1000;
999 rows deleted.
SQL> commit;
Commit complete.
SQL> flashback table t to scn 14816199469543;
Flashback complete.
SQL> select count(*) from t;
COUNT(*)
----------
78804
1 row selected.
SQL>
示例-表空间处于脱机状态
=
SQL> create table t tablespace no_assm
2 as select * from dba_objects;
Table created.
SQL>
SQL> alter table t enable row movement;
Table altered.
SQL>
SQL> select count(*) from t;
COUNT(*)
----------
78805
1 row selected.
SQL>
SQL> select dbms_flashback.get_system_change_number x from dual;
X
----------------------------
14816199469676
1 row selected.
SQL>
SQL> delete from t
2 where rownum < 1000;
999 rows deleted.
SQL> commit;
Commit complete.
SQL>
SQL> alter tablespace no_assm offline;
Tablespace altered.
SQL> flashback table t to scn 14816199469677;
flashback table t to scn 14816199469677
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-00376: file 11 cannot be read at this time
ORA-01110: data file 11: 'C:\ORACLE\ORADATA\DB122\NO_ASSM.DBF'
SQL> drop table t ;
Table dropped.
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




