oracle 闪回查询,闪回版本查询,闪回事务查询,闪回表,闪回删除,闪回数据库

oracle 闪回查询,闪回版本查询,闪回事务查询,闪回表,闪回删除,闪回数据库文章目录 1 闪回查询 1 1 闪回时间查询 1 2 闪回 scn 查询 1 获取 scn 号的方法 2 闪回 scn 查询命令 2 闪回版本查询 3 闪回事务查询 4 闪回表 5 闪回删除 5 1 查看回收站内的信息 5 2

大家好,欢迎来到IT知识分享网。

1. 闪回查询

闪回查询从9i引入,可按照时间点或scn向前查询,获得修改前的数据;

闪回查询依赖于回滚段中存储的数据前镜像,通过设置 undo_retention 参数设置前镜像的保留时间;
在这里插入图片描述

查询的语法:

select ... as of scn | timestamp; 

如:

1.1. 闪回时间查询

对emp表进行修改,记录一下操作时间:

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
查看不同时间点的数据:

select * from emp as of timestamp to_date('2022-04-03 22:51:14','yyyy-mm-dd hh24:mi:ss'); 

在这里插入图片描述

1.2. 闪回scn查询
(1) 获取scn号的方法
 select dbms_flashback.get_system_change_number from dual; 

select current_scn from v$database; 

在这里插入图片描述

(2) 闪回scn查询命令

命令格式:

select * from emp as of scn ; 

2. 闪回版本查询

select ... from ... versions between 

select 后面可选择伪列,来获理事务的开始、结束时间、SCN号、ID号等

如:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

闪回版本查询:

select versions_starttime ,versions_endtime,versions_xid,versions_operation,EMPNO, ENAME,JOB,MGR,HIREDATE, SAL ,COMM, DEPTNO from emp versions between timestamp minvalue and maxvalue; 

versions_xid 表示 事务号
versions_operation 表示 执行的操作类型
在这里插入图片描述

select versions_starttime ,versions_endtime,versions_xid,versions_operation,EMPNO, ENAME,JOB,MGR,HIREDATE, SAL ,COMM, DEPTNO from emp versions between scn minvalue and maxvalue; 

3. 闪回事务查询

oracle10g开始可以进行基于闪回版本查询的恢复,就是闪回事务查询 ,从 flashback_transaction_query 中查询引起数据变化的事务,和撤销事务的 SQL 语句,就是查询 operation 和 undo_dql 列

在这里插入图片描述

select xid,operation,undo_sql from flashback_transaction_query where table_name='EMP' and table_owner='SCOTT' order by start_timestamp desc; 

通过执行同一事务下的undo_dql,即可回滚事务;

4. 闪回表

闪回表是把表里的数据回退到以前的某个时刻或者 SCN 上

特点:可以在线操作;自动恢复相关的属性,包括索引、触发器等;

前提:对表启用行迁移

语法:

flashback table <table_name> to timestamp | scn 

步骤:

alter table emp enable row movement; 
flashback table emp to timestamp to_date('2022-04-03 22:51:14','yyyy-mm-dd hh24:mi:ss'); 

在这里插入图片描述

注意:sys 的表不能闪回

5. 闪回删除

可以恢复一个被 drop 的对象,因为进行 drop 时,Oracle 先把它放到回收站中;

 flashback table student to before drop; 

在这里插入图片描述

5. 1 查看回收站内的信息
select * from user_recyclebin; 

在这里插入图片描述
在这里插入图片描述

select * from "BIN$1Y6FIVerS1eZtaHVmioWRg==$0"; 

在这里插入图片描述

5. 2 彻底删除
drop table <table_name> purge 
5. 3 清空回收点
purge recyclebin; 

在这里插入图片描述

5. 4 通过参数 recyclebin 来启用、禁用回收站

必须使用 ststem 用户:

show parameter recycle; 

在这里插入图片描述

alter session set recyclebin=off; --表示在当前会话中,不再使用回收站 

6. 闪回数据库

如果数据库出现逻辑错误,无法采用闪回表的方式进行恢复,或者数据库的结构发生了改变,可以通过闪回数据库的方式把整个数据库回退到出错前的时间点上。

步骤如下:

6. 1 配置数据库为归档模式
sqlplus /nolog 
conn / as sysdba 

archive log list; 查询数据库日志模式
在这里插入图片描述

shutdown immediate; 关闭数据库
在这里插入图片描述

startup mount ;打开到 mount 状态
在这里插入图片描述

alter database archivelog; 配置归档;
在这里插入图片描述

alter database open; –打开数据库;
在这里插入图片描述

6. 2 配置闪回恢复区:

show parameter db_rec; 查询恢复区地址;
在这里插入图片描述

show parameter db_flashback_retent; 得到最长的数据库返回时间,一般是 1440 分钟,即可以回到一天前
在这里插入图片描述

6. 3 配置闪回保留时间
6. 4 启用数据库闪回,在数据库 mount 状态时执行
alter database flashback on; 

在这里插入图片描述
在闪回目录下自动创建文件
在这里插入图片描述
记录时间,对数据库进行修改,用于测试:
在这里插入图片描述

在这里插入图片描述

6. 5 进行闪回数据库,必须在 mount 状态下执行
flashback database to timestamp | scn 

如:

flashback database to timestamp to_date('2022-04-04 00:03:37','yyyy-mm-dd hh24:mi:ss'); 

在这里插入图片描述

alter database open read only; 打开数据库只读
被删除的表闪回了
在这里插入图片描述

startup force 强制启动报错
在这里插入图片描述

执行命令,闪回数据库之后必须以 resetlogs(重置日志) 的方式启动

alter database open resetlogs; 

在这里插入图片描述

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/147606.html

(0)
上一篇 2025-04-06 14:45
下一篇 2025-04-06 15:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信