当前位置:  数据库>oracle

Oracle DB闪回(Flashback database)开启笔记

    来源: 互联网  发布时间:2017-06-10

    本文导语: 为测试部门搭建一台Oracle DB,需满足可以经常将整个数据库回退到某时间点的需求。比较简单的方法是使用Oracle的闪回特性之一"闪回数据库"。 预备知识:闪回数据库需要使用两种日志:闪回日志和重做日志。重做日志的概念不...

为测试部门搭建一台Oracle DB,需满足可以经常将整个数据库回退到某时间点的需求。比较简单的方法是使用Oracle的闪回特性之一"闪回数据库"。

预备知识:闪回数据库需要使用两种日志:闪回日志和重做日志。重做日志的概念不需多谈,所谓的闪回日志的记录正好与重做日志的记录相反。可以简单的这样认为:比如重做日志记录了一条insert命令,那么闪回日志就记录这条记录相关的delete命令,当然实际上这是非常复杂的过程。

这里并不会介绍“闪回数据库”的原理,因为已经有太多的资料来阐明它,也不会介绍“闪回数据库”的操作方法,因为它非常简单(在进入MOUNT状态后执行"flashback database to scn …"或"flashback database to timestamp …")。

1. 开启DB闪回之前需确保启用了归档模式

 

SQL> archive log list
Database log mode              Archive Mode
Automatic archival            Enabled
……

 

2. 查看闪回日志是否已启用

 

SQL> select LOG_MODE,FLASHBACK_ON from v$database;
 
LOG_MODE  FLASHBACK_ON
---------- ---------------
ARCHIVELOG NO

 

3. 启用闪回日志,即闪回数据库功能

 

SQL> alter database flashback on;
alter database flashback on
*
ERROR at line 1:
ORA-38706: Cannot turn on FLASHBACK DATABASE logging.
ORA-38709: Recovery Area is not enabled.

 

报错,无法开启闪回功能。到这里本文的主角--"oerr"命令君隆重登场。

4. 根据上文中提示的错误号使用oerr命令排错

 

$ oerr ORA 38709
38709, 00000, "Recovery Area is not enabled."
// *Cause:  An ALTER DATABASE FLASHBACK ON command failed because the
//          Recovery Area was not enabled.
// *Action: Set DB_RECOVERY_FILE_DEST to a location and retry.

 

5.  从上述的提示中找到错误原因:DB_RECOVERY_FILE_DEST 没有预设

 

SQL> show parameter DB_RECOVERY_FILE_DEST
 
NAME                                TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string
db_recovery_file_dest_size          big integer 0

 

6.  设置DB_RECOVERY_FILE_DEST

 

SQL> alter system set db_recovery_file_dest='/opt/oracle/fast_recovery_area';
alter system set db_recovery_file_dest='/opt/oracle/fast_recovery_area'
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-19802: cannot use DB_RECOVERY_FILE_DEST without DB_RECOVERY_FILE_DEST_SIZE

 

7. 使用oerr命令排错

 

$ oerr ORA 19802
19802, 00000, "cannot use DB_RECOVERY_FILE_DEST without DB_RECOVERY_FILE_DEST_SIZE"
// *Cause: There are two possible cause for this error:
//        1) The DB_RECOVERY_FILE_DEST parameter was in use when no
//            DB_RECOVERY_FILE_DEST_SIZE parameter was encountered while
//            fetching initialization parameter.
//        2) An attempt was made to set DB_RECOVERY_FILE_DEST with the
//            ALTER SYSTEM command when no DB_RECOVERY_FILE_DEST_SIZE
//            was in use.
// *Action: Correct the dependency parameter definitions and retry the command.

 

8. 从上述错误原因与解决方案提示中得知需要先设置DB_RECOVERY_FILE_DEST_SIZE

 

SQL> alter system set DB_RECOVERY_FILE_DEST_SIZE=20G scope=both;
System altered.
 
 
SQL> show parameter db_recovery
 
NAME                                TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string
db_recovery_file_dest_size          big integer 20G

 

9. 设置DB_RECOVERY_FILE_DEST

 

SQL> alter system set db_recovery_file_dest='/opt/oracle/fast_recovery_area' scope=both;
 
System altered.

 

10. 启用闪回日志,即闪回数据库功能

 

SQL> alter database flashback on;
Database altered.

 

此时可以在'db_recovery_file_dest'设定的目录中看到扩展名为.flb的文件,它们就是闪回日志。

 

$ ls
o1_mf_98mpkdl6_.flb  o1_mf_98okkcs9_.flb

 

11. 闪存日志的保存期限由参数db_flashback_ retention_target控制(单位为分钟),凡是超出保存期限的闪回日志将会在快速恢复区空间吃紧时被自动删除。

 

SQL> show parameter db_flashback_retention_target
 
NAME                                TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_flashback_retention_target        integer    10080

 

 

Oracle 11g Flashback Data Archive(闪回数据归档)

 

Oracle Flashback闪回机制

 

Oracle Flashback database

 

Flashback table快速恢复误删除的数据

 

Oracle 备份恢复:Flashback闪回

 

 


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • 所有的Oracle9 i Database选件在Linux上都可用
  • Oracle 数据库(oracle Database)性能调优技术详解
  • Oracle 2010年7月更新修复多个Oracle Database安全漏洞
  • Oracle 9i DataBase 支持 P4 吗?
  • Oracle Database Lite
  • 有人在fedora 10下安装 oracle database 11g,没有呀?提供个安装步骤
  • 谁那里有《Oracle Database 10g完全参考手册》中文版的电子书啊?发给我好吗
  • Linux下启动Oracle database EM及isqlplus等命令
  • 在Linux中安裝Oracle Database 10g時切換root帳戶時出現﹕-bash: eth0 commond not found,這是怎么 回事?各位大仙的幫一下
  • Oracle Database 建立与查询 Sequence
  • Oracle Database 11g Release 2 For Linux发布
  • 在Oracle下创建database link两种方法
  • DBA 在Linux下安装Oracle Database11g数据库图文教程
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 12c的九大最新技术特性介绍 iis7站长之家
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle 10g和Oracle 11g网格技术介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • ORACLE日期相关操作
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • ORACLE数据库常用字段数据类型介绍
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • Oracle 12c的九大最新技术特性介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,