zoukankan      html  css  js  c++  java
  • 从完好的数据文件恢复oracle数据库

    作者: ddvip,  出处:IT专家网论坛, 责任编辑: 陈子琪, 
    2010-04-12 07:00

      有数据文件、控制文件和日志文件的备份1.服务器重装了操作系统,Oracle也重装了。如果重装的oracle和以前损坏的数据库是一模一样的结构,那么此时的恢复是比较简单的。

      一。有数据文件、控制文件和日志文件的备份1.服务器重装了操作系统,Oracle也重装了。如果重装的oracle和以前损坏的数据库是一模一样的结构,那么此时的恢复是比较简单的。

      1)删除掉新建数据库的所有数据文件、控制文件和日志文件。Copy原数据库的数据文件、控制文件和日志文件到对应目录下。

      2)


      Cmd>sqlplus /nolog 
      Sql>conn as sysdba

      用户名:system

      密码:(此处密码为新创建数据库的密码)


      Sql>shutdown immediate 
      Sql>startup nomount 
      Sql>alter database mount

      此时看数据库是不是能mount起来,有时会提示没有口令文件PWDdemo.ora文件找不到。查看对应的目录(database下)会发现该文件是存在的。此时需要注意,该口令文件是新安装数据库后创建实例时生成的口令文件,不是以前所用数据库的口令文件,而现在,我们是用以前数据库的控制文件和数据文件来打开以前的数据库,所以此时需要重新创建一个口令文件。


      Sql>shutdown immediate 
      Sql>host orapwd file=c:\oracle9i\database\PWDdemo.ora password=oracle 
      Entries=10 (放在database 目录下) 
      Sql>startup nomount 
      Sql>alter database mount 
      Sql>alter database open

      打开数据库

      2.如果新数据库的安装目录和原有数据库的目录不一样,那么此时可以重建控制文件来打开数据库。因为原控制文件中记录的数据文件地址和现有的数据文件位置不一样。此时和下面第二中情况一样。当然,此时也可以创建和原数据库一样的目录结构(前提是要记得原数据库的目录结构),需要注意的就是参数文件中记录的控制文件位置和控制文件中记录的数据文件位置。

      说明:我们需要清楚数据库在打开的三个阶段中,需要读取的文件

      Sql>startup nomount (此时读取参数文件)

      Sql>alter database mount (根据参数文件中记录的控制文件地址,去读取控制文件)

      Sql>alter database open (根据控制文件中记录的数据文件地址,读取数据文件,打开数据库)

      二。只有数据文件备份,没有控制文件和日志文件

      由于只有数据文件备份,没有控制文件和日志文件,此时只能采用重建控制文件来恢复数据库。以下通过两中方法来介绍如何通过重建控制文件来进行数据库的恢复。

      1)仅安装数据库软件,通过新建Oracle服务,引用数据文件来创建一个实例。下面以实例名为demo为例进行说明。 

         1.创建存储demo相关文件的目录。即::各类文件的存放地址。


      C:\documents and settings\mkdir c:\demo 
      C:\documents and settings\mkdir c:\demo\bdump 
      C:\documents and settings\mkdir c:\demo\udump 
      C:\documents and settings\mkdir c:\demo\cdump 
      C:\documents and settings\mkdir c:\demo\pfile 
      C:\documents and settings\mkdir c:\demo\create 
      C:\documents and settings\mkdir c:\demo\oradata 
      C:\documents and settings\mkdir c:\demo\oradata\demo (放置datafile、logfile、controlfile)

      2.创建初始化参数文件(pfile)

      此处pfile文件可以从其他能正常运行的数据库上copy一个过来进行修改。(判断其他正常运行的数据库使用的是pfile还是spfile,如是pfile可以直接copy,如是spfile,则可根据spfile创建一个pfile文件)

      Copy过来的pfile需要修改的地方:


      background_dump_dest=c:\demo\bdump 
      core_dump_dest=c:\demo\cdump 
      user_dump_dest=c:\demo\udump 
      control_files=("c:\demo\oradata\demo\CONTROL01.CTL", "c:\demo\oradata\demo\CONTROL02.CTL", "c:\demo\oradata\demo\CONTROL03.CTL") 
      dispatchers="(PROTOCOL=TCP) (SERVICE=demoXDB)"(实例名) 
      dispatchers="(PROTOCOL=TCP) (SERVICE=demoXDB)" 
      db_domain="" 
      db_name=demo

      3.创建Oracle服务和口令文件

      C:\documents and settings\oradim — new —sid demo —intpwd oracle

      4.配置监听和服务

      用net manager 进行配置(demo实例的配置)

      5.复制数据文件备份到指定的目录下。此处为c:\demo\oradata\demo

      6.重建controlfile  C:\Documents and Settings\hefan>sqlplus /nolog


      SQL*Plus: Release 9.2.0.1.0 - Production on 星期一 12月 29 10:57:07 2008 
      Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. 
      SQL> conn as sysdba

      请输入用户名: system

      请输入口令:

      已连接。

    SQL> shutdown immediate

      ORA-01507: 未安装数据库

      ORACLE 例程已经关闭。

      SQL> startup nomount file= c:\demo\pfile\initdemo.ora

      ORACLE 例程已经启动。


      Total System Global Area 135338868 bytes 
      Fixed Size 453492 bytes 
      Variable Size 109051904 bytes 
      Database Buffers 25165824 bytes 
      Redo Buffers 667648 bytes 
      SQL> @d:\controlfile.sql

      控制文件已创建


      Controlfile.sql内容如下:(此处也可以直接在sql>下输入以下内容进行创建controlfile) 
      CREATE CONTROLFILE REUSE DATABASE "demo" RESETLOGS NOARCHIVELOG 
      MAXLOGFILES 50 
      MAXLOGMEMBERS 5 
      MAXDATAFILES 100 
      MAXINSTANCES 8 
      MAXLOGHISTORY 226 
      LOGFILE 
      GROUP 1 'c:\demo\oradata\demo\redo01.log' SIZE 50M, 
      GROUP 2 'c:\demo\oradata\demo\redo02.log' SIZE 50M, 
      GROUP 3 'c:\demo\oradata\demo\redo03.log' SIZE 50M 
      DATAFILE 
      'c:\demo\oradata\demo\system01.dbf', 
      'c:\demo\oradata\demo\odm01.dbf', 
      'c:\demo\oradata\demo\indx01.dbf', 
      'c:\demo\oradata\demo\tools01.dbf', 
      'c:\demo\oradata\demo\undotbs01.dbf', 
      'c:\demo\oradata\demo\users01.dbf', 
      'c:\demo\oradata\demo\xdb01.dbf', 
      'c:\demo\oradata\demo\cwmlite01.dbf', 
      'c:\demo\oradata\demo\drsys01.dbf', 
      'c:\demo\oradata\demo\example01.dbf' 
      CHARACTER SET zhs16gbk

      说明:此时没有日志文件,所以只能进行reserlogs,如果是有logfile,则此处不需要resetlogs,noresetlogs就可以

      7.恢复数据库


      SQL> recover database using backup controlfile until cancel; 
      ORA-00279: ?? 523637 (? 12/23/2008 20:52:22 ??) ???? 1 ???? 
      ORA-00289: ??: C:\Oracle9I\RDBMS\ARC00005.001 
      ORA-00280: ?? 523637 ???? 1 ???? # 5 ???
     指定日志: {=suggested | filename | AUTO | CANCEL}

      cancel

      介质恢复已取消。


      SQL> recover database using backup controlfile until cancel; 
      ORA-00279: ?? 523637 (? 12/23/2008 20:52:22 ??) ???? 1 ???? 
      ORA-00289: ??: C:\ORACLE9I\RDBMS\ARC00005.001 
      ORA-00280: ?? 523637 ???? 1 ???? # 5 ???

      指定日志: {=suggested | filename | AUTO | CANCEL}

      cancel

      介质恢复已取消。

      SQL> alter database open resetlogs;

      数据库已更改。

      Resetlog后要进行数据库的全备,以前的备份不可用。

      2)安装数据库,创建一个实例,用备份的数据文件代替新创建实例的数据文件。

      1.删除安装目录下所有的datafile、comtrolfile、logfile.(oradata目录下的文件)

      2.Copy备份的数据文件到oradata目录下

      3.重建控制文件  C:\Documents and Settings\hefan>sqlplus /nolog


      SQL*Plus: Release 9.2.0.1.0 - Production on 星期一 12月 29 10:57:07 2008 
      Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. 
      SQL> conn as sysdba

      请输入用户名: system

      请输入口令:

      已连接。

      SQL> shutdown immediate

      ORA-01507: 未安装数据库

      Oracle 例程已经关闭。

     SQL> startup nomount

      ORACLE 例程已经启动。


      Total System Global Area 135338868 bytes 
      Fixed Size 453492 bytes 
      Variable Size 109051904 bytes 
      Database Buffers 25165824 bytes 
      Redo Buffers 667648 bytes 
      SQL> @d:\controlfile.sql

      控制文件已创建

      4.恢复数据库


      SQL> recover database using backup controlfile until cancel; 
      ORA-00279: ?? 523637 (? 12/23/2008 20:52:22 ??) ???? 1 ???? 
      ORA-00289: ??: C:\ORACLE9I\RDBMS\ARC00005.001 
      ORA-00280: ?? 523637 ???? 1 ???? # 5 ???

      指定日志: {=suggested | filename | AUTO | CANCEL}

      cancel

      介质恢复已取消。


      SQL> recover database using backup controlfile until cancel; 
      ORA-00279: ?? 523637 (? 12/23/2008 20:52:22 ??) ???? 1 ???? 
      ORA-00289: ??: C:\ORACLE9I\RDBMS\ARC00005.001 
      ORA-00280: ?? 523637 ???? 1 ???? # 5 ???

      指定日志: {=suggested | filename | AUTO | CANCEL}

      cancel

      介质恢复已取消。

      SQL> alter database open resetlogs;

      数据库已更改。

      进行数据库的全备份,resetlogs后以前的备份不可以用。

      说明:此处新建实例的作用就是不需要创建参数文件、oracle服务。(创建实例时,这些都已经创建好了,此时只需要用备份的数据文件代替新创建实例的数据文件)。

     

  • 相关阅读:
    神奇的Batch Normalization 仅训练BN层会发生什么
    解决过拟合:如何在PyTorch中使用标签平滑正则化
    精度是远远不够的:如何最好地评估一个分类器?
    文本挖掘实战:看看国外人们在病毒隔离期间都在家里做什么?
    翻车现场:我用pytorch和GAN做了一个生成神奇宝贝的失败模型
    mysql安装步骤
    zabbix 02 监控项自定义
    zabbix 01 介绍安装
    Git 、Jenkins (三)Jenkins 安装部署
    Git 、Jenkins (二)Gitlub安装部署
  • 原文地址:https://www.cnblogs.com/QDuck/p/1882796.html
Copyright © 2011-2022 走看看