惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

腾讯CDC
Microsoft Azure Blog
Microsoft Azure Blog
L
LangChain Blog
Y
Y Combinator Blog
Microsoft Security Blog
Microsoft Security Blog
宝玉的分享
宝玉的分享
B
Blog RSS Feed
MongoDB | Blog
MongoDB | Blog
Jina AI
Jina AI
D
Docker
B
Blog
Engineering at Meta
Engineering at Meta
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
I
InfoQ
G
Google Developers Blog
博客园 - Franky
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
The GitHub Blog
The GitHub Blog
T
The Blog of Author Tim Ferriss
大猫的无限游戏
大猫的无限游戏
阮一峰的网络日志
阮一峰的网络日志
U
Unit 42

博客园 - 深海蓝精灵

Linux-Nginx同一端口同时支持HTTP、HTTPS协议 Linux-arm离线Tomcat安装solr及国产数据库配置 Linux-2台服务器-Redis-集群模式安装配置 Linux 系统架构:aarch64,docker、Docker-compose,包下载安装配置 Linux aarch64 架构离线 Docker-compose 搭建 Nginx+Keepalived 双机热备(高可用集群) Linux 部署nacos3.1.2,修改Console默认8080端口,修改为8081的解决方案 CloudBeaver Community,web界面,查询表字段长度、及存储过程信息 Linux 服务器 mac 地址查询命令 Linux-LVM 方式挂载大于3T磁盘,详细操作过程 BCLinux,镜像安装GitLab社区版 v18.5.1 Bcliux-docker-nacos2.2.0升级至2.2.3版本 Linux-查询全部密码过期用户 BcLinux-Redis-集群(cluster)安装配置 Bclinux离线安装PostgreSQL10.23+PostGIS2.5编译安装配置 Oracle-失效链接清理 Linux-shell脚本链接Oracle执行查询 Linux系统中,修改密码永不过期 Oracle中replace函数使用简介 ORA-01652: 无法通过 128 (在表空间 TEMP 中) 扩展 temp 段 BcLinux-Redis-集群(cluster)模式安装配置 Oracle-修改字段类型方法总结 Bclinux系统安装MongoDB Linux-下docker和主机之间的文件拷贝 解决:tcpdump -w xxxxx.cap 提示 Permission denied
Oracle删除表数据恢复方法
深海蓝精灵 · 2025-03-21 · via 博客园 - 深海蓝精灵

在Oracle中,如果已经使用DROP TABLE命令删除了表,表及其数据将不再存在于数据库中。不过,可以通过以下几种方式尝试恢复数据:

1. 使用闪回技术(Flashback Drop)
前提条件:表所在的表空间必须启用了回收站(Recycle Bin),且表未被PURGE永久删除。
步骤:
检查回收站中是否有被删除的表:
SELECT object_name, original_name, type, droptime
FROM recyclebin
WHERE original_name = 'YOUR_TABLE_NAME';
如果表在回收站中,可以使用FLASHBACK TABLE命令恢复:
FLASHBACK TABLE YOUR_TABLE_NAME TO BEFORE DROP;
恢复后,表及其数据将恢复到删除前的状态。

2. 使用数据库备份恢复
前提条件:需要有数据库的备份(如RMAN备份、数据泵导出等)。
步骤:
如果表是通过DROP TABLE删除的,并且没有启用回收站或表已被PURGE,可以通过数据库备份恢复。
使用RMAN或数据泵等工具从备份中恢复表数据。
如果是逻辑备份(如数据泵导出),可以使用impdp工具导入表数据:
impdp username/password TABLES=YOUR_TABLE_NAME DIRECTORY=your_directory DUMPFILE=your_dumpfile.dmp

3. 使用闪回查询(Flashback Query)
前提条件:需要有足够的UNDO数据,且删除操作发生的时间在UNDO保留期内。
步骤:
如果表已被删除,但删除时间较短,可以通过闪回查询恢复数据:
SELECT * FROM YOUR_TABLE_NAME AS OF TIMESTAMP TO_TIMESTAMP('YYYY-MM-DD HH:MI:SS', '删除前的时间');
将查询结果插入到新表中:
CREATE TABLE YOUR_TABLE_NAME_RESTORED AS
SELECT * FROM YOUR_TABLE_NAME AS OF TIMESTAMP TO_TIMESTAMP('YYYY-MM-DD HH:MI:SS', '删除前的时间');

4. 使用LogMiner工具
前提条件:需要有归档日志,并且日志中包含删除操作。
步骤:
使用LogMiner工具分析归档日志,找到删除操作前的数据。
提取相关数据并重新插入到表中。

5. 联系Oracle支持
如果以上方法都无法恢复数据,且数据非常重要,可以联系Oracle官方支持,尝试通过更高级的技术手段恢复数据。
注意事项:
及时操作:删除后尽快尝试恢复,避免数据被覆盖或清理。
备份策略:定期备份数据库,确保数据安全。
权限:恢复操作通常需要较高的数据库权限(如DBA权限)。
根据具体情况选择合适的方法,确保数据恢复的成功率。