Oracle冷备份时出现的情况

      先来简单的说一下ORACLE的备份方式,详细功能可以搜索一下。

      一种是逻辑备份,即所谓的导出(Export)和导入(Import)命令,这种方式的优点是,能够对数据库中的每个对象进行备份,并且实现不同平台下的数据迁移,但备份的时候数据库不能是关闭的,从CMD命令进入,缺点是无法保证介质的损失,只是逻辑上的数据备份,一般适用于日常备份和小数据量的维护。

      二种是物理备份,物理备份分冷备份和热备份,冷备份,非归档模式,是在关闭数据库的情况下,将相关的数据库、控制、参数、日志文件等统一备份,其备份恢复速度快,安全性也高,缺点是,备份的是只能够恢复到某一个点上,并且无法实现某个对象的恢复,主要使用在实时要求不高(即可以关闭数据库)或者整体数据迁移时使用。热备份,归档模式,是在数据库不关闭的情况下进行备份,理论上可以恢复到当前的前一秒,缺点是,操作复杂,需要比较高的水平,中间不能出现差错,否则无法恢复,另外归档文件占用空间较大,主要使用在数据库访问量小或需要实现表空间和数据文件的备份,当然另外一个就是对备份精度要求比较高的场合。

     下面的是我在冷备份还原数据库时遇到的情况:

     我在一台电脑A的安装了Oracle10g,安装目录是D:/oracle/product/10.2.0,对应的数据库的目录是D:/oracle/product/10.2.0/oradata,在另外一台电脑B,也安装了Oracle10,安装目录是:D:/oracle/product/10.2.0,数据文件路径为:D:/oracle/product/10.2.0/oradata,即两台电脑的文件路径完全相同,这时,冷备份就相当的容易,直接停掉电脑A的数据库服务,然后拷贝相应的文件到电脑B上,将电脑B的服务开启就可以使用了。
     但是,如果我在另外一台的不同目录下安装了Oracle10g,安装路径为E:/oracle/product/10.2.0,如果没有相应的数据库,我们可以使用向导或者命令新建一个指定相应的数据文件路径为E:/oracle/product/10.2.0/oradata,上面的方法,因为相关的数据、日志及控制文件都定位的是电脑A备份的目录。搜索了网上的一大把,最后采用了这样的方法。
     1.将电脑A的数据库冷备份
     2.将电脑B的OracleServiceXXX停掉,或者在CMD shutdown immediate
     3.拷贝到电脑B的数据库文件路径
     4.拷贝电脑A上的冷备文件到z:/oracle/oradata/目录下;
     5.cmd 使用>sqlplus /nolog登录,然后connect user/password@XXX登录
     6.SQL>startup nomount(如果停掉了服务,则需要再开启)
     7.SQL>alter database mount;
     8.SQL>alter database backup controlfile to trace;
执行了7之后,在E:/oracle/product/10.2.0/admin/XXX/udump安装目录下找到控制文件,按照时间倒序排就知道了,复制一下,然后拷贝到其他地方,打开可以看到如下所示的内容(将前面的创建信息删除,即没有加--注释的)


STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS  NOARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 'Z:/ORACLE/ORADATA/ORCL/REDO01.LOG'  SIZE 10M,
  GROUP 2 'Z:/ORACLE/ORADATA/ORCL/REDO02.LOG'  SIZE 10M,
  ...
-- STANDBY LOGFILE
DATAFILE
  'D:/ORACLE/ORADATA/ORCL/SYSTEM01.DBF',
  'D:/ORACLE/ORADATA/ORCL/UNDOTBS01.DBF',
  ...
CHARACTER SET ZHS16GBK;


    然后保存成文件,如D:/ExecuteControlFile.sql
    9.SQL>shutdown immediate
    10.SQL>@D:/ExecuteControlFile.sql
    11.SQL>shutdown immediate
    12.SQL>startup;
    这样就可以完成不同目录下的拷贝了,你可以使用语句进行查询
    SQL>select * from v$logfile;
    SQL>select * from v$datafile;
    SQL>select * from v$controlfile;
    看目录是否已经定位在新的目录,同时访问表如
    SQL>select * from all_objects;
    如果查询到数据,那么恭喜你,还原成功!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值