FLASHBACK 应用example (flashback笔记-03)
来源:互联网 发布:ubuntu软件源国内镜像 编辑:程序博客网 时间:2024/06/11 13:38
flashback 特性
启用flashback
conn / as sysdba
shutdownimmediate;
startup mount;
alter databaseflashback on;
alter databaseopen;
alter system setdb_flashback_retention_target=480 scope=both;
--DB_FLASHBACK_RETENTION_TARGET A parametervalue that determines how far back in time you can recover the flashbackdatabase, This value is in minutes.
Flashback drop table 示例
SQL>create table test_lihq as select * from emp;
Table created
SQL>
SQL>select * from test_lihq;
EMPNO ENAME JOB MGRHIREDATE SAL COMM DEPTNO
----- ---------- --------- ---------------- --------- --------- ------
7369 SMITH CLERK 7902 1980/12/17 800.00 20
7499 ALLEN SALESMAN 7698 1981/2/20 1600.00 300.00 30
7521WARD SALESMAN 76981981/2/22 1250.00 500.00 30
7566 JONES MANAGER 7839 1981/4/2 2975.00 20
7654 MARTIN SALESMAN 7698 1981/9/28 1250.00 1400.00 30
7698 BLAKE MANAGER 7839 1981/5/1 2850.00 30
7782 CLARK MANAGER 7839 1981/6/9 2450.00 10
7788 SCOTT ANALYST 7566 1987/4/19 3000.00 20
7839KING PRESIDENT 1981/11/17 5000.00 10
7844 TURNER SALESMAN 7698 1981/9/8 1500.00 0.00 30
7876 ADAMS CLERK 7788 1987/5/23 1100.00 20
7900 JAMES CLERK 76981981/12/3 950.00 30
7902FORD ANALYST 75661981/12/3 3000.00 20
13 rows selected
SQL>drop table test_lihq;
Table dropped
SQL>
SQL>select * from test_lihq;
select * from test_lihq
ORA-00942: table or viewdoes not exist
SQL>flashback table test_lihq to before drop;
Done
SQL>select * from test_lihq;
EMPNO ENAME JOB MGRHIREDATE SAL COMM DEPTNO
----- ---------- --------- ---------------- --------- --------- ------
7369 SMITH CLERK 7902 1980/12/17 800.00 20
7499 ALLEN SALESMAN 7698 1981/2/20 1600.00 300.00 30
7521WARD SALESMAN 76981981/2/22 1250.00 500.00 30
7566 JONES MANAGER 7839 1981/4/2 2975.00 20
7654 MARTIN SALESMAN 7698 1981/9/28 1250.00 1400.00 30
7698 BLAKE MANAGER 7839 1981/5/1 2850.00 30
7782 CLARK MANAGER 7839 1981/6/9 2450.00 10
7788 SCOTT ANALYST 7566 1987/4/19 3000.00 20
7839KING PRESIDENT 1981/11/17 5000.00 10
7844 TURNER SALESMAN 7698 1981/9/8 1500.00 0.00 30
7876 ADAMS CLERK 7788 1987/5/23 1100.00 20
7900 JAMES CLERK 76981981/12/3 950.00 30
7902FORD ANALYST 75661981/12/3 3000.00 20
13 rows selected
Flashback table 示例
Connected to Oracle Database 10g EnterpriseEdition Release 10.2.0.1.0
Connected as scott
SQL> create table banchu(id number);
Table created
SQL> insert into banchu values (100);
1 row inserted
SQL> insert into banchu values (200);
1 row inserted
SQL> insert into banchu values (300);
1 row inserted
SQL> commit;
Commit complete
SQL> select * from banchu;
ID
----------
100
200
300
SQL>
SQL> desc dbms_lock.sleep;
Parameter Type Mode Default?
--------- ------ ---- --------
SECONDS NUMBERIN
SQL> exec dbms_lock.sleep(180);
等待3分钟
PL/SQL procedure successfully completed
SQL> insert into banchu values(400);
1 row inserted
SQL> commit;
Commit complete
SQL> select * from banchu;
ID
----------
100
200
300
400
SQL> alter table banchu enable rowmovement;
Table altered
SQL> flashback table banchu totimestamp(systimestamp - interval '3' minute);
--月光宝盒
Done
SQL> select * from banchu;
ID
----------
100
200
300
-- 时光回到3分钟前,少了刚刚插入的数据
SQL>
Flashback Version Query 示例
Connected to Oracle Database 10g EnterpriseEdition Release 10.2.0.1.0
Connected as scott
SQL> CREATE TABLEflashback_version_query (id NUMBER(10), description VARCHAR2(50));
Table created
SQL> INSERT INTO flashback_version_query(id, description) VALUES (1, 'Kunal');
1 row inserted
SQL> COMMIT;
Commit complete
SQL> SELECT current_scn,TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS') FROM v$database;
CURRENT_SCN TO_CHAR(SYSTIMESTAMP,'YYYY-MM-
----------- ------------------------------
649924 2011-04-0817:11:04
SQL> UPDATE flashback_version_query SETdescription = 'John' WHERE id = 1;
1 row updated
SQL> commit;
Commit complete
SQL> UPDATE flashback_version_query SETdescription = 'Mathew' WHERE id = 1;
1 row updated
SQL> commit;
Commit complete
SQL> SELECT current_scn,TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS') FROM v$database;
CURRENT_SCN TO_CHAR(SYSTIMESTAMP,'YYYY-MM-
----------- ------------------------------
649945 2011-04-0817:11:50
SQL>
SQL> COLUMN versions_startscn FORMAT99999999999999999
SQL> COLUMN versions_starttime FORMATA24
SQL> COLUMN versions_endscn FORMAT99999999999999999
SQL> COLUMN versions_endtime FORMAT A24
SQL> COLUMN versions_xid FORMAT A16
SQL> COLUMN versions_operation FORMAT A1
SQL> COLUMN description FORMAT A11
SQL> SET LINESIZE 200
SQL>
SQL>
SQL>
SQL> SELECT versions_startscn,
2 versions_starttime,
3 versions_endscn,
4 versions_endtime,
5 versions_xid,
6 versions_operation,
7 description
8 FROMflashback_version_query VERSIONS BETWEEN TIMESTAMP TO_TIMESTAMP(' 2011-04-0817:11:04', 'YYYY-MM-DD HH24:MI:SS') AND TO_TIMESTAMP('2011-04-08 17:11:50','YYYY-MM-DD HH24:MI:SS')
9 WHERE id = 1;
VERSIONS_STARTSCNVERSIONS_STARTTIME VERSIONS_ENDSCNVERSIONS_ENDTIME VERSIONS_XID V DESCRIPTION
----------------- ----------------------------------------- ------------------------ ---------------- - -----------
649939 08-APR-11 05.11.34 PM 050025003E010000 U Mathew
649933 08-APR-11 05.11.29PM 649939 08-APR-11 05.11.34 PM 0100040037010000 U John
649933 08-APR-11 05.11.29PM Kunal
SQL>
SQL>
SQL>
SQL> SELECT versions_startscn,versions_starttime,
2 versions_endscn,versions_endtime,
3 versions_xid,versions_operation,
4 description
5 FROM flashback_version_query
6 VERSIONS BETWEEN SCN 649924AND 649945
7 WHERE id = 1;
VERSIONS_STARTSCNVERSIONS_STARTTIME VERSIONS_ENDSCNVERSIONS_ENDTIME VERSIONS_XID V DESCRIPTION
----------------- ----------------------------------------- ------------------------ ---------------- - -----------
649939 08-APR-11 05.11.34PM 050025003E010000 U Mathew
649933 08-APR-11 05.11.29PM 649939 08-APR-11 05.11.34 PM 0100040037010000 U John
649933 08-APR-11 05.11.29PM Kunal
SQL>
Flashback Transaction示例
SQL> SELECT xid,
2 operation,
3 start_scn,
4 commit_scn,
5 logon_user,
6 table_name,
7 undo_sql
8 FROMflashback_transaction_query A
9 WHERE A.logon_user ='SCOTT'
10 AND A.table_name= 'FLASHBACK_VERSION_QUERY';
XID OPERATION START_SCN COMMIT_SCN LOGON_USER TABLE_NAME UNDO_SQL
---------------- ---------- -------------------- ----------- ---------------------------------------------------------------------------------------------------------
0100040037010000UPDATE 649931 649933 SCOTT FLASHBACK_VERSION_QUERY update"SCOTT"."FLASHBACK_VERSION_QUERY" set"DESCRIPTION" = 'Kunal' where ROWID
020027003B010000INSERT 649914 649916 SCOTT FLASHBACK_VERSION_QUERY delete from"SCOTT"."FLASHBACK_VERSION_QUERY" where ROWID = 'AAAM1jAAEAAAAHGAAA'
050025003E010000UPDATE 649937 649939 SCOTT FLASHBACK_VERSION_QUERY update"SCOTT"."FLASHBACK_VERSION_QUERY" set "DESCRIPTION"= 'John' where ROWID
SQL>
这个最有用的就是undo sql列啦
- FLASHBACK 应用example (flashback笔记-03)
- flashback
- Flashback
- flashback
- flashback
- Flashback
- flashback
- flashback
- flashback
- flashback
- Flashback
- flashback
- flashback
- Flashback
- flashback
- FLASHBACK 笔记-01
- OCP培训笔记-flashback
- Oracle flashback 闪回 笔记
- Win2003 防木马、权限设置、IIS服务器安全配置整理
- 两个程序
- c#的DateTime.Now函数详解
- form自动加载数据
- mysql的group_concat函数
- FLASHBACK 应用example (flashback笔记-03)
- 试用csdn博客
- Windows与Linux(Ubuntu)双系统时间不一致 (相差8小时) 的解决方法
- 本周计划
- 7204路由器提示Unkonw CPU Card Type的解決
- 青岛工作的日子
- nginx启动,重启,关闭命令
- 微软Kinect是怎么做到的
- iPhone/iPad 开发: 解析本地/网络上的xml文件