Oracle数据库备份与恢复(5):Flashback

吴伟仙剑笑影

吴伟仙剑笑影

2016-02-19 13:54

今天天气好晴朗处处好风光,好天气好开始,图老师又来和大家分享啦。下面给大家推荐Oracle数据库备份与恢复(5):Flashback,希望大家看完后也有个好心情,快快行动吧!

   Flashback在开发环境(有时生产环境的特殊情况下)是很有用的一个工具。

    5.1 9i Flashback 简介

    5.1.1  原理

    当数据  update  或  delete  时,原来的数据会保存在  undo  表空间中,保存的最少时间是 UNDO_RETENTION.实际的保存时间与 undo表空间的大小和数据更改的繁忙程度相关。 UNDO_RETENTION 的参数(单位为秒)指定 Oracle保存用于 flashback查询的 undo映像 的时间。一般你可以将这个值设为一整天(864000秒),这样你就能看到前一天全天的映像。 当然,你的在线 undo日志必须足够大,大到足以能保存一整天的 undo日志数据,对于繁忙的 Oracle系统,这个数值可以达到很大。

    5.1.2  一些限制

    服务器必须配置成使用自动 undo管理。

    在使用 Flashback查询时不能使用 DDL或者 DML.

    Flashback 不取消 DDL操作,例如 DROP命令。 数据库管理员做一些必要的设置之后,一般用户才能使用 Flashback查询功能:

    SQL ALTER SYSTEM SET UNDO_MANAGEMENT=AUTO

    SQL ALTER SYSTEM SET UNDO_RETENTION=86400

    SQL GRANT EXECUTE ON DBMS_FLASHBACK TO USERNAME;

    5.1.3  获得SCN或时间点

    在 Flashback 时,可以尝试多个 SCN,获取最佳值。

    如果能得知具体时间,那么可以获得准确的数据闪回。

    SQL alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS'; SQL select sysdate from v$database;

    捕捉提交的 SCN:  //  不知为什么,两种方法获得的 SCN不一样

    SQL select dbms_flashback.get_system_change_number scn from dual;

    SQL select max(ktuxescnw * power(2,32) + ktuxescnb) SCN from x$ktuxe;

    5.1.4  启用或禁用flashback查询

    使用系统改变数(SCN)或者真实时间来指定 flashback 的时间点来获取数据映象。

    方法一:SQL select * from [TABLE] as of scn 129292;

    SQL select * from [TABLE] as of timestamp to_timestamp('时间', ‘时间格式');

    SQL  select  *  from  saflog  as  of  timestamp  to_timestamp('2007-12-18  08:40:00','YYYY-MM-DD HH24:MI:SS');

    方法二:启用:

    SQL exec dbms_flashback.enable_at_system_change_number(112112);

    SQL exec dbms_Flashback.enable_at_time('28-AUG-02 11:00:00');启用后看到的只是闪回的结果,实际上并未恢复数据。且闪回状态下不能做DML操作。可以先恢复到一个临时表中。见示例。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

    禁用:SQL execute dbms_flashback.disable();

    5.1.5  示例:

declare
cursor c1 is select * from scott.emp_temp;
r_c1 scott.e%rowt ype;
begin
loop
dbms_flashback.enable_at_system_change_number(49570);
if c1%isopen=false then open c1;end if;
fetch c1 into r_c1;
dbms_flashback.disable();
exit when c1%notfound;
update scott.emp_temp set sal=r_c1.sal where empno=r_c1.empno;
commit;
end loop;
exec dbms_flashback.disable();
close c1;
end;
/

  5.2 10g Flashback 的增强

    10g 的 Flashback进行了增强和修改,通过回闪,用户可以完成许多不可能恢复的工作,目前 oracle10g 的回闪包括以下特性;

    1〉oracle falshback Database.该特性允许 oracle 通过 Flashback database 语句,将数据库会滚到前一个时间点或者scn 上,而不需要作时间点的恢复工作!

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

    2〉oracle falshback table.该特性允许 oracle通过 flashback table 语句,将表会滚到前一个时间点或者 scn 上。

    3〉oracle falshback drop.该特性允许 oracle把恢复 drop掉的 table 或者索引。

    4〉oracle falshback version query.该特性可以得到特定的表在某一个时间段内的任何修改记录!

    5〉oracle falshback transaction query该特性可以限制用户在某一个事务级别上检查数据库的修改操作,适用于诊断问 题、分析性能、审计事务。

展开更多 50%)
分享

猜你喜欢

Oracle数据库备份与恢复(5):Flashback

编程语言 网络编程
Oracle数据库备份与恢复(5):Flashback

Oracle 数据库的备份与恢复

编程语言 网络编程
Oracle 数据库的备份与恢复

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Oracle数据库的备份与恢复

电脑网络
Oracle数据库的备份与恢复

Oracle数据库备份与恢复(6):LogMiner

编程语言 网络编程
Oracle数据库备份与恢复(6):LogMiner

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

ORACLE 数据库RMAN备份恢复

编程语言 网络编程
ORACLE 数据库RMAN备份恢复

Oracle数据库文件恢复与备份思路

编程语言 网络编程
Oracle数据库文件恢复与备份思路

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

在Oracle中重编译所有无效的存储过程

在Oracle中重编译所有无效的存储过程

jQuery入门[4]-链式代码

jQuery入门[4]-链式代码
下拉加载更多内容 ↓