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的奇葩設定之非歸檔模式與RMAN備份Oracle模式
- Oracle歸檔模式與非歸檔模式設定Oracle模式
- oracle 歸檔設定Oracle
- ORACLE RAC 設定歸檔Oracle
- oracle自動歸檔的設定Oracle
- Linux rm -rf 之rm: cannot remove `linux': Device or resource busyLinuxREMdev
- Oracle的奇葩設定之自動統計資訊更新Oracle
- Linux 系統的常用命令之 rm ,rm -rf , rm -f 以及rm 命令的其他引數命令Linux
- oracle 歸檔的一般設定Oracle
- linux rm - rf之後怎麼恢復Linux
- oracle歸檔日誌過滿清理Oracle
- rm -rf 刪除檔案還能恢復嗎?
- 拒絕使用 rm -rf 命令 ?
- RAC 設定NFS作為歸檔目錄NFS
- 閃回與歸檔引數的設定
- Oracle歸檔引數設定問題Oracle
- 歸檔模式的設定模式
- linux 用rm -rf 刪除不了檔案的解決方法Linux
- Oracle 歸檔與非歸檔模式的更改Oracle模式
- 設定歸檔模式模式
- Oracle歸檔模式、引數意義、設定Oracle模式
- oracle歸檔日誌儲存路徑的設定Oracle
- 【RMAN】rm -rf 誤操作的恢復過程
- 【Oracle】歸檔日誌管理-設定歸檔日誌路徑以及歸檔日誌冗餘Oracle
- oracle資料庫rman歸檔設定和管理Oracle資料庫
- Oracle RAC 歸檔與非歸檔切換Oracle
- rman清理歸檔日誌
- Oracle 歸檔和非歸檔模式之間的切換Oracle模式
- 在Linux中執行"rm -rf /"的結果Linux
- oracle 8i的歸檔與不歸檔切換Oracle
- Linux 恢復rm -rf命令所刪除的達夢資料檔案Linux
- 設定Oracle9i為自動歸檔模式Oracle模式
- oracle 10G設定歸檔目錄及命令Oracle 10g
- Oracle 10gR2 RAC+ASM 歸檔設定Oracle 10gASM
- Oracle資料庫設定為歸檔模式的操作方法Oracle資料庫模式
- 手工rm刪除歸檔日誌對備份歸檔日誌的影響
- oracle之 Oracle歸檔日誌管理Oracle
- Postgresql日誌歸檔設定SQL