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. hdu1203

    #include <stdio.h> #include <math.h> #define mmin(x,y) (x)<(y)?(x):(y) int main(){ +] ...

  2. hdu1505

    the main algorithm as the 1506 #include <stdio.h> #include <iostream> #include <strin ...

  3. 011OK6410开发板介绍

    1.系统资源: (1)处理器:三星ARM11,S3C6410A,主频533MHz/667MHz (2)nor flash (3)nand flash:1G字节NAND Flash (4)RAM:128 ...

  4. C#处理Excel

    C#处理Excel C#处理Excel 前言 OleDb 具体操作 NPOI 具体操作 Excel C# NPOI OleDb 前言 最近需要对Excel进行加密解密操作,本身是一个简单的事情,通过 ...

  5. 安装C-Kermit串口访问开发板

    linux下的串口调试工具主要有minicom和kermit. minicom的安装与使用见博文: http://www.cnblogs.com/tanghuimin0713/p/3562218.ht ...

  6. Javascript 补位运算符

    看到一个题目~~3.14得到是3,一下子有点蒙,之前在Javascript中完全没有见过~这个运算符.经查才知道~是补位运算符,但是跟原码反码补码又有点不同(在反码这一块,不记正负),好吧,大学的东西 ...

  7. 获取屏幕分辨率(C/C++)

    C/C++获取屏幕分辨率的方法 int main(int argc, char* argv[]) { // 需要添加头文件: // #include <Windows.h> system( ...

  8. 新浪SAE URLRewrite(伪静态、重定向)详解

    SAE全称Sina App Engine,真是一个好东西,他有很多优秀的特性,简单来说SAE就是一个简单高效的分布式Web服务开发.运行平台.支持现在常用的 PHP+Mysql 环境,在开发中难免会碰 ...

  9. 对话框AlertDialog的基本类型与创建

    测试代码: 布局: activity_main.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res ...

  10. ADO.NET 结构 集中数据库联接结构

    MSDN 原文出处 https://msdn.microsoft.com/zh-cn/library/27y4ybxw.aspx .NET Framework 4.6 and 4.5 其他版本 以前, ...