Oracle 備份基礎知識
Oracle備份主要保護以下三類文件:
- datafile
- controlfile
- redo
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
------ ---------- ---------- ---------- ---------- --- ---------------- ------------- ------------
1 1 109 52428800 1 NO CURRENT 2644768 23-SEP-12
2 1 107 52428800 1 NO INACTIVE 2585151 22-SEP-12
3 1 108 52428800 1 NO INACTIVE 2616854 23-SEP-12
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_RECOVERY_DEST_FILE
------ ------- ------- -------------------------------------------------- -------------------------
1 ONLINE E:\ORACLE\WPENG\WPENG\REDO01.LOG NO
2 ONLINE E:\ORACLE\WPENG\WPENG\REDO02.LOG NO
3 ONLINE E:\ORACLE\WPENG\WPENG\REDO03.LOG NO
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
------ ---------- ---------- ---------- ---------- --- ---------------- ------------- ------------
1 1 109 52428800 1 NO CURRENT 2644768 23-SEP-12
2 1 107 52428800 1 NO INACTIVE 2585151 22-SEP-12
3 1 108 52428800 1 NO INACTIVE 2616854 23-SEP-12
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_RECOVERY_DEST_FILE
------ ------- ------- -------------------------------------------------- -------------------------
1 ONLINE E:\ORACLE\WPENG\WPENG\REDO01.LOG NO
2 ONLINE E:\ORACLE\WPENG\WPENG\REDO02.LOG NO
3 ONLINE E:\ORACLE\WPENG\WPENG\REDO03.LOG NO
歸檔/非歸檔模式
歸檔OR非歸檔的信息存儲在控制文件中。
數據庫默認情況是出于非歸檔模式。
非歸檔模式:
- 完全脫機備份(冷備份 - shutdown + Copy)
歸檔模式:
在聯機日志切換的時候,就會產生相應的歸檔日志文件
歸檔日志文件路徑:
- flash recover area (備份恢復文件,便于管理)-- 查詢歸檔日志存放路徑
SQL> show parameter DB_RECOVERY_FILE_DEST;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string d:\oracle\product\10.2.0/flash_recovery_area
db_recovery_file_dest_size big integer 2G
使用閃回恢復區
-- 設置參數 閃回恢復區 大小
SQL> alter system set db_recovery_file_dest_size = 2048m ;
System altered.
-- 設置參數 閃回恢復區 路徑
SQL> alter system set db_recovery_file_dest='E:\app\WPeng\product\11.1.0\flash_recover_area\';
System altered.
-- 默認使用log_archive_dest_10
SQL> alter system set log_archive_dest_10='location=use_db_recovery_file_dest';
System altered.
-- 查看修改之后的結果:
SQL> show parameter db_rec
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string E:\app\WPeng\product\11.1.0\fl
ash_recover_area\
db_recovery_file_dest_size big integer 2G
db_recycle_cache_size big integer 0
SQL> show parameter log_arc
SQL> alter system set db_recovery_file_dest_size = 2048m ;
System altered.
-- 設置參數 閃回恢復區 路徑
SQL> alter system set db_recovery_file_dest='E:\app\WPeng\product\11.1.0\flash_recover_area\';
System altered.
-- 默認使用log_archive_dest_10
SQL> alter system set log_archive_dest_10='location=use_db_recovery_file_dest';
System altered.
-- 查看修改之后的結果:
SQL> show parameter db_rec
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string E:\app\WPeng\product\11.1.0\fl
ash_recover_area\
db_recovery_file_dest_size big integer 2G
db_recycle_cache_size big integer 0
SQL> show parameter log_arc
切換歸檔日志模式:
--查詢是否處于歸檔模式
SQL> archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination E:\app\WPeng\product\11.1.0\db_1\RDBMS
Oldest online log sequence 107
Current log sequence 109
--或者SQL查詢
SQL> select log_mode from v$database;
LOG_MODE
------------
NOARCHIVELOG
SQL> archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination E:\app\WPeng\product\11.1.0\db_1\RDBMS
Oldest online log sequence 107
Current log sequence 109
--或者SQL查詢
SQL> select log_mode from v$database;
LOG_MODE
------------
NOARCHIVELOG
-- 需要shutdown修改database的狀態
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
-- 將數據庫啟動到mount狀態
SQL> startup mount
ORACLE instance started.
Total System Global Area 1319546880 bytes
Fixed Size 2114656 bytes
Variable Size 503319456 bytes
Database Buffers 805306368 bytes
Redo Buffers 8806400 bytes
Database mounted.
-- 修改數據的歸檔模式
SQL> alter database archivelog;
Database altered.
-- 查詢 修改之后的歸檔模式
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination E:\app\WPeng\product\11.1.0\db_1\RDBMS
Oldest online log sequence 107
Next log sequence to archive 109
Current log sequence 109
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
-- 將數據庫啟動到mount狀態
SQL> startup mount
ORACLE instance started.
Total System Global Area 1319546880 bytes
Fixed Size 2114656 bytes
Variable Size 503319456 bytes
Database Buffers 805306368 bytes
Redo Buffers 8806400 bytes
Database mounted.
-- 修改數據的歸檔模式
SQL> alter database archivelog;
Database altered.
-- 查詢 修改之后的歸檔模式
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination E:\app\WPeng\product\11.1.0\db_1\RDBMS
Oldest online log sequence 107
Next log sequence to archive 109
Current log sequence 109
-- 最后Open Database
SQL> alter database open;
Database altered.
SQL> alter database open;
Database altered.
產生歸檔日志文件:
-- 對currnt online redo log file 進行歸檔
SQL> alter system archive log current;
System altered.
SQL> alter system archive log current;
System altered.
手動歸檔之前,系統首先進行的是一個聯機日志的切換。
-- 切換聯機日志
SQL> alter system switch logfile;
System altered.
SQL> alter system switch logfile;
System altered.
- 手動歸檔 和 切換日志 其實在10g之后,就沒有什么區別,差不多
- 但是在10g之前,兩者之間,還有有差別的:10g之前,需要設置手動自動歸檔(log_archive_start),否則切換之后,歸檔進程有可能沒有立即執行歸檔操作,導致Oracle暫時掛起
9I之前
系統只能使用以下兩個參數,設置歸檔路徑:
- log_archive_dest
- log_archive_duplex_dest
9I之后
系統做了改進,廢棄以前的兩個參數,使用了10個系統參數,設置歸檔日志路徑。
log_archive_dest_1
-- 作為閃回恢復路徑使用
log_archive_dest_10
log_archive_dest_2
log_archive_dest_3
log_archive_dest_4
log_archive_dest_5
log_archive_dest_6
log_archive_dest_7
log_archive_dest_8
log_archive_dest_9
-- 作為閃回恢復路徑使用
log_archive_dest_10
log_archive_dest_2
log_archive_dest_3
log_archive_dest_4
log_archive_dest_5
log_archive_dest_6
log_archive_dest_7
log_archive_dest_8
log_archive_dest_9
在使用閃回恢復區的時候,Oracle可以有效地將,恢復or日志相關的文件,都整理到該閃回恢復區,使得目錄結構較為整潔;
而在沒有使用閃回恢復區之前,歸檔日志文件存儲路徑可能較為分散,但是使用以下SQL查詢:
select * from v$archived_log;
存儲在閃回恢復區和沒有存儲在閃回恢復區,兩者之間的命名也是有一定區別的!
- O1_MF_1_114_862BTW8C_.ARC
- ARC00109_0781547223.001
如果沒有存儲在閃回恢復區,可以使用以下參數,設置歸檔日志的命名格式:
log_archive_format string ARC%S_%R.%T