EXP的flashback_scn和flashback_time

数据库设置

a. 设置UNDO_RETENTION的初始值(在短时间内)代表你想要查过去多远的时间。

b. 设置初始化参数UNDO_MANAGEMENT=AUTO。

c. 建立一个还原点空间,要有足够的空间存储需要的数据。有多少数据更新,就需要多少空间。

 

权限

FLASHBACK_SCN和FLASHBACK_TIME参数之前,你一定要允许DBMS_FLASHBACK程序包的执行特权,比如:

sqlplus /nolog
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

posted @ 2014-07-21 19:01  princessd8251  阅读(781)  评论(0编辑  收藏  举报