Oracle 闪回表实验

作业:闪回表实验

1.构造测试表flb_test,数据不小于10000行;

[email protected]>create table flb_test(id number,dd date);

Table created.

[email protected]>begin

2  for i in 1..10000

3  loop

4  insert into flb_test values (i,sysdate+i);

5  end loop;

6  end;

7  /

PL/SQL procedure successfully completed.

exec dbms_stats.gather_table_stats(‘TEST_USER1‘,‘FLB_TEST‘);

--收集统计信息

2.查询当前时间与scn号;

[email protected]>select to_char(sysdate,‘yyyy-mm-dd hh24:mi:ss‘) from dual;

TO_CHAR(SYSDATE,‘YY

-------------------

2014-10-13 19:23:29

[email protected]>select dbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER

------------------------

1144357

3.查看该测试表block数目及大小M;

[email protected]>select SEGMENT_NAME,BYTES/1024/1024 size_m, BLOCKS from user_segments

2  where SEGMENT_NAME=‘FLB_TEST‘;

SEGMENT_NAME        SIZE_M     BLOCKS

--------------- ---------- ----------

FLB_TEST               .25         32

4.在这张表的第一和第二列上,创建一个复合索引ind_flb;

[email protected]>create index ind_flb on flb_test(id,dd);

Index created.

5.查看该索引的叶子块的数目以及层数;

[email protected]>select INDEX_NAME,STATUS ,BLEVEL,LEAF_BLOCKS from dba_indexes

2  where index_name =‘IND_FLB‘;

INDEX_NAME                     STATUS       BLEVEL LEAF_BLOCKS

------------------------------ -------- ---------- -----------

IND_FLB                        VALID             1          33

--平衡树:  高度=层数+1

[email protected]>select SEGMENT_NAME,BYTES/1024/1024 size_m, BLOCKS from user_segments

2  where SEGMENT_NAME=‘FLB_TEST‘;

SEGMENT_NAME        SIZE_M     BLOCKS

--------------- ---------- ----------

FLB_TEST               .25         32

6.删除测试表中一半的记录数并提交;

[email protected]>delete from flb_test where id<=5000;

5000 rows deleted.

[email protected]>commit;

Commit complete.

[email protected]>select count(*) from flb_test;

COUNT(*)

----------

5000

[email protected]>exec dbms_stats.gather_table_stats(‘TEST_USER1‘,‘FLB_TEST‘);

PL/SQL procedure successfully completed.

[email protected]>exec dbms_stats.gather_index_stats(‘TEST_USER1‘,‘IND_FLB‘);

PL/SQL procedure successfully completed.

--收集表和索引的统计信息

7.闪回fls_test到第二步查询到的时间点;

[email protected]>select table_name ,row_movement from user_tables;

TABLE_NAME                     ROW_MOVE

------------------------------ --------

SALARY                         ENABLED

SYS_TEMP_FBT                   DISABLED

FLB_TEST                       DISABLED

EMP                            DISABLED

[email protected]>alter table flb_test enable row movement;

Table altered.

[email protected]>select table_name ,row_movement from user_tables;

TABLE_NAME                     ROW_MOVE

------------------------------ --------

EMP                            DISABLED

FLB_TEST                       ENABLED

SYS_TEMP_FBT                   DISABLED

SALARY                         ENABLED

TEST[email protected]>flashback table flb_test to timestamp to_timestamp(‘2014-10-13 19:23:29‘,‘yyyy-mm-dd hh24:mi:ss‘);

Flashback complete.

[email protected]>exec dbms_stats.gather_table_stats(‘TEST_USER1‘,‘FLB_TEST‘);

PL/SQL procedure successfully completed.

[email protected]>exec dbms_stats.gather_index_stats(‘TEST_USER1‘,‘IND_FLB‘);

PL/SQL procedure successfully completed.

--收集表和索引的统计信息

--Oracle只是闪回表,所有的东西都原样保留,应重新收集统计信息

8.查看闪回结果,以及索引状态;

[email protected]>select count(*) from flb_test;

COUNT(*)

----------

10000

[email protected]>select INDEX_NAME,STATUS ,BLEVEL,LEAF_BLOCKS from dba_indexes

2  where index_name =‘IND_FLB‘;

INDEX_NAME                     STATUS       BLEVEL LEAF_BLOCKS

------------------------------ -------- ---------- -----------

IND_FLB                        VALID             1          33

时间: 2024-07-30 03:15:29

Oracle 闪回表实验的相关文章

oracle闪回表详解

--- 说明闪回数据库 --- 使用闪回表将表内容还原到过去的特定时间点 --- 从删除表中进行恢复 --- 使用闪回查询查看截止到任一时间点的数据库内容 --- 使用闪回版本查询查看某一行在一段时间内的各个版本 --- 使用闪回事务查询查看事务处理历史记录或行 会还原表及其关联对象(如索引.约束条件.触发器等)中的数据. 所谓闪回表,就是将表里的数据回退到历史的某个时间点,比如回退到用户误删除数据之前的时间点,从而将误删除的数据恢复回来,在这个操作过程中,数据库仍然可用而且不需要额外的空间.

专题实验 oracle 闪回特性

在 oracle 9i 之前的版本中, 如果用户因为误操作 delete 或 update 并提交了, 那么恢复这些用户的操作错误是极其低效的. 为此, oracle 提供了闪回功能, 通过回退, 我们可以找回正确的数据. oracle 闪回查询特性 通过闪回查询我们可以按照时间戳或SCN来向前查询, 获取修改之前的数据镜像, 再通过insert等操作就可以恢复数据. 闪回查询一来于回滚段中存储的数据前镜像, 在oracle9i以前的版本中, 通常只要事务提交后, 前镜像数据就可以被覆盖, 空间

Oracle闪回技术之一Oracle 11g 利用FlashTable (闪回表)恢复(用delete)误删的数据

闪回表,实际上就是将表中的数据快速恢复到过去的一个时间点或者系统改变号SCN上.实现表的闪回,需要用到撤销表空间相关的UNDO信息,通过SHOW PARAMETER UNDO命令就可以了解这些信息.用户对表的数据的修改操作,都记录在撤销表空间中,这为表的闪回提供的数据恢复的基础. 修改记录被提交到undo表空间中的默认保留时间为900秒,用户可以在这900秒的时间内对表的进行闪回操作,从而将表中的数据恢复的修改前的状态. 如上图显示的默认900秒,我们通过sql来修改这个默认时间为1200: f

Oracle闪回技术详解

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

闪回之闪回表(flashback table)

背景知识 设置闪回数据库参数设置数据库闪回的三个参数:db_recovery_file_dest_size  闪回恢复区大小db_recovery_file_dest  闪回恢复区路径,该参数可以任意指定,闪回日志记录了数据库的前影像,该日志不会进行归档,一但停用数据库的闪回功能,该目录下的日志会自动清除db_flashback_retention_target  保留恢复最近多长时间的数据,单位为分钟.SQL> alter system set db_recovery_file_dest_si

Oracle 闪回技术

一.配置闪回数据库 1.数据库处于归档日志模式 SQL> select log_mode from v$database; LOG_MODE ------------ ARCHIVELOG 2.创建闪回恢复区 SQL> alter system set db_recovery_file_dest_size=10G; System altered. SQL> alter system set db_recovery_file_dest='D:\oracle\product\11.2.0\d

Oracle 闪回特性(FLASHBACK DATABASE)

--===================================== -- Oracle 闪回特性(FLASHBACK DATABASE) --===================================== 闪回技术通常用于快速简单恢复数据库中出现的认为误操作等逻辑错误,从闪回的方式可以分为基于数据库级别闪回.表级别闪回.事务 级别闪回,根据闪回对数据的影响程度又可以分为闪回恢复,闪回查询.闪回恢复将修改数据,闪回点之后的数据将全部丢失.而闪回查询则可 以查询数据被DML的

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才可以使