涂抹Oracle—Flashback
11.1 基于flashback查询过去的数据
a.基于时间的查询(as of timestamp)
构造表falsh_tbl,删除数据然后查询
SQL>select * from flash_tbl as of timestamp sysdate-5/1440;
恢复删除的数据
SQL>insert into flash_tbl select * from flash_tbl as of timestamp sysdate-5/1440 where id<10;
实验的时候,注意删除之后过去的时间,不然在恢复的时候会报表结构变更的错误提示。
b.基于SCN的查询(AS OF SCN)
获取SCN的方法:
a.select current_scn from v$database;
b.select dbms_flashback.get_system_change_number from dual;
b的前提是要有操作对象的访问权限:
>grant execute on dbms_flashback to user;
获取SCN,然后删除操作并提交:
>select dbms_flashback.get_system_change_number from dual;
>delete flash_tbl where id>10;
执行select语句并附加as of scn,同时指定删除前的SCN,可以查询到指定SCN时对象中的记录:
>select * from flash_tbl as of scn .....;
执行insert,将删除的数据重新恢复回表:
SQL>insert into flash_tbl select * from flash_tbl as of scn .... where id>10;
SQL>commit;
使用scn查询比timestamp更精确
不过在实际执行flashback query时,时间转换后具体对应哪个SCN,通过sys用户下smon_scn_time来记录
SQL>desc sys.smon_scn_time;
在10g中,系统评价每3秒产生一次系统时间与SCN的匹配并存入sys.smon_scn_time表:
>select scn,to_char(time_dp,'YYYY-MM-DD HH24:MI:SS') as time from sys.smon_scn_time order by time;
在oracle数据库也可手动进行时间和SCN的转换,oracle提供了两个函数SCN_TO_TIMESTAMP和TIMESTAMP_TO_SCN
SQL> SELECT TIMESTAMP_TO_SCN(SYSDATE) FROM DUAL;
SQL> SELECT TO_CHAR(SCN_TO_TIMESTAMP(4942206),'YYYY-MM-DD HH24:MI:SS') FROM DUAL;
11.1.2 应用flashback Query查询操作的事务
11.1.2.1 使用flashback version query查询记录修改版本
查询过去某个时间点对象中保存的记录信息,在当前时间与指定的过去某个时间点之间,对象可能做过多次修改。
flashback version query也是以select查询后面附加versions between timestamp[/SCN] start and end子句即可。通过version between能够查看指定时间段内undo表空间记录的不同版本.
11.1.2.2 使用flashback transaction query查询事务信息
flashback transaction query功能在实际应用时对应的是个视图:flashback_transaction_query
注意:查询flashback_transaction_query视图,用户需要是DBA角色,或被授予了select any transaction权限
>grant select any transaction to xxx;
11.1.3 应用flashback query注意事项
11.1.3.1 自动撤销管理表空间
要使用flashback的相关特性,必须启用自动撤销管理表空间,不单单对于flashback query,也包括flashback table和flashback database,对于后两项还有其它附件条件,如flashback table需要启用recycle bin(回收站),flashback database 要求启用flashback area(闪回区)
9i后取消回滚段说法,完全以UNDO段代替,正好与REDO概念相对应.
UNDO端不再由DBA手工介入,完全由oracle在运行时自动分配.
是否启用自动撤销管理表空间由两个初始化参数决定:
.undo_management:值为auto表示使用自动撤销表空间管理,manual则表示手动
.undo_tablespace:oracle数据库中个可以创建多个undo表空间,不过同时只能使用一个,当undo_management初始化参数为auto时,undo_tablespace参数用来指定当前使用的undo表空间名称
undo表空间大小,直接影响到flashback query的查询能力。
11.1.3.2 初始化参数undo_retention
用来指定undo段中数据保存的最短时间,以秒为单位,是一个动态参数,可以在实例运行随时修改,默认900秒,15min
11.2 Flashback Table闪回表
oracle10g引入一个recycle bin的功能(主要针对被删除的表及其关联的对象,如触发器、索引、约束),被删除的表并非真正删除,而是先通过修改数据字典的方式,将其改名并放入recycle bin中,如果要恢复recycle bin中的对象,借助flashback table是最简便的方式
11.2.1.1 删除恢复实验
SQL>drop table temp1;
SQL>select object_name,original_name from recyclebin;
如果commit恢复没有用
SQL>flashback table temp1 to before drop;
涂抹Oracle—Flashback的更多相关文章
- Oracle Flashback Technology【闪回技术】
-------------------------与其他数据库相比,Oracle的闪回让开发者多了一条选择的路. Flashback的目的 先看下Oracle官方文档中的解释: Oracle Flas ...
- Oracle Flashback Technologies - 闪回查询
Oracle Flashback Technologies - 闪回查询 查看表中,某行数据的修改记录 #创建一个表,并插入和修改数据 SQL> create table y3(id )); T ...
- Oracle Flashback Technologies - 闪回被drop的表
Oracle Flashback Technologies - 闪回被drop的表 在oracle10g中,drop一个表后,表没有真正被删除,支持被rename后放在recyclebin中. #新建 ...
- Oracle Flashback Technologies - 估算不同时间段闪回日志的产生量
Oracle Flashback Technologies - 估算不同时间段闪回日志的产生量 v$flashback_database_stat监控闪回数据的i/o开销的统计信息,根据之前的系统负载 ...
- Oracle Flashback Technologies - 闪回数据库
Oracle Flashback Technologies - 闪回数据库 根据指定的SCN,使用rman闪回数据库 #查看可以闪回到多久前 SQL> select * from v$flash ...
- Oracle Flashback Technologies (总)
Oracle Flashback Technologies Oracle 9i中增加了闪回查询技术,闪回查询为数据库提供了一种简单.强大.完全无干扰从人为错误中恢复的机制.通过闪回查询,用户可以查看过 ...
- oracle flashback
一.Flashback闪回技术概述:当Oracle数据库发生逻辑错误时,必须使用flashback技术,实现快速和方便的恢复数据.对于人为错误,要确定受到错误事务影响的对象或者记录是非常困难的.使用f ...
- ORACLE FLASHBACK DATABASE 知识整理
1.知识储备 1) 只有SYSDBA有权执行,闪回前一定要记录当前SCN 2) 需要停机,并要求处于ARCHIVELOG模式中 3) 闪回日志不能被复用和归档,是自动管理的.RVWR ...
- Oracle Flashback 详解
Oracle flashback 是一种方便快捷的数据库恢复技术,它不使用备份文件,通过闪回日志可以使数据库恢复到过去的某个状态,当用户发生逻辑错误时(误删表数据.表.表空间等)需要快速恢复数据库,可 ...
随机推荐
- chrome性能测试框架webpagereplay
今天学习了下chrome的性能测试框架,其实它可用于在稳定的环境下测试浏览器向服务器发起http请求至下载请求文档到本地的这个过程.好处在于,其原理在于先将第一次请求回来的文档下载在本地,然后在本地模 ...
- H - Antenna Placement- hdu 3020(二分图匹配)
题意:每个 ‘*’都需要一个1*2的东西覆盖,问最少需要多少个1*2的东西来覆盖这些‘*’ 分析:只需要求出来最多有多少个完全覆盖的,然后加上那些不能被完全覆盖的点即可..把G题的代码随便修改了一下就 ...
- HTTP学习笔记7-消息报头
41,消息报头-实体报头 请求和响应消息可以传送一个实体.一个实体由实体报头域和实体正文组成,在大多数情况下,实体正文就是请求消息中的请求正文或者响应消息中的响应正文.但是在发送时,并不是说实体报头域 ...
- app被Rejected 的各种原因翻译。这个绝对有用。
1. Terms and conditions(法律与条款) 1.1 As a developer of applications for the App Store you are bound by ...
- PHP开发Android应用程序(转)
第一部分是指在Android系统的手机上直接写PHP脚本代码并立即运行:第二部分则继续讲解如何把写好的PHP脚本代码打包成akp安装文件. 首先,在手机上安装两个apk包. 一个是SL4A(Scrip ...
- VSS Get Latest Version 没有提示recursive的对话框解决
今天按照VSS使用时,当“Get Latest version”时,不小心勾选了 “Only show this dialog when the Shift key is down”,因此当我再“Ge ...
- Java基础知识强化71:正则表达式之基本规则 和 常用正则表达式
1. 基本规则: A:字符 x 字符 x.举例:'a'表示字符a \\ 反斜线字符. \n 新行(换行)符 ('\u000A') \r 回车符 ('\u000D') B:字符类 [abc] a.b 或 ...
- 大数据笔记01:大数据之Hadoop简介
1. 背景 随着大数据时代来临,人们发现数据越来越多.但是如何对大数据进行存储与分析呢? 单机PC存储和分析数据存在很多瓶颈,包括存储容量.读写速率.计算效率等等,这些单机PC无法满足要求. 2. ...
- Vim的多窗口模式管理
Vim中的多窗口打开 vim中,默认的多窗口打开,是横向分割窗口. 进入vim编辑器以后,可以通过new命令,新建一个子窗口 :new “新建一个未命名窗口 :new name "新建一个 ...
- ios10下,手机连接xcode控制台不显示日志,解决办法
按照下面设置: run- > environment variables->添加 OS_ACTIVITY_MODE ,value内容为空