Oracle9i Flashback Query 闪回查询总结 --- (通过时间点恢复)

介绍了Oracle9i中新增的闪回查询功能,该功能允许用户恢复已提交的误删除或误更新的数据。通过指定时间点或系统提交编号(SCN),用户可以在不依赖备份的情况下快速查看历史数据并进行恢复。
Oracle9i 中新增的闪回查询(Flashback Query)功能对于误删除或者误更新并且已经commit 了的情况,提供了简便快捷的恢复方法,而在Oracle 提供闪回查询之前,碰到这种情况只 能通过备份来进行基于时间点的恢复,无疑这比闪回查询要麻烦而且费时。 [@more@]


什么是Flashback Query


利用Oracle 多版本读一致的特性,在需要的时候通过undo 来提供所需的前镜像中的数据。 利用这个功能,可以看到历史数据(呵呵,就像时光倒流。月光宝盒?),甚至用历史数据 来修复误操作引起的错误。可以通过指定时间或者SCN 来检索需要的数据。
前提条件
数据库必须处于Automatic Undo Management 状态。
最大可以闪回查询的时间段由UNDO_RETENTION 初始化参数(单位为秒)指定
可以通过ALTER SYSTEM SET UNDO_RETENTION = ;来修改参数值
如何使用Flashback Query
通过SQL
使用SELECT 语句的AS OF 来进行闪回查询,语法如下:
SQL> show parameter undo_retention
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_retention integer 10800
SQL> show parameter undo_management
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
使用AS OF 关键字来对表,视图,或者物化视图进行Flashback Query,如果指定了SCN,
那么expr 部分必须是一个数字,如果指定了TIMESTAMP,那么expr 必须是一个timestamp 类型的值。查询结果将返回在指定的SCN 或者时间点上的数据。
下面我们使用scott 方案来作一个实验。


[zhangleyi@linux9 bin]$ sqlplus /nolog
SQL*Plus: Release 9.2.0.1.0 - Production on Thu Oct 9 23:44:07 2003
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> connect scott/tiger
Connected.
SQL> select sal from emp where empno=7369;
SAL
----------
800
SQL> update emp set sal=4000 where empno=7369;
1 row updated.
SQL> commit;
Commit complete.
SQL> select sal from emp where empno=7369;
SAL
----------
4000
Uses Oracle's multiversion read-consistency capabilities to
restore data by applying undo as needed. You can view and
repair historical data, and you can perform queries on the
database as of a certain wall clock time or user-specified
system commit number (SCN)
备注:TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' DAY)指查询距当前时间一天以
前的时间点的数据,如果我们要查询一小时以前的,那么需要将DAY 替换成HOUR 即可,
查询10 分钟以前的将'1' DAY 替换'10' MINUTE。
以上演示了对于误更新的字段进行恢复的方法,但是如果想在update 的子查询部分使用AS
OF 那么该查询只能返回一条记录,否则将会报错。如下:
SQL> select empno,sal from emp;
EMPNO SAL
---------- ----------
7369 800
7499 1600
7521 1250
7566 2975
7654 1250
7698 2850
7782 2450
7788 3000
SQL> select sal from emp
2 AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' DAY);
3 where empno=7369;
SAL
----------
800
SQL> update emp set sal=
2 (select sal from emp
3 AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' DAY)
4 where empno=7369)
5 where empno=7369;
1 row updated.
SQL> select sal from emp where empno=7369;
SAL
----------
800
SQL> commit;
7839 5000
7844 1500
7876 1100
EMPNO SAL
---------- ----------
7900 950
7902 3000
7934 1300
14 rows selected.
SQL> update emp set sal=4000;
14 rows updated.
SQL> commit;
Commit complete.
SQL> select empno,sal from emp;
EMPNO SAL
---------- ----------
7369 4000
7499 4000
7521 4000
7566 4000
7654 4000
7698 4000
7782 4000
7788 4000
7839 4000
7844 4000
7876 4000
EMPNO SAL
---------- ----------
7900 4000
7902 4000
7934 4000
14 rows selected.

=====================================================

Oracle9i的Flashback查询的用途非常多。终端用户或者开发者几乎每天都要恢复那些由于应用失误造成的丢失数据或者被修改的数据。

Click here to find out more!Click here to find out more!

Oracle宣称你可以用Flashback查询创建具有内嵌的、面向终端用户的、自服务的纠错能力的应用程序,但是很少有Oracle使用者打算去实现自服务纠错或者是要求DBA进行flashback恢复。

你可以使用DBMS_FLASHBACK包去启用或禁用Flashback查询。你还能使用系统改变数(SCN)或者真实时间来指定flashback的时间点。

例如,假设你在上午11:15对数据库作了一个不正确的改变。只要你的Flashback查询处于启用状态,你就能使用下面的命令告诉Oracle应用上午11:00时所有的undo日志映像:

EXECUTE dbms_Flashback.Enable_At_Time('28-AUG-02 11:00:00');

现在所有的查询都将显示上午11:00时的数据,你还可以很容易地恢复丢失的或者被修改的数据。

虽然这是及时回退一个显著的有用特征,但是还是有一些限制的:

  • 服务器必须配置成使用自动undo管理。
  • 在使用Flashback查询时不能使用DDL或者DML。
  • Flashback不取消DDL操作,例如DROP命令。

数据库管理员做一些必要的设置之后,一般用户才能使用Flashback查询功能,下面是所要做的设置:

  • ALTER SYSTEM SET UNDO_MANAGEMENT=AUTO
  • ALTER SYSTEM SET UNDO_RETENTION=86400
  • GRANT EXECUTE ON DBMS_FLASHBACK TO USERNAME;

UNDO_RETENTION的参数(单位为秒)指定Oracle保存用于flashback查询的undo映像的时间。一般你可以将这个值设为一整天(864000秒),这样你就能看到前一天全天的映像。当然,你的在线undo日志必须足够大,大到足以能保存一整天的undo日志数据,对于繁忙的Oracle系统,这个数值可以达到很多G字节。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-997538/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/35489/viewspace-997538/

内容概要:本文系统研究了构网型变流器的正负序阻抗解耦特性及其在弱电网环境下的稳定性表现,重点依托Matlab/Simulink仿真平台,构建了详细的阻抗数学模型,设计了解耦控制策略,并采用小信号扫频法进行频域辨识与稳定性验证。研究深入探讨了构网型变流器与传统跟网型逆变器在正负序阻抗特性上的本质差异,结合虚拟同步发电机(VSG)等先进控制技术,分析其在抑制宽频带振荡、削弱锁相环动态耦合等方面的优越性。文中不仅提供了完整的仿真模型与MATLAB代码实现,还整合了光伏、风电、储能、微电网等多类新能源系统的阻抗建模与稳定性分析资源,形成了一套面向新型电力系统稳定性的综合性技术资料体系,具有较强的科研复现与工程参考价值。; 适合人群:面向具备电力电子、电力系统自动化、新能源并网等专业背景的研究生、高校教师及工程技术人员,特别适用于从事阻抗建模、小干扰稳定性分析、宽频振荡机理研究以及撰写高水平学术论文的科研工作者。; 使用场景及目标:①掌握构网型变流器正负序阻抗建模与扫频辨识的仿真方法;②深入理解VSG等构网型控制在弱电网中提升稳定性的内在机理;③复现顶刊论文中的阻抗分析流程与稳定性判据应用;④利用提供的成熟模型与代码加速科研进程,支撑课题研究与学术成果产出。; 阅读建议:建议结合文中提供的Simulink模型与MATLAB代码,按照“理论建模—仿真搭建—扫频激励—频响提取—Nyquist判据分析”的完整流程进行实践操作,重点关注扫频信号的注入方式、频率范围设置及阻抗曲线的物理意义解读,并参考博士论文复现案例深化对复杂动态耦合问题的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值