`
chenhua_1984
  • 浏览: 1255407 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

oracle 10g flashback

阅读更多

flashback:即回闪,是从oracle9i就开始提出的一种操作恢复的功能,在oracle10g中进行了增强和修改,通过回闪,用户可以完成许多不可能恢复的工作,目前oracle10g的回闪包括以下特性;

1〉oracle falshback Database. 特性允许oracle通过Flashback database语句,将数据库会滚到前一个时间点或者scn上,而不需要作时间点的恢复工作!
2〉oracle falshback table. 特性允许oracle通过flashback table语句,将表会滚到前一个时间点或者scn上。
3〉oracle falshback drop. 特性允许oracle把恢复drop掉的table或者索引。
4〉oracle falshback version query. 特性可以得到特定的表在某一个时间段内的任何修改记录!
5〉oracle falshback transaction query 特性可以限制用户在某一个事务级别上检查数据库的修改操作,适用于诊断问题、分析性能、审计事务。

一:oracle falshback table

oracle flashback table即回闪表
可以进行的操作:操作1>flashback table tablename to befor drop;
对于误drop的table此可以使用本操作,还原drop的table!
此操作需要用户有以下的权限:
A:falshback any table的系统权限或者是某一个表的flashback权限。
B:有table的select、insert、delect、alter权限。
C:有table的row Movement权限
SQL> set serveroutput on
SQL> set time on
11:24:37 SQL> set feadback off;
11:24:59 SQL> select * from tab;

TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
B TABLE
STEST TABLE
TA TABLE
GROUPINGTEST TABLE
COLTABLE TABLE
ROWTABLE TABLE
COLTABLE1 TABLE
ROWTABLE1 TABLE
A1 TABLE
A TABLE
----------------------
可以看到本用户下有table A,现在drop它;
-----------------------
11:25:01 SQL> drop table a;
11:26:18 SQL> select * from tab;

TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
B TABLE
STEST TABLE
TA TABLE
GROUPINGTEST TABLE
COLTABLE TABLE
ROWTABLE TABLE
COLTABLE1 TABLE
ROWTABLE1 TABLE
BIN$dFFlS6jJQLShRwRQ+kLJMg==$0 TABLE
A1 TABLE
----------------------
table已经删除,可以看到table并不是真正意义上的删除掉了,而是多了一个"BIN$dFFlS6jJQLShRwRQ+kLJMg==$0"的表,这个表是原来的A表,这是oracle的recyclebin,一个类似垃圾回收站的机制。当用户删除表以后把表放到recyclebin中,而不是删除掉!
----------------------
现在使用命令恢复表A
11:26:29 SQL> flashback table a to before drop;
11:30:45 SQL> select * from tab;

TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
B TABLE
STEST TABLE
TA TABLE
GROUPINGTEST TABLE
COLTABLE TABLE
ROWTABLE TABLE
COLTABLE1 TABLE
ROWTABLE1 TABLE
A1 TABLE
A TABLE
可以看到表A已经恢复!

可以进行的操作:操作2>flashback table tablename to scn/timestamp(a timestamp);
此操作可以利用scn(在后面介绍)或者timestamp将table恢复到某一个时间点!
-----给table row movement权限
11:41:49 SQL> alter table a enable row movement;
----插入一条记录
11:44:16 SQL> insert into a values('www',11);
11:45:15 SQL> commit;
----得到该记录的scn:1576479
11:45:20 SQL> select a.*,ora_rowscn from a;

NAME AGE ORA_ROWSCN
---------- ---------- ----------
500 65 1576479
600 65 1576479
111 10 1576479
222 100 1576479
333 30 1576479
444 40 1576479
555 50 1576479
www 11 1576479
888 34 1573035
---删除一条记录
11:45:55 SQL> delete from a where name ='www';
11:46:19 SQL> commit;
---利用scn命令恢复删掉的纪录!
11:46:20 SQL> flashback table a to scn 1576479;
11:46:49 SQL> select * from a;

NAME AGE
---------- ----------
500 65
600 65
111 10
222 100
333 30
444 40
555 50
www 11
888 34
---利用timestamp命令恢复删掉的纪录!
11:46:54 SQL> flashback table a to timestamp to_timestamp('2007-04-27 11:45:20','yyyy-mm-dd hh24:mi:ss');
11:56:28 SQL> select * from a;

NAME AGE
---------- ----------
500 65
600 65
111 10
222 100
333 30
444 40
555 50
888 34
附:--关于scn的介绍:
SCN:system change numbers,oracle10g的每一个表都有ora_rowscn列!但是desc是看不到改列的。
可以通过select ora_rowscn from table 得到每一条结果集当前的SCN,timestamp_to_scn()将scn转换到stmestamp;scn_to_timestamp()将timestamp转换到scn。
二:flashback drop
利用flashback drop oracle10g可以对DDL操作进行恢复,oracla提供类似回收站的recyclebin来收集被删除的对象,其实对象在删除的时候oracle把对象写到一个数据字典表中,当用户不需要该对象的时候,可以利用purge命令来从回收站进行清除。
--察看用户下所有表
SQL> select * from tab;

TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
B TABLE
STEST TABLE
TA TABLE
GROUPINGTEST TABLE
COLTABLE TABLE
ROWTABLE TABLE
COLTABLE1 TABLE
ROWTABLE1 TABLE
SYS_TEMP_FBT TABLE
A1 TABLE
A TABLE

Executed in 0.078 seconds
--drop 表A1
SQL> drop table a1;

Executed in 0.047 seconds
--再察看此时用户所拥有的所有表;
SQL> select * from tab;

TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
B TABLE
STEST TABLE
TA TABLE
GROUPINGTEST TABLE
COLTABLE TABLE
ROWTABLE TABLE
COLTABLE1 TABLE
ROWTABLE1 TABLE
SYS_TEMP_FBT TABLE
A TABLE
BIN$fPHKLxsBTBq6+bjBLPEJaw==$0 TABLE

Executed in 0.078 seconds

--如上可以看到A1表drop的同时,当前用户下又产生了一个以BIN开头的新表BIN$fPHKLxsBTBq6+bjBLPEJaw==$0,这就是原来的A1表
SQL> set timing off
SQL> set time on
14:25:40 SQL> select t.object_name,t.original_name from recyclebin t;

OBJECT_NAME ORIGINAL_NAME
------------------------------ --------------------------------
BIN$fPHKLxsBTBq6+bjBLPEJaw==$0 A1
---采用flashback table命令恢复刚才删除的表A1
14:29:45 SQL> flashback table a1 to before drop;
14:29:49 SQL> select * from tab;

TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
B TABLE
STEST TABLE
TA TABLE
GROUPINGTEST TABLE
COLTABLE TABLE
ROWTABLE TABLE
COLTABLE1 TABLE
ROWTABLE1 TABLE
SYS_TEMP_FBT TABLE
A1 TABLE
A TABLE
--当用户确实不需要该对象时候,可以采用pruge来彻底删除改对象
14:29:55 SQL> drop table a1;
14:31:13 SQL> select * from tab;

TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
B TABLE
STEST TABLE
TA TABLE
GROUPINGTEST TABLE
COLTABLE TABLE
ROWTABLE TABLE
COLTABLE1 TABLE
ROWTABLE1 TABLE
SYS_TEMP_FBT TABLE
A TABLE
BIN$N+i42FTvSSemvMrH6frCQg==$0 TABLE

14:31:32 SQL> purge table "BIN$N+i42FTvSSemvMrH6frCQg==$0";
14:31:49 SQL> select * from tab;

TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
B TABLE
STEST TABLE
TA TABLE
GROUPINGTEST TABLE
COLTABLE TABLE
ROWTABLE TABLE
COLTABLE1 TABLE
ROWTABLE1 TABLE
SYS_TEMP_FBT TABLE
A TABLE
--用purge命令收站想清空回收站里的别的表
14:31:56 SQL> purge recyclebin;
14:34:02 SQL> select object_name from recyclebin;

OBJECT_NAME
------------------------------
三:oracle falshback version query--闪回版本查询
oracle10g falshback 能将所有做了提交的行进行记录,就类似于审计的功能,通过falshback可以查询什么时候执行了什么操作,非常方便,包括闪回版本的查询和审计等。
1〉闪回版本的查询
14:41:22 SQL> insert into a values('zhao',24);
14:42:01 SQL> commit;
--查询当前版本
14:34:45 SQL> select a.*,ora_rowscn from a;

NAME AGE ORA_ROWSCN
---------- ---------- ----------
500 65 1577059
600 65 1577059
111 10 1577059
222 100 1577059
333 30 1577059
444 40 1577059
555 50 1577059
888 34 1573035

14:41:22 SQL> insert into a values('zhao',24);
14:42:01 SQL> commit;
14:42:03 SQL> select a.*,ora_rowscn from a;

NAME AGE ORA_ROWSCN
---------- ---------- ----------
500 65 1577059
600 65 1577059
111 10 1577059
222 100 1577059
333 30 1577059
444 40 1577059
555 50 1577059
888 34 1573035
zhao 24 1585133
--A:利用scn查询以前版本的记录
14:42:18 SQL> select * from a as of scn 1577059;

NAME AGE
---------- ----------
500 65
600 65
111 10
222 100
333 30
444 40
555 50
888 34
--B:利用timestamp查询以前版本的记录
14:42:51 SQL> select * from a as of timestamp scn_to_timestamp(1577059);

NAME AGE
---------- ----------
500 65
600 65
111 10
222 100
333 30
444 40
555 50
www 11
888 34
2〉审计的功能:
14:50:06 SQL> select a.*,versions_operation,versions_xid,versions_starttime from a
2 versions between timestamp minvalue and maxvalue;

NAME AGE VERSIONS_OPERATION VERSIONS_XID VERSIONS_STARTTIME
---------- ---------- ------------------ ---------------- --------------------
600 65
111 10
222 100
333 30
444 40
555 50
888 34
zhao 24 I 0500110006030000 27-4月 -07 02.42.00 下午
--可以看出 在27-4月 -07 02.42.00 下午 插入(I)了一条记录

14:50:53 SQL> a order byversions_starttime;
14:51:23 SQL> run;

NAME AGE VERSIONS_OPERATION VERSIONS_XID VERSIONS_STARTTIME
---------- ---------- ------------------ ---------------- ----------------------
500 65
600 65
111 10
222 100
333 30
444 40
555 50
888 34
zhao 24 I 0500110006030000 27-4月 -07 02.42.00 下午
四:oracle falshback transaction query回闪事务查询
oracle10回闪事务功能提供对过去某段时间内所完成的事务的查询和撤销!
14:59:56 SQL> select undo_sql,table_name from flashback_transaction_query x where x.table_owner=upper('zxt') and x.xid ='0500110006030000';

UNDO_SQL TABLE_NAME
-------------------------------------------------------------------------------- --------------
delete from "ZXT"."A" where ROWID = 'AAANOsAAGAAAAMWAAA'; A
--其中UNDO_SQL 就是当时对表A的DML操作;

分享到:
评论

相关推荐

    oracle 10g flashback(数据恢复)

    ### Oracle 10g Flashback 数据恢复功能详解 Oracle 10g 引入了强大的 Flashback 技术,这是一系列旨在帮助管理员和开发者在出现数据丢失或损坏时能够快速恢复数据的功能集合。该技术从 Oracle 9i 开始引入,并在 ...

    Oracle 10g Flashback 概述

    Oracle 10g Flashback是Oracle数据库10g版本中引入的一个强大特性,它为数据库管理员和用户提供了恢复数据到过去某个时间点的能力,而无需依赖传统的备份和恢复过程。这个功能极大地增强了数据库的可恢复性和灵活性...

    用oracle10g的flashback闪回功能快速恢复oracle中被删除的表

    ### 使用Oracle 10g的Flashback闪回功能快速恢复被删除的表 #### Oracle 10g Flashback 特性概述 Oracle Database 10g 引入了一项非常强大的特性——Flashback,该特性使得数据库管理员(DBA)能够轻松地恢复误删除...

    oracle11g flashback archive 资料整理

    Oracle 11g Flashback Archive 资料整理 Oracle Flashback Archive 是 Oracle 11g 中的一项新特性,旨在提供有针对性数据表的可控时间闪回功能。Flashback Archive 可以实现对特定数据表的闪回,保留不同时间的数据...

    Oracle 10g官方教程

    从给定的文件标题“Oracle 10g官方教程”及描述“此文档为Oracle 10g的官方文档,已翻译为中文。”可以推断出该文档主要围绕Oracle 10g数据库系统的使用、管理和优化展开,是Oracle公司官方发布的一套详尽的指导手册...

    ORACLE 10G OCP 题库

    Oracle 10g的数据保护策略包括RAC、Data Guard、Flashback Technology等。考生需理解这些技术的工作原理,知道如何配置和维护以实现高可用性和快速恢复。 通过这套题库,考生可以对Oracle 10g数据库的各个方面进行...

    Oralce 10g install linux3

    - Flashback是Oracle 10g中一项关键的技术,它可以实现在不同的层级上(如行、事务、表甚至是整个数据库)进行数据回滚。 - 例如,在发生小范围的人为错误时,可以在几分钟内快速完成错误的纠正工作,而无需进行...

    Oracle10g培训PPT

    Oracle 10g 是Oracle公司推出的数据库管理系统的一个重要版本,主要关注高性能、高可用性和安全性。这个"Oracle10g培训PPT"很显然是一份深入讲解Oracle 10g特性和使用的教学材料,内容全面且详尽。下面将根据这个...

    Less17_Flashback_TB3.pdf

    ### Oracle 10g Flashback Technology #### 一、引言 在Oracle 10g数据库管理工作中,Flashback技术是一项革命性的恢复功能,它能够帮助数据库管理员在遇到逻辑错误时快速有效地恢复数据。本文章将详细介绍Oracle ...

    最详细的AIX Oracle 10g RAC实施文档

    《AIX Oracle 10g RAC实施文档》是一份详尽的指南,旨在帮助IT专业人士深入了解和实施Oracle数据库在AIX操作系统上的集群技术。Oracle Real Application Clusters(RAC)是Oracle数据库的一个重要特性,它允许多个...

    Oracle10G官方文档CHM合集-Database参考手册

    Oracle 10G是Oracle公司推出的数据库管理系统的一个重要版本,主要针对企业级应用提供高性能、高可用性和安全性。"Oracle10G官方文档CHM合集-Database参考手册"是Oracle为DBA(数据库管理员)和开发人员提供的详尽...

    flashback——oracle

    "Oracle-Flashback-技术-总结.txt"和"oracle_10g_flashback(数据恢复).txt"以及"oracle_10g_flashback.txt"这三份文档可能提供了一个全面的概述,包括Flashback日志、闪回数据库(Flashback Database)、闪回事务...

    Oracle10g新特性Flashback探究.pdf

    Oracle 10g中的Flashback特性是一项革命性的创新,旨在帮助用户更有效地管理和恢复数据库中的错误操作。Flashback主要包含了四种关键功能:Flashback Query、Table Flashback、Delete Flashback和Flashback Database...

    oracle 闪回 flashback

    Oracle 10g引入了多种闪回功能,包括Flashback Database、Flashback Drop、Flashback Query以及Flashback Table。 1. **Flashback Database**: - Flashback Database允许用户将整个数据库恢复到过去的一个特定...

    oracle10g 10.5.0.4 补丁包

    Oracle 10g是Oracle公司推出的数据库管理系统的一个版本,其主要目标是提供高性能、高可用性和易管理性。10.5.0.4是Oracle 10g的一个具体更新补丁,它包含了对系统性能的优化、安全性增强以及一些已知问题的修复。这...

    ORACLE 10G 经典PPT

    Oracle 10g是一款历史悠久但仍然受到广泛关注的关系型数据库管理系统,尤其对于初学者和准备Oracle Certified Professional (OCP)认证的人来说,它提供了丰富的学习资源。本篇内容将深入解析Oracle 10g的关键知识点...

    Oracle10gFlashback实践.doc

    Oracle 10g Flashback 技术是一种强大的数据库恢复和数据修正工具,它在9i版本引入,并在10g中得到了显著增强。Flashback主要包含三个关键特性:Flashback Query、Flashback Table和Flashback Database。 **...

    Oracle10g DBA培训PPT

    Oracle10g数据库管理员(DBA)培训是一个深入学习数据库管理、优化和故障排查的关键领域。这份Oracle10g DBA培训PPT包含了丰富的知识内容,旨在帮助学习者快速掌握Oracle数据库系统的管理技能,提高工作效率。 一、...

    oracle11g 百度盘下载

    10. **XML支持**:Oracle 11g加强了对XML数据的处理,包括XMLDB(XML数据库)和XMLType数据类型,使得存储和检索XML文档变得更加便捷。 11. **PL/SQL增强**:Oracle 11g的PL/SQL语言增加了新的特性,如游标变量的...

Global site tag (gtag.js) - Google Analytics