oracle软件被删除后oracle文件的恢复

         前些天春节放假,所有的服务器都关机,过完节回来开机,发现unix服务器下的oracle目录只剩下个空目录啦,里面的东西光光的啦。查了history,没发现有人做rm操作。难道是硬盘出故障了?导致挂载点/oracle直接丢失?搞了半天没有没搞明白,而且数据库还没有做dmp备份。幸好发现/oradata下面的文件都还在,通过重装oracle软件来做恢复吧。

        补充个小知识,看unux下的磁盘,用 fdisk -l
         cciss是惠普的smart array控制器的设备名。
         c0指channl 0,第一个SCSI通道
         d0指逻辑盘1,d1指逻辑盘2.。。
         p1指第一个分区,p2,第二个分区 ,发现两块磁盘都是好好的,那么 /oracle下面的东西到底去哪里啦?

         在这个机器上已经装了6个数据库,发现其中4个数据库的/oradata/sid/下面的dbf文件都是全的,包括system01.dbf,其中一个数据库的system01.dbf放在了/oracle软件安装环境下了。所有的控制文件和redo文件都丢失了,可以通过重建控制文件和redo文件做恢复,那个系统表空间都丢失的数据库,估计是救不活啦。
         闲话少说,操作步骤如下:
         1 先安装oracle软件吧,还是原来的目录安装好
         2 建立pfile文件,可以先新建一个空库,
           在oracle用户下,dbca 新建一个数据库,然后 sqlplus / as sysdba ,
           执行命令,SQL>create
pfile='?/dbs/init@.ora' from spfile 生成pfile(?是指oracle_home,@代表sid)
           pfile放在 oracle_home/dbs下,格式为init实例名.ora,复制3个
init@.ora文件,文件的内容大致如下:
           orcl10g.__db_cache_size=427819008
      orcl10g.__java_pool_size=4194304
      orcl10g.__large_pool_size=4194304
      orcl10g.__shared_pool_size=155189248
      orcl10g.__streams_pool_size=0
      *._allow_resetlogs_corruption=TRUE
      *.audit_file_dest='/oracle/product/10.2.0/db1/admin/orcl10g/adump'
      *.background_dump_dest='/oracle/product/10.2.0/db1/admin/orcl10g/bdump'
      *.compatible='10.2.0.5.0'
      *.control_files='/oradata/orcl10g/control01.ctl','/oradata/orcl10g/control02.ctl','/oradata/orcl10g/control03.ctl'
      *.core_dump_dest='/oracle/product/10.2.0/db1/admin/orcl10g/cdump'
      *.db_block_size=8192
      *.db_domain=''
      *.db_file_multiblock_read_count=16
      *.db_name='orcl10g'
      *.dispatchers='(PROTOCOL=TCP) (SERVICE=orcl10gXDB)'
      *.job_queue_processes=10
      *.open_cursors=300
      *.pga_aggregate_target=199229440
      *.processes=150
      *.remote_login_passwordfile='EXCLUSIVE'
      *.sga_target=599785472
      *.undo_management='manual'
      *.undo_tablespace='UNDOTBS1'
      *.user_dump_dest='/oracle/product/10.2.0/db1/admin/orcl10g/udump'

            我们只需要修改sid名称为目标sid名称,对于没有的目录要创建一下
         3 建立控制文件
           export SID=sid名称
           sqlplus / as sysdba
           SQL>startup nomount,建立控制文件
           执行下面脚本
      SQL> CREATE CONTROLFILE reuse DATABASE "orcl10g" RESETLOGS NOARCHIVELOG
         MAXLOGFILES 16
         MAXLOGMEMBERS 3
         MAXDATAFILES 100
         MAXINSTANCES 8
         MAXLOGHISTORY 292
      LOGFILE
         GROUP 1 '/oradata/orcl10g/redo01.log' SIZE 50M,
         GROUP 2 '/oradata/orcl10g/redo02.log' SIZE 50M,
         GROUP 3 '/oradata/orcl10g/redo03.log' SIZE 50M
      -- STANDBY LOGFILE
      DATAFILE
         '/oradata/orcl10g/system01.dbf',
         '/oradata/orcl10g/undotbs01.dbf',
         '/oradata/orcl10g/sysaux01.dbf',
         '/oradata/orcl10g/users01.dbf',
         '/oradata/orcl10g/你的所有的dbf.dbf'
      CHARACTER SET ZHS16GBK; 
    4 重建redo文件
      SQL>alter database open resetlogs
    5 数据库可以顺利的起来啦,赶紧的做dmp备份吧 
    6 依法炮制,把其它的几个库都恢复了。
    7 丢失了system01.dbf的两个数据库,在做了各种尝试以后,终于放弃了。
      使用了dbf恢复小工具aul5也不行,看来丢失了system文件几乎就是判死刑了。
    8 总结:
      1)重启数据库前,重启机器等关键时刻一定先做数据库的备份
      2)冷备份dbf文件时一定要把system.dbf给备份了,否则冷备份的dbf是无法使用的

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值