ORACLE使用者管理方式下備份資料和複製資料庫

dbhelper發表於2014-11-27
          首先要明確的是,oracle資料庫的備份可以分為邏輯備份和物理備份。
          邏輯備份的是透過資料匯出對資料進行備份,主要方式有老式的IMP/EXP和資料泵燈方式。適合變化較少的資料庫,而對於高可用性資料庫,由於這種方式備份的資料只能恢復到備份的時間點,所以並不適用。但由於邏輯備份具有平臺無關性,所以更常見的是用來資料遷移及資料移動;
          物理備份是透過複製資料檔案、引數檔案等資料庫的物理檔案來進行備份。物理備份可以分為冷備份和熱備份。冷備份需要在關閉資料庫後進行備份,目前在高可用的生產環境中,這種方式使用較少。而熱備份可以在系統執行的情況下透過備份資料檔案及歸檔日誌就可以恢復,因此使用的範圍更廣泛。
          熱備份可以分為使用者管理方式下的熱備份(user-managed backup and recovery)和oracle管理(RMAN)的熱備份(Recovery MANager-RMAN),要注意的是,資料庫要進行熱備份必須執行在歸檔模式下。

          一、使用者管理方式下的備份

首先,備份資料檔案:
1)查詢資料檔案有哪些:
SQL> select name from v$datafile;
2)將資料庫置於備份模式下:
SQL> alter database begin backup;
3)備份資料檔案:
SQL> host copy D:\ORACLE\ORCDATA\TIOD\SYSTEM01.DBF C:\oracle\backup;
SQL> host copy D:\ORACLE\ORCDATA\TIOD\SYSAUX01.DBF C:\oracle\backup;
SQL> host copy D:\ORACLE\ORCDATA\TIOD\UNDOTBS01.DBF C:\oracle\backup;
SQL> host copy D:\ORACLE\ORCDATA\TIOD\USERS01.DBF C:\oracle\backup;
SQL> host copy E:\ORACLE\ORCL\ODS\HH_TBS.DBF C:\oracle\backup;
4)結束資料檔案備份並歸檔日誌:
SQL> alter database end backup;
SQL> alter system archive log current;

第二,備份控制檔案,此處使用備份到跟蹤檔案的方式:
1)將建立控制檔案的命令資訊記錄到trace檔案中:
SQL> alter database backup controlfile to trace;
2)確定跟蹤檔案位置和名稱:
SQL> select a.spid from v$process a,v$session b where a.addr=b.PADDR and b.USERNAME='SYS'
SQL> show parameter user_dump_dest;
跟蹤檔案命名為_ora_.trc。
3)開啟vidi_ora_1260.trc,確定建立控制檔案內容;
CREATE CONTROLFILE REUSE DATABASE "TIOD" NORESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 'D:\ORACLE\ORCDATA\TIOD\REDO01.LOG'  SIZE 50M BLOCKSIZE 512,
  GROUP 2 'D:\ORACLE\ORCDATA\TIOD\REDO02.LOG'  SIZE 50M BLOCKSIZE 512,
  GROUP 3 'D:\ORACLE\ORCDATA\TIOD\REDO03.LOG'  SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
  'D:\ORACLE\ORCDATA\TIOD\SYSTEM01.DBF',
  'D:\ORACLE\ORCDATA\TIOD\SYSAUX01.DBF',
  'D:\ORACLE\ORCDATA\TIOD\UNDOTBS01.DBF',
  'D:\ORACLE\ORCDATA\TIOD\USERS01.DBF',
  'E:\ORACLE\ORCL\ODS\HH_TBS.DBF'
CHARACTER SET ZHS16GBK
;
第三、備份歸檔日誌:
確定需要備份的歸檔日誌:
SQL> select name from v$archived_log where dest_id=1 and first_time>=sysdate-1;
使用copy命令備份到備份資料夾即可。

第四、備份引數檔案:
SQL> CREATE PFILE='C:\oracle\backup\initelse.ora' from spfile;

           二、使用備份檔案複製資料庫到另外一臺機器

當需要在另外一臺機器克隆一套與生產環境同樣的資料進行測試、學習時,我們可以使用上面備份的檔案複製資料庫。需要注意兩點:
1)源機器和目標機器應為相同的作業系統平臺;
2)複製資料庫可以包含所有的資料檔案也可以僅僅複製部分資料檔案,但system表空間和undo表空間的資料檔案必須有。

一)建立存放目標庫的相關檔案目錄。比如tiod資料庫建立D:\oracle\orcdata\tiod目錄,及目錄下BDUMP、UDUMP、ARCHIVE等目錄。

二)建立例項服務:
C:\Users\Administrator>oradim -new -sid tiod -intpwd oracle;

三)建立引數檔案:
          1)編輯initelse.ora,修改以下引數:
*.db_name='tiod'
*.log_archive_dest_1='location=D:\oracle\orcdata\tiod\ARCHIVE'
*.user_dump_dest='D:\oracle\orcdata\tiod\udump'
*.background_dump_dest='D:\oracle\orcdata\tiod\bdump'
此處對應我們第一步建立起的相關檔案目錄
          2)建立目標庫引數檔案:
SQL> create spfile='C:\oracle\product\11.2.0\dbhome_1\database\spfiletiod.ora' from pfile='C:\oracle\backup\initelse.ora';

四)將原庫備份好的資料檔案和歸檔檔案複製到目標庫的相應檔案目錄。

五)啟動例項,修改並建立控制檔案,控制檔案可根據我們上述備份中的方法獲得,並修改後執行即可。
C:\Users\Administrator>set oracle_sid=tiod
C:\Users\Administrator>sqlplus sys/oracle as sysdba
SQL> startup nomount spfile='C:\oracle\product\11.2.0\dbhome_1\database\spfiletiod.ora';
SQL>CREATE CONTROLFILE REUSE DATABASE "TIOD" RESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 'D:\ORACLE\ORCDATA\TIOD\REDO01.LOG'  SIZE 50M BLOCKSIZE 512,
  GROUP 2 'D:\ORACLE\ORCDATA\TIOD\REDO02.LOG'  SIZE 50M BLOCKSIZE 512,
  GROUP 3 'D:\ORACLE\ORCDATA\TIOD\REDO03.LOG'  SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
  'D:\ORACLE\ORCDATA\TIOD\SYSTEM01.DBF',
  'D:\ORACLE\ORCDATA\TIOD\SYSAUX01.DBF',
  'D:\ORACLE\ORCDATA\TIOD\UNDOTBS01.DBF',
  'D:\ORACLE\ORCDATA\TIOD\USERS01.DBF',
  'E:\ORACLE\ORCL\ODS\HH_TBS.DBF'
CHARACTER SET ZHS16GBK
;
六)恢復目標庫
          1)指定要使用的歸檔目錄(第一步所建ARCHIVE目錄)並執行恢復操作:
SQL> set logsource 'D:\oracle\orcdata\tiod\ARCHIVE';
SQL> recover database using backup controlfile until cancel;
          2)使用RESETLOGS選項開啟資料庫,並建立起目標庫的所有重做日誌
SQL> alter database open resetlogs;

這樣就完成了對一個資料庫的備份以及使用其備份複製資料庫到另外一個機器上的過程,這個過程是使用者管理方式下的備份和複製資料庫,此外我們可以使用RMAN方式達到同樣的目的。這個備份和恢復適用於在open狀態下的歸檔模式資料庫。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8494287/viewspace-1349477/,如需轉載,請註明出處,否則將追究法律責任。

相關文章