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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM