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

  

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


<李>

建立测试表空间

<李>

创建测试用户

<李>

插入测试数据

<李>

删除数据文件

<李>

恢复数据库文件


<李>

建立测试表空间

完成,select  name 得到v $丢失;   的名字   --------------------------------------------------------------------------------/opt/oracle/oradata/会员/system01.dbf/opt/oracle/oradata/会员/sysaux01.dbf/opt/oracle/oradata/会员/undotbs01.dbf/opt/oracle/oradata/会员/users01.dbf   完成,create  tablespace  test  datafile  '/opt/oracle/oradata/会员/test01.dbf’, size  10米;   Tablespace 创建。   完成,select  name 得到v $丢失;   的名字   --------------------------------------------------------------------------------/opt/oracle/oradata/会员/system01.dbf/opt/oracle/oradata/会员/sysaux01.dbf/opt/oracle/oradata/会员/undotbs01.dbf/opt/oracle/oradata/会员/users01.dbf/opt/oracle/oradata/会员/test01.dbf

2。创建测试账户

完成,create  user  test  identified  by  test  default  tablespace 测试;   完成,grant 连接,resource 用测试;

3。插入测试数据

完成conn 测试/测试   完成,create  table  t1 (id  int);   完成,insert  into  t1 价值(1);   完成,select  *,得到t1;      ,,,,,,,ID   ----------   ,,,,,,,,1

4。删除数据文件

(oracle@db2  ~),美元rm  -f /opt/oracle/oradata/会员/test01.dbf   (oracle@db2  ~),美元sqlplus 测试/测试   完成,create  table  t2  as  select  *,得到t1;   create  table  t2  as  select  *,得到t1   ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,   ERROR  at  line  1:   ora - 01116: error 拷贝opening  database  file  5   ora - 01110: data  file  5:,“/opt/oracle/oradata/会员/test01.dbf”   ora - 27041: unable 用open 文件   错误:Linux-x86_64  2:, No  such  file 或是目录   Additional 信息:3      完成,select  table_name tablespace_name 得到user_tables;   TABLE_NAME ,,,,,,,,,,,,,,,,,,, TABLESPACE_NAME   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -,- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   T1 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,测试

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


5。数据文件恢复

(oracle@db2  ~),美元ps  -ef  | grep  dbw0   3309年oracle ,,,,,,,, 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 过程查看文件的链接

凹坠俏氖菸募锢砩境蟮幕指?

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

(oracle@db2  fd)美元,cp  27,/opt/Oracle/oradata/会员/test01。dbf


查看测试表空间状态

完成,select 名字,status 得到v $丢失;   NAME ,,,,,,,,,,,,,,,,,,,,,的地位   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -,,- - - - - - -/opt/oracle/oradata/会员/system01.dbf ,,系统/opt/oracle/oradata/会员/sysaux01.dbf ,,在线/opt/oracle/oradata/会员/undotbs01.dbf ,,在线/opt/oracle/oradata/会员/users01.dbf ,,在线/opt/oracle/oradata/会员/test01.dbf ,,,网上

下线test01表文件

完成,alter  database  datafile  '/opt/oracle/oradata/会员/test01.dbf’,离线;   完成,recover  datafile  '/opt/oracle/oradata/会员/test01.dbf”;   Media  recovery 完成。   null   null   null   null   null   null   null   null

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