马蜂窝旅游网站怎么做,唐山网站制作专业,小学网站建设方案书,长沙做网站zwnet什么是闪回
Oracle 数据库闪回技术是一组独特而丰富的数据恢复解决方案#xff0c;能够有选择性地高效撤销一个错误的影响#xff0c;从人为错误中恢复。闪回是一种数据恢复技术#xff0c;它使得数据库可以回到过去的某个状态#xff0c;可以满足用户的逻辑错误的快速恢复… 什么是闪回
Oracle 数据库闪回技术是一组独特而丰富的数据恢复解决方案能够有选择性地高效撤销一个错误的影响从人为错误中恢复。闪回是一种数据恢复技术它使得数据库可以回到过去的某个状态可以满足用户的逻辑错误的快速恢复。
注意闪回仅对逻辑错误有效如果是数据文件损坏则闪回无效须使用介质恢复。
特点恢复速度快无须备份文件。 开启方式
Oracle默认不启动闪回数据库如果要启动闪回数据库特性必须将数据库设置为归档模式启动并启用闪回恢复区。
查看是否开启闪回
SQLSELECT CREATED,FLASHBACK_ON FROM V$DATABASE;CREATED FLASHBACK_ON
----------- ------------------
2011/9/8 11 NO
确定归档的操作系统存储位置
SQL show parameter db_recovery_file_Dest;NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /data/oracle/flash_recovery_area
db_recovery_file_dest_size big integer 2G
配置闪回保留时间
SQL show parameter db_flashback_retention_targetNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_flashback_retention_target integer 1440
此参数为以分钟为单位的默认为一天即1440。其意义为从当前时间开始计算最大可以把数据库闪回到过去的时间。若要修改有以下语句
alter system set db_flashback_retention_tagget2880 scopeboth;
注意设置的个值不一定能完全使数据库恢复到你想要的时候点因为闪回是根据归档日志进行操作而上面第2步配置的大小为2g而闪回日志是由数据库自动记录的如果由于空间不足此时较早的闪回日志会被删除导致闪回日志不完全而导致闪回失败所以配置适合的大小。
开启闪回数据库
startup mount;
--开启闪回数据库
alter database flashback on;
关闭闪回数据库
默认情况下启动了闪回数据库则数据库的永久表空间将受闪回数据库的保护若想关闭闪回执行如下
startup mount;
alter database flashback off;
闪回技术
Oracle提供了四种可供使用的闪回技术闪回查询闪回删除闪回归档闪回数据库每种都有不同的底层体系结构支撑但其实这四种不同的闪回技术部分功能是有重叠的使用时也需要根据实际场景合理选择最合适的闪回功能。 1闪回查询 (Flashback Query)
功能描述
可以查询过去某个时间段的数据库状态。依赖undo数据恢复数据时可以先查询再做insert
工作原理
Oracle 会提取所需要的撤销数据前提是撤销是可用的即撤销数据还没被覆盖进行回滚但这种回滚是临时的仅针对当前session可见。
select * from useren as of timestamp to_timestamp(2016-09-10 11:00:00,yyyy-mm-dd hh24:mi:ss);--带where条件的
select * from useren as of timestamp to_timestamp(2022-10-15 11:00:00,yyyy-mm-dd hh24:mi:ss) where id1000;--例如恢复数据
insert into useren select * from useren as of timestamp to_timestamp(2013-09-23 11:52:06,yyyy-mm-dd hh24:mi:ss);
2闪回删除(Flashback Drop)
功能描述
闪回删除可以轻松将一个已经被Drop的表还原回来。相应的索引数据库约束也会被还原除了外键约束利用recyelebin回收站原理
原理描述
Drop命令其实是Rename命令早期的Oracle版本10g之前闪回删除意味着从数据字典中删除了该表的所有引用虽然表中数据可能还存在但已成了孤魂野鬼没法进行恢复了10g版本之后Drop命令则仅仅是一个Rename操作所以恢复就很容易了。
--闪回useren用户表
flashback table useren to before drop;--也可以在闪回删除的时候对表重命名
--格式flashback table TEST10 to before drop [rename to test11];
--例如
flashback table useren to before drop rename to useren_new
也可以通过回收站查看当前用户那些表被删除了每个用户都有一个回收站这个回收站是个逻辑结构它不是一块独立的存储空间它存在在当前表空间内所以如果有别的操作需要空间比如现在需要创建一张表没有足够空间可用回收站中的数据就会被清理这也是导致闪回删除失败的原因。
SQL SHOW RECYCLEBIN;
--彻底删除表闪回删除也无能为力
SQL DROP TABLE EMP PURGE;
--清空回收站
SQL PURGE RECYCLEBIN; 3闪回数据归档Flashback Data Archive
功能描述
闪回数据归档可使表具有回退到过去任何时间点的能力前面提到的闪回查询闪回表都会受限于撤销数据是否失效如果撤销数据被覆盖重写了闪回操作自然会失败闪回删除则受限于表空间是否有足够可用空间而闪回数据归档则没有这些限制
--1.创建一个用户闪回数据归档的表空间test_tbcreate tablespace test_tb datafile test.dbf size 20m; --2.创建一个保留时间为2年的闪回归档create flashback archive test_fa tablespace test_tb retention 2 year;--3.为scott用户下的emp表启用闪回归档grant flashback archive on test_fa to scott;--链接conn scott/tiger--4.为emp表启用闪回归档至此emp表就拥有了可以查询或回退到过去2年任意时间点的能力alter table emp flashback archive test_fa; 4闪回数据库Flashback Database
DDL语句依赖闪回区的闪回日志
功能描述
闪回数据库可将整个数据库回退到过去某个时间点闪回表是某张表的时空穿梭闪回数据库则是整个数据库的时空穿梭。当然闪回点之后的所有工作就丢失了其实就相当于数据库的不完整恢复所以只能以resetlogs模式打开数据库。闪回数据库会造成停机时间当然相比于传统备份恢复机制恢复过程会快很多。这是一种快速的数据库恢复方案这种恢复是基于用户的逻辑错误通常是将数据库恢复到之前的某一个时间点
工作原理
闪回数据库不使用撤销数据使用另外一种机制来保留回退所需要的恢复数据当启用闪回数据库发生变化的数据块会不断从数据库缓冲区缓存中复制到闪回缓冲区然后称为恢复写入器Recovery Writer的后台进程会将这些数据刷新到磁盘中的闪回日志文件中。闪回的过程则是一个 提取闪回日志--将块映像复制回数据文件 的过程。
实现方式
--1.指定闪回恢复区也就是存放闪回日志的位置
alter system set db_recovery_file_dest /flash_recovery_area;
--2.指定恢复区大小
alter system set db_recovery_file_dest_size4G;
--3.指定闪回日志保留时间为2小时即通过闪回操作可以将数据库回退到前两小时内的任意时间点
alter system set db_flashback_retention_target120;
--4.有序关闭数据库--mount模式下启用闪回数据库--打开数据库 至此闪回数据库配置完成
shutdown immediate;
startup mount;
--开启闪回数据库
alter database flashback on;
alter database open;--5.使用闪回数据库功能
shutdown immediate;
startup mount;--6使用闪回数据库闪回数据库
flashback database to timestamp sysdate-60/1440;
--或者使用SCN 例如flashback database to scn 13081009;
alter database open resetlogs; 上一篇Oracle 锁的概念以及分类