zoukankan      html  css  js  c++  java
  • oracle数据库冷备中的手工备份和恢复

    我的操作系统是red hat5.5 32位系统oracle11g

    以我的系统为例:

    冷备状态下,数据库必须是关闭的,但是我们现在要做一个实验,在开库的状态下分别查询出:

    1.show parameter spfile

    记录spfile的位置:/u01/oracle/dbs/spfileprod.ora

    2.show parameter control

    记录控制文件的位置:

    /u01/oradata/prod/control01.ctl, /u01/flash_recovery_area/prod/control02.ctl

    3.select name  from v$datafile;

    记录数据文件的位置:

    /u01/oradata/prod/system01.dbf
    /u01/oradata/prod/sysaux01.dbf
    /u01/oradata/prod/undotbs01.dbf
    /u01/oradata/prod/users01.dbf
    /u01/oradata/prod/example01.dbf

    4,select member  from v$logfie;

    记录日志文件的位置:

    /u01/oradata/prod/redo03.log
    /u01/oradata/prod/redo02.log
    /u01/oradata/prod/redo01.log

    然后shutdown immediate关闭数据库

    mkdir -p /home/oracle/cold_backup

    将上述查到各个文件的路径复制到cold_backup文件夹下

    cp /u01/oracle/dbs/spfileprod.ora /home/oracle/cold_backup

    cp /u01/oradata/prod/control01.ctl /home/oracle/cold_backup

    cp /u01/flash_recovery_area/prod/control02.ctl /home/oracle/cold_backup

    cp /u01/oradata/prod/*.dbf /home/oracle/cold_backup

    cp /u01/oradata/prod/*.log /home/oracle/cold_backup(redo日志可备也可不备)

    模拟数据库损坏

    rm -rf /u01/oracle/dbs/spfileprod.ora

    rm -rf /u01/oradata/prod/control01.ctl

    rm -rf /u01/flash_recovery_area/prod/control02.ctl

    rm -rf /u01/oradata/prod/*.dbf

    rm -rf  /u01/oradata/prod/*.log

    这时打开数据发现报错缺失各种文件,然后按照县恢复参数文件---控制文件----数据文件的顺序对数据库进行恢复

    mkdir -p /home/oracle/controlfile

    mkdir -p /home/oracle/datafile

    mkdir -p /redologfile

    1》用备份出来的这些文件把原来的数据库给搭建起来

    cp /home/oracle/cold_backup/*.ctl /home/oracle/controlfile

    cp /home/oracle/cold_backup/*.dbf /home/oracle/datafile

    cp /home/oracle/cold_backup/*.log /home/oracle/redologfile

    cp /home/oracle/cold_backup/spfileprod.ora /u01/oracle/dbs(此目录就是先前spfile的目录)

    2》打开库到nomount,如果发现打不开可能丢失一个文件件

    在此查询创建:

    show parameter audit

    mkdir -p /u01/admin/prod/adump

    3》如果可以启动到nomount,逻辑上重新创建控制文件

    alter system set control_files='/home/oracle/controlfile/control01.ctl','/home/oracle/controlfile/control03.ctl' scope=spfile;

    4》关库重启

    5》逻辑上修改数据文件和日志文件的位置

    数据文件:

    select 'alter database rename file '||''''||name ||''''||' to '||replace(name,'/u01/oradata/prod','/home/oracle/datafile')||''';' from v$datafile;

    日志文件:

    select 'alter database rename file '||''''||member ||''''||' to '||replace(member,'/u01/oradata/prod','/home/oracle/redologfile')||''';' from v$logfile;

    通过对数据文件和日志文件批批处理得出的SQL语句粘贴运行

    6》alter database open;

    冷备中手工备份和恢复至此完成,仅供参考!!

  • 相关阅读:
    数据库-自定义函数
    数据库-存储过程
    数据库配置
    水电费管理系统需求分析与设计_待完善
    SQL中Group By的使用
    部分查询功能语句
    10-11数据库练习
    Oracle-SQL
    开发环境之Gradle
    解决程序端口占用
  • 原文地址:https://www.cnblogs.com/wjmbk/p/7826643.html
Copyright © 2011-2022 走看看