Oracle数据恢复—Oracle数据库误删除的数据恢复方法探讨

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
简介: 删除Oracle数据库数据一般有以下2种方式:delete、drop或truncate。下面针对这2种删除oracle数据库数据的方式探讨一下oracle数据库数据恢复方法(不考虑全库备份和利用归档日志)。

删除Oracle数据库数据一般有以下2种方式:delete、drop或truncate。下面针对这2种删除oracle数据库数据的方式探讨一下oracle数据库数据恢复方法(不考虑全库备份和利用归档日志)。

1、delete误删除的数据恢复方法。
利用oracle提供的闪回方法进行恢复。如果在删除数据后还没做大量的操作(只要被删除数据的块没被覆写),就可以利用闪回直接找回删除的数据。
具体步骤为:
a、确定删除数据的时间(最好是删除数据的时间点)。
b、用以下语句找出删除的数据:select from 表名 as of timestamp to_timestamp('删除时间点','yyyy-mm-dd hh24:mi:ss')
c、把删除的数据重新插入原表:insert into 表名 (select
from 表名 as of timestamp to_timestamp('删除时间点','yyyy-mm-dd hh24:mi:ss'))
注意要保证主键不重复。
如果表结构没有发生改变,还可以直接使用闪回整个表的方式来恢复数据(表闪回要求用户必须要有flash any table权限。)。
具体步骤:
alter table 表名 enable row movement
flashback table 表名 to timestamp to_timestamp(删除时间点',' frombyte yyyy-mm-dd hh24:mi:ss')

2、drop误删除的数据恢复方法。
oracle在删除表时没有直接将表所占的块清空,只是对该表的数据块做了可以被覆写的标志。oracle将已删除的表的信息放到了一个虚拟容器“回收站”中,所以在块未被重新使用前还可以恢复。
具体步骤:
查询这个“回收站”或者查询user_table视图来查找已被删除的表:
select table_name,dropped from user_tables
select object_name,original_name,type,droptime from user_recyclebin
在以上信息中,表名都是被重命名过的,字段table_name或者object_name就是删除后在回收站中的存放表名。
如果还能记住表名,则可以用下面语句直接恢复:
flashback table 原表名 to before drop
如果记不住了,可以直接使用回收站的表名进行恢复,然后再重命名。参照下方语句:
flashback table "回收站中的表名(如:Bin$DSbdfd4rdfdfdfegdfsf==$0)" to before drop rename to 新表名
oracle的闪回功能除了以上基本功能外,还可以闪回整个数据库。
使用数据库闪回功能让数据库回到过去某一状态。语句如下:
SQL>alter database flashback on
SQL>flashback database to scn SCNNO
SQL>flashback database to timestamp to_timestamp('时间点','yyyy-mm-dd hh24:mi:ss')

总结:
oracle数据库虽然提供以上安全机制保证了误操作后可以恢复数据,但同时也出现另外一个问题:空间占用。drop表或者delete表数据后,空间不会自动回收。
对于一些确定不使用的表,删除后可以回收空间。删除后回收空间的方法:
1、采用truncate方式进行截断。
2、在drop时加上purge选项:drop table 表名 purge
该选项还有以下用途:
通过删除recyclebin区域来永久性删除表。
原始删除表emp:
drop table emp cascade constraints purge table emp
删除当前用户的回收站:
purge recyclebin
删除全体用户在回收站的数据:
purge dba_recyclebin

相关文章
|
7月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】Oracle数据库配置助手:DBCA
Oracle数据库配置助手(DBCA)是用于创建和配置Oracle数据库的工具,支持图形界面和静默执行模式。本文介绍了使用DBCA在Linux环境下创建数据库的完整步骤,包括选择数据库操作类型、配置存储与网络选项、设置管理密码等,并提供了界面截图与视频讲解,帮助用户快速掌握数据库创建流程。
591 93
|
6月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】使用NetManager创建Oracle数据库的监听器
Oracle NetManager是数据库网络配置工具,用于创建监听器、配置服务命名与网络连接,支持多数据库共享监听,确保客户端与服务器通信顺畅。
333 0
|
7月前
|
SQL 关系型数据库 MySQL
Mysql数据恢复—Mysql数据库delete删除后数据恢复案例
本地服务器,操作系统为windows server。服务器上部署mysql单实例,innodb引擎,独立表空间。未进行数据库备份,未开启binlog。 人为误操作使用Delete命令删除数据时未添加where子句,导致全表数据被删除。删除后未对该表进行任何操作。需要恢复误删除的数据。 在本案例中的mysql数据库未进行备份,也未开启binlog日志,无法直接还原数据库。
|
7月前
|
SQL Oracle 关系型数据库
Oracle数据库创建表空间和索引的SQL语法示例
以上SQL语法提供了一种标准方式去组织Oracle数据库内部结构,并且通过合理使用可以显著改善查询速度及整体性能。需要注意,在实际应用过程当中应该根据具体业务需求、系统资源状况以及预期目标去合理规划并调整参数设置以达到最佳效果。
466 8
|
8月前
|
存储 关系型数据库 MySQL
MySQL数据库中进行日期比较的多种方法介绍。
以上方法提供了灵活多样地处理和对比MySQL数据库中存储地不同格式地日子信息方式。根据实际需求选择适当方式能够有效执行所需操作并保证性能优化。
738 10
|
9月前
|
SQL Oracle 关系型数据库
比较MySQL和Oracle数据库系统,特别是在进行分页查询的方法上的不同
两者的性能差异将取决于数据量大小、索引优化、查询设计以及具体版本的数据库服务器。考虑硬件资源、数据库设计和具体需求对于实现优化的分页查询至关重要。开发者和数据库管理员需要根据自身使用的具体数据库系统版本和环境,选择最合适的分页机制,并进行必要的性能调优来满足应用需求。
422 11
|
9月前
|
Oracle 关系型数据库 数据库
数据库数据恢复—服务器异常断电导致Oracle数据库报错的数据恢复案例
Oracle数据库故障: 某公司一台服务器上部署Oracle数据库。服务器意外断电导致数据库报错,报错内容为“system01.dbf需要更多的恢复来保持一致性”。该Oracle数据库没有备份,仅有一些断断续续的归档日志。 Oracle数据库恢复流程: 1、检测数据库故障情况; 2、尝试挂起并修复数据库; 3、解析数据库文件; 4、导出并验证恢复的数据库文件。
|
Oracle 关系型数据库 索引
|
9月前
|
存储 Oracle 关系型数据库
服务器数据恢复—光纤存储上oracle数据库数据恢复案例
一台光纤服务器存储上有16块FC硬盘,上层部署了Oracle数据库。服务器存储前面板2个硬盘指示灯显示异常,存储映射到linux操作系统上的卷挂载不上,业务中断。 通过storage manager查看存储状态,发现逻辑卷状态失败。再查看物理磁盘状态,发现其中一块盘报告“警告”,硬盘指示灯显示异常的2块盘报告“失败”。 将当前存储的完整日志状态备份下来,解析备份出来的存储日志并获得了关于逻辑卷结构的部分信息。
|
9月前
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle RMAN的目录数据库
Oracle RMAN默认将备份元信息存储在控制文件中,但控制文件损坏或丢失会导致恢复失败,且备份增多会使控制文件无限增长。为解决这些问题,Oracle引入了RMAN目录数据库(Catalog Database),专门用于存储RMAN备份的元信息。使用目录数据库可提升备份管理效率,支持多数据库共享、长期备份历史记录存储,并可保存RMAN脚本。本文详细介绍了如何创建目录数据库、注册目标数据库及其操作步骤。
255 0

推荐镜像

更多