【實驗】【Archived Log】歸檔日誌格式和歸檔路徑之change趣談
小文兒思路:先對歸檔日誌格式和生成路徑的修改流程進行闡述,再展開討論一些有趣的細節。
1.修改歸檔日誌的格式
預設格式是:“ %t_%s_%r.dbf”,我們嘗試將格式修改為“%t_%s_%r.arch”,這是一個靜態引數,需要重新啟動資料庫才生效。
sys@ora10g> show parameter log_archive_format
NAME TYPE VALUE
--------------------- ----------- --------------------------------------
log_archive_format string %t_%s_%r.dbf
sys@ora10g> alter system set log_archive_format='%t_%s_%r.arch' scope=spfile;
System altered.
2.修改修改歸檔日誌的位置
1)使用“archive log list”命令檢視一下預設情況下歸檔日誌存放的位置
sys@ora10g> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 98
Next log sequence to archive 100
Current log sequence 100
2)上面結果提到USE_DB_RECOVERY_FILE_DEST這個Archive destination,其實我們可以去掉“USE_”使用“DB_RECOVERY_FILE_DEST”得到資料庫中的引數詳解。
sys@ora10g> show parameter DB_RECOVERY_FILE_DEST
NAME TYPE VALUE
--------------------- ----------- --------------------------------------
db_recovery_file_dest string /oracle/app/oracle/flash_recovery_area
3)將db_recovery_file_dest引數置空
alter system set db_recovery_file_dest = '' scope=spfile;
4)以防萬一,將log_archive_dest引數也置空
alter system set log_archive_dest = '' scope=spfile;
5)我們這裡採用的生效引數是log_archive_dest_1,修改方法如下。請注意語法
alter system set log_archive_dest_1 = 'location=/oracle/arch/ora10g' scope=spfile;
6)重新啟動資料庫,使上述所有修改的引數生效。
sys@ora10g> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
sys@ora10g>
sys@ora10g> startup;
ORACLE instance started.
Total System Global Area 2.1475E+10 bytes
Fixed Size 2111160 bytes
Variable Size 2399144264 bytes
Database Buffers 1.9059E+10 bytes
Redo Buffers 14663680 bytes
Database mounted.
Database opened.
7)確認修改成功
(1)第一種確認方法:使用“archive log list”命令關注“Archive destination”資訊
sys@ora10g> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /oracle/arch/ora10g
Oldest online log sequence 121
Next log sequence to archive 123
Current log sequence 123
(2)第二種確認方法:手工歸檔一下,透過v$archived_log檢視確認
sys@ora10g> alter system switch logfile;
System altered.
sys@ora10g> col NAME for a40
sys@ora10g> alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';
Session altered.
sys@ora10g> select recid, name, first_time from v$archived_log;
RECID NAME FIRST_TIME
---------- ---------------------------------------- -------------------
1 2009-06-06 01:38:39
2 2009-06-06 05:50:32
... 這省略之前的歸檔日誌資訊 ...
132 /oracle/arch/ora10g/1_123_688786498.arch 2009-09-20 11:26:26
8)上面的修改過程,也可以透過直接修改pfile檔案達到目的
列一下修改之後的關鍵引數內容:
$ cat $ORACLE_HOME/dbs/initora10g.ora
這裡省略不關心的其他引數
*.log_archive_format='%t_%s_%r.arch'
*.db_recovery_file_dest=''
*.log_archive_dest=''
*.log_archive_dest_1='location=/oracle/arch/ora10g'
3.修改流程介紹完畢,我們再一起討論一些有趣的現象。
1)有趣現象一:使用log_archive_dest引數,不使用上面提到的log_archive_dest_1引數一樣可以達到修改歸檔路徑的目的
精簡式列一下這個修改流程:
(1)修改歸檔檔案格式
alter system set log_archive_format='%t_%s_%r.arch' scope=spfile;
(2)將db_recovery_file_dest置空
alter system set db_recovery_file_dest = '' scope=spfile;
(3)將log_archive_dest_1置空
alter system set log_archive_dest_1 = '' scope=spfile;
(4)啟用log_archive_dest引數
alter system set log_archive_dest = '/oracle/arch/ora10g' scope=spfile;
(5)重啟資料庫使上面的所有引數生效
shutdown immediate;
startup;
(6)當然,上面的過程一樣可以透過修改pfile的方法來完成
修改後的pfile關鍵引數內容如下:
*.log_archive_format='%t_%s_%r.arch'
*.db_recovery_file_dest=''
*.log_archive_dest='/oracle/arch/ora10g'
*.log_archive_dest_1=''
上面的方法一樣可以達到修改歸檔路徑的目的,不過不推薦使用log_archive_dest這個引數,在10g中,建議您使用log_archive_dest_n引數完成修改。
2)有趣現象二:如果db_recovery_file_dest和log_archive_dest兩個引數同時設定,會在這兩個目錄中同時產生歸檔日誌
(1)修改pfile,實驗可以使用如下引數進行
*.log_archive_format='%t_%s_%r.arch'
*.db_recovery_file_dest='/oracle/app/oracle/flash_recovery_area'
*.log_archive_dest='/oracle/arch/ora10g'
*.log_archive_dest_1=''
(2)使用pfile重新啟動資料庫
sys@ora10g> shutdown immediate;
sys@ora10g> startup pfile = '/oracle/app/oracle/product/10.2.0/db_1/dbs/initora10g.ora';
(3)“有趣”現象出現了
sys@ora10g> alter system switch logfile;
sys@ora10g> alter system switch logfile;
sys@ora10g> col NAME for a40
sys@ora10g> alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';
sys@ora10g> select recid, name, first_time from v$archived_log;
RECID NAME FIRST_TIME
---------- ---------------------------------------- -------------------
137 /oracle/arch/ora10g/1_128_688786498.arch 2009-09-20 12:09:29
138 /oracle/arch/ora10g/1_129_688786498.arch 2009-09-20 12:09:29
139 /oracle/arch/ora10g/1_130_688786498.arch 2009-09-20 12:09:30
140 /oracle/app/oracle/flash_recovery_area/O 2009-09-20 12:09:30
RA10G/archivelog/2009_09_20/o1_mf_1_130_
5ccccmw6_.arc
141 /oracle/arch/ora10g/1_131_688786498.arch 2009-09-20 12:20:03
142 /oracle/app/oracle/flash_recovery_area/O 2009-09-20 12:20:03
RA10G/archivelog/2009_09_20/o1_mf_1_131_
5cccd5kt_.arc
(4)結論
兩個目錄都會生成歸檔日誌,內容是一樣的;
/oracle/app/oracle/flash_recovery_area目錄下生成的歸檔檔案的格式沒有受log_archive_format引數影響,也就是說:log_archive_format的引數只對log_archive_dest和log_archive_dest_n生效。
3)有趣現象三:db_recovery_file_dest和log_archive_dest_n同時設定時,只有log_archive_dest_n的目錄產生日誌
(1)修改pfile,實驗可以使用如下引數進行
*.log_archive_format='%t_%s_%r.arch'
*.db_recovery_file_dest='/oracle/app/oracle/flash_recovery_area'
*.log_archive_dest=''
*.log_archive_dest_1='location=/oracle/arch/ora10g'
(2)使用pfile重新啟動資料庫
sys@ora10g> shutdown immediate;
sys@ora10g> startup pfile = '/oracle/app/oracle/product/10.2.0/db_1/dbs/initora10g.ora';
(3)實驗結果如下
sys@ora10g> alter system switch logfile;
sys@ora10g> alter system switch logfile;
sys@ora10g> col NAME for a40
sys@ora10g> alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';
sys@ora10g> select recid, name, first_time from v$archived_log;
RECID NAME FIRST_TIME
---------- ---------------------------------------- -------------------
138 /oracle/arch/ora10g/1_129_688786498.arch 2009-09-20 12:09:29
139 /oracle/arch/ora10g/1_130_688786498.arch 2009-09-20 12:09:30
140 /oracle/app/oracle/flash_recovery_area/O 2009-09-20 12:09:30
RA10G/archivelog/2009_09_20/o1_mf_1_130_
5ccccmw6_.arc
141 /oracle/arch/ora10g/1_131_688786498.arch 2009-09-20 12:20:03
142 /oracle/app/oracle/flash_recovery_area/O 2009-09-20 12:20:03
RA10G/archivelog/2009_09_20/o1_mf_1_131_
5cccd5kt_.arc
143 /oracle/arch/ora10g/1_132_688786498.arch 2009-09-20 12:20:21
144 /oracle/arch/ora10g/1_133_688786498.arch 2009-09-20 12:32:58
(4)結論
比照“有趣現象二”的結論,看到這裡只有log_archive_dest_1引數設定的歸檔路徑生效了。
3)有趣現象四:log_archive_dest和log_archive_dest_1引數不能同時設定
(1)修改pfile,實驗可以使用如下引數進行,db_recovery_file_dest引數設定與否都不會影響我們的實驗結果
*.log_archive_format='%t_%s_%r.arch'
*.db_recovery_file_dest='/oracle/app/oracle/flash_recovery_area'
*.log_archive_dest='/oracle/arch/ora10g'
*.log_archive_dest_1='location=/oracle/arch/ora10g'
(2)使用pfile重新啟動資料庫時就會報錯,不能這樣進行設定
sys@ora10g> shutdown immediate;
sys@ora10g> startup pfile = '/oracle/app/oracle/product/10.2.0/db_1/dbs/initora10g.ora';
ORA-16019: cannot use LOG_ARCHIVE_DEST_1 with LOG_ARCHIVE_DEST or LOG_ARCHIVE_DUPLEX_DEST
(4)結論
log_archive_dest和log_archive_dest_1引數不能同時設定,即如果啟用了log_archive_dest_1引數就不能再使用log_archive_dest引數重複設定了。
透過這個實驗,可以得到一個結論:log_archive_dest這個引數只是為了向後相容而存在的,因此在9i之後的版本Oracle中如果需要修改歸檔檔案生成路徑的話,還是建議您使用log_archive_dest_n引數。
4.總結
相信,如果您能靜心閱之,此時,您一定已經掌握了歸檔日誌生成路徑和歸檔日誌生成格式的修改技法。
同時,透過這些發現的有趣現象,我們也看到了一些Oracle的細節差異。大家慢慢發掘ing。
友情提示:生產環境上的任何修改操作必須謹慎!請充分測試後實施,防止類似本實驗中那些“有趣現象”的發生。
Goodluck.
-- The End --
1.修改歸檔日誌的格式
預設格式是:“ %t_%s_%r.dbf”,我們嘗試將格式修改為“%t_%s_%r.arch”,這是一個靜態引數,需要重新啟動資料庫才生效。
sys@ora10g> show parameter log_archive_format
NAME TYPE VALUE
--------------------- ----------- --------------------------------------
log_archive_format string %t_%s_%r.dbf
sys@ora10g> alter system set log_archive_format='%t_%s_%r.arch' scope=spfile;
System altered.
2.修改修改歸檔日誌的位置
1)使用“archive log list”命令檢視一下預設情況下歸檔日誌存放的位置
sys@ora10g> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 98
Next log sequence to archive 100
Current log sequence 100
2)上面結果提到USE_DB_RECOVERY_FILE_DEST這個Archive destination,其實我們可以去掉“USE_”使用“DB_RECOVERY_FILE_DEST”得到資料庫中的引數詳解。
sys@ora10g> show parameter DB_RECOVERY_FILE_DEST
NAME TYPE VALUE
--------------------- ----------- --------------------------------------
db_recovery_file_dest string /oracle/app/oracle/flash_recovery_area
3)將db_recovery_file_dest引數置空
alter system set db_recovery_file_dest = '' scope=spfile;
4)以防萬一,將log_archive_dest引數也置空
alter system set log_archive_dest = '' scope=spfile;
5)我們這裡採用的生效引數是log_archive_dest_1,修改方法如下。請注意語法
alter system set log_archive_dest_1 = 'location=/oracle/arch/ora10g' scope=spfile;
6)重新啟動資料庫,使上述所有修改的引數生效。
sys@ora10g> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
sys@ora10g>
sys@ora10g> startup;
ORACLE instance started.
Total System Global Area 2.1475E+10 bytes
Fixed Size 2111160 bytes
Variable Size 2399144264 bytes
Database Buffers 1.9059E+10 bytes
Redo Buffers 14663680 bytes
Database mounted.
Database opened.
7)確認修改成功
(1)第一種確認方法:使用“archive log list”命令關注“Archive destination”資訊
sys@ora10g> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /oracle/arch/ora10g
Oldest online log sequence 121
Next log sequence to archive 123
Current log sequence 123
(2)第二種確認方法:手工歸檔一下,透過v$archived_log檢視確認
sys@ora10g> alter system switch logfile;
System altered.
sys@ora10g> col NAME for a40
sys@ora10g> alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';
Session altered.
sys@ora10g> select recid, name, first_time from v$archived_log;
RECID NAME FIRST_TIME
---------- ---------------------------------------- -------------------
1 2009-06-06 01:38:39
2 2009-06-06 05:50:32
... 這省略之前的歸檔日誌資訊 ...
132 /oracle/arch/ora10g/1_123_688786498.arch 2009-09-20 11:26:26
8)上面的修改過程,也可以透過直接修改pfile檔案達到目的
列一下修改之後的關鍵引數內容:
$ cat $ORACLE_HOME/dbs/initora10g.ora
這裡省略不關心的其他引數
*.log_archive_format='%t_%s_%r.arch'
*.db_recovery_file_dest=''
*.log_archive_dest=''
*.log_archive_dest_1='location=/oracle/arch/ora10g'
3.修改流程介紹完畢,我們再一起討論一些有趣的現象。
1)有趣現象一:使用log_archive_dest引數,不使用上面提到的log_archive_dest_1引數一樣可以達到修改歸檔路徑的目的
精簡式列一下這個修改流程:
(1)修改歸檔檔案格式
alter system set log_archive_format='%t_%s_%r.arch' scope=spfile;
(2)將db_recovery_file_dest置空
alter system set db_recovery_file_dest = '' scope=spfile;
(3)將log_archive_dest_1置空
alter system set log_archive_dest_1 = '' scope=spfile;
(4)啟用log_archive_dest引數
alter system set log_archive_dest = '/oracle/arch/ora10g' scope=spfile;
(5)重啟資料庫使上面的所有引數生效
shutdown immediate;
startup;
(6)當然,上面的過程一樣可以透過修改pfile的方法來完成
修改後的pfile關鍵引數內容如下:
*.log_archive_format='%t_%s_%r.arch'
*.db_recovery_file_dest=''
*.log_archive_dest='/oracle/arch/ora10g'
*.log_archive_dest_1=''
上面的方法一樣可以達到修改歸檔路徑的目的,不過不推薦使用log_archive_dest這個引數,在10g中,建議您使用log_archive_dest_n引數完成修改。
2)有趣現象二:如果db_recovery_file_dest和log_archive_dest兩個引數同時設定,會在這兩個目錄中同時產生歸檔日誌
(1)修改pfile,實驗可以使用如下引數進行
*.log_archive_format='%t_%s_%r.arch'
*.db_recovery_file_dest='/oracle/app/oracle/flash_recovery_area'
*.log_archive_dest='/oracle/arch/ora10g'
*.log_archive_dest_1=''
(2)使用pfile重新啟動資料庫
sys@ora10g> shutdown immediate;
sys@ora10g> startup pfile = '/oracle/app/oracle/product/10.2.0/db_1/dbs/initora10g.ora';
(3)“有趣”現象出現了
sys@ora10g> alter system switch logfile;
sys@ora10g> alter system switch logfile;
sys@ora10g> col NAME for a40
sys@ora10g> alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';
sys@ora10g> select recid, name, first_time from v$archived_log;
RECID NAME FIRST_TIME
---------- ---------------------------------------- -------------------
137 /oracle/arch/ora10g/1_128_688786498.arch 2009-09-20 12:09:29
138 /oracle/arch/ora10g/1_129_688786498.arch 2009-09-20 12:09:29
139 /oracle/arch/ora10g/1_130_688786498.arch 2009-09-20 12:09:30
140 /oracle/app/oracle/flash_recovery_area/O 2009-09-20 12:09:30
RA10G/archivelog/2009_09_20/o1_mf_1_130_
5ccccmw6_.arc
141 /oracle/arch/ora10g/1_131_688786498.arch 2009-09-20 12:20:03
142 /oracle/app/oracle/flash_recovery_area/O 2009-09-20 12:20:03
RA10G/archivelog/2009_09_20/o1_mf_1_131_
5cccd5kt_.arc
(4)結論
兩個目錄都會生成歸檔日誌,內容是一樣的;
/oracle/app/oracle/flash_recovery_area目錄下生成的歸檔檔案的格式沒有受log_archive_format引數影響,也就是說:log_archive_format的引數只對log_archive_dest和log_archive_dest_n生效。
3)有趣現象三:db_recovery_file_dest和log_archive_dest_n同時設定時,只有log_archive_dest_n的目錄產生日誌
(1)修改pfile,實驗可以使用如下引數進行
*.log_archive_format='%t_%s_%r.arch'
*.db_recovery_file_dest='/oracle/app/oracle/flash_recovery_area'
*.log_archive_dest=''
*.log_archive_dest_1='location=/oracle/arch/ora10g'
(2)使用pfile重新啟動資料庫
sys@ora10g> shutdown immediate;
sys@ora10g> startup pfile = '/oracle/app/oracle/product/10.2.0/db_1/dbs/initora10g.ora';
(3)實驗結果如下
sys@ora10g> alter system switch logfile;
sys@ora10g> alter system switch logfile;
sys@ora10g> col NAME for a40
sys@ora10g> alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';
sys@ora10g> select recid, name, first_time from v$archived_log;
RECID NAME FIRST_TIME
---------- ---------------------------------------- -------------------
138 /oracle/arch/ora10g/1_129_688786498.arch 2009-09-20 12:09:29
139 /oracle/arch/ora10g/1_130_688786498.arch 2009-09-20 12:09:30
140 /oracle/app/oracle/flash_recovery_area/O 2009-09-20 12:09:30
RA10G/archivelog/2009_09_20/o1_mf_1_130_
5ccccmw6_.arc
141 /oracle/arch/ora10g/1_131_688786498.arch 2009-09-20 12:20:03
142 /oracle/app/oracle/flash_recovery_area/O 2009-09-20 12:20:03
RA10G/archivelog/2009_09_20/o1_mf_1_131_
5cccd5kt_.arc
143 /oracle/arch/ora10g/1_132_688786498.arch 2009-09-20 12:20:21
144 /oracle/arch/ora10g/1_133_688786498.arch 2009-09-20 12:32:58
(4)結論
比照“有趣現象二”的結論,看到這裡只有log_archive_dest_1引數設定的歸檔路徑生效了。
3)有趣現象四:log_archive_dest和log_archive_dest_1引數不能同時設定
(1)修改pfile,實驗可以使用如下引數進行,db_recovery_file_dest引數設定與否都不會影響我們的實驗結果
*.log_archive_format='%t_%s_%r.arch'
*.db_recovery_file_dest='/oracle/app/oracle/flash_recovery_area'
*.log_archive_dest='/oracle/arch/ora10g'
*.log_archive_dest_1='location=/oracle/arch/ora10g'
(2)使用pfile重新啟動資料庫時就會報錯,不能這樣進行設定
sys@ora10g> shutdown immediate;
sys@ora10g> startup pfile = '/oracle/app/oracle/product/10.2.0/db_1/dbs/initora10g.ora';
ORA-16019: cannot use LOG_ARCHIVE_DEST_1 with LOG_ARCHIVE_DEST or LOG_ARCHIVE_DUPLEX_DEST
(4)結論
log_archive_dest和log_archive_dest_1引數不能同時設定,即如果啟用了log_archive_dest_1引數就不能再使用log_archive_dest引數重複設定了。
透過這個實驗,可以得到一個結論:log_archive_dest這個引數只是為了向後相容而存在的,因此在9i之後的版本Oracle中如果需要修改歸檔檔案生成路徑的話,還是建議您使用log_archive_dest_n引數。
4.總結
相信,如果您能靜心閱之,此時,您一定已經掌握了歸檔日誌生成路徑和歸檔日誌生成格式的修改技法。
同時,透過這些發現的有趣現象,我們也看到了一些Oracle的細節差異。大家慢慢發掘ing。
友情提示:生產環境上的任何修改操作必須謹慎!請充分測試後實施,防止類似本實驗中那些“有趣現象”的發生。
Goodluck.
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-615105/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 歸檔日誌多歸檔路徑 duplex
- 【Oracle】歸檔日誌管理-設定歸檔日誌路徑以及歸檔日誌冗餘Oracle
- 修改歸檔日誌路徑
- 更改archive log 歸檔路徑和歸檔檔名稱Hive
- archive log 歸檔日誌Hive
- Archived Redo Logs歸檔重做日誌介紹及其優點Hive
- 【實驗】通過v$archived_log檢視獲得歸檔日誌檔案的詳細資訊Hive
- 多路徑重用歸檔日誌
- standby庫歸檔日誌路徑小節
- ORA-00257 (線上更改歸檔路徑,刪除歸檔日誌)
- oracle archive log 歸檔日誌OracleHive
- logmnr挖掘歸檔日誌檔案
- 日誌檔案和歸檔管理
- RMAN delete archivelog命令刪除歸檔日誌及歸檔日誌拷貝deleteHive
- logmnr分析歸檔重做日誌
- Oracle archive log 歸檔日誌管理OracleHive
- 歸檔日誌
- oracle歸檔日誌儲存路徑的設定Oracle
- 歸檔路徑與FRA實驗過程
- RAC中歸檔日誌得命名格式
- 使用歸檔日誌分析解決歸檔日誌迅速增長問題(logmnr)
- 更改ORACLE歸檔路徑及歸檔模式Oracle模式
- logminer異機挖掘歸檔日誌
- 使用logminer分析歸檔日誌案例
- 10g修改歸檔日誌路徑的問題
- oracle歸檔日誌Oracle
- Oracle 歸檔日誌Oracle
- 歸檔日誌挖掘
- PostgreSQL 歸檔日誌SQL
- 【Archived Log】通過日誌切換頻率推算出存放歸檔日誌所需的空間Hive
- oracle之 Oracle歸檔日誌管理Oracle
- 控制檔案/歸檔日誌
- 【歸檔日誌路徑】之引數 log_archive_dest、LOG_ARCHIVE_DEST_n及快速恢復區路徑關係Hive
- Oracle設定多個歸檔路徑生成多份歸檔日誌,Rman備份時也只備份其中的一份歸檔日誌Oracle
- 更改oracle10g的歸檔模式和歸檔路徑Oracle模式
- rman 還原歸檔日誌(restore archivelogRESTHive
- Oracle基礎 04 歸檔日誌 archivelogOracleHive
- rman 還原歸檔日誌(restore archivelog)RESTHive