Oracle-Flashback-1

Oracle 闪回技术(标准版 Oracle 数据库不支持闪回)

为什么使用闪回技术?

为了使数据库能够从任何逻辑错误中迅速恢复,Oracle 推出了闪回技术。采用该技术,可以对行级和事物级的数据变化进行恢复,减少了数据恢复的时间,而且操作简单。通过 SQL 语句就可以实现数据的恢复,大大提高了数据库恢复的效率。闪回技术是数据库恢复技术历史上一次重大的进步,从根本上改变了数据恢复。

闪回技术包括以下各项

闪回查询:(FLASHBACK QUERY):查询过去某个时间点或某个 SCN 值时表中的数据信息
闪回版本查询(FLASHBACK Version query):查询过去某个时间段或某个 SCN 段内表中数据变化的情况。
闪回事物查询(FLASHBACK Transaction Query): 查看某个事物或所有事物在过去一段时间对数据进行的修改。
闪回数据库(FLASHBACK Database):将数据库恢复到过去某个时间点或某个 SCN 值时的状态
闪回删除(FLASHBACK drop):将已经删除的表及其关联的对象恢复到删除前的状态。
闪回表(FLASHBACK table):将表恢复到过去的某个时间点或某个 SCN 值时的状态。

SCN 是当 Oracle 数据库更新后,有 DBMS 自动维护而累积递增的一个数字。可以通过查询数据字典V $DATABASE 中的 CURRENT_SCN 获得当前的 SCN 号。

Oracle-Trigger-System-1

系统触发器

系统触发器用于监视数据库服务的打开、关闭、错误等信息的取得,或者是监控用户的行为操作等。如果要创建系统触发器,可以使用如下的语法

CREATE [OR REPLACE] TRIGGER 触发器名称
[BEFORE | AFTER] [数据库事件] ON [DATABASE | SCHEMA]
[WHEN 触发条件]
[DECLARE]
[程序声明部分;]
BEGIN
    程序代码部分;
END [触发器名称];
/

Oracle-Trigger-DDL-1

DDL触发器

当创建、修改或者删除数据库对象时,也会引起相应的触发器操作事件,而此时就可以利用触发器来对这些数据库对象的 DDL 操作进行监控,DDL 触发器的创建语法如下所示。

Oracle-Trigger-1

触发器的简介

触发器类似过程和函数,都具有程序主题部分 (声明段\可执行段\异常处理段),但是与手工调用过程或函数不同的是,所有触发器都是依靠事件执行的, 例如:当对于某一张表执行更新操作 (INSERT, UPDATE, DELETE) 时,都可能引起触发器的执行。同时过程或函数都是显示调用的,所以其是可以接收参数的,但触发器由于采用的是隐式调用 (一触即发某类操作时调用),所以是不能够接收参数的。

在 Oracle 之中触发器主要分为: DML 触发器, INSTEAD-OF (替代) 触发器, DDL 触发器,系统或数据库时间触发器。所有的触发器都可以使用如下的基本语法进行创建。

VIEW-TRANSFER-PARAMETERS-1

VIEW_PARAM 视图传参案例

思路:定义一个程序包,然后在视图 以及在查询视图时,分别使用 get set 方法来实现视图的传参。

Oracle-Start-With-Connect-By-1

Oracle 树操作、递归查询(select…start with…connect by…prior)

原文:https://www.cnblogs.com/yingsong/p/5035907.html

一、Oracle中start with…connect by prior 子句用法

connect by 是结构化查询中用到的,其基本语法是:

select … from tablename
start with 条件1 connect by 条件2 where 条件3;

例:

select * from table 
start with org_id = 'HBHqfWGWPy'
connect by prior org_id = parent_id;

简单说来是将一个树状结构存储在一张表里,比如一个表中存在两个字段: org_id,parent_id 那么通过表示每一条记录的 parent 是谁,就可以形成一个树状结构。

用上述语法的查询可以取得这棵树的所有记录。

|