zoukankan      html  css  js  c++  java
  • Oracle冷备份及其恢复

    一、 冷备份的概念

        冷备份是指在数据库关闭状态下所做的物理拷贝,也称脱机备份。

        适合于非归档模式下的备份,而且也只能采用这种方式备份。

    二、 需要备份的文件

        必须备份的文件:

          数据文件和控制文件

         可以备份的文件:

           重做日志文件、临时文件、二进制参数文件(spfile)、口令文件

            

    三、 冷备份的步骤

        1. 找到所需要的备份文件

        2. 正常关闭数据库

        3. 备份文件到指定的备份路径下

        4. 重新启动数据库

     

    四、 冷脚本的写法

    4.1 查看文件位置及状态

      --查看实例和数据库的相关信息     

    SQL> select instance_name,version,status,archiver,database_status from v$instance;
    
    INSTANCE_NAME     VERSION       STATUS    ARCHIVE DATABASE_STATUS
    ---------------- ----------------- ------------ ------- -----------------
    dbsrv1         11.2.0.1.0       OPEN     STOPPED ACTIVE
    SQL> select dbid,name,log_mode from v$database;
    
          DBID NAME      LOG_MODE
    ---------- --------- ------------
     294555525 DBSRV1    NOARCHIVELOG

      --查看数据文件及状态信息

    SQL> col file_name  for a50
    SQL> col tablespace_name for a15
    SQL> select file_name,tablespace_name,status,online_status from dba_data_files;
    
    FILE_NAME                                   TABLESPACE_NAME STATUS    ONLINE_
    -------------------------------------------------- --------------- --------- -------
    /opt/oracle/app/oradata/dbsrv1/users01.dbf      USERS         AVAILABLE   ONLINE
    /opt/oracle/app/oradata/dbsrv1/undotbs01.dbf     UNDOTBS1       AVAILABLE   ONLINE
    /opt/oracle/app/oradata/dbsrv1/sysaux01.dbf         SYSAUX        AVAILABLE   ONLINE
    /opt/oracle/app/oradata/dbsrv1/system01.dbf         SYSTEM        AVAILABLE   SYSTEM
    /opt/oracle/app/oradata/costctl/COSTCTL_TBS.dbf      COSTCTL_TBS   AVAILABLE    ONLINE
    /opt/oracle/app/oradata/dbsrv1/DEV_DATA.DBF          DEV_DATA      AVAILABLE   ONLINE
    /opt/oracle/app/oradata/pdms/PDMS_DATA.dbf           PDMS_DATA      AVAILABLE  ONLINE

      查看数据文件

    SQL> col name for a50
    SQL> select file#, name, status from v$datafile;
    
         FILE# NAME                                       STATUS
    ---------- -------------------------------------------------- -------
         1 /opt/oracle/app/oradata/dbsrv1/system01.dbf          SYSTEM
         2 /opt/oracle/app/oradata/dbsrv1/sysaux01.dbf          ONLINE
         3 /opt/oracle/app/oradata/dbsrv1/undotbs01.dbf       ONLINE
         4 /opt/oracle/app/oradata/dbsrv1/users01.dbf          ONLINE
         5 /opt/oracle/app/oradata/costctl/COSTCTL_TBS.dbf    ONLINE
         6 /opt/oracle/app/oradata/dbsrv1/DEV_DATA.DBF          ONLINE
         7 /opt/oracle/app/oradata/pdms/PDMS_DATA.dbf          ONLINE

      --查看临时文件

    SQL> col name for a60
    SQL> select name from v$tempfile;
    
    NAME
    ------------------------------------------------------------
    /opt/oracle/app/oradata/dbsrv1/temp01.dbf
    /opt/oracle/app/oradata/costctl/COSTCTL_TBS_temp.dbf
    /opt/oracle/app/oradata/pdms/PDMS_DATA_TEMP.dbf

      --查看日志文件

    SQL> select member from v$logfile;
    
    MEMBER
    --------------------------------------------------
    /opt/oracle/app/oradata/dbsrv1/redo03.log
    /opt/oracle/app/oradata/dbsrv1/redo02.log
    /opt/oracle/app/oradata/dbsrv1/redo01.log

      --查看控制文件

    SQL> select name from v$controlfile;
    
    NAME
    ------------------------------------------------------------
    /opt/oracle/app/oradata/dbsrv1/control01.ctl
    /opt/oracle/app/flash_recovery_area/dbsrv1/control02.ctl

      --查看参数文件

    SQL> show parameter pfile
    
    NAME                     TYPE        VALUE
    ------------------------------------ ---------- ------------------------------
    spfile                     string    /opt/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/spfiledbsrv1.ora

    4.2 进行备份

    方案一、

     --创建备份目录

    SQL> ho mkdir -p /u03/backup/coolbak

     --使用连接符生成复制文件命令

    SQL> select 'ho cp' ||name|| '/u03/backup/coolbak' from v$controlfile;
    
    'HOCP'||NAME||'/U03/BACKUP/COOLBAK'
    --------------------------------------------------------------------------------
    ho cp/opt/oracle/app/oradata/dbsrv1/control01.ctl/u03/backup/coolbak
    ho cp/opt/oracle/app/flash_recovery_area/dbsrv1/control02.ctl/u03/backup/coolbak
     SQL> save /tmp/tmpbak.sql;   --将上面的输入保存为tmpbak.sql
        Created file /tmp/tmpbak.sql

    编辑coolbak.sql

    注意修改密码文件的位置和pfile的名字

        set feedback off
        set heading off
        set verify off
        set trimspool off
        set pagesize 0
        set linesize 200
        define dir = '/u03/backup/coolbak'
        define script = '/u03/backup/coolbak.txt'
        define passwd = '/u01/app/oracle/product/11.2.0/db_1/dbs/orapworcl'
        spool &script
        select 'ho cp -pv ' || name || ' &dir' from v$controlfile
        union all
        select 'ho cp -pv ' || name || ' &dir' from v$datafile
        union all
        select 'ho cp -pv ' || member || ' &dir'  from v$logfile
        union all
        select 'ho cp -pv ' || name || ' &dir' from v$tempfile
        /
        create pfile = '&dir/initorcl.ora' from spfile;
        ho cp -pv   &passwd  &dir
        spool off
        shutdown immediate
        ho mkdir -pv /u03/backup/coolbak
        ho rm -rf /u03/backup/coolbak/*
        start &script
        startup

     --执行coolbak.sql

        SQL> @/tmp/coolbak.sql;

     --执行过程及数据库启动略

           

        --启动后查看备份的文件

    需要注意的是这种方式不利于恢复,得去寻找恢复的目录最好在cool后建立与数据库相同的目录。

     冷恢复的步骤

    脱机恢复到原来位置的步骤:

      1. 如果数据库没有关闭,需关闭数据库

      2. 将所有的备份数据文件和备份控制文件复制到数据库原来的位置

      3. 也可以将其它所有的备份文件复制到数据库原来的位置(该操作不是必须的)

      4. 重启数据库

     恢复成功后,数据库即恢复到上一次的备份,恢复所需要的时间就是复制文件所需要的时间

    脱机恢复到非原来位置的步骤:

      有时候储存数据文件的磁盘坏了,可能需要改变数据文件的恢复位置

      1. 将备份文件恢复到正常的磁盘上

      2. 将数据库加载为mount状态(startup mount)

      3. alter database rename file 'u01/xxx.DBF'  to 'u02/xxx.DBF'    (u01磁盘损坏)

      4. alter database open

  • 相关阅读:
    img[src*="same"]{}
    a[href$=".pdf"]解释
    ::selection{}
    a[href^=""]的解释
    who are you?
    天下武功唯快不破
    登录一下好吗??
    后台登录
    实验吧—简单的登录题
    hdu 1010
  • 原文地址:https://www.cnblogs.com/zydev/p/6170352.html
Copyright © 2011-2022 走看看