我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Oracle数据文件物理删除后的恢复

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Oracle数据文件物理删除后的恢复

做系统管理的都是这样,难免会误删文件,某天要是把某个Oracle数据文件删除,那该如何恢复呢?(这里数据库是OPEN的,并且未关闭)


  1. 建立测试表空间

  2. 创建测试用户

  3. 插入测试数据

  4. 删除数据文件

  5. 恢复数据库文件


  1. 建立测试表空间

SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/opt/oracle/oradata/member/system01.dbf
/opt/oracle/oradata/member/sysaux01.dbf
/opt/oracle/oradata/member/undotbs01.dbf
/opt/oracle/oradata/member/users01.dbf
SQL> create tablespace test datafile '/opt/oracle/oradata/member/test01.dbf' size 10m;
Tablespace created.
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/opt/oracle/oradata/member/system01.dbf
/opt/oracle/oradata/member/sysaux01.dbf
/opt/oracle/oradata/member/undotbs01.dbf
/opt/oracle/oradata/member/users01.dbf
/opt/oracle/oradata/member/test01.dbf

2.创建测试账户

SQL> create user test identified by test default tablespace test;
SQL> grant connect,resource to test;

3.插入测试数据

SQL> conn test/test
SQL> create table t1(id int);
SQL> insert into t1 values(1);
SQL> select * from t1;

        ID
----------
         1

4.删除数据文件

[oracle@db2 ~]$ rm -f /opt/oracle/oradata/member/test01.dbf
[oracle@db2 ~]$ sqlplus test/test
SQL> create table t2 as select * from t1;
create table t2 as select * from t1
                                 *
ERROR at line 1:
ORA-01116: error in opening database file 5
ORA-01110: data file 5: '/opt/oracle/oradata/member/test01.dbf'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

SQL> select table_name,tablespace_name from user_tables;
TABLE_NAME                     TABLESPACE_NAME
------------------------------ ------------------------------
T1                             TEST

数据文件被删除了,这怎么办呢?这个时候千万别重启数据库,否则数据就丢失了


5.数据文件恢复

[oracle@db2 ~]$ ps -ef |grep dbw0
oracle    3309     1  0 12:07 ?        00:00:00 ora_dbw0_member
oracle    6217  5105  0 15:29 pts/0    00:00:00 grep dbw0
#找到ora_dbw0_SID的进程号3309
[oracle@db2 ~]$ cd /proc/3309/fd
#以上3309就是进程号,然后执行ls -al查看文件的链接

Oracle数据文件物理删除后的恢复

可以看到文件27就是被删除的文件

[oracle@db2 fd]$ cp 27 /opt/oracle/oradata/member/test01.dbf


查看test表空间状态

SQL> select name,status from v$datafile;
NAME                      STATUS
----------------------------------------   -------
/opt/oracle/oradata/member/system01.dbf    SYSTEM
/opt/oracle/oradata/member/sysaux01.dbf    ONLINE
/opt/oracle/oradata/member/undotbs01.dbf    ONLINE
/opt/oracle/oradata/member/users01.dbf    ONLINE
/opt/oracle/oradata/member/test01.dbf    ONLINE

下线test01表文件

SQL> alter database datafile '/opt/oracle/oradata/member/test01.dbf' offline;
SQL> recover datafile '/opt/oracle/oradata/member/test01.dbf';
Media recovery complete.
SQL> alter database datafile '/opt/oracle/oradata/member/test01.dbf' online;
Database altered.

#以上就成功恢复了,若是出现

SQL> recover datafile '/opt/oracle/oradata/member/test01.dbf';
ORA-00283: recovery session canceled due to errors
ORA-01110: data file 5: '/opt/oracle/oradata/member/test01.dbf'
ORA-01157: cannot identify/lock data file 5 - see DBWR trace file
ORA-01110: data file 5: '/opt/oracle/oradata/member/test01.dbf'

则有可能是/opt/oracle/oradata/member/test01.dbf文件的权限问题引起,在root用户下

[root@db2 ~]# chown -R oracle.oinstall /opt/oracle/oradata/member/test01.dbf 
再recover datafile '/opt/oracle/oradata/member/test01.dbf'



实验完成后,删除测试用户及测试表空间

SQL> drop user test cascade;
SQL> drop tablespace test INCLUDING CONTENTS AND DATAFILES;




免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Oracle数据文件物理删除后的恢复

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

oracle删除数据后怎么恢复

oracle 数据恢复:删除后如何恢复?如果在事务过程中删除数据,可以通过回滚段恢复数据。如果启用了闪回区域,可以通过闪回查询恢复数据。如果定期备份数据库,可以通过备份恢复数据。Oracle 数据恢复:删除后如何恢复直接回答:删除 Or
oracle删除数据后怎么恢复
2024-04-18

oracle数据文件误删除怎么恢复

如果Oracle数据文件被误删除,可以尝试以下方法来恢复数据文件:使用Oracle RMAN恢复工具:Oracle Recovery Manager(RMAN)是Oracle提供的用于备份和恢复数据库的工具。您可以使用RMAN来恢复误删除的
oracle数据文件误删除怎么恢复
2024-04-09

mysql怎么恢复删除的数据文件

当 mysql 数据文件误删,恢复方法依情况而定:二进制日志启用的情况下,可通过 mysqlbinlog 命令检索 sql 语句。存在备份的情况下,可以使用恢复工具恢复文件。若无备份,可尝试使用数据字典恢复文件:查询 innodb_tabl
mysql怎么恢复删除的数据文件
2024-04-14

oracle删除的数据如何恢复

如果使用DELETE语句删除了数据,Oracle数据库是没有内置的恢复机制来撤销删除操作的。因此,一旦数据被删除,恢复数据的唯一方法是使用备份。以下是一些可能的方法来恢复已删除的数据:1. 使用备份:如果你有数据库的备份,可以从备份中还原被
2023-08-31

oracle怎么恢复删除的数据

要恢复删除的数据,可以通过以下步骤使用Oracle的备份和恢复功能:检查备份:首先要确认是否有可用的数据库备份,备份通常会包含被删除的数据。恢复数据库:使用Oracle的恢复工具,如RMAN(Recovery Manager)来恢复数据库到
oracle怎么恢复删除的数据
2024-04-22

Oracle恢复删除数据的方法

Oracle数据库提供了以下几种方法来恢复删除的数据:1. 通过闪回技术(Flashback Technology):Oracle提供了几种闪回技术,如闪回查询、闪回版本查询、闪回事务查询等,可以使用这些技术来查找和还原被删除的数据。2.
2023-09-01

oracle删除数据如何恢复

oracle 中已删除的数据可通过以下方式恢复:撤销操作,适用于尚未提交的事务;闪回查询,允许查看指定时间点的数据状态;闪回表,恢复整个表至指定时间点;数据泵导入,需要之前的导出备份;手动数据修复,复杂且耗时,需要专业知识。Oracle 数
oracle删除数据如何恢复
2024-04-19

mysql怎么恢复删除的数据和文件

要恢复已删除的 mysql 数据和文件,可从备份中恢复或使用数据恢复软件。方法 1:从备份恢复停止 mysql 服务。复制备份文件到数据库目录。启动 mysql 服务。使用命令从备份文件中恢复数据库。方法 2:使用数据恢复软件安装数据恢复软
mysql怎么恢复删除的数据和文件
2024-04-14

oracle数据误删除怎么恢复

oracle 提供了多种数据误删恢复方法:从回收站中恢复(30 天内可用);使用闪回查询(特定时间点恢复);从备份中恢复(备份需及时);使用第三方工具(更高级)。预防措施:定期备份、使用回收站、启用审计跟踪、测试恢复计划。Oracle 数据
oracle数据误删除怎么恢复
2024-04-18

oracle delete删除的数据怎么恢复

通过以下方法可恢复 oracle 中被 delete 删除的数据:从备份恢复:前提是有最新的备份;使用撤销表空间:撤销表空间启用了回滚段保留;使用闪回查询:查看删除前的数据并导出到新表;使用日志挖掘:解析日志文件恢复数据;使用第三方工具:使
oracle delete删除的数据怎么恢复
2024-04-18

oracle怎么把删除的数据恢复

oracle中恢复已删除数据的步骤:查看回收站:检查回收站中是否包含已删除的数据。回滚操作:仅适用于事务数据库,可撤消删除操作。恢复表区:在非事务模式或回收站未启用时使用,但仅适用于数据损坏或表区损坏的情况。闪回表操作:创建过去某一特定时间
oracle怎么把删除的数据恢复
2024-04-18

oracle数据库怎么恢复删除的数据

启用闪回查询,然后使用恢复点目标 (rpo) 或闪回区域查询表恢复已删除的数据:1. 启用闪回查询以指定数据库保留已提交事务时所创建数据的时长。2. 使用 rpo 根据特定时间点恢复数据,或使用闪回区域查询表查询存储已删除数据历史记录的特殊
oracle数据库怎么恢复删除的数据
2024-04-18

编程热搜

目录