拓扑园

  • Oracle性能优化
  • Oracle项目案例
    • Oracle近期项目案例(目录)
    • Oracle实战问题解析(目录)
    • Oracle数据库名变更流程(2种方式)
    • Oracle数据库目录更换流程(使用Oracle的clone工具)
    • Oracle数据库迁移方案(目录)
    • 标准化文档系列
  • Oracle基础知识
    • LLL的Oracle培训(分类)
    • LLL的docker培训(分类)
    • 标准化文档系列--(分类)
    • Oracle核心经典分析(分类)
    • 图灵小队----(分类并包含以下文章)
    • --MySQL8.0/Oracle/Memcached/Redis等安装配置于RHEL/OL6/7/8.X系列-运行环境最优配置
    • --PG安装配置于RHEL/9X系列-运行环境最优配置
    • --自动维护任务详解-开启、关闭信息统计收集(统计信息)
    • --图灵小队—Oracle/PostgreSQL下创建一个用户测试表(自行定义数据行)
    • --图灵小队-Oracle存储过程导出表的明细_UTL_FILE(文章)
    • --图灵小队-Oracle数据库删除/卸载操作指南(文章)
    • --图灵小队-Oracle常用性能查询SQL语句(文章)
    • --图灵小队-Oracle数据库上线前检查(文章)
    • --图灵小队-Oracle常用SQL语句(文章)
    • --图灵小队-Oracle脚本合集(文章)
    • --图灵小队-Oracle技巧记录(文章)
    • ADG
    • RAC
    • ASM
    • OGG
    • RMAN
    • EXPDP/IMPDP
    • 工厂数据导入导出系列
  • MySQL相关
  • Linux
    • kubernetes
    • docker
    • Linux
    • PHP
    • Nginx
    • haproxy
    • mail
    • 网站
    • 域名
    • 网址收藏
  • 数据中心
    • 新框架系统集合
    • 工作文档
    • EBS数据文件扩容
    • VMware虚拟化
    • EBS系列
    • 大数据
    • SVN
    • zabbix
    • SAP
    • 备份相关
    • FC交换机
    • SVN
  • K-Studing
    • LG-MySQL
    • LG-Docker/K8S
    • LG-PostgreSQL
    • LG-ORACLE_BBED
    • LG-ORACLE
    • LG-Elasticsearch(ES)+ELK
    • Oracle-19C-OCP
    • WERN_ORACLE培训
    • redis数据库
    • Nginx培训学习系列
  • 其他
    • 外研英语4年级下册-听力
    • 影视系列
    • 如何使用iTunes软件通过抓包下载旧版本的ios的app
Oracle数据库恢复专家团队:TEL:18562510581(微信同号);QQ:284833194;QQ群:496333360
天高任鸟飞
  1. 首页
  2. Oracle
  3. 正文

ORACLE——RMAN——数据库备份之二——闪回技术(FLASHBACK)

2019年8月23日 491点热度 0人点赞 0条评论

    为了使数据库能够从任何逻辑错误中迅速恢复,oracle推出了闪回技术。

    采用该技术,可以对行级和事物级的数据变化进行恢复,减少了数据恢复的时间,而且操作简单。通过SQL语句就可以实现数据的恢复,大大提高了数据库恢复的效率。

    闪回技术是数据库恢复技术历史上一次重大的进步,从根本上改变了数据恢复。

一、闪回技术包括以下各项:

(1)闪回查询:(FLASHBACK QUERY):查询过去某个时间点或某个SCN值时表中的数据信息

(2)闪回版本查询(FLASHBACK Version query):查询过去某个时间段或某个SCN段内表中数据变化的情况。

(3)闪回事物查询(FLASHBACK Transaction Query):查看某个事物或所有事物在过去一段时间对数据进行的修改。

(4)闪回数据库(FLASHBACK Database):将数据库恢复到过去某个时间点或某个SCN值时的状态

(5)闪回删除(FLASHBACK drop):将已经删除的表及其关联的对象恢复到删除前的状态。

(6)闪回表(FLASHBACK table):将表恢复到过去的某个时间点或某个SCN值时的状态。

(7)SCN是当oracle数据库更新后,有DBMS自动维护而累积递增的一个数字。可以通过查询数据字典V$DATABASE中的CURRENT_SCN获得当前的SCN号。

二、闪回恢复区的含义

    oracle推荐指定一个闪回恢复区(FLASHRECOVERY AERA)作为存放备份与恢复相关的默认位置,这样ORACLE就可以实现自动的基于磁盘的备份与恢复。

    闪回恢复区是一块用来存储恢复相关的文件的存储空间,允许用户集中存储所有恢复相关的文件。

    以下几种文件可以存放在闪回恢复区。

(1)控制文件

(2)归档日志文件

(3)闪回日志

(4)控制文件和SPFILE自动备份

(5)RMAN备份集

(6)数据文件拷贝

闪回恢复区主要通过以下3个初始化参数来设置和管理

(1)db_recovery_file_dest:指定闪回恢复区的位置

(2)db_recovery_file_dest_size:指定闪回恢复区的可用空间

(3)db_flashback_retention_target:该参数用来控制闪回日志中数据保留的时间,或者说,希望闪回数据库能够恢复到的最早的时间点。单位为min,默认是1440min,即一天。当然实际上可回退的时间还取决于闪回恢复区的大小,因为里面保存了回退所需要的闪回日志,所以这个参数要和db_recovery_file_dest_size配合修改。

如果要撤销闪回恢复区,把初始化参数DB_RECOVERY_FILE_DEST的值清空。

db_recovery_file_dest_size只有在DB_RECOVERY_FILE_DEST清空之后才可以清空

 三、闪回数据库的设置及恢复测试

设置了闪回恢复区,要启动闪回数据库功能,还需要进一步配置,数据必须处于归档模式,在设置闪回数据库

1、数据库已经处于归档模式:SQL > archive log list

如果未开启归档模式,进行开启:

SQL> shutdown immediate;

SQL> startup mount;

SQL>alter database archivelog ;

SQL>alter database open;

image.png

2、开启闪回数据库(不需要关闭数据库,在全开下即可)

    (1)在startup 全开下:

    (2)查询发现数据库未启用闪回数据库:SQL > select flashback_on from v$database;

    (3)先设置闪回区大小:SQL>alter system set db_recovery_file_dest_size = 8G;

    (4)再设置闪回区目录:SQL>alter system set db_recovery_file_dest=‘/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/’

    (5)最后设置闪回区启用:SQL>alter database flashback on;


image.png

3、查看是否设置闪回区域及闪回区大小:  SQL>show parameter db_recovery_file;

image.png

(1)如果没有,则建立闪回区域:

SQL>alter system set db_recovery_file_dest='/data/u01/app/oracle/fast_recovery_area/orclogg1' scope=both

(2)如果没有设置闪回区大小,则设置:

alter system set db_recovery_file_dest_size = 8G;

(3)设置闪回区数据保留时间(系统默认保留1440分钟,即一天,可以不用单独设置:alter system set db_flashback_retention_target=1440;

4、使用SCN闪回数据库。

     闪回数据库能够使数据迅速的回滚到以前的某个时间点或者某个SCN上,这对数据库从逻辑错误中恢复特别有用。而且也是大多数发生逻辑损坏时恢复数据库最佳的选择。

(1)SCN转换成时间:SQL> select scn_to_timestamp(current_scn) from v$database;

image.png

(2)时间转换成SCN:SQL> select timestamp_to_scn('23-AUG-19 10.56.17.000000000 AM') from v$database;

image.png

5、闪回数据库恢复测试

(1)查看数据库系统当前SCN

image.png

(2)改变数据库当前状态,给ogg_test.t1 插入一条记录

image.png

(3)进行闪回数据库恢复,将数据库恢复到创建表之前的状态,即SCN为5971716

SQL> shutdown immediate;

SQL> startup mount;

SQL> flashback database to scn 5971716;

image.png

(4)用RESETLOGS选项打开数据库,

image.png

(5)验证数据库的状态,数据只有7条了。

image.png

(6)查询数据库中当前最早的闪回SCN和时间

SQL> select oldest_flashback_scn,oldest_flashback_time from v$flashback_database_log;

image.png

(7)上图没有时间格式;更改并重新查看

SQL> alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';

SQL> select oldest_flashback_scn,oldest_flashback_time from v$flashback_database_log;

image.png

(8)查看物理目录,最早的时间也是2019-08-23 10:34的数据:

image.png

(9)按照指定时间闪回数据库

对指定时间转换成SCN,通过SCN进行恢复,恢复操作如上述步骤(1-4)

SQL> select timestamp_to_scn('23-AUG-19 10.56.17.000000000 AM') from v$database;

image.png

6、闪回数据库操作的限制:

(1)数据文件损坏或丢失等介质故障不能使用闪回数据库进行恢复,闪回数据库只能基于当前正常运行的数据文件;

(2)闪回数据库功能启动后,如果发生数据控制文件重建或利用备份恢复控制文件,则不能使用闪回数据库;

(3)不能使用闪回数据库进行数据文件收缩操作;

(4)不能使用闪回数据库将数据库恢复到在闪回日志中可获得的最早的SCN之前的SCN,因为闪回日志文件在一定的条件下被删除,而不是始终保存在闪回恢复区中

四、闪回表的恢复测试

  (1)闪回表是将表恢复到过去的某个时间点或者指定的SCN而不用恢复数据文件,为DBA提供了一种在线、快速、便捷的恢复方式,可以恢复对表进行的修改、删除、插入等错误的操作。

  (2)利用闪回表技术恢复表中的数据的过程,实际上是对表进行DML操作的过程。oracle自动维护与表相关联的索引、触发器、约束等。

 (3)为了使用数据库闪回功能,必须满足下列条件

        ①用户具有FALSHBACKANY TABLE系统权限,或者具有所操作表的FLASHBACK对象权限

        ②用户具有所操作表的SELECT/INSERT/DELETE/ALTER对象权限

        ③启动被操作表的ROW MOVEMENT特性,可以采用下列方式进行:SQL> ALTER TABLE 表名 ENABLE ROWMOVEMENT;

        有3个要求打开的ROW MOVEMENT的功能就是flashback table、Shrink Segment、更新Partition Key

      Flashback Table实际是通过Flashback Query将表中数据进行了一次删除、插入操作,因此ROWID会发生变化。

1、闪回表语法格式:

 FLASHBACK TABLE [schema].table TO SCN |TIMESTAMP expression [ENABLE|DISABLE TRIGGERS]

(1)参数说明:

SCN:将表恢复到指定的SCN时的状态

TIMESTAMP:将表恢复到指定额时间点

ENABLE|DISABLETRIGGERS:在恢复表中数据的过程中,表上的触发器时禁用还是激活(默认是引用)

2、举例说明:

(1)使用ogg_test用户登录,查看表t1的数据,并查看SCN,

查询当前SCN号,如果当前用户没有权限查询v$database,则以sys用户登录,授予当前用户访问数据字典的权限。

image.png

image.pngimage.png

(2)给表t1插入记录,提交实务,并查看

image.png

image.png

增加新表t5,并插入数据

image.png

(3)只对表t1恢复到scn为6195628时刻的数据

image.png

未启动ROW MOVEMENT特性,启动t1、t5表的ROW MOVEMENT特性image.png

 再次表t1恢复到scn为6195628时刻的数据,t1已经恢复到了指定时刻,但t5没有变化.

image.png

对表t5恢复到scn为6195628时刻(因为此时刻t5还没有创建,所以无法进行回滚)image.png

六、闪回删除(恢复drop的表)

闪回删除可以恢复使用DROP table语句删除的表,是一种对意外删除的表恢复机制。

闪回删除的功能的实现主要是通过oracle数据库中的“回收站”技术实现的。

在oracle数据库中,当执行DROP table操作时,并不立即收回表及其关联对象的空间,而是将他们重命名后放入一个称为“回收站”的逻辑容器中保存,直到用户决定永久删除他们或存储该表的表空间或存储空间不足时,表才真正被删除,为了使用数据库的闪回删除技术,必须开启数据库的“回收站”。

(1)启动“回收站”将参数RECYCLEBIN设置为ON,在默认情况下“回收站”已经启动

SQL>show paramter recyclebin

image.png

(2)如果没有启动可以使用:

SQL>alter system set recyclebin=on deferred;

(3)查看回收站。当执行DROP table 时,表及关联的对象被命名后保存在“回收站”中,可以通过查询USER_RECYCLEBIN DBA_RECYCLEBIN视图获得被删除的表及其关联对象。

通过USER_RECYCLEBIN查看被删除的表

image.png

不支持sys用户和system用户,这两个用户下的表被删除之后,无法从回收站里拿到,查询时为“空”

image.png

如果删除表的时候使用了PURGE短语,则表及其关联对象被直接释放,空间被回收,相关信息不会进入“回收站”中image.png

(4)清空回收站,由于被删除的表级其关联对象信息保存在“回收站”中,其存储空间并没有释放,因此需要定期清空“回收站”。或清除“回收站”中没有用的对象(表,索引,表空间)释放其所占用的磁盘空间

语法如下:

PURGE [TABLE 表名 | INDEX index]

[RECYCLEBIN | DBA_RECYCLEBIN] | [TABLESPACEtablespace [USER user]]

参数说明:

TABLE:从回收站中清除指定的表

INDEX:从回收站中清除指定的索引,并回收其磁盘空间

RECYCLEBIN:清空用户“回收站”,并回收所有对象的磁盘空间

DBA_RECYCLEBIN:清空整个数据库系统的“回收站”,只有具有SYSDBA权限的用户才可以使用

TABLESPACE:清除“回收站”中指定额表空间,并回收磁盘空间

USER:清除回收站中指定表空间中特定用户的对象,并回收磁盘空间

image.png

(5)闪回删除操作,闪回删除的基本语法

FLASHBACK TABLE [schema.]table to BEFOREDROP [RENAME TO table]

 闪回删除

flashback table T6 to before drop;

image.png

闪回删除举例说明:

(1)回收站中有多个相同的表名,比如T1,创建多次并删除多次;

SQL>select object_name,original_name,type from user_recyclebin;

image.png

(2)如果当前库中有了T1,需要还原回收站其他的表名为T1的表,需要用rename to 新表名,如:

SQL> flashback table T1 to before drop rename to fbt3;image.png

需要注意:只有本地管理的,非系统表空间中的表可以使用闪回删除操作。

七、闪回查询

允许根据时间点timestamp或SCN查看老的数据,除了可以查看旧数据,需要时可以通过检索旧数据来撤销错误的更改。

使用SCOTT用户登录,对EMP表基于AS of TIMESTAMP的闪回查询

SQL> show user;

USER is "OGG_TEST"

(1)查看当前SCN号

image.png

(2)第一次更新表t1,提交,并记录SCN

image.png

(3)第二次更新表t1,提交,并记录SCN

image.png

(4)第三次更新表t1,提交,并记录SCN

image.png

查看当前值

image.png

(5)闪回查询第二次更新的值

image.png

(6)闪回查询第一次更新的值

image.png

如果需要,可以将数据恢复到过去某个时刻的状态。

R

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2020年4月25日

admin

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

COPYRIGHT © 2022 拓扑园. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

鲁ICP备2021020523号

鲁ICP备2021020523号