ORACLE_OCP之闪回技术

ORACLE_OCP之闪回技术

  • 文章目标:
    • 了解如何使用闪回技术来防止各种类型的错误并从中恢复
    • 配置数据库以使用闪回技术
    • 执行闪回操作
    • 区分时间有效性和时间历史

一、使用闪回技术进行错误检测和纠正

  • 闪回使错误恢复更加容易:
    • 使您能够查看过去的时间点的数据
    • “重演操作”不需要的数据更改
    • 减少纠正错误所需的时间
  • 闪回易于使用,并且包含简单的命令,没有复杂的过程。

在这里插入图片描述

二、事务和撤消

在这里插入图片描述

三、闪回技术

  • 使用闪回技术:
    • 查看过去的数据状态
    • 及时修复数据
    • 协助用户进行错误分析和恢复

在这里插入图片描述
在这里插入图片描述

三、Flashback Technology

在这里插入图片描述

四、准备数据库以进行闪回

  • 赋予FLASHBACK权限.
  • 查看UNDO相关参数:
    • UNDO_TABLESPACE=‘UNDOTBS1’
    • UNDO_MANAGEMENT=‘AUTO’
    • UNDO_RETENTION=900
    • Guaranteeing undo retention

五、配置保留时间的保证参数

SQL> ALTER TABLESPACE undotbs1 RETENTION GUARANTEE;
在这里插入图片描述

六、使用闪回技术查询数据(闪回查询)

  • Flashback Query(闪回查询)

    • 用于查询指定时间点或SCN的所有数据

      SELECT employee_id, salary FROM employees
      AS OF TIMESTAMP <T1>
      WHERE employee_id = 200

      在这里插入图片描述

  • Flashback Version Query(闪回版本查询)

    • 查询存在于两个时间点或两个SCN之间的所有行的版本
    • 仅查询已提交的数据
    • 不能用于查询外部表,临时表,固定表或视图
    • 可用于创建视图
    • 无法跨越DDL命令
    • 过滤掉段收缩(shrink)操作

    SELECT versions_xid, salary FROM employees
    VERSIONS BETWEEN TIMESTAMP <t1> and <t2>
    WHERE employee_id = 200;

  • Flashback Transaction Query(闪回事务查询)

    • 查看事务处理所做的所有更改。

七、Flashback Table(闪回表): Overview

  • 闪回表将表恢复到特定时间点。
  • 闪回表是原位操作。
  • 数据库必须保持在联机状态。

在这里插入图片描述

  • 在不恢复备份的情况下将一个或多个表还原到特定时间点。

  • 使用UNDO表空间中的数据

  • 先决条件:

    • 您需要对特定表具有FLASHBACK ANY TABLE或FLASHBACK对象权限。
    • 对表还需具有SELECT,INSERT,DELETE和ALTER对象特权。
    • 必须对要执行闪回操作的表启用行移动

    ALTER TABLE employees ENABLE ROW MOVEMENT;

  • 操作接口: Cloud Control and SQL*Plus

    FLASHBACK TABLE hr.departments TO TIMESTAMP
    TO_TIMESTAMP(‘2013-01-25 21:00:00’,
    ‘YYYY-MM-DD HH24:MI:SS’);

注意事项
  • FLASHBACK TABLE 命令作为单个事务处理执行,要求获取 DML 排它锁。
  • 不闪回统计信息。
  • 保留当前索引和从属对象。
  • Flashback Table 操作:
    • 无法在系统表上执行
    • 无法跨越DDL操作
    • 生成UNDO和REDO数据

八、Flashback Transaction Query(闪回事务查询)

在这里插入图片描述

  • DDL命令被视为字典更新。
  • 对DDL命令基础事务的闪回事务查询显示数据字典更改。
  • 删除的对象显示为对象编号。
  • 删除的用户显示为用户标识符。

九、Flashback Transaction Backout(闪回事务回退)

  • 使用闪回事务回退撤消事务和从属事务。
  • Oracle数据库确定事务之间的依赖关系,并有效地创建补偿事务,该事务可撤消不需要的更改。
  • 必须启用补充日志记录(Supplemental logging 补充日志)。
  • 必须授予所有受影响表上的SELECT,FLASHBACK和DML权限。

十、Flashing Back a Transaction (闪回事务)

  • 使用EMCC或DBMS_FLASHBACK。 进行TRANSACTION_BACKOUT过程。
  • 如果PL / SQL调用成功完成,则表示该事务没有任何依赖关系,并且单个事务已成功撤回。
  • 选择退出选项后,将在DBA_FLASHBACK_TXN_STATE和DBA_FLASHBACK_TXN_REPORT视图中生成依赖性报告。
  • 查看相关性报告,该报告显示所有已撤消的事务。
  • 提交更改以使其永久不变。
  • 回滚以放弃更改。

十一、最佳实践:基于UNDO的闪回-Flashback Query, Flashback Table

  • 使用EMCC中的UNDO顾问可获取相关的UNDO保留的建议。
  • 使用固定大小的UNDO:UNDO保留会根据表空间大小和当前系统负载自动调整为最佳保留。
  • 请注意DDL限制:如果修改了表结构,则过去无法查询。

十二、Flashback Dropand the Recycle Bin(回收站)

在这里插入图片描述

十三、Recycle Bin 回收站

在这里插入图片描述

十四、绕过回收站

DROP TABLE <table_name> [PURGE] ;

DROP TABLESPACE <ts_name> [INCLUDING CONTENTS] ;

DROP USER <user_name> [CASCADE] ;

  • 想要开启或关闭回收站:

    ALTER SYSTEM SET RECYCLEBIN=OFF SCOPE=SPFILE;

十五、使用闪回数据归档

  • 自动跟踪数据库历史更改:
    • 在表级别启用您指定的保留期限。
    • 所有后续更改均透明存储并防篡改。
    • 超过保留期限的记录将自动删除。
    • 使用闪回技术检索历史记录。

SELECT … AS OF TIMESTAMP…SELECT … VERSIONS BETWEEN TIMESTAMP and TIMESTAMP…

在这里插入图片描述

十六、创建时间历史并启用相关归档

  • 创建一个新的表空间来保存历史记录数据。

  • 创建闪回数据归档,将其分配给表空间,并指定其保留期限。 (它需要FLASHBACK ARCHIVE ADMINISTER系统特权。)

    CREATE FLASHBACK ARCHIVE fda1 TABLESPACE fda_tbs1
    OPTIMIZE DATA QUOTA 10M RETENTION 1 YEAR;
    //带有压缩和重复数据删除功能的非默认FDA优化 。FDA:闪回归档区

  • 更改基本表以启用归档并将其分配给闪回归档文件。 (它需要FLASHBACK ARCHIVE对象权限。)

    ALTER TABLE HR.EMPLOYEES FLASHBACK ARCHIVE fda1;

在这里插入图片描述

十七、闪回数据归档的工作方式

  • 历史数据:
    • 后台进程以自调整的间隔异步方式捕获行(默认值:5分钟)
    • 根据保留策略自动清除
    • 默认情况下未优化存储
    • 使用OPTIMIZE DATA子句:压缩和重复数据删除
    • 根据时间和数量自动创建的分区
    • 查询跳过无关的分区

十八、在时间历史中收集用户上下文

  • 收集级别:无(默认),典型,全部:
    • 使用DBMS_FLASHBACK_ARCHIVE.SET_CONTEXT_LEVEL进行设置
    • 典型收集数据库:用户ID,全局用户ID,客户端标识符,服务名称,模块名称和主机名从GET_SYS_CONTEXT (USERENV) 中获得

SQL> EXEC DBMS_FLASHBACK_ARCHIVE.SET_CONTEXT_LEVEL(‘TYPICAL’)
PL/SQL procedure successfully completed

SQL> SELECT DBMS_FLASHBACK_ARCHIVE.GET_SYS_CONTEXT
2 (VERSIONS_XID, ‘USERENV’,‘SESSION_USER’),
3 VERSIONS_XID,VERSIONS_STARTTIME,VERSIONS_ENDTIME,
4 employee_id, salary
5 FROM hr.employees VERSIONS BETWEEN SCN MINVALUE
6 AND MAXVALUE ;

十九、透明的Schema演变

  • DDL支持:

    • Add, drop, rename, and modify column
    • Drop and truncate partition(分区)
    • Rename and truncate table
  • 闪回查询适用于上述DDL更改。

  • 不会自动支持所有其他DDL。

二十、Full Schema Evolution(完整Schema演变)

  • 取消关联或者使用关联DBMS_FLASHBACK_ARCHIVE包中的过程:
    • 在指定的表上禁用闪回归档,并允许使用更复杂的DDL(升级,拆分表等)。
    • 在关联期间加强Schema完整性。 (基础表和历史记录表必须是相同的Schema 。)

Note:应谨慎使用此功能,并应了解不能再保证闪回归档是不可变的,因为在取消关联时历史记录可能已更改。

在这里插入图片描述

二十一、时间有效性和历史

  • 区分活动行和非活动行:
    • 时间有效性:同一表中用户管理的生效日期
    • 时间历史记录:系统管理的事务处理时间在单独的表空间中

二十二、使用PERIOD FOR子句

  • 将活动和非活动数据都保存在同一表中.

  • 在创建表时定义一个有效时间维度.

    • 明确定义两个日期时间列。
    • 或:创建自动有效时间列。

    SQL> CREATE TABLE emp
    2 ( empno number, salary number, deptid number,
    3 name VARCHAR2(100),
    4 user_time_start DATE, user_time_end DATE,
    5 PERIOD FOR user_time (user_time_start,user_time_end));

  • 通过显式命名有效时间列来插入行.

    SQL> CREATE TABLE emp2
    2 ( empno number, salary number, deptid number,
    3 name VARCHAR2(100),
    3 PERIOD FOR user_time);

二十三、在有效时间列上进行过滤:示例1

  • 过滤有效时间列以仅访问活动数据
    在这里插入图片描述

    SQL> select * from hr.emp as of PERIOD FOR user_time
    2 to_date(‘01-DEC-1992’, ‘dd-mon-yyyy’) ;

二十四、在有效时间列上进行过滤:示例2

  • 使用版本查询获取有效时间
    在这里插入图片描述

    SQL> SELECT * FROM hr.emp VERSIONS PERIOD FOR user_time
    2 BETWEEN to_date(‘31-DEC-2011’,‘DD-MON-YYYY’)
    3 AND to_date(‘31-DEC-2012’,‘DD-MON-YYYY’);

二十五、使用DBMS_FLASHBACK_ARCHIVE

  • 可见性控制适用于查询和DML。
  • 完全可见性适用于DDL。
  • 使用DBMS_FLASHBACK_ARCHIVE设置的可见性:
    • 将可见性设置为给定时间的有效数据.

      DBMS_FLASHBACK_ARCHIVE.ENABLE_AT_VALID_TIME(‘ASOF’,
      (to_timestamp(‘29-SEP-10 05.44.01 PM’))

    • 将可见性设置为在会话级别的有效时间段内当前有效的数据.

      DBMS_FLASHBACK_ARCHIVE.ENABLE_AT_VALID_TIME(‘CURRENT’)

    • 将数据的可见性设置为全表级别.

      DBMS_FLASHBACK_ARCHIVE.ENABLE_AT_VALID_TIME(‘ALL’)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值