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;

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

    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');

    方法二:启用:

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

    SQL exec dbms_flashback.enable_at_system_change_number(112112);

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

    禁用: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 上,而不需要作时间点的恢复工作!

    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]-链式代码
下拉加载更多内容 ↓