表空间闪回实例

Oracle闪回详解(闪回查询,闪回数据,回退数据,闪回表,闪回数据库,闪回快照,闪回主备库(恢复关系),闪回归档,注意事项,有关闪回常用查询命令) 即在备库进行,开启此模式时为了在备库进行一些测试操作,而又不行留存在数据库中,当备库切换回physical standby物理备库时,之前在snapshot standby模式进行的测试将会被丢弃。如果一块数据磁盘空间无法保存某个数据时(比如以前是1k,现在update到2k,而当前块的空闲空间不足1k),则会将新的数据保存到另外一个新的块里,然后在以前的块保存一个新位置的地址连接。允许用户查询过去某个时间点的数据,用以重构由于意外删除或更改的数据,数据不会变化。如果已经做了上述操作,从库可以选择重建。 阅读详情

一、ORACLE闪回原理和配置:

 

如果Oracle10g数据库中误删除了一个表中的记录,例如删除了一个非常重要的雇员信息,并且该事务已经提交了,如何快速找回误删除的数据呢?

 

这种情况下可以利用Oracle10g数据库的闪回功能实现找回丢失的数据。具体的说就是行闪回。

行级闪回是指获取先前某个时间点或某个SCN值时表的行数据。行级闪回有两种方式,一是闪回到某个时间点,二是闪回到某个SCN号。

 

实验如下:

首先以SYS用户连接数据库,查询数据库是否开启了闪回功能。

SQL> select flashback_on from v$database;

 

FLASHBACK_ON

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

NO

 

SQL>

如果没有开启闪回功能,则需要SHUTDOWN IMMEDIATE数据库,然后将数据库加载到MOUNT状态,使用ALTER DATABASE FLASHBACK ON 开启数据库闪回功能。

还需要设置参数db_flashback_retention_target。实例如下:

SQL> shutdown immediate;

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup mount;

ORACLE 例程已经启动。

 

Total System Global Area  289406976 bytes

Fixed Size                  1248600 bytes

Variable Size              92275368 bytes

Database Buffers          192937984 bytes

Redo Buffers                2945024 bytes

数据库装载完毕。

 

SQL> select name,log_mode,open_mode,flashback_on from v$database;

 

NAME      LOG_MODE     OPEN_MODE  FLASHBACK_ON

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

MYORACLE  ARCHIVELOG   MOUNTED    NO

 

SQL> alter database flashback on;

 

数据库已更改。

 

SQL> alter system set db_flashback_retention_target=3600;

 

系统已更改。

 

SQL> alter database open;

 

数据库已更改。

 

以SCOTT用户连接数据库,在EMP表中插入一些数据:

SQL> conn scott/tiger;

已连接。

SQL> insert into myemp(empno,ename,job,sal) values(8007,'zhangsan','clerk',3000);

 

已创建 1 行。

 

SQL> insert into myemp(empno,ename,job,sal) values(8087,'zhangsan','clerk',3000);

 

已创建 1 行。

 

SQL> commit;

 

提交完成。

 

SQL> update myemp set ename='maliu' where empno=8087;

 

已更新 1 行。

 

SQL> commit;

 

提交完成。

 

做一个查询

SQL> select versions_starttime,versions_endtime,versions_xid,versions_operation,ename

  2  from myemp

  3  versions between timestamp minvalue and maxvalue

  4  order by versions_starttime;

 

已选择18行。

 

执行删除操作:

SQL> delete from myemp where empno=8087;

 

已删除 1 行。

 

SQL> commit;

 

提交完成。

 

执行查询可以看到:

SQL> select versions_starttime,versions_endtime,versions_xid,versions_operation,ename

  2  from myemp

  3  versions between timestamp minvalue and maxvalue

  4  order by versions_starttime;

 

执行查询可以看到如下结果:

 

 SQL> select versions_starttime,versions_endtime,versions_xid,versions_operation,ename

  2  from myemp

  3  versions between timestamp minvalue and maxvalue

  4  order by versions_starttime;

 

VERSIONS_STARTTIME             VERSIONS_ENDTIME               VERSIONS_XID     V ENAME

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

10-10月-08 06.41.55 下午                                      08000E00B7020000 I zhangsan

10-10月-08 06.41.55 下午       10-10月-08 06.42.31 下午       08000E00B7020000 I zhangsan

10-10月-08 06.42.31 下午       10-10月-08 06.44.25 下午       06002F00B6020000 U maliu

10-10月-08 06.44.25 下午                                      07002C00BA020000 D maliu

 

 

在这个查询中可以看到一些非常重要的信息,显示了对表所执行的操作。VERSIONS_STARTTIME列、VERSIONS_ENDTIME列、VERSIONS_XID列等等都是伪列,其中V列表示对表做了什么操作(I表示INSERT、U表示UPDATE、D表示DELETE);VERSIONS_XID列显示了更改事务标识符。有关该事务的更多信息可以在视图FLASHBACK_TRANSACTION_QUERY中进行查询。

 

SQL> select undo_sql from flashback_transaction_query

  2  where xid='07002C00BA020000';

 

UNDO_SQL

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

Insert into "SCOTT"."MYEMP"("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") values ('8087','maliu','clerk',NULL,NULL,'3000',NULL,NULL);

 

经过查询,可以看到被删除的行在插入时的语句,这样就可以使用这个语句进行恢复数据了。

 

flashback_transaction_query视图包含了一些非常重要的信息,例如提交操作的时间标记和SCN、查询开始时的SCN、时间标记以及其他一些信息等。可以通过查看这个视图的结构获得更多的详细信息。

 

SQL> desc flashback_transaction_query;

 名称

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

XID

 START_SCN

 START_TIMESTAMP

 COMMIT_SCN

 COMMIT_TIMESTAMP

 LOGON_USER

 UNDO_CHANGE#

 OPERATION

 TABLE_NAME

 TABLE_OWNER

 ROW_ID

 UNDO_SQL

 

最后需要注意的问题:

对表数据更新一段时间后,只有在初始化参数UNDO_RETENTION设置的时间内才可以查询到表的数据更改记录。而且,只有初始化参数UNDO_MANAGEMENT设置为AUTO后才能使用闪回查询。

SQL> conn / as sysdba;

已连接。

SQL> show parameter UNDO_RETENTION;

 

NAME                                 TYPE        VALUE

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

undo_retention                       integer     900

SQL> show parameter UNDO_MANAGEMENT;

 

NAME                                 TYPE        VALUE

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

undo_management                      string      AUTO

SQL>

 

二、闪回具体实例:

 

时间点:time1

SQL> select dbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER
------------------------
               152713033
SQL> select count(*) from testvarchar;
COUNT(*)
----------
10000000

操作如下:
SQL> delete testvarchar;   
10000000 rows deleted.
SQL> commit;
Commit complete.
SQL> select count(*) from testvarchar;
COUNT(*)
----------
         0

时间点:time2
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
               152883734

用Flashback功能查询以前的数据

SQL> select count(*) from testvarchar as of scn 152713033;

COUNT(*)
----------
10000000
SQL>
用flashback直接恢复表

SQL> flashback table testvarchar to scn 152713033;
flashback table testvarchar to scn 152713033
                *
ERROR at line 1:
ORA-08189: cannot flashback the table because row movement is not enabled
--
或使用时间点闪回:
--FLASHBACK TABLE LICZ.SALES TO TIMESTAMP to_timestamp('2009-04-30 13:26:49', 'YYYY-MM-DD HH24:MI:SS');

SQL> alter table testvarchar enable row movement;

Table altered.

这个命令的作用是,允许Oracle 修改分配给行的rowid。在Oracle 中,插入一行时就会为它分配一个rowid,而且这一行永远拥有这个rowid。闪回表处理会对EMP 完成DELETE,并且重新插入行,这样就会为这些行分配一个新的rowid。要支持闪回就必须允许Oracle 执行这个操作


SQL> flashback table testvarchar to scn 152713033;
Flashback complete.
SQL> select count(*) from testvarchar;
COUNT(*)
----------
10000000
SQL>

 

 

Oracle闪回技术详解 闪回技术是Oracle备份恢复机制的一部分,主要解决逻辑错误的恢复问题,无法解决物理损坏造成的故障,是一种非常实用的技术。 阅读详情

相关推荐

解决Oracle闪回区存储空间耗尽问题的方法

在Oracle数据库中,闪回区是一种特殊的存储区域,用于支持数据库闪回功能。本文将介绍解决Oracle闪回区存储空间耗尽问题的方法,并提供相应的源代码示例。请注意,以上的解决方案和命令可能需要在具体的情况下进行调整。闪回区的过期文件会占用存储空间,因此定期清理这些过期文件也是解决问题的一种方法。可以通过增加闪回区文件的保留时间来减少存储空间的消耗。如果不需要使用闪回功能,可以考虑禁用闪回区,从而释放存储空间。可以通过增加闪回区的存储空间来解决空间耗尽的问题。增加闪回区文件的保留时间。清理闪回区的过期文件。

MbfrDeveloper的博客 543

实验八 创建特殊表空间和闪回技术

创建第6个特殊表空间(OMF机制),要求如下: 1)⑥~创建第1个特殊表空间: 2)⑥~--- 表空间信息: 3)⑥~------- 表空间名命名为“TSSD_AAG”, 4)⑥~------- 数据文件数设置为“只能有一个”, 5)⑥~------- 存储内容为“还原段”, 6)⑥~------- 表空间状态保持为“在线”, 7)⑥~------- 还原保留保证设置为“是”; 8)⑥~--- 文件信息: 9)⑥~------- 存放位置F:\ORACLE\DT74700...

一指流沙的博客 828

IPD流程中CBB管理的5个致命误区,第3个坑了80%的团队

本文深入剖析了IPD流程中CBB管理的五个致命误区,尤其指出缺乏有效的度量与激励机制是影响80%团队的核心陷阱。文章强调CBB的核心在于前瞻性设计,而非简单归档,并需平衡通用性与产品竞争力,同时建立持续运营机制,确保CBB与市场需求对齐,从而真正实现缩短开发周期、降低成本的目标。

weixin_29234423的博客 569

oracle 闪回 多长时间,Oracle闪回

select t.NAME,t.CURRENT_SCN,t.FLASHBACK_ON From v$databaset;--闪回设置--mount状态开启flashbackalter database flashback on;--闪回时间1440分钟 24小时,flash_recovery_area最好是当前数据库大小的10%alter system set db_flashback_reten...

weixin_30969479的博客 2215

手把手教你为智能手表DIY一个离线导航:LVGL + SD卡地图实战

本文详细介绍了如何为智能手表DIY一个离线导航系统,结合LVGL图形库和SD卡地图数据。从硬件选型、地图数据处理到LVGL地图引擎实现,提供了完整的实战指南,特别适合户外运动爱好者和嵌入式开发者。文章还分享了功耗优化、性能提升等实用技巧,帮助读者打造高效的离线导航解决方案。

weixin_42570484的博客 206

Flutter蓝牙开发实战:flutter_blue_plus核心功能与实现原理剖析

本文深入剖析了Flutter蓝牙开发插件flutter_blue_plus的核心功能与实现原理。文章从源码解析入手,详细讲解了蓝牙状态管理、设备扫描、GATT连接、服务发现以及数据读写等关键流程的实现机制,并分享了实战中的性能调优与常见问题解决方案,帮助开发者高效构建跨平台蓝牙应用。

weixin_29014237的博客 443

rac管理 sqlserver_Oracle RAC基本管理

1、启动和关闭实例单实例Oracle可以在系统启动时自动启动。在RAC环境中,需要确保在实例启动前启动了集群软件。从Oracle Database 10g R1开始,DBCA将数据库实例配置为在系统启动时由“集群就绪服务”(CRS)自动启动。2、使用srvctl启动/停止实例启动/关闭数据库名为prod的实例:srvctl start database -d prodsrvctl stop dat...

weixin_33187773的博客 412

LAMMPS in文件详解:从零开始手把手教你配置金属分子动力学模拟

本文详细解析了LAMMPS in文件的配置方法,手把手教你完成金属分子动力学模拟的全流程。从软件环境准备、势函数选择,到使用Materials Studio构建模型、编写in文件进行能量最小化与系统弛豫,再到实施单轴拉伸生产模拟并提取应力应变数据,最后通过Python和OVITO进行结果分析与可视化,提供了完整的实战指南和常见问题排查技巧。

weixin_28475533的博客 528

Oracle 还原表空间创建与数据库闪回操作

1、以管理员身份运行cmd 2、启动监听程序 3、启动数据库服务 4、以sysdba身份登录 5、查看数据库名 6、标准块大小4KB 7、查看db_create_file_dest 和db_cache_size 8、查看初始参数undo_management 为自动管理 使用还原表空间TBU_V 9、创建表空间TBU_WO 10、还原表空间TBU_WO 不是大文件 还原保留保证:否 11、数据文件大小:140M 使用自动扩展 12、自动扩展每次150块 最大520MB 13、创建还原

qq_41979507的博客 455

Opencv4.5.1 微信二维码识别功能 QRCode 编译与使用 C++

部分参考:https://mp.weixin.qq.com/s/2GZAJAUPHTXFOKDRv-D21Q 一、下载源码 https://github.com/opencv 二、源码编译 ① 在cmake中添加源码编译路径和生成路径,第一次点击configure。 ② 添加contrib路径 第一次configure后,找到OPENCV_EXTRA_MODULES_PATH,将contrib路径添加进来,注意要具体到modules/,继续configure。 ..

zaibeijixing的专栏 1万+

手把手教你学Simulink——基于Simulink的隔离型DC-DC全桥变换器移相控制建模示例

本文详细介绍了基于Simulink的全桥移相变换器(PSFB)建模与控制方法。首先分析了全桥移相拓扑在大功率应用中的优势,包括ZVS实现、高频化和小型化特点。随后给出了具体设计参数和移相控制策略,采用电压外环+移相角内环的双闭环控制架构。文章重点演示了Simulink建模步骤,包括主电路搭建、移相PWM生成和PI控制器设计,并通过满载稳态、负载阶跃和轻载测试三种场景验证了系统性能。最后总结了工程实践要点,提出自适应控制等扩展方向,强调移相控制通过精准时间管理实现高效能量转换的核心价值。

MHD0815的博客 261

oracle 11g归档,Oracle 11g 闪回归档的简单测试

Oracle 11g里面的新特性闪回归档,为历史数据的定制查询提供了一种可能。抽时间学习了一下这个特性,发现还是比较清晰易用。如果使用得当还是很不错的一个特性。我们来简单模拟一个例子来看看。首先需要创建独立的表空间,属性需要为segment space management auto,因为默认属性就是如此,所以我们简化语句。SQL> create tablespace fbarch data...

weixin_42107165的博客 185

YOLOv13保姆级教程+AKConv模块:可变形卷积+自适应核优化,mAP提升3.23%,召回率&mAP50~95显著提升(论文涨点模块已验证)

本文介绍了一种改进的YOLOv13-AKConv模型,通过引入AKConv模块显著提升了目标检测性能。实验结果表明,优化后的模型(绿色曲线)相比原模型(蓝色曲线)在mAP指标上提升了3.23个点,同时召回率、mAP50-95等指标均有明显提升。作者详细阐述了模型移植过程,包括创建yolov13-AKConv.yaml配置文件,修改tasks.py和modules/init.py文件,以及实现AKConv模块的核心代码。该模块采用可变形卷积思想,通过动态生成采样点位置来增强特征提取能力,并集成了BN和SiLU

FJN110的博客 2611

ORACLE闪回----闪回查询flashback-query

flashback分类: 1)flashback drop 2)flashback query 3)flashback data archive 4)flashback table 5)flashback version query 6)flashback transaction 7)flashback database flashback query 闪回查询应用 DML的误操作: 应用体系内容:UNDO表空间和UNDO_RETENT...

qq_33505270的博客 437

YOLO11多个点组合创新:GC10-DET缺陷检测 | DCNv4结合SPPF+11Detect创新性结合

DCNv4结合SPPF+11Detect创新性结合,原始mAP50为0.633 提升至0.651

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1290

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

闪回和drop原 undo tbs的一点分析

Flashback闪回,表级闪回是由undo回滚段作支撑的(表的结构不能改变,不能alter,truncate等ddl操作),而10g的闪回drop的表是由于表空间的虚拟回收站来闪回的,被删除的表只是被重命名而已,在空间足够情况...

117

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

闪回归档:

闪回归档: 一:什么是闪回数据归档? 闪回数据归档是一个新的数据库对象,其中保留一个或多个表的历史数据。并具有自己的数据存储保留和清洗策略。数据库将buffer cache中的原始数据写到undo表空间中作为undo数据,11g中一个新的后台进程叫FBDA将收集和写这些原始数据到闪回数据归档区用于另外创建一份所有表数据的历史。为了启用闪回归档,必须用flashback data arc

wll的专栏 622

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Flashback Query、Flashback Table(快速闪回查询、快速闪回表)

Flashback Query闪回查询  flashback query是基于undo表空间的闪回,与之相关的参数如下: SQL> show parameter undo NAME                                 TYPE        VALUE ------------------------------------ ----------- ----...

weixin_33885676的博客 83

表闪回

闪回表特性:闪回表是对闪回查询的增强。实现表的闪回,需要使用到与撤销表空间相关的undo信息,通过show parameter undo命令可以了解这些信息。用户对表数据的修改操作,都记录在撤销表空间中,这为表的闪回提供了数据恢复的基础。例如,某个修改操作在提交后被记录在撤销表空间中,保留时间为900秒,用户可以在这900秒的时间内对表进行闪回操作,从而将表中的数据恢复到修改...

weixin_33817333的博客 74

OCP-1Z0-053-V12.02-678题

678.Which are the two prerequisites before setting up Flashback Data Archive? (Choose two.) A.Flash recovery area must be defined B.Undo retention guarantee must be enabled. C.Database must be runn...

836811384 217

Oracle 闪回特性(FLASHBACK DATABASE)

--===================================== -- Oracle 闪回特性(FLASHBACK DATABASE) --=====================================       闪回技术通常用于快速简单恢复数据库中出现的认为误操作等逻辑错误,从闪回的方式可以分为基于数据库级别闪回、表级别闪回、事务 级别闪回,根据闪回对数据的

240

[Oracle OCP 052-2-1]UNDO概述

undo文件 [root@db01 ~]# cd /opt/oracle/oradata/orcl [root@db01 orcl]# ll total 1644776 -rw-r-----. 1 oracle oinstall 9748480 Jun 26 21:34 con01 -rw-r--r--. 1 oracle oinstall 5787 Jun 26 21:18 con...

weixin_42161670的博客 233

oracle闪回查询

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

weixin_30667301的博客 62

Oracle:闪回,闪回表,闪回删除,闪回版本查询,闪回事务查询

SQL> --SCN(系统改变号) sysdate的对应关系 SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),timestamp_to_scn(sysdate) from dual; TO_CHAR(SYSDATE,'YY TIMESTAMP_TO_SCN(SYSDATE)

涂作权的博客 1407
上一篇: 传输表空间学习实例
下一篇: Oracle9i升级到oracle10g
常飞梦
常飞梦 领域专家: 数据库技术领域 领域专家: 数据库技术领域
博客等级 码龄21年 403粉丝 314原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值