Oracle中的flashback drop可以挽回DROP TABLE
操作的影响。它可以被用于意外删除表操作之后的恢复。Flashback Drop比其他可以在这种情形下使用的恢复机制要快的多,比如point-in-time,而且不会导致事务的丢失和宕机。
当你删除表时,数据库并不会立即删除和表相关联的空间。而是,把表和它相关联的对象重命名,然后放置到数据库的“Recycle Bin” — 回收站。 Flashback Drop操作会将删除的表从回收站中恢复。
为了理解如何使用Oracle Flashback Drop,你必须理解回收站是如何工作的,以及如何访问和管理回收站的内容。
这部分包含了以下话题:
- 什么是回收站?
- 表和其他对象在回收站中是如何存储的?
- 回收站中对象的命名规范
- 在回收站中查看和查询对象
- 回收站的容量和空间压力
- 清除回收站中的对象
一、什么是回收站?
回收站是所有被删除的表及其相关对象的逻辑容器。当一个表被删除了,数据库会将表以及表所依赖的对象存储到回收站中,从而可以在以后得以恢复。表所依赖的对象包括索引、约束、触发器、嵌套表、LOB段和LOB索引段。
二、表和其他对象在回收站中是如何存储的?
当执行了一个DROP TABLE
操作后,表及其相关对象会被放置到回收站。例如,执行下面的语句就会把EMPLOYEE_DEMO
表以及相关的索引、约束或前面列出的其他对象都放置到回收站中。
SQL> DROP TABLE EMPLOYEE_DEMO;
Table Dropped
表及其相关对象将会留在回收站中,直到它们被从回收站中清除。你可以在SQL*Plus中使用PURGE
语句来明确的从回收站中清除表或对象,详见描述Purging Objects from the Recycle Bin。如果你确定不想以后再恢复需要删除的表了,那么你就可以使用DROP TABLE
语句的PURGE
选项来立即并永久删除这个表,而不是放到回收站中。示例如下:
DROP TABLE employee_demo PURGE;
即使你不从回收站中清除对象,由于表空间的限制数据库也会从回收站中清除对象。详见Recycle Bin Capacity and Space Pressure。
三、回收站中对象的命名规范
当一个表和它所依赖的对象被放进回收站,为了避免在某些情况下导致名字冲突,放进回收站的这些表和对象会被指定唯一的名字,可能会产生冲突的情形有:
- 用户删除了一张表,然后创建了一张相同名字的表,然后又把新创建的表给删除了;
- 两个用户有两张相同名字的表,而且这两个用户把这个相同名称的表给删除了;
在回收站中,对象的名字是全局唯一的,而且可以被用来和回收站中的其他对象进行区分。对象的名字是按照如下格式形成的
BIN$$globalUID$version
参考文章:
最新评论
网飞没问题, 迪士尼+有解决方案么?
pp助手是安卓手机用的,根本下载用不来苹果
已解决
这样的话数据库里的结构为{"attachment":{"content":"xxx"}}, 要怎么才能变成{"content":"xxx"},从而使结构保持一致?
赞! make test不过的坑都写到的,谢谢楼主~
谢谢你
用了root用户还是一直502是怎么回事呢
student id 是空的