oracle 闪回的介绍(10级学员 庞丽课堂总结)

转载 2012年03月25日 20:28:08

闪回(Flashback

一、闪回的基本概念

1)在Oracle的操作工程中,会不可避免地出现造作失误或者用户失误,例如不小心删除了一个表等,这些失误和错误可能会造成重要数据的丢失,最终导致Oracle数据库停止允许。

2)在传统意义上,当发生数据丢失、数据错误问题时,解决的主要办法是数据的导入导出、备份恢复技术,这些方法都需要在发生错误前,有一个正确的备份才能进行恢复。

3)为了减少这方面的损失,Oracle提供了闪回技术。有了闪回技术,就可以实现数据的快速恢复,而且不需要数据备份。

二、闪回的益处

         1)恢复中,闪回技术是革命性的进步

         2)传统的恢复技术缓慢:

                   1)它是整个数据库或者一个文件恢复,不只恢复损坏的数据

                   2)在数据库日志中每个修改都必须被检查

         3)闪回速度快:

                   1)通过行和事务把改变编入索引

                   2)仅仅改变了的数据会被恢复

         4)闪回命令很容易:

                   1)没有复杂棘手的多步程序

四、闪回的类型

         1)闪回表(flashback table

         2)闪回删除(flashback drop

         3)闪回版本查询(flashback version query

         4)闪回事务查询(flashback transaction query

五、闪回表

         1

1)闪回表,实际上是将表中的数据快速恢复到过去的一个是焦点或者系统告便号SCN上。实现表的闪回,需要使用到与撤销表空间相关的undo信息,通过show parameter undo命令可以了解这些信息。

         2)用户对表数据的修改操作,都记录在撤销表空间中,这位表的闪回提供了数据恢复的基础。例如:某个修改操作在提交后被记录在撤销表空间中,保留将表中的数据恢复到修改之前的状态。

         3)执行表的闪回,需要有flashback any table的权限。

         2、闪回表语法:

         FLASHBACK TABLE [schema.]<table_name>

TO 

{[BEFORE DROP [RENAME TO table]] 

[SCN|TIMESTAMP]expr

[ENABLE|DISABLE]TRIGGERS}

*schema:模式名,一般为用户名。

*TO TIMESTAMP:系统邮戳,包含年、月、日、时、分、秒。

*TO SCN:系统更改号,

*ENABLE TRIGGERS:表示触发器恢复以后为enable状态,而默认为disable状态。

*TO BEFORE DROP:表示恢复到删除之前。

*RENAME TO table:表示更换表名。

注意:闪回表需要将表的行移动功能打开。

         Alter table <table_name>enable row movement;

         3、闪回表举例:

         1)通过timestamp闪回表

(2)       通过SCN号闪回表

4、  闪回表:需要考虑的事情

(1)       FLASHBACK TABLE命令作为单一的事务执行,会得到一个单一的DML

(2)       表的统计数据不会被闪回

(3)       当前的索引和从属的对象会被维持

(4)       闪回表操作:、

a)         系统表不能被闪回

b)         不能跨越DDL操作

c)         会被写入警告日志

d)         产生撤销和重做的数据

六、闪回删除

         1)闪回删除,实际上从系统的回收站中将已删除的对象,恢复到删除之前的状态。

         2)系统的回收站只对普通用户有作用。

         1、闪回删除:回收站(recyclebin)简介

         1)回收站是所有被删除对象及其相依对象的逻辑存储容器,例如当一个表被删除时,该表及其相依对象并不会马上被数据库彻底删除,而是被保存到回收站中。

         2)回收站将用户执行的drop操作记录在一个系统表中,也就是将被删除的对象写到一个数据字典中。如果确定不再需要改对象,可以使用purge命令对回收站进行清空。

         3)被删除的对象的名字可以是相同的,例如用户创建了一个test表,使用drop命令删除该表后,又创建了一个test表,这时,如果再次删除该表就会导致向回收站中添加了两个相同的表。

         2、闪回删除:回收站中对象的命名规

为了确保添加到回收站中的对象的名称都是唯一的,系统会对这些保存到回收站中的对象进行重命名,重命名的格式如下:

         BIN$globalUID$version

其中: BIN表示RECYCLEBINglobalUID是一个全局唯一的、24个字非长的对象,该标识与原对象名没有任何关系;version指数据库分配的版本号。

3、  闪回删除举例

(1)       闪回使用drop命令删除的表

1)使用表名闪回

2)  使用recyclebin name闪回

3)  闪回重名的表

4、  闪回删除:需要考虑的事情

(1)       闪回删除对下列表无效:

a)         SYSTEM 表空间内的表

b)         用精细审计的数据库或虚拟的私人数据库

c)         属于字典管理的表空间

d)         由于空间不足已经被手动或自动删除的表

(2)       以下依赖不被保护:

a)         位图索引

b)         表之前删掉的索引

七、闪回版本的查询

闪回版本查询,提供了一个审计行改变的查询功能,通过它可以查找到所有已经提交了的行记录。其语法格式如下:

select column_name[,column_name,...]

from table_name

versions between [SCN|TIMESTAMP] [expr|MINVALUE] and  [epxr|MAXVALUE] as of [SCN|TIMESTAMP] expr;

其中:column_name列名;table_name表名;between...and时间段;SCN系统改变号;TIMESTAMP时间戳;AS OF表示恢复单个版本;MAXVALUE最大值;MINVALUE最小值;expr指定一个值或者表达式。

(1)       闪回版本的查询举例

1)创建一张新表:

create table version_table(vid int, content varchar(20));

2)执行如下操作:

insert into version_table values(1,'aaa');

commit;

insert into version_table values(2,'bbb');

commit;

update version_table set content='bbb1' where vid=2;

commit;

insert into version_table values(3,'ccc');

commit;

(2)          执行闪回版本查询。

八、闪回事务查询

1)闪回事务查询实际上闪回版本查询的一个扩充,通过它可以审计某个事务甚至撤销一个已经提交的事务。

2)实现闪回事务查询,需要先了解flashback_transaction_query视图,从该视图中可以获取事务的历史操作记录以及撤销语句(UNDO_SQL)

3)使用闪回事务查询,可以了解某个表的历史操作记录,这个操作记录对应一个撤销SQL语句,如果想要撤销这个操作,就可以执行这个SQL语句。

Flashback_transaction_query

名称                                 类型                          说明

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

 XID                                 RAW(8)                     事务编号

 START_SCN                  NUMBER                  事务的开始的系统改变号

 START_TIMESTAMP     DATE                        事务的开始时间

 COMMIT_SCN                NUMBER                  事务提交时的系统改变号

 COMMIT_TIMESTAMP   DATE                        事务提交时的时间

 LOGON_USER               VARCHAR2(30)        对应的用户

 UNDO_CHANGE#          NUMBER                   撤销操作对应的编号

 OPERATION                   VARCHAR2(32)         操作

 TABLE_NAME                VARCHAR2(256)      

 TABLE_OWNER             VARCHAR2(32)         所有者

 ROW_ID                         VARCHAR2(19)          行号

 UNDO_SQL                    VARCHAR2(4000)      撤销事务的SQL语句

注意,要查询flashback_transaction_query视图的信息,需要有select any transaction的权限。

4)闪回事务查询举例

1)从闪回版本查询中,获取xis

2)基于xid号,在flashback_transaction_query视图中获取相应事务的信息。

3)利用undo_sql撤销事务操作。

 

相关文章推荐

WebService入门介绍及案例分析(10级学员 庞丽课堂总结)

WebService入门介绍及案例分析 一、WebService入门概述: 1、什么是WebService? WebService,就是基于Web的服务。它使用Web(HTTP)方式,接收和响应...

Spring第一个案例(10级学员 庞丽课堂总结)

Spring第一个案例(10级学员 庞丽课堂总结) 刚刚接触Spring,我们完成了第一个Spring的案例。下面我就要对Spring第一个案例源代码进行分析。 一、首先我们在Eclipse下新建...

Oracle存储过程(10 级学员 庞丽课堂总结)

Oracle存储过程          今天我们学习了存储过程和存储函数也是一种PL/SQL块,是存入数据库的PL/SQL块,它和PL/SQL程序相比起来, 一、存储过程和它有很多优点,具体归纳一...

Oracle常见的面试题四(10级学员 庞丽整理)

Oracle常见的面试题: 题目:现有STUDENT(学生),COURSE(课程),SC(成绩)表,完成以下需求。(建表语句在emp.sql中,综合考察) (1)       查询选修课程为w...

oracle其他数据对象 --- 视图(10级学员 韩晓爽课堂总结)

oracle其他数据对象 --- 视图 一 介绍: 1.什么是视图:     视图是从一个表或多个表中导出的虚表,它与常规表不同之处在于它并不存储数据,它只是在一个存储的查询中定义.视图同真实表...

oracle集合运算_10级 学员 马林 课堂总结

集合运算 10级 学员 马林 课堂总结 集合操作符 1. UNION/UNION ALL 并集 UNION运算符返回两个集合去掉重复元素后的所有记录 我们以查询姓名中含有A或者M的人的列...

Oracl中PL/SQL编程(10级学员 张帅鹏课堂总结)

Oracl中PL/SQL编程 概述: PL/SQL是oracle的专用语言,它对标准的SQL语言的扩展.SQL语句可以嵌套在PL/SQL语言中,并结合处理语句。举例,一般在银行系统中,都是事先写好的...

jQueryUI中Datepicker(日历)插件的介绍和使用(10级学员 郞志课堂笔记)

jQueryUI中Datepicker(日历)插件的介绍和使用 Datepicker插件的属性: 属性 数据类型 默认值 说明 ...

JqueryUI插件---对话框的使用(10级学员 乔宇课堂总结)

Jquery 中的对话框的设置以及使用          对话框:首先,我们知道我们这个jquery中的对话框,我们必须使用jquery的js和css,那么我们必须引入必须的js和css了.   ...

spring的注解使用和分散配置(10级 学员张帅鹏课堂总结)

spring的注解使用和分散配置 一、spring的注解 简介:在 Spring 2.5中已经可以用注解的方式去驱动 Spring 的依赖注射了,@Autowired注解提供了更细致的控制与更好...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)