热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

误删Oracle数据文件的恢复方法

环境:数据库在Open的状态,然后rm-rfusers.dbf(删除users表空间),最后找回users.dbf文件。在回复的时候,回复的方法跟数据库的版本关系不大(因为是物理文件),只是跟操作系统有一定的关系,如:Red...SyntaxHighlighter.all();

环境:数据库在Open的状态,然后rm -rf users.dbf (删除users表空间),最后找回users.dbf文件。

在回复的时候,回复的方法跟数据库的版本关系不大(因为是物理文件),只是跟操作系统有一定的关系,如:Red hat Linux  , Solaris Linux 等等。

 

下面进行演示:

删除users表空间.

1、我们首先进入Sqlplus,然后执行SQL语句:


select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/prod/disk4/system01.dbf
/u01/app/oracle/oradata/prod/disk2/undotbs01.dbf
/u01/app/oracle/oradata/prod/disk5/sysaux01.dbf
/u01/app/oracle/oradata/prod/disk5/bigtbs01.dbf
/u01/app/oracle/oradata/prod/disk5/indx01.dbf
/u01/app/oracle/oradata/prod/disk2/users01.dbf
/u01/app/oracle/oradata/prod/disk3/oltp01.dbf
 
7 rows selected.
 
SQL> !rm /u01/app/oracle/oradata/prod/disk2/users01.dbf今天尝试了一下,在Linux下删除一个数据文件,然后进行回复。

\

 

 2、此时,users表空间已经被删除了,我们已经无法在users表空间上建立表了。

尝试在users表空间上建立名字为abcd123的表,已经没法建立了。


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

3、确认dbwr进程PID

通过命令,我们可以看到当前数据库实例的dbwr的PID。因为我同一台主机上有两个实例,故有2个。

一个为prod,另一个为oms。


$ ps -ef|grep dbw0|grep -v grep
oracle   11872     1  0 21:46 ?        00:00:00 ora_dbw0_prod
oracle   11951     1  0 21:47 ?        00:00:01 ora_dbw0_oms

\

4、因为dbwr会打开所有数据文件的句柄。所以可以进入proc目录进行查找,格式为:

cd /prod/PID/fd

此处,fd为文件描述符。


[oracle@prod fd]$ cd /proc/11872/fd
[oracle@prod fd]$ ls -l
total 30
lr-x------  1 oracle dba 64 May 14 22:47 0 -> /dev/null
lr-x------  1 oracle dba 64 May 14 22:47 1 -> /dev/null
lrwx------  1 oracle dba 64 May 14 22:47 10 -> /u01/app/oracle/product/10.2.0/db_1/rdbms/audit/ora_11859.aud
lr-x------  1 oracle dba 64 May 14 22:47 11 -> /dev/zero
lr-x------  1 oracle dba 64 May 14 22:47 12 -> /dev/zero
lr-x------  1 oracle dba 64 May 14 22:47 13 -> /u01/app/oracle/product/10.2.0/db_1/rdbms/mesg/oraus.msb
lrwx------  1 oracle dba 64 May 14 22:47 14 -> /u01/app/oracle/product/10.2.0/db_1/dbs/hc_prod.dat
lrwx------  1 oracle dba 64 May 14 22:47 15 -> /u01/app/oracle/product/10.2.0/db_1/dbs/lkPROD
lrwx------  1 oracle dba 64 May 14 22:47 16 -> /u01/app/oracle/oradata/prod/disk1/control01.ctl
lrwx------  1 oracle dba 64 May 14 22:47 17 -> /u01/app/oracle/oradata/prod/disk2/control02.ctl
lrwx------  1 oracle dba 64 May 14 22:47 18 -> /u01/app/oracle/oradata/prod/disk3/control03.ctl
lrwx------  1 oracle dba 64 May 14 22:47 19 -> /u01/app/oracle/oradata/prod/disk4/system01.dbf
lr-x------  1 oracle dba 64 May 14 22:47 2 -> /dev/null
lrwx------  1 oracle dba 64 May 14 22:47 20 -> /u01/app/oracle/oradata/prod/disk2/undotbs01.dbf
lrwx------  1 oracle dba 64 May 14 22:47 21 -> /u01/app/oracle/oradata/prod/disk5/sysaux01.dbf
lrwx------  1 oracle dba 64 May 14 22:47 22 -> /u01/app/oracle/oradata/prod/disk5/bigtbs01.dbf
lrwx------  1 oracle dba 64 May 14 22:47 23 -> /u01/app/oracle/oradata/prod/disk5/indx01.dbf
lrwx------  1 oracle dba 64 May 14 22:47 24 -> /u01/app/oracle/oradata/prod/disk2/users01.dbf (deleted)
lrwx------  1 oracle dba 64 May 14 22:47 25 -> /u01/app/oracle/oradata/prod/disk3/oltp01.dbf
lrwx------  1 oracle dba 64 May 14 22:47 26 -> /u01/app/oracle/oradata/prod/disk1/temp01.dbf
lrwx------  1 oracle dba 64 May 14 22:47 27 -> /u01/app/oracle/oradata/prod/disk3/lmtemp201.dbf
lrwx------  1 oracle dba 64 May 14 22:47 28 -> /u01/app/oracle/oradata/prod/disk4/lmtemp201.dbf
lr-x------  1 oracle dba 64 May 14 22:47 29 -> /u01/app/oracle/product/10.2.0/db_1/rdbms/mesg/oraus.msb
lr-x------  1 oracle dba 64 May 14 22:47 3 -> /dev/null
lr-x------  1 oracle dba 64 May 14 22:47 4 -> /dev/null
l-wx------  1 oracle dba 64 May 14 22:47 5 -> /u01/app/oracle/admin/udump/prod_ora_11859.trc
l-wx------  1 oracle dba 64 May 14 22:47 6 -> /u01/app/oracle/admin/bdump/alert_prod.log
lrwx------  1 oracle dba 64 May 14 22:47 7 -> /u01/app/oracle/product/10.2.0/db_1/dbs/hc_prod.dat
l-wx------  1 oracle dba 64 May 14 22:47 8 -> /u01/app/oracle/admin/bdump/alert_prod.log
lrwx------  1 oracle dba 64 May 14 22:47 9 -> /u01/app/oracle/product/10.2.0/db_1/dbs/lkinstprod (deleted)
[oracle@prod fd]$






\

 

我们可以清楚的看到 /u01/app/oracle/oradata/prod/disk2/users01.dbf (deleted) 的字样,表示此文件已经被删掉了。

5、进行恢复

通过cp命令,把语句柄拷贝回原来的位置。

cp 24 /u01/app/oracle/oradata/prod/disk2/users01.dbf

此处的24为其给出的编号。

 

6、进入recovery

执行以下SQL命令:

SQL>  alter database datafile 6 offline;
 
Database altered.
 
SQL> recover datafile 6;
Media recovery complete.
SQL> alter database datafile 6 online;           
 
Database altered.
 
SQL>

 

\

至此,回复完成!

 

7、测试

我们重新尝试在users 表空间上建立一个table

SQL> create table abcd123 tablespace users as select * from v$instance;
 
Table created.
 
SQL> select * from abcd123;
 
INSTANCE_NUMBER INSTANCE_NAME
--------------- ----------------
HOST_NAME
----------------------------------------------------------------
VERSION           STARTUP_T STATUS       PAR    THREAD# ARCHIVE LOG_SWITCH_WAIT
----------------- --------- ------------ --- ---------- ------- ---------------
LOGINS     SHU DATABASE_STATUS   INSTANCE_ROLE      ACTIVE_ST BLO
---------- --- ----------------- ------------------ --------- ---
              1 prod
prod
10.2.0.1.0        16-APR-12 OPEN         NO           1 STARTED
ALLOWED    NO  ACTIVE            PRIMARY_INSTANCE   NORMAL    NO
 
SQL>
 

\

我们可以发现,建立成功了,说明回复成功,


推荐阅读
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 构建基于BERT的中文NL2SQL模型:一个简明的基准
    本文探讨了将自然语言转换为SQL语句(NL2SQL)的任务,这是人工智能领域中一项非常实用的研究方向。文章介绍了笔者在公司举办的首届中文NL2SQL挑战赛中的实践,该比赛提供了金融和通用领域的表格数据,并标注了对应的自然语言与SQL语句对,旨在训练准确的NL2SQL模型。 ... [详细]
  • 在Ubuntu 16.04 LTS上配置Qt Creator开发环境
    本文详细介绍了如何在Ubuntu 16.04 LTS系统中安装和配置Qt Creator,涵盖了从下载到安装的全过程,并提供了常见问题的解决方案。 ... [详细]
  • 本文详细介绍了如何在 Linux 平台上安装和配置 PostgreSQL 数据库。通过访问官方资源并遵循特定的操作步骤,用户可以在不同发行版(如 Ubuntu 和 Red Hat)上顺利完成 PostgreSQL 的安装。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 本文由瀚高PG实验室撰写,详细介绍了如何在PostgreSQL中创建、管理和删除模式。文章涵盖了创建模式的基本命令、public模式的特性、权限设置以及通过角色对象简化操作的方法。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 在即将迎来26岁生日之际,作者的人生陷入了低谷。经过近三年的硕士学习后,最终决定退学,并且面临没有工作经验的困境。尽管如此,作者依然坚定地选择为自己的人生负责。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • 本文详细介绍了美国最具影响力的十大财团,包括洛克菲勒、摩根、花旗银行等。这些财团在历史发展过程中逐渐形成,并对美国的经济、政治和社会产生深远影响。 ... [详细]
author-avatar
书友51676198
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有