• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

mysql 搞代码 4年前 (2022-01-09) 23次浏览 已收录 0个评论

为测试部门搭建一台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控制(单位为分钟),凡是超出保存期限的闪回日志将会在快速恢复区空间吃紧时被自动删除。

本文来源gaodai.ma#com搞##代!^码@网3

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闪回

本文永久更新链接地址:


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Oracle DB闪回(Flashback database)开启笔记

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址