Oracle的奇葩設定之歸檔清理作業與rm -rf
雖然,Linux、Unix主機的定時任務crontab對於應用或資料庫伺服器的日常維護起到了很大的作用,但是,一旦設定不合理,就會給應用或資料庫伺服器的正常執行帶來潛在的安全隱患。
在聯通有這麼奇葩的設定,那個超級不合理的設定是關於oracle資料庫歸檔清理的。主機維護人員為了減輕日常維護負擔,將清理任務交給了crontab,放了一個清理指令碼在資料庫伺服器上。令誰都想不到的是指令碼清理歸檔的命令是:rm -rf ....。由於資料庫伺服器儲存空間壓力很大,需要該指令碼沒30分鐘執行一次,來釋放空間。由於資料庫歸檔程式會不定時執行,有與該指令碼耦合的可能,結果還真的發生了。導致資料庫正在歸檔的歸檔檔案被rm -rf強制刪除掉了,因而資料庫無法完成歸檔,告警日誌一直報錯如下:
Wed Jul 9 22:30:46 2014
Errors in file /oracle/admin/cdma/bdump/cdma_arc1_25303.trc:
ORA-19510: 無法設定 984377 區塊的大小給檔案 "/oradata2/cdma/archivelog/1_2302874_696954518.dbf" (塊大小 = 512)
ORA-27037: 無法獲得檔案狀態
在聯通有這麼奇葩的設定,那個超級不合理的設定是關於oracle資料庫歸檔清理的。主機維護人員為了減輕日常維護負擔,將清理任務交給了crontab,放了一個清理指令碼在資料庫伺服器上。令誰都想不到的是指令碼清理歸檔的命令是:rm -rf ....。由於資料庫伺服器儲存空間壓力很大,需要該指令碼沒30分鐘執行一次,來釋放空間。由於資料庫歸檔程式會不定時執行,有與該指令碼耦合的可能,結果還真的發生了。導致資料庫正在歸檔的歸檔檔案被rm -rf強制刪除掉了,因而資料庫無法完成歸檔,告警日誌一直報錯如下:
Wed Jul 9 22:30:46 2014
Errors in file /oracle/admin/cdma/bdump/cdma_arc1_25303.trc:
ORA-19510: 無法設定 984377 區塊的大小給檔案 "/oradata2/cdma/archivelog/1_2302874_696954518.dbf" (塊大小 = 512)
ORA-27037: 無法獲得檔案狀態
經過查詢,/oradata2/cdma/archivelog/1_2302874_696954518.dbf已經不存在了。更嚴重的後果是,由於正在歸檔的歸檔被刪除還導致雙擊異常而發生切換,而且這種由於歸檔誤刪除發生雙擊切換還不止一次。從作業系統的messages檔案有印證,如上述告警報錯,只要是歸檔程式正在歸檔還沒完成,而rm -rf定時任務刪除了正在歸檔的檔案,都是半點發生的。然後solaris雙擊軟體日誌檔案檢測資料庫核心程式異常,就切換oracle資料庫到另外一個節點執行,但是資料庫到對端執行還是不能完成歸檔,又發生切換。
後來,透過與主機、應用協商採用rman自動刪除歸檔來避免正在歸檔的檔案被誤刪除,具體的命令如下:
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=/oracle/app/oracle/product/10.2.0.5/db_1
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_SID=orcl105
rman target / nocatalog log /tmp/rman_delete_arch.log append<
allocate channel c1 type disk;
後來,透過與主機、應用協商採用rman自動刪除歸檔來避免正在歸檔的檔案被誤刪除,具體的命令如下:
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=/oracle/app/oracle/product/10.2.0.5/db_1
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_SID=orcl105
rman target / nocatalog log /tmp/rman_delete_arch.log append<
allocate channel c2 type disk;
allocate channel c3 type disk;
sql 'alter system archive log current';
crosscheck backup;
crosscheck archivelog all;
delete noprompt obsolete;
delete noprompt archivelog all;
EOF
透過歸檔檔案清理指令碼的調整,該雙擊資料庫因歸檔誤刪除的問題解決了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29357786/viewspace-1440904/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle歸檔日誌清理Oracle
- Linux 系統的常用命令之 rm ,rm -rf , rm -f 以及rm 命令的其他引數命令Linux
- linux rm - rf之後怎麼恢復Linux
- rm -rf 刪除檔案還能恢復嗎?
- 拒絕使用 rm -rf 命令 ?
- 【Oracle】歸檔日誌管理-設定歸檔日誌路徑以及歸檔日誌冗餘Oracle
- 設定Oracle9i為自動歸檔模式Oracle模式
- Linux 恢復rm -rf命令所刪除的達夢資料檔案Linux
- 手工rm刪除歸檔日誌對備份歸檔日誌的影響
- oracle歸檔Oracle
- Oracle實驗8--Merge與歸檔Oracle
- Oracle RAC啟動歸檔時需要設定CLUSTER_DATABASE引數嗎?OracleDatabase
- PostgreSQL的xlog/Wal歸檔及日誌清理SQL
- Oracle設定多個歸檔路徑生成多份歸檔日誌,Rman備份時也只備份其中的一份歸檔日誌Oracle
- 沒執行過 rm -rf /* 的開發不是好運維運維
- 在Oracle中,如何定時刪除歸檔日誌檔案?Oracle
- oracle歸檔日誌Oracle
- iOS 複雜物件的歸檔與反歸檔iOS物件
- 歸檔oracle alert日誌Oracle
- Oracle:歸檔量統計Oracle
- Rman在run命令塊裡臨時設定歸檔目錄,歸檔日誌能否恢復主要看預設的歸檔路徑
- oracle rman 刪除過期的歸檔Oracle
- ORACLE NBU調取oracle rman指令碼備份歸檔不自動刪除歸檔Oracle指令碼
- 咦?Oracle歸檔檔案存哪了?Oracle
- Oracle 歸檔使用情況分析Oracle
- Oracle dg歸檔同步失敗Oracle
- ORACLE RAC開啟歸檔的正確姿勢與ORA-01126Oracle
- extundelete工具恢復rm -rf 刪除的目錄(ext4、ext3)delete
- oracle 刪除過期的歸檔日誌Oracle
- LightBD/PostgreSQL資料庫設定歸檔保留時間SQL資料庫
- oracle 11g開啟歸檔模式及修改歸檔目錄Oracle模式
- oracle的adr清理incidentOracleIDE
- rm 刪除檔案
- Oracle清理trace、alert、aud、listener.log檔案Oracle
- oracle清理trace、alert、aud、listener等日誌檔案Oracle
- 在Oracle中,如何定時清理INACTIVE狀態的會話?Oracle會話
- Oracle資料庫歸檔模式的切換ELOracle資料庫模式
- Oracle 12c 關閉歸檔模式Oracle模式
- oracle11G歸檔日誌管理Oracle