linux利用文件句柄恢复oracle数据

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

linux利用文件句柄恢复数据

实用于数据刚刚删除,db依然是running状态,文件句柄还没有释放,并且数据文件所在磁盘未进行大文件写入即磁盘上的数据还没有被擦写

实验准备:
模拟数据文件删除

SQL> select open_mode from v$database;

OPEN_MODE
--------------------
READ WRITE
SQL> set line 200
SQL> col name for a60
SQL> select FILE#,STATUS,TS#,NAME from v$datafile;

     FILE# STATUS         TS# NAME
---------- ------- ---------- ------------------------------------------------------------
         1 SYSTEM           0 /oracle/app/oracle/oradata/orcl/system01.dbf
         2 ONLINE           1 /oracle/app/oracle/oradata/orcl/sysaux01.dbf
         3 ONLINE           2 /oracle/app/oracle/oradata/orcl/undotbs01.dbf
         4 ONLINE           4 /oracle/app/oracle/oradata/orcl/users01.dbf
         5 ONLINE           6 /oracle/app/oracle/oradata/orcl/example01.dbf

SQL> select TABLESPACE_NAME,STATUS from dba_tablespaces;

TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                         ONLINE
SYSAUX                         ONLINE
UNDOTBS1                       ONLINE
TEMP                           ONLINE
USERS                          ONLINE
EXAMPLE                        ONLINE

6 rows selected.

删除user
SQL> host rm -rf /oracle/app/oracle/oradata/orcl/users01.dbf

数据文件删除后,db状态需要是运行状态,否则文件句柄释放,无法使用该方法恢复,若磁盘已经多次擦写也可能无法恢复
查看db状态

SQL> select open_mode from v$database;

OPEN_MODE
--------------------
READ WRITE

SQL> 

SQL> select FILE#,STATUS,TS#,NAME from v$datafile;

     FILE# STATUS         TS# NAME
---------- ------- ---------- ------------------------------------------------------------
         1 SYSTEM           0 /oracle/app/oracle/oradata/orcl/system01.dbf
         2 ONLINE           1 /oracle/app/oracle/oradata/orcl/sysaux01.dbf
         3 ONLINE           2 /oracle/app/oracle/oradata/orcl/undotbs01.dbf
         4 ONLINE           4 /oracle/app/oracle/oradata/orcl/users01.dbf
         5 ONLINE           6 /oracle/app/oracle/oradata/orcl/example01.dbf
SQL> select TABLESPACE_NAME,STATUS from dba_tablespaces;

TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                         ONLINE
SYSAUX                         ONLINE
UNDOTBS1                       ONLINE
TEMP                           ONLINE
USERS                          ONLINE
EXAMPLE                        ONLINE

6 rows selected.

对比之前的信息发现,db仍然在运行,并且数据文件和表空间的状态都是online的状态

创建一个表放入users表空间,看看是否能够执行成功

SQL> create table testfile tablespace users as select * from dba_tablespaces;
create table testfile tablespace users as select * from dba_tablespaces
                                                        *
ERROR at line 1:
ORA-01116: error in opening database file 4
ORA-01110: data file 4: '/oracle/app/oracle/oradata/orcl/users01.dbf'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3

提示找不到/oracle/app/oracle/oradata/orcl/users01.dbf数据文件,说明故障模拟成功

尝试恢复,当然这是不可能直接恢复的,或者使用有恢复目录

SQL> alte
oracle数据库之丢失数据文件如何恢复 1.先进行备份 [oracle@oracle ~]$ rman target / RMAN> backup database; RMAN> list backup; 2.进入数据库,改为归档模式 [oracle@oracle oracle]$ sqlplus / as sysdba SQL>startup mount; SQL> alter database archivelog;数据库已更改。 SQL> archive log list; 进入rman查 阅读详情

相关推荐

使用文件句柄方式恢复误删除的Oracle数据文件

环境说明: 操作系统:Linux 数据库版本:11.2.0.4begin~ 创建表空间test_tb SQL> create tablespace test_tb datafile '/u01/app/oracle/oradata/PROD/test.dbf' size 50M;Tablespace created. 创建用户test SQL> create user test identifi

keepdba的博客 1539

oracle常见数据文件恢复方法

1、基于linux操作系统文件恢复 条件:1、误强制删除linux下的数据文件(rm -rf)。2、未重启数据库或操作系统。3、数据库是归档模式 恢复原理:句柄恢复文件--因为我们的操作系统是linux,当数据文件从操作系统级别被rm掉,但之前打开该文件的进程仍然持有相应的文件句柄,所以指向的文件仍然可以读写,并且该文件文件描述符可以从/proc目录中获得。 ...

data eudemon 3234

oracle句柄,Oracle使用句柄实现特定场景的无备份恢复

在dba的工作中,备份是一切工作的基在dba的工作中,备份是一切工作的基础。如果没有备份,本来很简单的恢复工作也会难上加难,如果业务数据要求很高,造成数据的丢失或者损坏,就是重大事故了。使用rman备份或者做一个完整的系统级备份也是很重要的,如果在特定的场景下,没有备份,如果还能恢复,那就太幸运了。当数据库中的某个数据文件误删的时候,如果数据库还没有重启的时候,还是能够做一些工作的。因为文件对应的...

weixin_42551967的博客 275

rm -rf误删Oracle数据恢复---惜分飞

有客户把虚拟化环境中装有oracle数据库的linux操作系统,由于操作失误在/下面执行了rm -rf *,导致所有文件被删除,系统无法启动.客户希望要求恢复出其中的Oracle数据库.由于是虚拟化环境,然后客户直接从虚拟化平台下载下来磁盘文件,通过工具加载和分析确认是一个xfs的文件系统。1. 尝试恢复oracle的control01.ctl文件,然后通过该文件尝试分析其他数据文件位置,运气不错该文件恢复出来是好的,直接加载到新库查询v$datafile,分析出来所有数据文件信息。

727

Linux环境下利用句柄恢复Oracle误删除的数据文件

在误删除Oracle数据文件后,如果未关闭数据库,文件句柄还没有释放,且被删除的数据文件占用的磁盘块未被复写,则可以利用句柄的方式来恢复数据文件。下面模拟恢复过程。 (一)环境 OS版本:redhat 6.6 数据库版本:Oracle 11.2.0.1 (二)恢复操作 首先,模拟误删除数据库的数据文件。这里删除表空间TBS04下面的数据文件tbs04.bdf:...

weixin_30895723的博客 200

oracle物理文件删除如何恢复,LinuxOracle 数据文件被物理误删除的恢复

#加深对Linux句柄的理解/紧急情况下Oracle的快速恢复不同于从Oracle中drop掉数据文件,在某些情况下,可能会遇到数据库在运行时数据文件在操作系统级别被删除,而此时Oracle实例并未崩溃,仍然处于open状态。此时就要求尽量在最小的影响下最高效率地完成恢复。现将恢复过程整理出来,以备不时之需。<>模拟删除SYS@icsdb >select name from v$...

weixin_30565101的博客 324

使用linux文件句柄恢复误删除的Oracle数据文件

测试环境:OEL+Oracle DB 11.2.0.1   首先查看当前的数据文件数据文件状态: SQL> select file_id,tablespace_name,file_name,status from dba_data_files;      FILE_ID TABLESPACE FILE_NAME                              STATUS

跳动的数据 3137

oracle数据文件恢复 步骤

如需要对多个相互有主外键约束的表进行恢复时,如果使用AS OF TIMESTAMP的方式,可能会由于时间点不统一的缘故造成数据选择或插入失败,通过AS OF SCN方式则能够确保记录处理的时间点一致。1、确定删除数据的时间(在删除数据之前的时间就行,不过最好是删除数据的时间点)。,当数据文件从操作系统级别被rm掉,但之前打开该文件的进程仍然持有相应的文件句柄,所以指向的文件仍然可以读写,并且该文件文件描述符可以从/proc目录中获得。条件:1、在删除数据后还没做大量的操作,数据没有被覆盖。

2301_77783312的博客 781

oracle 数据文件recover,Oracle数据库意外删除数据文件恢复(转载)

今天有客户的数据库意外被删除了整个目录中的数据文件,操作系统级别的删除,然而幸运的是这个数据库没有崩溃,仍然处于open状态的时候,客户就发现了问题,求助到我们,最终完整地恢复了所有数据文件。在Linux下大致重新演示一下恢复的过程,恢复的步骤与数据库版本没有太大关系,与操作系统的不同会有所不同。1. 在数据库open的时候,直接删除users表空间中的数据文件。SQL> select na...

weixin_39588911的博客 1088

测试linux删除Oracle文件,使用文件句柄恢复

复制数据文件前需要停止业务,复制后产生的新数据不录入数据库。--通过lgwr进程查看,比dbw多出redo。还是显示delete,未使用复制文件。插入数据测试复制之前是否会丢数据。插入数据测试复制后是否会丢数据。---通过dbw进程查看。删除Oracle文件。复制删除文件回原位置。

whb234174124的博客 971

【转载】linux中误删除oracle数据文件恢复操作

转自:http://space.itpub.net/?uid-26015009-action-viewspace-itemid-763506 下面来模拟误删除users表空中的数据文件users01.dbf [root@jingyong jingyong]# ls control01.ctl example01_bak.dbf jy01.dbf redo02.log sysaux01

jinhong_lu的博客 432

LinuxOracle 数据文件被物理误删除的恢复

#加深对Linux句柄的理解/紧急情况下Oracle的快速恢复不同于从Oracle中drop掉数据文件,在某些情况下,可能会遇到数据库在运行时数据文件在操作系统级别被删除,而此时Oracle实例并未崩溃,仍然处于open状态。此时就要求尽量在最小的影响下最高效率地完成恢复。现将恢复过程整理出来,以备不时之需。<<过程模拟>><STEP 1>...

weixin_34233679的博客 231

从操作系统rm数据文件后,利用句柄与rman恢复的过程。(已验证)

以下操作代码的流程是配的,但是相应的文件名,啥的 必须改动。 故障现象 数据文件被误删除 具体情况 接到反馈说,数据文件data20120512.dbf被误删除,需要恢复 数据库提示 ERROR at line 1:ORA-01116: error in opening database file 16ORA-01110: data file 16:‘/u01/app/oracle...

weixin_34228387的博客 66

linux恢复误删除oracle数据文件

场景描述:操作系统级别的删除数据文件(/oracle/oradata/ora10g/system1.dbf),而且数据库没有崩溃,仍然处于open状态。 原理:在Linux操作系统中,如果文件从操作系统级别被删除掉,之前打开该文件的进程仍然持有相应的文件句柄,所指向的文件仍然可以读写,并且该文件文件描述符可以从/proc目录中获得。如果关闭数据库,则句柄就会丢失。 恢复步骤如...

oradbm的博客 575

LinuxOracle 数据文件被物理误删除的恢复

不同于从Oracle中drop掉数据文件,在某些情况下,可能会遇到数据库在运行时数据文件在操作系统级别被删除,而此时Oracle实例并未崩溃,仍然处于open状态。此时就要求尽量在最小的影响下最高效率地完成恢复。现将恢复过程整理出来,以备不时之需。 以下是在Linux下大致演示一下恢复的过程,恢复的步骤与数据库版本没有太大关系,与操作系统的不同会有所不同。 > 模拟删除 SQL>

IT小灰的笔记 849
上一篇: shell变量计算长度及加减运算方法总结
下一篇: mongodb用户管理1
comprel
博客等级 码龄10年 70粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值