Oracle 熱備份
--=======================
-- Oracle 熱備份
--=======================
Oracle 熱備份是指資料庫處於open狀態下,對資料庫的資料檔案、控制檔案、引數檔案、密碼檔案等進行一系列備份操作。
熱備是基於使用者管理備份恢復的一種方式,也是除了RMAN備份之外較為常用的一種備份方式。
一、熱備的過程
凍結塊頭-->控制SCN在備份時不發生變化
進行物理複製
解凍塊頭-->讓SCN可以變化(當對SCN解凍後,系統會自動更新SCN至最新的狀態)
二、基於資料庫的熱備
alter database begin backup;
複製所有的datafile到備份目錄
alter database end backup;
三、基於表空間的熱備
alter tablespace tablespace_name begin backup;
複製tablespace_name表空間的資料檔案到備份目錄
alter tablespace tablespace_name end backup;
alter tablespace tablespace_name begin backup時完成的任務
檢查點事件發生,檢查點通知DBWn將該表空間上所有的髒資料被寫入到磁碟
在資料檔案頭部凍結當前檢查點事件發生時的SCN號
所有發生變化資料塊的完整映象(修改前後)被寫入到redo log中
允許該表空間內資料的正常讀寫
建議使用基於表空間的熱備,這樣將盡可能的減少對系統效能的影響
四、控制檔案的熱備
alter database backup controlfile to '
alter database backup controlfile to trace as '
控制檔案發生變化情況
alter database [add |drop] logfile
alter database [add |drop] logfile member
alter database [add |drop] logfile group
alter database [archivelog |noarchivelog]
alter database rename file
create tablespace
alter tablespace [add | rename] datafile
alter tablespace [read write | read only]
drop tablespace
更多關於控制檔案請參考:Oracle 控制檔案
五、引數檔案的熱備
create pfile from spfile ;
create pfile = '
更多關於引數檔案請參考:Oracle 引數檔案
六、臨時表空間的資料檔案、日誌檔案不需要備份
--檢視臨時表空間
SQL> select tablespace_name from dba_temp_files;
TABLESPACE_NAME
------------------------------
TEMP
--檢視臨時表空間的資料檔案
SQL> select name from v$tempfile;
NAME
------------------------------------------------------
/u01/app/oracle/oradata/orcl/temp01.dbf
--將臨時表空間置為備份模式,收到了錯誤的提示
SQL> alter tablespace temp begin backup;
alter tablespace temp begin backup
*
ERROR at line 1:
ORA-03217: invalid option for alter of TEMPORARY TABLESPACE
--將臨時表空間置為備份模式,收到了錯誤的提示
SQL> alter temporary tablespace temp begin backup;
alter temporary tablespace temp begin backup
*
ERROR at line 1:
ORA-00940: invalid ALTER command
七、熱備指令碼
1.基於資料庫熱備的指令碼
SQL> ho cat /tmp/tmphotbak.sql;
set feedback off
set heading off
set verify off
set trimspool off
set pagesize 0
set linesize 200
define dir = '/u01/app/oracle/hotbak'
define script. = '/tmp/hotbak.sql'
spool &script
select 'ho cp ' ||name|| ' &dir' from v$datafile;
spool off
alter database begin backup;
start &script
alter database end backup;
alter database backup controlfile to '&dir/controlbak.ctl';
create pfile = '&dir/initorcl.ora' from spfile;
SQL> start /tmp/tmphotbak.sql; --執行該指令碼即可對資料庫進行熱備
2.基於表空間熱備的指令碼
SQL> ho cat /tmp/tmphotbak_tb.sql
set feedback off
set heading off
set verify off
set trimspool off
set pagesize 0
set linesize 200
define dir = '/u01/app/oracle/hotbak'
define script. = '/tmp/hotbak_tb.sql'
ho rm &script
ho rm &dir/*
spool &script
select 'alter tablespace '|| tablespace_name ||' begin backup ;' ||
chr(10)||'ho cp ' || file_name || ' &dir ' ||
chr(10)||'alter tablespace '|| tablespace_name || ' end backup;'
from dba_data_files order by tablespace_name;
spool off
start &script
alter database backup controlfile to '&dir/controlbak.ctl';
create pfile = '&dir/initorcl.ora' from spfile;
SQL> start /tmp/tmphotbak.sql; --執行該指令碼即可對資料庫基於表空間進行熱備
八、備份的相關檢視
v$backup
SQL> desc v$backup;
Name Null? Type
----------------------------------------- -------- ---------------------
FILE# NUMBER
STATUS VARCHAR2(18)
CHANGE# NUMBER --記錄備份時的SCN號
TIME DATE
SQL> select * from v$backup; --狀態為NOT ACTIVE ,此時沒有任何資料處於備份狀態
FILE# STATUS CHANGE# TIME
---------- ------------------ ---------- ---------
1 NOT ACTIVE 1006747 16-AUG-10
2 NOT ACTIVE 1006793 16-AUG-10
3 NOT ACTIVE 1006729 16-AUG-10
4 NOT ACTIVE 1006807 16-AUG-10
5 NOT ACTIVE 1006717 16-AUG-10
SQL> alter tablespace users begin backup; --對錶空間users進行熱備
Tablespace altered.
SQL> select * from v$backup; --對應的file# 為的處於ACTIVE狀態
FILE# STATUS CHANGE# TIME
---------- ------------------ ---------- ---------
1 NOT ACTIVE 1006747 16-AUG-10
2 NOT ACTIVE 1006793 16-AUG-10
3 NOT ACTIVE 1006729 16-AUG-10
4 ACTIVE 1006852 16-AUG-10
5 NOT ACTIVE 1006717 16-AUG-10
--備份時發生斷電或意外故障的恢復
--假定users表空間目前置於begin bakup模式,系統斷電
SQL> alter tablespace users begin backup;
Tablespace altered.
--在另一個會話中強制關閉資料庫
SQL> shutdown abort;
ORACLE instance shut down.
--啟動後收到錯誤提示
SQL> startup
ORACLE instance started.
Total System Global Area 469762048 bytes
Fixed Size 1220048 bytes
Variable Size 92275248 bytes
Database Buffers 373293056 bytes
Redo Buffers 2973696 bytes
Database mounted.
ORA-01113: file 4 needs media recovery
ORA-01110: data file 4: '/u01/app/oracle/oradata/orcl/users01.dbf'
--檢視備份檢視,檔案此時處於活動狀態
SQL> select * from v$backup;
FILE# STATUS CHANGE# TIME
---------- ------------------ ---------- ---------
1 NOT ACTIVE 1006958 16-AUG-10
2 NOT ACTIVE 1006983 16-AUG-10
3 NOT ACTIVE 1006943 16-AUG-10
4 ACTIVE 1007072 16-AUG-10
5 NOT ACTIVE 1006931 16-AUG-10
--使用end backup來終止備份
SQL> alter database datafile 4 end backup; --此處也可以使用recover datafile 4來完成恢復
Database altered.
SQL> alter database open;
Database altered.
SQL> select * from dual;
D
-
X
有關Oracle的冷備份,請參考:Oracle 冷備份
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22578826/viewspace-703499/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle的熱備份和冷備份Oracle
- Oracle OCP(62):熱備份Oracle
- oracle雙機熱備份Oracle
- Oracle熱備份原理分析Oracle
- Oracle冷備份和熱備份的處理Oracle
- Oracle 熱備份和冷備份的區別Oracle
- 揭祕ORACLE備份之--熱備份(也叫聯機備份)Oracle
- oracle雙機熱備份方法Oracle
- Oracle學習系列—資料庫備份—熱備份Oracle資料庫
- Oracle資料庫冷備份與熱備份操作梳理Oracle資料庫
- Oracle物理熱備份指令碼(ZT)Oracle指令碼
- oracle聯機熱備份的原理,及rman增量備份原理Oracle
- Oracle聯機熱備份的原理及rman增量備份原理Oracle
- oracle聯機熱備份的原理(轉)Oracle
- Oracle使用者管理熱備份原理Oracle
- oracle聯機熱備份的原理(1)Oracle
- oracle聯機熱備份的原理(2)Oracle
- linux下oracle熱備份指令碼LinuxOracle指令碼
- oracle聯機熱備份的原理及rman增量備份原理(zt)Oracle
- 熱備份原理
- mysql的冷備份與熱備份MySql
- Oracle備份恢復之熱備份恢復及異機恢復Oracle
- Oracle資料庫備份與恢復之匯出/匯入(EXP/IMP)、熱備份和冷備份Oracle資料庫
- oracle備份--離線備份Oracle
- 生成熱備份指令碼指令碼
- oracle實驗記錄 (恢復-關於熱備份)Oracle
- MySQL的冷備份和熱備份概念理解(轉)MySql
- oracle 備份Oracle
- oracle備份Oracle
- 熱備份與RMAN備份中split block的處理BloC
- 關於Oracle資料庫熱備份指令碼深入剖析Oracle資料庫指令碼
- 歸納熱備份機制
- 備份&恢復系列之二:在linux中對oracle進行熱備份的指令碼!LinuxOracle指令碼
- oracle 熱備指令碼 .Oracle指令碼
- 資料庫備份與異機恢復——熱備份方式資料庫
- Oracle備份及備份策略及基於Linux下 Oracle 備份策略(RMAN)OracleLinux
- Oracle 冷備份Oracle
- oracle rac 備份Oracle