Heim > Datenbank > MySQL-Tutorial > Hauptteil

Oracle根据SCN号闪回表

WBOY
Freigeben: 2016-06-07 17:28:26
Original
959 Leute haben es durchsucht

在安装oracle软件时建议更改undo_retention参数,建议将默认900的值更改为10800秒,即3小时;alter system set undo_retention=1

在安装Oracle软件时建议更改undo_retention参数,建议将默认900的值更改为10800秒,即3小时;alter system set undo_retention=10800 scope = both ; 
 
加入一张employees 表中数据被删除一部分,,并且已经提交,需要恢复,并且数据库运行在归档模式。 
 
 
思路:通过SCN号来讲表恢复到原来的记录上
 
首先查看SCN好的变化:
 
    conn /as sysdba
 
    select name,first_change# fscn,next_change# nscn,first_time

    from v$archived_log;
 
 
 

NAME                                                      FSCN
 
---------------------------------------- ---------------------
 
                NSCN FIRST_TIME
 
--------------------- -------------------
 
              5795407 2012-09-14:22:00:52
 
 
 
/u/oracle/fast_recovery_area/ORA11G/arch              5795407
 
ivelog/2012_09_17/o1_mf_1_43_85fzkcbs_.a
 
rc
 
              5803747 2012-09-17:18:10:38
 
 
 
/u/oracle/fast_recovery_area/ORA11G/arch              5803747
 
ivelog/2012_09_17/o1_mf_1_44_85fzkh75_.a
 
 
 
NAME                                                      FSCN
 
---------------------------------------- ---------------------
 
                NSCN FIRST_TIME
 
--------------------- -------------------
 
rc
 
              5807441 2012-09-17:18:40:43
 
 
 
/u/oracle/fast_recovery_area/ORA11G/arch              5807441
 
ivelog/2012_09_17/o1_mf_1_45_85fzkmq7_.a
 
rc
 
              5810907 2012-09-17:18:40:47
 
 
 
/u/oracle/fast_recovery_area/ORA11G/arch              5810907
 
(显示部分) 
 
 
获得当前SCN
 

SQL> select dbms_flashback.get_system_change_number fscn from dual;
 
 
 
                FSCN
 
---------------------
 
              5874910 
 
 
连接上用户(尝试用用户恢复):
 
    conn /as sysdba
 
查看现有数据:
 
   
SQL> select count(*) from employees;
 
 
 
  COUNT(*)
 
----------
 
      107
 
 
 
创建一张恢复表:
 

    SQL> create table t as select * from employees where 1=0; 
 
    表已创建。 
 
 
根据提供的大致误操作时间,结合V$archived_log视图,选择执行闪回查询; 

SQL> select count(*) from employees as of scn 5810907; 
 
 
  COUNT(*)
 
----------
 
      107

找到最合适的值,例如最合适的值为5810907

选择SCN为5810907的时间点进行恢复:

SQL> insert into t select * from employees as of scn 5810907;

已创建 107 行。

SQL> commit;

提交完成。

完成,查看数据完整性!

linux

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!