1、flashback query(使用UNDO)查询某个scn时该表的内容

SQL> select current_scn

;

已更新 行。

;        //查询之前scn时的值

ID

scn和时间戳的互相转换:
月 ... 上午 :00

) from
dual;

SCN_TO_TIMESTAMP()
月 ...000000000 上午

SQL> select to_timestamp('24-2月 -13
01.12.07.000000000 上午') from
dual;   月 ...000000000 上午

SQL> select timestamp_to_scn(to_timestamp('24-2月 -13 01.12.07.000000000 上午')) from
dual;

TIMESTAMP_TO_SCN(TO_TIMESTAMP(

查询smon维护的最早scn
SQL> select min(scn)
from sys.smon_scn_time
;

) from
dual;

SCN_TO_TIMESTAMP()
月 ...000000000 下午

小于最早scn则无法进行运算
) from
dual;
) from
dual
        行出现错误:
ORA:
指定的编号不是有效的系统更改号
ORA: 在 "SYS.SCN_TO_TIMESTAMP",
line

 
2、flashback
table
(sys用户下的表不能用这个方式,利用UNDO。而闪回表内部实际是先delete再insert)闪回表到之前某个scn的状态
SQL> select * from t12;

OBJECT_ID NAME
----------

aaa
          aaa

SQL> select current_scn

行。

SQL> commit;

提交完成。

SQL> flashback table t12 to scn
;
flashback table t12 to scn

                 行出现错误:
ORA: 因为未启用行移动功能,
不能闪回表(因为闪回个时间点,行位置可能被占用,存储位置可能发生变化)

bbb                  AAAXMiAAEAAAMFTAAA
         
bbb                  AAAXMiAAEAAAMFTAAB

是否允许行移动,查询dba_tables表中row_movement=DISABLED|ENABLE

SQL> alter table t12
enable row movement;

表已更改。

SQL> flashback table t12 to scn
;

闪回完成。

aaa                  AAAXMiAAEAAAMFTAAC
         
aaa                  AAAXMiAAEAAAMFTAAD

 
3、flashback version
query(返回版本查询)
查询对此表做过哪些动作,versions_endscn有值,说明这个版本已经结束,数据表中已经没有该值
startscn是事务提交时的scn。startscn相同说明是一个事务中的操作。而且别绪事务已经提交才会有信息,未提交不会记录。

select
versions_startscn,versions_endscn,versions_xid,versions_operation,versions_starttime,versions_endtime,id,name 
from
scott.t1 versions between scn minvalue and maxvalue order by versions_startscn;

 
 
4、flashback transaction
query(闪回事务查询,使用undo)
SQL> conn scott/tiger
已连接。
SQL> create table t1
(id ));

表已创建。

SQL> insert into t1
,
行。

SQL>
insert into
t1 ,
行。

SQL>
commit;

提交完成。

此时执行了错误事务,做了update:
SQL> update t1 set
行。

SQL> commit;

提交完成。

 
查询该事务的事务id,versions_xid:
 
查询该事务的信息:
select * from flashback_transaction_query where
xid='0A00170079230000';
后面有个undo_sql,可以执行以恢复
 
5、flashback drop(system表空间的无法闪回)
10g以后drop只是改名重新放入回收站,清除数据字典
SQL> create table
t_recycle (id number) tablespace
users;

表已创建。

:00::
T11              BIN$ :00::
T_RECYCLE        BIN$ :::

以上信息来自视图dba_recyclebin;
可以直接查询:select * from scott."BIN$7C3WUnHsSEaw/49R0PlbUQ==$0";
回收站不支持DDL DML操作,闪回需要闪回的操作:
SQL> flashback table "BIN$7C3WUnHsSEaw/49R0PlbUQ==$0" to before drop;

闪回完成。

 
删除的表上如果有索引,删除闪回后索引也会被闪回,但是索引名字已经改变
是否允许闪回drop:
 
6、flashback database(利用不完全恢复)
SQL> select flashback_on from v$database;

FLASHBACK_ON
------------------
NO

开启闪回数据库的2个条件:
a:开启归档
b:使用闪回区,用来存放闪回日志:
SQL> show parameter
db_recover

NAME                                 TYPE        VALUE
------------------------------------
-----------
--------------------------------
db_recovery_file_dest                string      D:\app\Lenovo\fast_recovery_area
db_recovery_file_dest_size           big
integer 10000M

 
开启闪回数据库:
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE
例程已经关闭。
SQL>
startup mount
ORACLE 例程已经启动。

Total System Global
Area   bytes
Fixed bytes
Variable
bytes
Database
Buffers           bytes
Redo
Buffers                 bytes
数据库装载完毕。
SQL> archive log
list
数据库日志模式            存档模式
自动存档             启用
存档终点            D:\app\arch
最早的联机日志序列     
下一个存档日志序列   
当前日志序列           
SQL> show parameter db_recover

NAME                                 TYPE        VALUE
------------------------------------
-----------
------------------------------
db_recovery_file_dest                string      D:\app\Lenovo\fast_recovery_area
db_recovery_file_dest_size           big
integer 10000M
SQL> alter database flashback on;

数据库已更改。

SQL> alter database
open;

数据库已更改。

这时系统出现闪回日志:
闪回日志由RVWR进程写入:
闪回日志可存放的最大时间,1440分钟,24小时。这个时间不是强制的,当闪回区满时,优先删除闪回日志:
SQL> show parameter
db_flashback

NAME                                 TYPE        VALUE
------------------------------------
-----------

闪回库最早可闪回的scn点:

SQL> select * from
v$flashback_database_log;

OLDEST_FLASHBACK_SCN OLDEST_FLASHBA
RETENTION_TARGET FLASHBACK_SIZE ESTIMATED_FLASHBACK_SIZE
月                        

查看闪回状态:
flashback_data db_data
redo_data单位是字节,表示从begin_time至今产生的闪回日志、数据、redo的大小,可以粗略的估算闪回需要的时间和闪回的量
SQL> select * from
v$flashback_database_stat;

BEGIN_TIME     END_TIME       FLASHBACK_DATA    DB_DATA  REDO_DATA
ESTIMATED_FLASHBACK_SIZE
--------------

     月
                                            

开始闪回数据库:

SQL> drop user scott cascade;

用户已删除。

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE
例程已经关闭。
SQL>
startup mount
ORACLE 例程已经启动。

Total System Global
Area   bytes
Fixed bytes
Variable
bytes
Database
Buffers           bytes
Redo
Buffers                 bytes
数据库装载完毕。
SQL> flashback database to scn
;

闪回完成。

SQL> alter database
open read
only;

数据库已更改。

SQL> conn scott/tiger
已连接。

alter database open 要
resetlog
 
11g有个新的闪回表空间,不依赖undo

闪回flashback的更多相关文章

  1. oracle之三闪回flashback

    闪回 flashback 5.1 flashback 的功能:1)利用undo data回溯或撤销提交的数据,2)flashback log 使database 可以恢复到过去某个时间点,可以作为不完 ...

  2. Oracle闪回flashback总结

    1.说明: Ø  采用的技术. 使用的是多个技术. 1.      闪回日志 2.      回收站 3.      回滚段 无法使用回收站的操作 Drop table xxx purge; Drop ...

  3. Oracle闪回flashback

    参考资料:Using Oracle Flashback Technology Oracle 11g的新特性闪回操作 闪回查询 闪回查询 闪回版本查询 闪回事务查询 闪回数据 闪回表 闪回删除 闪回数据 ...

  4. Oracle 闪回特性(FLASHBACK DATABASE)

    --===================================== -- Oracle 闪回特性(FLASHBACK DATABASE) --======================= ...

  5. Flashback Query、Flashback Table(快速闪回查询、快速闪回表)

    Flashback Query闪回查询 flashback query是基于undo表空间的闪回,与之相关的参数如下: SQL> show parameter undo NAME         ...

  6. FlashBack 闪回

    [学习目标] Flashback Database 功能非常类似与RMAN的不完全恢复,它可以把整个数据库回退到 过去的某个时点的状态,这个功能依赖于Flashback log日志.比RMAN 更快速 ...

  7. Oracle 的闪回技术 --flashback

    SQL Fundamentals: 表的创建和管理 如何开启数据库闪回? SQL> shutdown immediate; ORA-01109: database not open Databa ...

  8. Oracle 闪回归档(Flashback Database)

    cmd --管理员身份打开 sqlplus / as sysdba --管理数据库 shu immediate; --独占方式开始 startup mount --修改日期模式 alter datab ...

  9. Oracle的回收站和闪回查询机制(一)

    实际工作中,我们经常会遇到一些情况,误删除某些表或某些表的某些记录,这时候就需要我们将这些记录重新插入进去.如何才能解决这个问题呢? Oracle的Flashback query(闪回查询)为我们解决 ...

随机推荐

  1. 【.NET】MD5的用法(对文件、字符串)

    using System;using System.IO;using System.Security.Cryptography;using System.Text;namespace ConsoleA ...

  2. Promise机制

    Promise的诞生与Javascript中异步编程息息相关,js中异步编程主要指的是setTimout/setInterval.DOM事件机制.ajax,通过传入回调函数实现控制反转.异步编程为js ...

  3. 通过Migration在EF6中用多个DbContext

    通过Migration在EF6中用多个DbContext EF EF6 C# Migration 通过Migration在EF6中用多个DbContext 前言 实现目标 设置多数据上下文 更新数据脚 ...

  4. Jquery入门之---------基本事件------------

    Javascript有一个非常重要的功能,就是事件驱动. 当页面完成加载后,用户通过鼠标或键盘触发页面中绑定事件的元素即可触发.Jquery为开发者更有效率的编写事件行为,封装了大量有益的事件方法供我 ...

  5. 如何循序渐进地学习Javascript

    javascript入门太容易了,导致几乎人人随便看看就能上手,零基础的人学个三五天都能对外宣称自己掌握了js.可是真正掌握js是一件很难的事情.如果在初学一门语言的时候第一想到的是问别人,是很难取得 ...

  6. nth-of-type和nth-child的区别

    看CSS3时发现了一个nth-of-type选择器,发现平时基本没见过用,就研究了一下,w3c是这样说明的: :nth-of-type(n) 选择器匹配属于父元素的特定类型的第 N 个子元素的每个元素 ...

  7. centos下安装php环境

    centos下安装php环境 安装apache yum install httpd-devel 启动apache /etc/init.d/httpd start 安装mysql yum install ...

  8. PHP生成随机字符串包括大小写字母

    PHP生成随机字符串包括大小写字母,这里介绍两种方法: 第一种:利用字符串函数操作 <?php /** *@blog <www.phpddt.com> */ function cre ...

  9. python网页请求urllib2模块简单封装代码

    这篇文章主要分享一个python网页请求模块urllib2模块的简单封装代码. 原文转自:http://www.jbxue.com/article/16585.html 对python网页请求模块ur ...

  10. 一月份实现Adb小程序

    As Brian said: According to a post on xda-developers, you can enable ADB over WiFi from the device w ...