数据库设置
a. 设置UNDO_RETENTION的初始值(在短时间内)代表你想要查过去多远的时间。
b. 设置初始化参数UNDO_MANAGEMENT=AUTO。
c. 建立一个还原点空间,要有足够的空间存储需要的数据。有多少数据更新,就需要多少空间。
权限
FLASHBACK_SCN和FLASHBACK_TIME参数之前,你一定要允许DBMS_FLASHBACK程序包的执行特权,比如:
SQL> connect / as sysdba
SQL> GRANT execute ON dbms_flashback TO scott;
1. flashback_scn:按SCN号一致导出数据
Session1:
SQL> conn / as sysdba
已连接。
SQL> grant execute on dbms_flashback to scott;
授权成功。
SQL> conn scott/tiger;
已连接。
SQL> create table t as select * from emp;
表已创建。
SQL> select * from t;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-12月-80 446.67 20
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30
7566 JONES MANAGER 7839 02-4月 -81 2975 20
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
7788 SCOTT ANALYST 7566 19-4月 -87 555 20
7839 KING PRESIDENT 17-11月-81 5001 10
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
7876 ADAMS CLERK 7788 23-5月 -87 1100 20
7900 JAMES CLERK 7698 03-12月-81 950 30
7902 FORD ANALYST 7566 03-12月-81 3000 20
7934 MILLER CLERK 7782 23-1月 -82 1300 10
已选择14行。
SQL> alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';
会话已更改。
SQL> update t set job='ANALYST' where empno=7369;
已更新 1 行。
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
3163077
SQL> commit;
提交完成。
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
3163081
SQL> SELECT current_scn FROM v$database; --这种方法10gR1后也是可以用的
CURRENT_SCN
-----------
3165118
exp scott/tiger file=emp.dump log=emp.log flashback_scn=3163077 tables=EMP
Export: Release 11.2.0.1.0 - Production on 星期二 7月 22 01:09:29 2014
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
服务器使用 AL32UTF8 字符集 (可能的字符集转换)
即将导出指定的表通过常规路径...
. . 正在导出表 EMP导出了 14 行
导出成功终止.
2. flashback_time:按给定时间最近的SCN导出数据.
SQL> SELECT to_char(scn_to_timestamp(3163077),'YYYY-MM-DD HH24:MI:SS') FROM DUAL; -- 根据SCN查时间
TO_CHAR(SCN_TO_TIMESTAMP(3163077),'YYY
--------------------------------------
2014-07-22 00:45:03
SQL> SELECT to_char(scn_to_timestamp(3163081),'YYYY-MM-DD HH24:MI:SS') FROM DUAL;-- 根据SCN查时间
TO_CHAR(SCN_TO_TIMESTAMP(3163081),'YYY
--------------------------------------
2014-07-22 00:45:09
--flashback_time 必须用转义过的双引号包起来,如果是写在参数文件里,则不用这么麻烦自卸写下面的样子就行了.
flashback_time=to_timestamp('2014-07-22 00:45:05','YYYY-MM-DD HH24:MI:SS')
exp scott/tiger file=emp.dump log=emp.log flashback_time="to_timestamp('2014-07-22 00:45:05','YYYY-MM-DD HH24:MI:SS')" tables=EMP
exp scott/tiger file=emp.dump parfile=param.txt
param.txt
file=emp.dump
log=emp.log
flashback_time='2014-07-22 00:45:05'
tables=EMP
file=emp.dump
log=emp.log
FLASHBACK_TIME="to_timestamp('2014-07-22 00:45:05','YYYY-MM-DD HH24:MI:SS')"
tables=EMP
Export: Release 11.2.0.1.0 - Production on 星期二 7月 22 01:09:29 2014
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
服务器使用 AL32UTF8 字符集 (可能的字符集转换)
即将导出指定的表通过常规路径...
. . 正在导出表 EMP导出了 14 行
导出成功终止.
参考 http://www.landingbj.com/jbbs/t-0-196871-1.html