【問題處理】diagcollection.pl採集指令碼執行出錯——Argument list too long

secooler發表於2010-11-20
1.問題現象
1)在root使用者下設定必須的環境變數
[root@rac1 ~]# export ORACLE_BASE=/oracle/app/oracle
[root@rac1 ~]# export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
[root@rac1 ~]# export ORA_CRS_HOME=/oracle/app/crs

2)確認環境變數設定正確
[root@rac1 ~]# echo $ORACLE_BASE
/oracle/app/oracle
[root@rac1 ~]# echo $ORACLE_HOME
/oracle/app/oracle/product/10.2.0/db_1
[root@rac1 ~]# echo $ORA_CRS_HOME
/oracle/app/crs
[root@rac1 ~]# echo $HOSTNAME
rac1

3)問題報錯如下
[root@rac1 ~]# cd $ORA_CRS_HOME/bin
[root@rac1 bin]# ./diagcollection.pl -collect --all --crshome $ORA_CRS_HOME
Production Copyright 2004, 2005, Oracle.  All rights reserved
Cluster Ready Services (CRS) diagnostic collection tool
The following CRS diagnostic archives will be created in the local directory.
crsData_rac1.tar.gz -> logs,traces and cores from CRS home. Note: core files will be packaged only with the -core option.
ocrData_rac1.tar.gz -> ocrdump, ocrcheck etc
coreData_rac1.tar.gz -> contents of CRS core files in text format

Collecting crs data
sh: /bin/tar: Argument list too long
gzip: crsData_rac1.tar: No such file or directory
Collecting OCR data
Collecting information from core files
No corefiles found
The following Oracle Home diagnostic archives will be created in the local directory.
oraData_rac1.tar.gz -> logs, traces and cores from Oracle Home
Collecting oracle home data
/bin/tar: Removing leading `/' from member names

2.問題原因
該問題是由於Shell本身的限制,當引數列表(Argument list)過長後,便會導致diagcollection.pl指令碼執行出錯。
本例中CRS日誌目錄下的大量檔案是導致該問題的罪魁禍首。

3.處理方法
主要有兩種處理方法:①手工收集CRS日誌目錄下的所需檔案;②刪除無用檔案,避免出現超出Shell限制的問題

針對第二種方法,我們僅需要關心“$CRS_HOME/log//clien”目錄下的檔案即可,因為該目錄下儲存的檔案內容最為龐大。可以清除一個月之前的檔案(或將一個月之前的檔案手工備份到其他目錄)後再嘗試收集。

4.更多的參考資訊
有關該問題的更多參考資訊請參見MOS:diagcollection.pl Fails With "Argument list too long" [ID 751981.1]

5.小結
我們的目標:不放過任何細節!

Good luck.

secooler
10.11.20

-- The End --

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-680054/,如需轉載,請註明出處,否則將追究法律責任。

相關文章