网站首页 > 技术文章 正文
概述
Oracle 9i 开始支持闪回,Oracle10g开始全面支持闪回功能,Oracle11g有所完善,为我们快速的恢复数据,查询历史数据提供了很大的便捷方法。
今天主要对Oracle常用闪回使用做些详细介绍,其中对于不常用的事务和版本闪回,这里就不多做介绍了。
01
Oracle闪回概述
这里用表格来说明
02
Oracle闪回使用详解
1、闪回开启
(1)开启闪回必要条件
a.开启归档日志
SQL> archive log list; ##如未开启,在mount状态执行alter database archivelog;
b.设置合理的闪回区
db_recovery_file_dest:指定闪回恢复区的位置
db_recovery_file_dest_size:指定闪回恢复区的可用空间大小
db_flashback_retention_target:指定数据库可以回退的时间,单位为分钟,默认1440分钟(1天),实际取决于闪回区大小
(2)检查是否开启闪回
SQL> select flashback_on from v$database;
(3)开启闪回
a.开启归档
mount状态:alter database archivelog;
b.设置闪回区
SQL> alter system set db_recovery_file_dest='/home/U01/app/oracle/fast_recovery_area' scope=both; SQL> alter system set db_recovery_file_dest_size=60G scope=both; SQL> alter system set db_flashback_retention_target=4320 scope=both;
c.开启flashback (10g在mount开启)
SQL> alter database flashback on;
(4)确定闪回开启
SQL> select flashback_on from v$database;
2、闪回使用
(1)闪回查询
闪回查询主要是根据Undo表空间数据进行多版本查询,针对v$和x$动态性能视图无效,但对DBA_、ALL_、USER_是有效的
a.闪回查询
允许用户查询过去某个时间点的数据,用以重构由于意外删除或更改的数据,数据不会变化。
SQL> select * from scott.dept; SQL> delete from scott.dept where deptno=40; SQL> commit; SQL> select * from scott.dept as of timestamp sysdate-10/1440; SQL> select * from scott.dept as of timestamp to_timestamp('2019-05-18 12:30:00','yyyy-mm-dd hh24:mi:ss');
b.闪回版本查询
用于查询行级数据库随时间变化的方法
c.闪回事务查询
用于提供查看事务级别数据库变化的方法
(2)闪回表(update/insert/delete)
闪回表就是对表的数据做回退,回退到之前的某个时间点,其利用的是undo的历史数据,与undo_retention设置有关,默认是14400分钟(1天)。同样,sys用户表空间不支持闪回表,要想表闪回,需要允许表启动行迁移。
闪回表示例:
SQL> flashback table scott.dept to timestamp to_timestamp('2019-05-18 12:30:00','yyyy-mm-dd hh24:mi:ss'); SQL> select row_movement from dba_tables where table_name='DEPT' and owner='SCOTT';
SQL> alter table scott.dept enable row movement; SQL> flashback table scott.dept to timestamp to_timestamp('2019-05-18 12:30:00','yyyy-mm-dd hh24:mi:ss'); SQL> select * from scott.dept; SQL> alter table scott.dept disable row movement;
(3)闪回DROP(drop table)
当一个表被drop掉,表会被放入recyclebin回收站,可通过回收站做表的闪回。表上的索引、约束等同样会被恢复。不支持sys/system用户表空间对象,可通过alter system set recyclebin=off;关闭回收站功能
即使不开始flashback,只要开启了recyclebin,那么就可以闪回DROP表。
但如果连续覆盖,就需要指定恢复的表名,如果已经存在表,则需要恢复重命名。
(4)闪回数据库(truncate/多表数据变更)
数据库闪回必须在mounted状态下进行,基于快照的可以再open下进行闪回库
闪回数据库主要是将数据库还原值过去的某个时间点或SCN,用于数据库出现逻辑错误时,需要open database resetlogs
a.全库闪回
闪回整个数据库到XX个时间点
b.快照闪回
针对主库和备库都可以创建闪回快照点,然后恢复到指定的快照点,但主库一旦恢复到快照点,备库的同步则需要重新同步
c.闪回snapshot standby
此功能在11GR2非常实用,可自动创建闪回点、开启闪回日志,可完成线上数据测试后,然后做数据库闪回恢复主备关系
(5)闪回归档(增加、修改、重命名、删除表的列、truncate表、修改表的约束、以及修改分区表的分区规范)
03
闪回语句
1、闪回数据库
FLASHBACK DATABASE TO TIMESTAMP to_timestamp('2019-05-18 12:30:00','yyyy-mm-dd HH24:MI:SS'); flashback database to scn 16813234;
2、闪回DROP
其中table_name可以是删除表名称,也可以是别名
flashback table table_name to before drop; flashback table table_name to before drop rename to table_name_new;
3、闪回表
flashback table table_name to scn scn_number; flashback table table_name to timestamp to_timestamp('2019-05-18 12:30:00','yyyy-mm-dd HH24:MI:SS');
4、闪回查询
select * from table_name as of timestamp to_timestamp('2019-05-18 12:30:00','yyyy-mm-dd HH24:MI:SS'); select * from scott.dept as of scn 16801523;
5、闪回快照
create restore point before_20190518 guarantee flashback database; flashback database to restore point before_20190518 ;
闪回这块的内容还是比较多的,后面我在单独整一个excel文档分享下吧,后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~
- 上一篇: 记一次误删Oracle控制文件并恢复过程
- 下一篇: Oracle数据库不同损坏级别的恢复详解
猜你喜欢
- 2024-10-13 国庆节快乐--一文看懂Oracle数据库跨版本下rman备份恢复过程
- 2024-10-13 史上最全Oracle文件损坏处理办法(附实验步骤)
- 2024-10-13 数据库数据恢复-ORACLE数据库常见故障的数据恢复可能性分析
- 2024-10-13 Oracle数据库不同损坏级别的恢复详情
- 2024-10-13 不懂数据库高可用、备份与恢复,数据库优化?看这本就够了
- 2024-10-13 windows系统回收站和Oracle回收站--致力于恢复不小心删除的对象
- 2024-10-13 Oracle数据误操作全面恢复实战(r11笔记第78天)
- 2024-10-13 TRUNCATE恢复-bbed truncate如何恢复
- 2024-10-13 服务器数据恢复-服务器断电导致Oracle数据库报错的...
- 2024-10-13 一起来学习Oracle的备份恢复基础吧-1
你 发表评论:
欢迎- 06-24发现一款开源宝藏级工作流低代码快速开发平台
- 06-24程序员危险了,这是一个 无代码平台+AI+code做项目的案例
- 06-24一款全新的工作流,低代码快速开发平台
- 06-24如何用好AI,改造自己的设计工作流?
- 06-24濮阳网站开发(濮阳网站建设)
- 06-24AI 如何重塑前端开发,我们该如何适应
- 06-24应届生靠这个Java简历模板拿下了5个offer
- 06-24服务端性能测试实战3-性能测试脚本开发
- 564℃Oracle分析函数之Lag和Lead()使用
- 561℃几个Oracle空值处理函数 oracle处理null值的函数
- 548℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 544℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 541℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 535℃【数据统计分析】详解Oracle分组函数之CUBE
- 526℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 517℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端富文本编辑器 (47)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)