闪回查询

运行环境:SQLPLUS, SERVEROUTPUT已打开

下列语句创建了表和数据:

CREATE TABLE plch_products
(
   id     NUMBER
, name   VARCHAR2 (10)
)
/

BEGIN
   INSERT INTO plch_products (id, name)
        VALUES (1, ‘Mouse‘);

COMMIT;
END;
/

我成功地编译了下列过程:

CREATE OR REPLACE PROCEDURE plch_change_name
IS
   v_scn    NUMBER;
   v_name   plch_products.name%TYPE;
BEGIN
   UPDATE plch_products
      SET name = ‘Keyboard‘
    WHERE id = 1;

COMMIT;

UPDATE plch_products
      SET name = ‘Monitor‘
    WHERE id = 1;

v_scn := DBMS_FLASHBACK.get_system_change_number;

SELECT name
     INTO v_name
     FROM plch_products AS OF SCN v_scn
    WHERE id = 1;

DBMS_OUTPUT.put_line (v_name);
   COMMIT;
END;
/

我执行这个代码块之后屏幕上会显示什么?

BEGIN
   plch_change_name ();
END;
/

查询返回的值是 "Keyboard"。

即使name这个列的值被修改成"Monitor",并且这个值被设置了好几秒钟,其返回的值是那个已提交过的,而非当前活跃的事务中所设置的那个值。

正如Oracle文档中所言:
闪回查询“返回的是指定时间点当时已被提交的数据”。

为了利用闪回查询功能,你需要DBMS_FLASHBACK的执行权限赋予你的schema。你还需要和DBA密切合作,来决定这个功能可以让你闪回到多远,以及在应用中通常如何使用。

原文地址:https://www.cnblogs.com/ray-bk/p/9720401.html

时间: 2024-11-08 18:19:44

闪回查询的相关文章

Oracle闪回查询恢复delete删除数据

Flashback query(闪回查询)原理 Oracle根据undo信息,利用undo数据,类似一致性读取方法,可以把表置于一个删除前的时间点(或SCN),从而将数据找回. Flashback query(闪回查询)前提: SQL> show parameter undo; NAME                                TYPE       VALUE ------------------------------------ ----------- --------

oracle闪回查询和闪回数据库

oracle闪回查询和闪回数据库 区别: 数据闪回查询,只需要启用撤销表空间自动管理回滚信息. 使用闪回删除技术和闪回数据库技术,需要启动回收站,闪回恢复区.(归档模式使用) 具体设置: ---cmd sqlplus nolog sys as sysdba hanatech 具体设置----数据闪回查询的设置: 查看撤销表信息undo: show parameter undo; 设置撤销表信息: alter system set undo_managerment=auto;设置为auto才可以使

[课]10.1闪回查询的三种方式:闪回查询/闪回版本查询/闪回事务查询

数据库版本 1.1闪回查询演示 1.2闪回版本查询演示 1.3闪回事务查询演示 在做闪回事务查询时候,我们需要使用ORACLE提供的一个系统视图FLASHBACK_TRANSACTION_QUERY.闪回事务查询与闪回版本查询之间有着密切的关系,从刚才我们实验的闪回版本查询中可以知道有一个伪列VERSIONS_XID,那么闪回事务查询就是通过这个伪列与闪回版本查询发生关联. 我们现在查看一下该表的表结构: 开始演示:

oracle闪回查询

一.引言 程序中用到需要同步oracle更新和删除数据,于是考虑利用oracle的闪回查询机制来实现. 利用该机制首先需要oracle启用撤销表空间自动管理回滚信息,并根据实际情况设置对数据保存的有效期,即对数据的操作保存多久? 查看撤销表信息undo: show parameter undo; 设置撤销表信息: alter system set undo_managerment=auto;设置为auto才可以使用闪回查询 alter system set undo_retention=900;

【MySQL】MariaDB10.3新特性--闪回查询

MariaDB10.3新特性--闪回查询 System-Versioned表特性的引入,可以对表进行闪回.完成类似于Oracle的闪回查询. 修改已有表为System-Versioned MariaDB [zsd]> alter table test with system versioning; MariaDB [zsd]> select * from test; +------+-----------+ | id | name | +------+-----------+ | 1 | 张盛

oracle的闪回查询,闪回删除:

create table t1 as select * from dba_objects; [email protected]> select sysdate from dual; SYSDATE ------------------- 2015-09-20 14:54:10 1 row selected. [email protected]> delete from t1; 0 rows deleted. [email protected]> commit; Commit comple

Oracle Flashback Technologies - 闪回查询

查看表中,某行数据的修改记录 #创建一个表,并插入和修改数据 SQL> create table y3(id int,name varchar2(20)); Table created. SQL> insert into y3 values(1,'wahaha'); 1 row created. SQL> commit; Commit complete. SQL> update y3 set name='nongfushanquan' where id=1; 1 row updat

【练习】flashback基于scn的闪回查询

1.创建表dept1: 13:01:03 SCOTT@ORA11GR2>create table dept1 as select * from dept; Table created. 13:01:40 SCOTT@ORA11GR2>select * from dept1; DEPTNO DNAME LOC ---------- -------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHI

Oracle闪回技术详解

概述: 闪回技术是Oracle强大数据库备份恢复机制的一部分,在数据库发生逻辑错误的时候,闪回技术能提供快速且最小损失的恢复(多数闪回功能都能在数据库联机状态下完成).需要注意的是,闪回技术旨在快速恢复逻辑错误,对于物理损坏或是介质丢失的错误,闪回技术就回天乏术了,还是得借助于Oracle一些高级的备份恢复工具如RAMN去完成(这才是Oracle强大备份恢复机制的精髓所在啊)  撤销段(UNDO SEGMENT) 在讲闪回技术前,需要先了解Oracle中一个逻辑结构--撤销段.因为大部分闪回技术