27.Oracle11g的闪回Flashback

oracle基础系统学习目录

01.CentOS7静默安装oracle11g
02.Oracle的启动过程
03.从简单的sql开始
04.Oracle的体系架构
05.Oracle数据库对象
06.Oracle数据备份与恢复
07.用户和权限管理
08.Oracle的表
09.Oracle表的分区
10.Oracle的同义词与序列
11.Oracle的视图
12.Oracle的索引
13.Oracle通过JDBC连接Java
14.Oracle中的事务
15.Oracle11g的归档方式和日志文件的相关操作
16.Oracle的数据字典和动态性能视图
17.Oracle11g的PL/SQL基础
18.Oracle的过程和函数
19.Oracle11g中的游标
20.Oracle11g中的触发器
21.Oracle的程序包(Package)
22.Oracle中的临时表空间
23.Oracle11g的UNDO表空间
24.Oracle11g的逻辑备份与恢复
25. Oracle的回收站
26.Oracle11g的数据装载
27.Oracle11g的闪回Flashback
28.Oracle11g物化视图


一、闪回Flashback的概述

1、什么是闪回Flashback

Oracle11g中的闪回Flashback是一种数据库恢复和查询工具,它允许用户在不需要恢复数据库的情况下,快速地查看和恢复数据的历史状态。闪回Flashback提供了一系列功能,可以帮助用户回溯到某个时间点或某个特定的数据库状态,而无需使用传统的数据库恢复方法。

Oracle 11g中的闪回(Flashback)功能是一种数据库恢复和查询技术,它允许用户在不需要从备份中恢复数据的情况下,快速地回滚数据库对象的状态或者查询历史数据。闪回功能的实现原理和优缺点如下:

2、闪回Flashback的原理:

  1. 闪回查询(Flashback Query):Oracle数据库在后台维护了UNDO表空间,其中保存了历史数据的快照。当执行闪回查询时,Oracle引擎会在UNDO表空间中查找指定时间点的数据快照,并返回给用户。

  2. 闪回表(Flashback Table):Oracle数据库在后台维护了回滚段(Rollback Segment),它记录了表的历史版本。当执行闪回表操作时,Oracle引擎会使用回滚段中的历史版本来恢复表的状态。

  3. 闪回版本查询(Flashback Version Query):Oracle数据库在后台维护了历史数据的快照和版本信息,当执行闪回版本查询时,Oracle引擎会根据版本信息查询历史数据的快照。

  4. 闪回事务(Flashback Transaction):Oracle数据库在后台维护了事务的日志信息,包括事务的提交和回滚操作。当执行闪回事务操作时,Oracle引擎会根据事务日志信息回滚指定事务的操作。

3、闪回Flashback的优缺点

  • 优点:

    • 无需备份恢复:使用闪回功能可以快速地回滚数据库对象的状态或者查询历史数据,而无需从备份中恢复数据,节省了恢复时间和资源。

    • 精确到时间点:闪回功能允许用户精确指定恢复或查询的时间点,可以实现精确到秒的历史数据查询和恢复操作。

    • 无需停机:闪回功能可以在数据库运行的情况下进行操作,无需停机或者暂停数据库服务。

    • 灵活性:闪回功能提供了多种操作方式,包括闪回查询、闪回表、闪回版本查询和闪回事务,可以根据具体需求选择合适的操作方式。

  • 缺点:

    • 存储开销:闪回功能需要维护UNDO表空间、回滚段和历史数据快照,可能会增加数据库的存储开销。

    • 性能影响:在执行闪回操作时,数据库引擎需要访问UNDO表空间、回滚段和历史数据快照,可能会对数据库的性能产生一定影响。

    • 需要权限:执行闪回操作通常需要特定的权限,需要谨慎控制权限以防止误操作。

总的来说,Oracle 11g的闪回功能通过维护历史数据快照、回滚段和事务日志等信息,实现了快速的数据库恢复和历史数据查询,提高了数据库的可用性和可靠性。然而,使用闪回功能也需要注意存储开销和性能影响等方面的问题。

二、Oracle闪回Flashback的相关操作

1、闪回的启用和禁用

要启用Oracle 11g中的Flashback功能,可以按照以下步骤进行操作:

  1. 首先,登录到Oracle数据库中的sys用户或具有sysdba权限的用户。

  2. 然后执行以下SQL语句来启用Flashback功能:

    ALTER DATABASE FLASHBACK ON;
    

    这条SQL语句将会开启数据库级别的Flashback功能。

  3. 如果需要在表级别启用Flashback功能,可以使用以下语句:

    ALTER TABLE <table_name> ENABLE ROW MOVEMENT;
    

这将会为指定的表启用Flashback功能,允许对表中的行进行移动操作。

  1. 确保数据库的参数设置中包含了允许Flashback的配置。可以通过以下SQL语句来检查:

    SHOW PARAMETER DB_FLASHBACK_RETENTION_TARGET;
    

    这将会显示Flashback保留的目标时间,确保该参数设置为一个合适的值。

通过以上步骤,您可以在Oracle 11g中成功启用Flashback功能。请注意,在执行这些操作之前,请确保您有足够的权限,并且了解操作的影响。

2、Oracle闪回Flashback的功能

当使用Oracle 11g的闪回Flashback功能时,可以使用以下语法和代码示例来实现不同的操作:

  1. 闪回查询(Flashback Query):
    闪回查询允许用户在不恢复数据库的情况下,查看数据库在过去某个时间点的状态。可以使用AS OF子句来实现。

    语法:

    SELECT * FROM table_name AS OF TIMESTAMP to_timestamp('YYYY-MM-DD HH:MI:SS', 'YYYY-MM-DD HH24:MI:SS');
    

    代码示例:

    SELECT * FROM employees AS OF TIMESTAMP to_timestamp('2022-01-01 12:00:00', 'YYYY-MM-DD HH24:MI:SS');
    
  2. 闪回表(Flashback Table):
    闪回表允许用户在不需要恢复整个表的情况下,快速地恢复表中的数据到之前的状态。可以使用FLASHBACK TABLE命令来实现。

    语法:

    FLASHBACK TABLE table_name TO TIMESTAMP to_timestamp('YYYY-MM-DD HH:MI:SS', 'YYYY-MM-DD HH24:MI:SS');
    

    代码示例:

    FLASHBACK TABLE employees TO TIMESTAMP to_timestamp('2022-01-01 12:00:00', 'YYYY-MM-DD HH24:MI:SS');
    
  3. 闪回版本查询(Flashback Version Query):
    闪回版本查询允许用户查看数据库中某个特定对象的历史版本,包括之前的数据和结构。可以使用VERSIONS BETWEEN子句来实现。

    语法:

    SELECT * FROM table_name VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE;
    

    代码示例:

    SELECT * FROM employees VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE;
    
  4. 闪回事务(Flashback Transaction):
    闪回事务允许用户在不需要恢复整个数据库的情况下,快速地回滚某个特定事务的操作。可以使用FLASHBACK TRANSACTION命令来实现。

    语法:

    FLASHBACK TRANSACTION transaction_id;
    

    代码示例:

    FLASHBACK TRANSACTION 1001;
    

通过以上语法和代码示例,您可以在Oracle 11g中使用闪回Flashback功能进行数据库恢复和查询,提高数据库的可用性和可靠性。

3、Oracle11g的闪回删除

可以恢复一个被drop的对象,因为进行drop时,Oracle先把它放到回收站中。

  • 回收站内的信息:

    show recyclebin;
    
  • 闪回删除:

    flashback table <table_name> to before drop;
    
  • 彻底删除:

    drop table <table_name>  purge;
    
  • 清空回收站:

    purge recyclebin;
    

三、Oracle11g的闪回数据库

如果数据库出现逻辑错误,无法采用闪回表的方式进行恢复,或者数据库的结构发生了改变,可以通过闪回数据库的方式把整个数据库回退到出错前的时间点上。

以下是一个具体的代码示例,演示如何通过闪回数据库的方式将整个数据库回退到出错前的时间点上。

  1. 配置数据库为归档模式:

    ALTER DATABASE ARCHIVELOG;
    
  2. 配置闪回恢复区:

    ALTER SYSTEM SET DB_RECOVERY_FILE_DEST = '/path/to/flash_recovery_area' SCOPE=spfile;
    

    其中 /path/to/flash_recovery_area 是闪回恢复区的路径。

  3. 配置闪回保留时间:

    ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET = 1440;
    

    这里设置了闪回保留时间为 1440 分钟(24 小时)。

  4. 启用数据库闪回:

    ALTER DATABASE FLASHBACK ON;
    
  5. 进行闪回数据库:

    FLASHBACK DATABASE TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' HOUR');
    

    在上述示例中,SYSTIMESTAMP - INTERVAL '1' HOUR 表示将数据库回退到当前时间前1小时的时间点上。可以根据实际需要调整时间点。

需要注意的是,在执行这些操作之前,请务必做好充分的备份,以防止数据丢失。此外,执行这些操作通常需要具有适当的权限,通常需要具有 SYSDBASYSOPER 权限。

点击此处跳转下一节:28.Oracle11g物化视图


更多精彩文章可扫码关注公主号查看:
在这里插入图片描述
若需要各种相关资源可关注公众号留言

  • 23
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Juvenile少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值