Oracle數據庫基于用戶管理的備份與恢復
Oracle數據庫中,數據庫文件的備份與恢復可以有很多的方式來實現,本文我們介紹一種基于用戶管理的備份與恢復?;谟脩艄芾淼膫浞菔侵甘褂肙S命令來備份數據庫物理文件。
備份數據庫
數據庫一致性備份:關閉數據庫以后備份數據庫物理文件,這時數據文件scn值完全一致,所以稱之為數據庫的一致性備份或冷備份,適用于歸檔模式與非歸檔模式。
對基于用戶管理的冷備份的暫時理解:在數據庫shutdown狀態下使用OS命令直接拷貝數據庫物理文件。
數據庫非一致性備份:在open狀態下備份數據庫物理文件,這時數據庫內容可能會改變導致數據文件scn不一致,所以稱之為數據庫的非一致性備份或熱備份,只適用于歸檔模式。
基于用戶管理的完全恢復(歸檔模式下)
1.在open狀態下備份數據庫物理文件(數據庫非一致性備份,熱備份,不影響業務運行)
2.刪除數據文件來模擬文件丟失(只是刪除了所有的數據文件;控制文件等其它文件處于正常狀態)
3.對數據文件進行恢復
4.應用歸檔日志
5.查看數據是否完全恢復
- SQL> conn evan/evan
- Connected.
- SQL> insert into t_evan values('oracle');
- 1 row created.
- SQL> insert into t_evan values('java');
- 1 row created.
- SQL> commit;
- Commit complete.
- SQL> select * from t_evan;
- TEXT
- --------------------------------------------------------------------------------
- oracle
- java
- --sysdba執行備份
- SQL> conn / as sysdba
- Connected.
- SQL> select name from v$datafile;
- NAME
- --------------------------------------------------------------------------------
- /oracle/10g/oracle/product/10.2.0/oradata/oralife/system01.dbf
- /oracle/10g/oracle/product/10.2.0/oradata/oralife/undotbs01.dbf
- /oracle/10g/oracle/product/10.2.0/oradata/oralife/sysaux01.dbf
- /oracle/10g/oracle/product/10.2.0/oradata/oralife/users01.dbf
- /oracle/10g/oracle/product/10.2.0/oradata/oralife/example01.dbf
- SQL> alter database begin backup;
- Database altered.
- SQL> host cp /oracle/10g/oracle/product/10.2.0/oradata/oralife/*.dbf /oracle/10g/oracle/bakup/database/ --備份所有數據文件
- SQL> alter database backup controlfile to '/oracle/10g/oracle/bakup/database/oralife.ctl'; --備份控制文件
- Database altered.
- -----------------------------------------------------------------------------------------------------------------------------------------
- 忘記了alter database end backup;
- -----------------------------------------------------------------------------------------------------------------------------------------
- SQL> alter system archive log current; --歸檔當前日志組
- System altered.
使用rm刪除所有數據文件(*.dbf);
- SQL> conn evan/evan
- Connected.
- SQL> select * from t_evan;
- TEXT
- --------------------------------------------------------------------------------
- oracle
- java
- SQL> insert into t_evan values('spring');
- 1 row created.
- SQL> commit;
- Commit complete.
- SQL> ALTER SYSTEM CHECKPOINT; --將已修改的數據從高速緩存刷新到磁盤,并更新控制文件和數據文件
- System altered.
- SQL> ALTER SYSTEM SWITCH LOGFILE; --日志切換
- System altered.
查看alter_oralife.log出現錯誤信息:某些文件不存在
進行完全恢復
copy備份的數據文件到指定的目標位置,進行恢復:
- SQL> recover database --open狀態
- ORA-00283: recovery session canceled due to errors
- ORA-01124: cannot recover data file 1 - file is in use or recovery
- ORA-01110: data file 1:
- '/oracle/10g/oracle/product/10.2.0/oradata/oralife/system01.dbf'
- SQL> shutdown immediate --open狀態
- ORA-01122: database file 1 failed verification check
- ORA-01110: data file 1: '/oracle/10g/oracle/product/10.2.0/oradata/oralife/system01.dbf'
- ORA-01208: data file is an old version - not accessing current version
- SQL> startup force mount; --進入mount狀態進行恢復
- ORACLE instance started.
- Total System Global Area 528482304 bytes
- Fixed Size 1220360 bytes
- Variable Size 163578104 bytes
- Database Buffers 356515840 bytes
- Redo Buffers 7168000 bytes
- Database mounted.
- SQL> recover database
- Media recovery complete.
- SQL> alter database open;
- Database altered.
- SQL> conn evan/evan --使用evan登錄查看恢復情況
- Connected.
- SQL> select * from t_evan;
- TEXT
- --------------------------------------------------------------------------------
- oracle
- java
- spring
沒有出現應用歸檔日志,應用歸檔日志有幾種方式:
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
當在open狀態下對數據文件進行恢復時,應該將其offline,恢復完成后,再將其online;所有的恢復應該盡量在open狀態下完成。
要理解checkpoint, alter system archive log current;,ALTER SYSTEM SWITCH LOGFILE。
關于Oracle數據庫基于用戶管理的備份與恢復就介紹到這里,希望通過本次的介紹能夠帶給您一些收獲。
【編輯推薦】