暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

通过Oracle的回收站恢复被删除的表浅谈

WorkLifeRecords 2021-06-24
612

在实际的工作中我们可能会因为一些误操作删除一些表。这个时候可以通过Oracle的回收站来恢复被删除的表、

一、创建测试表A:

    create table A
    (
    id VARCHAR2(20),
    name VARCHAR2(20),
    address VARCHAR2(20)
    )
    tablespace USERS
    pctfree 10
    initrans 1
    maxtrans 255
    storage
    (
    initial 64K
    next 1M
    minextents 1
    maxextents unlimited
    );

    二、在A插入一些测试数据

      insert into A (ID, NAME, ADDRESS)
      values ('1', '1', '1');

      insert into A (ID, NAME, ADDRESS)
      values ('2', '2', '2');

      commit;

      三、删除测试A表

        drop table A;

        四、查询回收站

          select * from user_recyclebin;

          通过上述查询语句会得到如下图所示结果:

          五、恢复误删除的表

            flashback table A to before drop;

            六、通过上一步的恢复操作。我们可以看到表A已经被恢复过来了

            七、总结:

            oracle提供以上机制保证了安全操作,但同时也代来了另外一个问题,就是空间占用,由于以上机制的运行,使用drop一个表或者delete数据后,空间不会自动回收,对于一些确定不使用的表,删除时要同时回收空间,可以有以下2种方式:

            1、采用truncate方式进行截断。(但不能进行数据回恢复了)

            2、在drop时加上purge选项:drop table 表名 purge

            该选项还有以下用途:

            也可以通过删除recyclebin区域来永久性删除表 ,原始删除表drop table emp cascade constraints
            purge table emp;
            删除当前用户的回收站:
            purge recyclebin;
            删除全体用户在回收站的数据:
            purge dba_recyclebin;

            文章转载自WorkLifeRecords,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

            评论