[20150505]關於alert.log檔案.txt
[20150505]關於alert.log檔案.txt
--alert.log檔案記錄系統報警資訊以及關鍵記錄,對於資料庫的診斷很有幫助.
--我記得以前有過一次經歷使用vim,不小心編輯了alert檔案,導致後續的日誌資訊無法追加到檔案中.
--實際上這個因為編輯儲存後,檔案inode發生了變化.而出現這樣的情況.
1.先來看看10g的情況:
SCOTT@test> @ &r/ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- ----------------------------------------------------------------
x86_64/Linux 2.4.xx 10.2.0.4.0 Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
SCOTT@test> @ &r/spid
SID SERIAL# SPID C50
------------ ------------ ------ --------------------------------------------------
157 7 26687 alter system kill session '157,7' immediate;
$ ls -l /proc/26687/fd | grep -i alert
--無顯示!
SCOTT@test> alter system archive log current ;
System altered.
$ ls -l /proc/26687/fd | grep -i alert
lr-x------ 1 oracle oinstall 64 2015-05-05 08:13:45 6 -> /u01/app/oracle/admin/test/bdump/alert_test.log
--可以發現在執行alter system archive log current ;後,開啟了alert*.log檔案.
# lsof | grep -E 'alert_test.log|PID'
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
oracle 26476 oracle 6w REG 8,3 1497201 37093990 /u01/app/oracle/admin/test/bdump/alert_test.log
oracle 26476 oracle 8w REG 8,3 1497201 37093990 /u01/app/oracle/admin/test/bdump/alert_test.log
oracle 26478 oracle 6w REG 8,3 1497201 37093990 /u01/app/oracle/admin/test/bdump/alert_test.log
oracle 26478 oracle 8w REG 8,3 1497201 37093990 /u01/app/oracle/admin/test/bdump/alert_test.log
oracle 26480 oracle 6w REG 8,3 1497201 37093990 /u01/app/oracle/admin/test/bdump/alert_test.log
oracle 26480 oracle 8w REG 8,3 1497201 37093990 /u01/app/oracle/admin/test/bdump/alert_test.log
oracle 26482 oracle 6w REG 8,3 1497201 37093990 /u01/app/oracle/admin/test/bdump/alert_test.log
oracle 26482 oracle 8w REG 8,3 1497201 37093990 /u01/app/oracle/admin/test/bdump/alert_test.log
oracle 26484 oracle 6w REG 8,3 1497201 37093990 /u01/app/oracle/admin/test/bdump/alert_test.log
oracle 26484 oracle 8w REG 8,3 1497201 37093990 /u01/app/oracle/admin/test/bdump/alert_test.log
...
--如果仔細檢查這個系統程式PID,可以發現大部分是後臺程式.
# ps -ef | grep "ora_dbw0_test" | grep -v grep
oracle 26482 1 0 08:04 ? 00:00:00 ora_dbw0_test
--也就是講在資料庫啟動後,alert*.log的檔案控制程式碼就開啟了.如果不小心編輯,導致檔案inode變化,導致無法追加日誌.
--注意mv並不會改變檔案的inode資訊.
--我做一個mv例子:
$ ls -il alert_test.log
37093990 -rw-r----- 1 oracle oinstall 1497201 2015-05-05 08:14:16 alert_test.log
$ mv alert_test.log alert_test.log_xxx
$ ls -il alert_test.log_xxx
37093990 -rw-r----- 1 oracle oinstall 1497201 2015-05-05 08:14:16 alert_test.log_xxx
--可以發現前面的數字37093990是檔案的inode號,沒有變化.
# lsof | grep -E 'alert_test.log|PID'
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
oracle 26476 oracle 6w REG 8,3 1497201 37093990 /u01/app/oracle/admin/test/bdump/alert_test.log_xxx
oracle 26476 oracle 8w REG 8,3 1497201 37093990 /u01/app/oracle/admin/test/bdump/alert_test.log_xxx
oracle 26478 oracle 6w REG 8,3 1497201 37093990 /u01/app/oracle/admin/test/bdump/alert_test.log_xxx
oracle 26478 oracle 8w REG 8,3 1497201 37093990 /u01/app/oracle/admin/test/bdump/alert_test.log_xxx
oracle 26480 oracle 6w REG 8,3 1497201 37093990 /u01/app/oracle/admin/test/bdump/alert_test.log_xxx
oracle 26480 oracle 8w REG 8,3 1497201 37093990 /u01/app/oracle/admin/test/bdump/alert_test.log_xxx
oracle 26482 oracle 6w REG 8,3 1497201 37093990 /u01/app/oracle/admin/test/bdump/alert_test.log_xxx
---可以發現這些檔案系統指向新的檔名.
---在前面的會話執行alter system archive log current ;會出現什麼情況呢?
$ ls -l /proc/26687/fd | grep -i alert
lr-x------ 1 oracle oinstall 64 2015-05-05 08:13:45 6 -> /u01/app/oracle/admin/test/bdump/alert_test.log
--有建立新的alert檔案並開啟新的控制程式碼.
# lsof | grep -E 'alert_test.log$|PID'
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
oracle 26488 oracle 8w REG 8,3 459 37094613 /u01/app/oracle/admin/test/bdump/alert_test.log
oracle 26490 oracle 8w REG 8,3 459 37094613 /u01/app/oracle/admin/test/bdump/alert_test.log
oracle 26687 oracle 6r REG 8,3 459 37094613 /u01/app/oracle/admin/test/bdump/alert_test.log
# ps -ef | grep -E "26488|26490|26687" | grep -v grep
oracle 26488 1 0 08:04 ? 00:00:00 ora_lgwr_test
oracle 26490 1 0 08:04 ? 00:00:00 ora_ckpt_test
oracle 26687 26686 0 08:12 ? 00:00:00 oracletest (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
--如果你使用vim編輯看看,可以發現inode發生了變化.
$ ls -li alert_test.log
37095477 -rw-r----- 1 oracle oinstall 804 2015-05-05 08:37:08 alert_test.log
# lsof | grep -E 'alert_test.log|PID' | grep delete
oracle 26488 oracle 8w REG 8,3 805 37095459 /u01/app/oracle/admin/test/bdump/alert_test.log~ (deleted)
oracle 26687 oracle 6r REG 8,3 459 37094613 /u01/app/oracle/admin/test/bdump/alert_test.log~ (deleted)
--總之最好不好選擇檢視時,不要選擇儲存,最好選擇view模式.
2.再來看看11g的情況:
SYS@test> @ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.3.0 Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
# lsof | grep -i alert
--竟然沒有輸出.
SCOTT@test> @spid
SID SERIAL# SPID C50
---------- ---------- ------ --------------------------------------------------
580 7 3879 alter system kill session '580,7' immediate;
SCOTT@test> alter system archive log current ;
System altered.
# ls -l /proc/3879/fd | grep alert
--竟然沒有輸出.
# lsof | grep -i alert
--竟然沒有輸出.
--換一句講,在寫alert*.log完成後,關閉了控制程式碼.
--這樣即使編輯檔案等各種操作,基本不會導致日誌的丟失.
3.當然11G rac下又是不同的情況:
# lsof | grep -E "alert_|PID"
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 20101 root 60r REG 252,3 212216 10764708 /u01/app/grid/diag/asm/+asm/+ASM2/trace/alert_+ASM2.log
java 20101 root 61r REG 252,3 16654048 12142756 /u01/app/oracle/diag/rdbms/dben/dben2/trace/alert_dben2.log
java 20101 root 63r REG 252,3 409450857 12125590 /u01/app/oracle/diag/rdbms/dbcn/dbcn2/trace/alert_dbcn2.log
# ps -ef | grep 20101
root 20101 1 1 2014 ? 1-12:14:54 /u01/app/11.2.0.4/grid/jdk/jre/bin/java -Xms128m -Xmx512m -classpath
/u01/app/11.2.0.4/grid/tfa/dm01dbadm02/tfa_home/jlib/RATFA.jar:
/u01/app/11.2.0.4/grid/tfa/dm01dbadm02/tfa_home/jlib/je-5.0.84.jar:
/u01/app/11.2.0.4/grid/tfa/dm01dbadm02/tfa_home/jlib/ojdbc6.jar:
/u01/app/11.2.0.4/grid/tfa/dm01dbadm02/tfa_home/jlib/commons-io-2.2.jar oracle.rat.tfa.TFAMain
/u01/app/11.2.0.4/grid/tfa/dm01dbadm02/tfa_home
--這個是tfa的東東,好像以讀的方式開啟.看來11G已經發生了變化,開啟讀寫完成後,會關閉alert檔案的控制程式碼.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-1622956/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20170406]關於檔案頭轉儲.txt
- 關於PDF檔案解密解密
- 關於 ylepub 檔案格式
- oracle 關於--控制檔案Oracle
- [20201104]關於稀疏檔案(sparse files).txt
- [20161108]關於資料檔案的問題.txt
- [20161107]關於資料檔案點陣圖區.txt
- c++ 關於new檔案C++
- oracle 關於--密碼檔案Oracle密碼
- oracle 關於--引數檔案Oracle
- oracle 關於-日誌檔案Oracle
- oracle 關於-資料檔案Oracle
- 關於oracle的控制檔案Oracle
- 關於oracle 密碼檔案Oracle密碼
- 關於檔案的open方法
- php如何上傳txt檔案,並且讀取txt檔案PHP
- PCL——txt檔案轉到PCD檔案
- [20121115]關於oracle資料檔案的第1塊.txtOracle
- 2.6.1 關於初始化檔案
- 關於index檔案呼叫查詢Index
- 關於控制檔案的總結
- 關於更改Resin啟動檔案
- 請教關於利用跟蹤檔案重建控制檔案
- [20180211]關於oracle執行檔案許可權問題.txtOracle
- Oracle 匯出txt檔案Oracle
- SQLSERVER匯出TXT文字檔案,ORACLE SQL LOADER匯入TXT文字檔案SQLServerOracle
- sqlserver關於filestream檔案流、filetable檔案表的總結SQLServer
- 關於Java使用MinIO檔案伺服器操作檔案Java伺服器
- 關於ubuntu修改hosts檔案的方法Ubuntu
- 關於Play框架的靜態檔案框架
- 關於node實現檔案上傳
- mysql關於ibdata檔案的理解MySql
- 關於C++的標頭檔案C++
- C#關於讀寫INI檔案C#
- 關於密碼檔案,SYS密碼密碼
- 關於傳送Http標頭檔案HTTP
- 關於rm刪除檔案失敗
- 關於ELF檔案格式的實驗