今天看了点书,关于闪回数据库的,也就是当用户误操作删除了数据库用户时,我们恢复用户数据的过程是什么
我们先简单了解下flashback 能做什么
1、可以闪回数据库,就是把数据库闪回到某个以前的时间点,前提闪回日志最早记录的SCN
2、闪回数据库表,也就是用户表误drop后的恢复 flashbackup drop
3、闪回表记录 用户数据表记录的恢复 flashback query
4、flashback table 闪回数据库表
其实主要就是两个功能,闪回数据库(整库的闪回操作) 闪回表
那么我们怎样使用数据库的闪回功能来闪回误删除的用户呢 大致步骤如下
1、确保数据库已经开启闪回特性,v$database 中flashbacck_on 可查询。 更改命令alter database flashback on; 也请更改用于存放闪回日志的相关参数(db_recovery_file_dest /db_recovery_file_dest_size )
2、把数据库启动到mount状态,将数据库闪回至误删除操作的前一刻 闪回方法如下图
![](http://img.blog.itpub.net/blog/attachment/201707/2/29487349_149896390088b7.gif?x-oss-process=style/bb)
注意 to /to before 两种方式区别, to before 方式是指定时间戳的前一秒,也就是闪回到指定时间戳的前一秒的时间点
具体命令可参考:flashback database to timestamp to_timestamp('2017-07-02 09:53:50','yyyy-mm-dd hh24:mi:ss');
4、使用exp或expdp方式导出,exp方式没问题,expdp方式需要借助其他数据库,具体可参考本博其他文章
5、将数据库完全恢复,并以read write模式打开数据库
6、导入被删除的用户
当然,并不是所有场景都适合闪回数据库的特性 ,如
1、数据文件物理损坏
2、数据文件SHRINK
3、由于闪回日志记录在控制文件中,因此使用备份的控制文件或者重建控制文件时,闪回数据库特性失效
4、表空间删除
5、需要注意,闪回数据库最多闪回时间间隔多久的数据,取决去闪回日志中最小SCN,如果想闪回比最小SCN还早的记录,请借助于其他备份
以下方式可以加快速度:
闪回数据库前可以先把其他表空间OFFLINE, 只需要闪回SYSTE表空间、UNDO表空间和业务数据所在表空间即可
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29487349/viewspace-2141483/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29487349/viewspace-2141483/