路飞打克洛克达尔音乐:Oracle闪回truncate删除的表中数据

来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 06:14:19

Oracle闪回truncate删除的表中数据


说明:数据库默认闪回时间为一天

【1】查询恢复设置时间

   SQL>  show parameter flashback

   flashback功能默认为1440分钟,也就一天时间

【2】查看数据库闪回状态是否可用
   SQL> select flashback_on fromv$database;

        FLASHBACK_ON      

        -----------
       NO                    

     flashback_on为NO,也就是没有开flashback功能,当truncate删除数据时,无法使用flashback

【3】设置flashback_on为开启状态,要求数据库必须在mount状态下打开

   SQL> shutdown immediate;
        数据库已经关闭。
        已经卸载数据库。
        ORACLE 例程已经关闭。
    SQL>startup mount
        ORACLE 例程已经启动。

        Total System Global Area  272629760 bytes
        FixedSize                 1248476 bytes
        VariableSize            109052708 bytes
        DatabaseBuffers         155189248 bytes
        RedoBuffers               7139328 bytes
        数据库装载完毕。
    SQL> alter database flashback on;

        数据库已更改。

说明:如果数据库为非归档模块,会提示“必须启用介质恢复功能”

解决方法:1)SQL> shutdown immediate;
         2)SQL> startup mount;
         3)SQL> alter databasearchivelog;

【4】truncate删除表中数据

     SQL>truncate table jg_rk;

         表被截断。   ----数据被删除

    SQL> select * from dept;

        未选定行     ----表中数据不存在

【5】恢复删除数据(必须以DBA的身份登陆后)
    SQL> shutdown immediate
         数据库已经关闭。
         已经卸载数据库。
         ORACLE 例程已经关闭。
     SQL>startup mount
         ORACLE 例程已经启动。

         Total System Global Area  272629760 bytes
         FixedSize                 1248476 bytes
         VariableSize            117441316 bytes
         DatabaseBuffers         146800640 bytes
         RedoBuffers               7139328 bytes
         数据库装载完毕。
    SQL> flashback database to timestamp
       to_timestamp('2010-10-08 13:30:30','yyyy-mm-ddhh24:mi:ss');

         闪回完成。

     SQL>alter database open read write;

         数据库已更改。

     SQL>select* fromjg_rk;   可以查看恢复的数据

注意: 一旦resetlogs之后,将不能再flashback至resetlogs之前的时间点。