Oracle備份恢復-手動備份

dba基礎課程:Oracle備份恢復-手動備份 

平臺:redhat linux as5,oracle10g

Oracle提供了許多方法來備份數據庫。包括用戶管理,恢復管理器(RMAN),Oracle數據泵等。用戶管理允許用戶通過操作系統命令手動備份數據庫。本文主要介紹如何手動備份整個數據庫,以及如何手動單獨備份表空間,控制文件,spfile文件等.

備份數據庫

1.備份內容

備份數據庫是指備份數據庫的所有數據文件,控制文件,參數文件和口今文件。下面先找到這些內容

數據文件

SQL> select name from v$datafile;

NAME

--------------------------------------------------------------------------------

/u01/oradata/denver/system01.dbf

/u01/oradata/denver/undotbs01.dbf

/u01/oradata/denver/cwmlite01.dbf

/u01/oradata/denver/drsys01.dbf

/u01/oradata/denver/example01.dbf

/u01/oradata/denver/indx01.dbf

/u01/oradata/denver/odm01.dbf

/u01/oradata/denver/tools01.dbf

/u01/oradata/denver/users01.dbf

/u01/oradata/denver/xdb01.dbf

控制文件

SQL> select name from v$controlfile;

NAME

--------------------------------------------------------------------------------

/u01/oradata/denver/control01.ctl

/u01/oradata/denver/control02.ctl

/u01/oradata/denver/control03.ctl

可見數據文件和控制文件都在/u01/oradata/denver/下,但這個目錄下還有redo*.log,在歸檔模式下一般重做日誌不需要備份

SQL> ! ls /u01/oradata/denver

archive control03.ctl example01.dbf redo01.log system01.dbf undotbs01.dbf

control01.ctl cwmlite01.dbf indx01.dbf redo02.log temp01.dbf users01.dbf

control02.ctl drsys01.dbf odm01.dbf redo03.log tools01.dbf xdb01.dbf

參數文件和口今文件

SQL> show parameter spfile;

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

spfile string ?/dbs/[email protected]

SQL> ! ls $ORACLE_HOME/dbs

initdenver.ora init.ora lkDENVER spfiledenver.ora

initdw.ora lkAAA orapwdenver spfiledenver.ora.bak

現在我們找到了要備份的所有內容,即

/u01/oradata/denver/*dbf(數據文件)

/u01/oradata/denver/*.ctl(控制文件)

$ORACLE_HOME/dbs/spfiledenver.ora(參數文件)

$ORACLE_HOME/dbs/orapwdenver(密碼文件)

2.備份方法

備份數據庫分爲冷備和熱備,冷備也叫數據一致性備份,是指關閉了數據庫之後,把需要備份的內容CP出來,比較簡單,只要能找到這些文件就能備份出來,熱備也叫數據庫非一致性備份,是指在數據庫open狀態下備份數據文件和控制文件的方法,冷備要關閉數據庫會中斷業務,也比較簡單,在此不做討論,下面使用熱備來備份數據庫,注意熱備份一定要在歸檔模式下備份

SQL> archive log list

Database log mode Archive Mode

Automatic archival Enabled

Archive destination /u01/oradata/denver/archive

由於在第一步已找到了要備份的文件,現在開始備份

開始備份

SQL> alter database begin backup;

Database altered.

SQL>! cp /u01/oradata/denver/*.dbf /u01/backup/

SQL>alter database backup controlfile to '/u01/backup/backup.ctl'

SQL>! cp $ORACLE_HOME/dbs/spfiledenver.ora /u01/backup/

SQL>! cp $ORACLE_HOME/dbs/orapwdenver /u01/backup/

SQL>! alter database end backup;

SQL>alter system archive log current;

這樣整個數據庫就備份完了,備份完後應做測試是不是有效備份,只要是有效備份,那麼就可以高枕無憂了。下面介紹如何單獨備份表空間,控制文件,spfile等

2.備份表空間

表空間在oracle中只是個邏輯概念,備份表空間其實是備份表空間下的數據文件,我們要找到表空間下對應的數據文件,把數據文件備出來

注意表空間備份只適用於archivelog模式,備份表空間分爲在表空間online備份和表空間offline備份,

表空間脫機備份

SQL> select file_name from dba_data_files where tablespace_name='TEST1';

FILE_NAME

--------------------------------------------------------------------------------

/u01/test1.dbf

SQL> alter tablespace test1 offline;

Tablespace altered.

SQL> ! cp /u01/test1.dbf /u01/backup

SQL> alter tablespace test1 online;

Tablespace altered.

這樣表空間test1就備份完了,因爲表空間offline後就不能訪問數據文件了,而且system表空間和正在使用的undo表空間不能脫機,所以這種方法很少用。

表空間聯機備份

SQL> alter tablespace test1 begin backup;

Tablespace altered.

SQL> ! cp /u01/test1.dbf /u01/backup/

SQL> alter tablespace test1 end backup;

Tablespace altered.

備份完備。別外如果要備份只讀表空間直接把數據文件拷貝出來就可以了,不用區分脫機和聯機

3.備份控制文件

控制文件用於記錄和維護數據庫,當恢復數據庫時,服務器進程和後臺進程需要從控制文件中讀取各種與備份相關的信息,如果控制文件損壞,則會導致備份信的丟失,當數據庫配置發生改變時,一定要再單獨備份控制文件

備份方法:

1.使用多元控制文件

2.備份到跟蹤文件

3.建立控制文件副本

其中前兩各方法,在以前的文章”控制文件及歸檔日誌管理”已闡述

第3種方法其實我們在上面備份數據庫時用過

SQL> alter database begin backup;

Database altered.

SQL>alter database backup controlfile to '/u01/backup/backup.ctl'

#如果第二次使用這個命令,在最後加參數reuse(覆蓋前一個)

SQL>alter database backup controlfile to '/u01/backup/backup.ctl' reuse;

SQL>! alter database end backup;

4.備份參數文件,口今文件

#參數文件

SQL>create pfile from spfile

SQL>! cp $ORACLE_HOME/dbs/spfiledenver.ora /u01/backup/

#口今文件

SQL>! cp $ORACLE_HOME/dbs/orapwdenver /u01/backup/

5.備份歸檔日誌

在歸檔模式下,對數據庫的所有操作都存到了歸檔日誌裏,因些物理恢復要用到歸檔日誌,爲了確保恢復可以順利進行,還應該備份歸檔日誌.備份歸檔日誌很簡單,找到文件CP出來就可以了.來源:Oracle認證

#備份過去一天的歸檔日誌

SQL> select name from v$archived_log where dest_id=1 and first_time>=sysdate-1;

NAME

--------------------------------------------------------------------------------

/u01/oradata/denver/archive/1_12.dbf

/u01/oradata/denver/archive/1_13.dbf

/u01/oradata/denver/archive/1_14.dbf

SQL>! cp /u01/oradata/denver/archive/1_12.dbf /u01/backup/

SQL>! cp /u01/oradata/denver/archive/1_13.dbf /u01/backup/

SQL>! cp /u01/oradata/denver/archive/1_14.dbf /u01/backup/

發佈了0 篇原創文章 · 獲贊 8 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章