ORACLE查询闪回

来源:未知作者:数据库 日期:2019/12/25 17:22 浏览:

Oracle误删除表数据后的回复详明测验情形:SYSTEM:IBM AIX 5L Oracle Version:10g奔驰M级2

在Oracle中一经不本地交给了修改操作,然后想查看校勘前的值,此时能够应用查询闪回(query flashback卡塔尔。

1. undo_retention参数的查询与改革

询问闪回能够依靠根据叁个小时值可能系统更换号(SCN卡塔尔国实行。

利用show parameter undo命令查看当前的数据库参数undo_retention设置。显示如下:SQL show parameter undo

实行闪回操作,要使顾客具有EXECUTE权限,上面以sys身份登入,并授权给store客商

NAME TYPE VALUE------------------------------------ ----------- ------------------------------undo_management string AUTOundo_retention integer 900undo_tablespace string UNDOTBS2undo_retention(保持力卡塔尔国,900单位是秒,即15分钟。纠正默许的undo_retention参数设置:SQL ALTER SYSTEM SET undo_retention=10800 SCOPE=BOTH;

56net亚洲必赢 1

56net亚洲必赢 ,System altered.

风姿浪漫、时间查询闪回

SQL show parameter undo

用户store登录,查询customers表

NAME TYPE VALUE------------------------------------ ----------- ------------------------------undo_management string AUTOundo_retention integer 10800undo_tablespace string UNDOTBS2undo_retention 10800,单位秒,即3小时。

select * from customers;

2. oracle误剔除表数据后的的立刻还原法力方法

56net亚洲必赢 2

2.1 方法一通过oracle提供的回闪效能

然后update customers set LAST_NAME=LAST_NAME || 's' ;

exec dbms_flashback.enable_at_time(to_date('2011-04-15 08:21:00','yyyy-mm-dd hh24:mi:ss'));set serveroutput onDECLARE r_temp hr.job_history%ROWTYPE;CURSOR c_temp IS SELECT * FROM hr.job_history;BEGINOPEN c_temp;dbms_flashback.disable;LOOPFETCH c_temp INTO r_temp;EXIT WHEN c_temp%NOTFOUND;insert into hr.job_history(EMPLOYEE_ID,JOB_ID,START_DATE,END_DATE) values (r_temp.EMPLOYEE_ID,r_temp.JOB_ID,r_temp.START_DATE,r_temp.END_DATE);commit;END LOOP;CLOSE c_temp;END;

commit;

这种情势能够将去除的数据复苏到对应的表中,首先要保管该客商有进行dbms_flashback包的权位。

56net亚洲必赢 3

2.2 方法二insert into hr.job_historyselect * from hr.job_history as of timestamp to_timestamp('二〇一二-04-15 08:20:00', 'yyyy-mm-dd hh24:mi:ss'卡塔尔(قطر‎;这种艺术简单,轻松明白,成效和方面包车型地铁一模二样,此处的时刻为你误操作以前的时刻,最棒是离误操作超近的,因为oracle保存在回滚保持段里的多寡时间有鲜明的日子节制,那个范围由undo_retention 那么些参数值决定。

能够看来LAST_NAME被涂改了,将来什么查看更改前的数量吧?

查看FIRST_CHANGE#,NEXT_CHANGE#,FIRST_TIMESQL set pagesize 9999SQL col fscn for 999999999SQL col nscn for 999999999SQL select name,FIRST_CHANGE# fscn,NEXT_CHANGE# nscn,FIRST_TIME from v$archived_log;

运用sqlplus store登入,实施如下语句,就足以查看改正早前LAST_NAME 没有加“s”

当前的SCN为:SQL select dbms_flashback.get_system_change_number fscn from dual; FSCN---------- 3435958

56net亚洲必赢 4

接纳应用顾客尝试闪回SQL connect username/passwordConnected.

DBMS_FLASHBACK.ENABLE_AT_TIME(卡塔尔国该进程将数据库状态闪回到叁个一定的时间值。

幸存数量:SQL select count(*) from hs_passport; COUNT(*卡塔尔(قطر‎---------- 851999成立复苏表:SQL create table hs_passport_recov as select * from hs_passport where 1=0;

DBMS_FLASHBACK.ENABLE_AT_TIME(SYSDATE-10/1440 卡塔尔国也正是闪存到10分钟此前。

Table created.

现行反革命实践其它查询就将显得10分钟在此以前的情况。可是在pl/sql中询问的话  依然前几天现行反革命的情事。

  • 上一篇:没有了
  • 下一篇:没有了