• 【赵强老师】删除表和Oracle的回收站


    一、Oracle的Drop Table语句

    首先,我们来看一下Oracle Drop Table的语法格式。

     解释一下里面的参数:

    schema
    
    • Schema表示方案名称,这里可以理解为用户名,缺省为当前用户下的表。比如,要删除scott用户下的emp表,drop table scott.emp
    purge
    
    • purge可选项,如果开启了回收站(oracle 10g以后,回收站默认是开启的)功能,不带purge选项,表示删除的表放进回收站,空间不回收 。使用flashbask可以闪回该表。带purge选项,则表示将表删除,释放空间。
    cascade constraints
    
    • 可选项,如果有其它表关联到要删除的表的主键列或唯一键列(要删除的表是主表(父表),从表(子表)有外键关联到这张表),那么,直接用drop table会报错,这时候如果想要强制删除这张表,就需要加上cascade constraints选项。

    二、闪回删除:Flashback Drop

    使用闪回删除功能,可以撤消 DROP TABLE 语句产生的影响,而不需要求助于传统时间点恢复。这是由回收站实现的,通过 DBA_RECYCLEBIN 视图可查询回收站。

    • 查看当前数据库的回收站功能是否开启
    conn / as sysdba
    select value from v$parameter where name='recyclebin';
    

       

    •  执行drop table语句
    使用scott用户登录
    SQL> conn scott/tiger
    Connected.
    
    查看当前用户下的表
    SQL> select * from tab;
    
    TNAME		     TABTYPE  CLUSTERID
    -------------------- ------- ----------
    BONUS		     TABLE
    DEPT		     TABLE
    EMP		     TABLE
    EMP1		     TABLE
    SALGRADE	     TABLE
    
    删除一张表
    SQL> drop table emp1;
    
    Table dropped.
    
    查看当前用户下的表
    SQL> select * from tab;
    
    TNAME		              TABTYPE  CLUSTERID
    --------------------            ------- ----------
    BIN$opkhRg3T0MPgVaUg          TABLE
    q/kbkw==$0
    BONUS		              TABLE
    DEPT		              TABLE
    EMP		              TABLE
    SALGRADE	              TABLE
    

       

    • 通过回收站中的对象名称查询表的数据 
    下面的方式是错误的:
    select * from BIN$opkhRg3T0MPgVaUgq/kbkw==$0;
    
    需要加上双引号:
    select * from "BIN$opkhRg3T0MPgVaUgq/kbkw==$0";
    

       

    • 查看回收站 
    show recyclebin;
    

       

    • flashback table的语法格式

     在执行闪回表操作期间,数据库获取闪回列表中所有指定的报表独立DML锁。当正在恢复到之前状态时,这些锁阻止对表的任何操作。闪回表操作在单个事物中执行,不管闪回表中指定表的数量。要么所有的表都恢复到早期状态,要么都没恢复。如果任何表的闪回表操作失败,那么整个语句都失败。闪回操作完成时,表中的数据与表之前的时间点一直。但是,FLASHBACK TABLE到SCN或时间戳不保存rowid,FLASHBACK TABLE TO BEFORE DROP不能恢复引用约束。数据库不能恢复与表关联的早期结构的统计信息。表当前的索引是恢复,并反映还原点表的状态。如果该索引在还原点不存在,数据更新索引里来反映还原点表的状态。然而,如果索引是在当前时间和还原点之间被删除,是不能恢复。

    • 执行闪回删除
    flashback table emp1 to before drop;
    
    也可以通过回收站中的名字执行闪回:
    flashback table “BIN$opkhRg3T0MPgVaUgq/kbkw==$0” to before drop;
    

       

    •  清空回收站
    purge recyclebin;
    

      

  • 相关阅读:
    ASP.NET里面,如果设置了form的 onsubmit="return false;"之后,就不能提交按钮了?
    存储过程(待填)
    关于电脑屏幕分辨率太高字太小怎么解决?
    最新版Android开发工具
    Xamarin For Visual Studio 3.0.54.0 完整离线破解版(C# 开发Android、IOS工具 吾乐吧软件站分享)
    ubuntu 16.04 source (HUST and 163)
    transmission简单使用
    Test Tex
    What is a Statistic?
    IDE、SATA、SCSI、SAS、FC、SSD硬盘类型介绍[zz]
  • 原文地址:https://www.cnblogs.com/collen7788/p/12641672.html
Copyright © 2020-2023  润新知