運用Log和Trace檔案排除Oracle Net問題
有時候已經正常安裝和配置了 Oracle Net 相關組建,比如服務端的 TNS Listener,以及客戶端的 tnsnames.ora,在 Oracle Server 駐留的機器上也能正常連線,但是從客戶機器上出現了無法連線 Oracle 資料庫服務的情況。
通常出現這種情況,一般要按照以下兩個步驟來排除故障:首先,需要定位發生問題的位置或者說環節;然後,根據發生問題的位置或環節找出相應的解決辦法。
由於 Oracle Net 是按照 OSI 的七層模型來設計的(它包括了會話層、表示層和應用層三個 OSI 層的功能),而底下其他層的網路功能由網路軟硬體提供,因此,故障發生的環節可大體分為兩種情況:一是 Oracle Net 的配置有問題,二是底層的網路出了問題。
要定位故障,首先得把故障從整體中分離出來,分成不同的環節,單獨進行考慮和測試驗證,逐步找出故障所在。
一般的做法是,分別排除相應情況:
1、物理連線有沒有問題?驗證這個的最簡單辦法就是看是否能夠 ping 通服務主機。
2、如果第 1 步沒有問題,主機和客戶機之間能夠 ping 通,那麼就需要檢測伺服器上的服務是否正常,即從本地是否能夠連線到資料庫(本地連線 oracle 資料庫時,一般不用網路協議,而用程式間通訊協議),在資料庫駐留的主機上,既可以利用 tnsping 工具,也可以直接使用 sqlplus 等客戶端軟體直接連線資料庫服務。
3、如果前兩步均能夠正常完成,那麼就要考慮網路連線是否被防火牆阻塞?在能夠由於 ping 工具和 Oracle 的網路測試工具 tnsping 使用的埠不相同,因此資料庫伺服器上的防火牆可能允許其他機器 ping 本機,但不一定允許 Oracle Listener 的埠(預設為1521)對外提供服務(也就是外部程式試圖連線到1521這個埠的嘗試會被防火牆阻擋),因此,即使能 ping 通,也不一定能 tnsping 通或用 sqlplus 等應用程式連線到資料庫。
對於1出現問題的情況,就需要排除物理網路連線的問題,對於2出現問題的情況,就需要考慮重新驗證和配置相應的 Oracle Net 的相關配置檔案,對於 3 出現的問題,就要考慮防火牆策略和Selinux(如果是 Linux 作業系統)以及其他型別的防護手段的配置問題。
但是,有時候,即使你前面3步都完成了,還是無法從客戶機上連線資料庫伺服器,這時恐怕就得動用 log 檔案和 trace 檔案來檢視出問題的細節了。
筆者本人就遇到過一次 redhat enterprise linux 7下面的類似情況,1、2步不用說,正常透過,問題就是進行到第三步時,防火牆也關閉了,但始終無法連線到伺服器。最後只好透過分析 trace 檔案來定位問題。
要使用 trace 檔案來分析問題,首先要配置 SQL*Net 來啟用 trace 功能,因為該功能預設情況下是停用的。
要啟用 SQL*Net 的 Trace,需要在 $ORACLE_HOME/network/admin/ 下面的 sqlnet.ora 中新增如下程式碼:
注意:
- TRACE_DIRECTORY_CLIENT的路徑自己隨意,但不要以 / 結尾
- 以上8個引數,每個引數務必頂格寫,即:不要以空格開頭
- 以#開頭表示註釋。
- TRACE_UNIQUE_CLIENT 設定是否為每個客戶跟蹤會話建立單獨的 trace 檔案,如果設定為 ON,那麼 trace 檔案將會設定為 SQLNetTracepid.trc(假設預設檔名為 SQLNetTrace.trc)。
- TRACE_LEVEL_CLIENT 開啟客戶跟蹤的級別,取值為:off 或 0 表示沒有 trace 資訊輸出,user 或 4 表示使用者級跟蹤資訊,admin 或 10 表示管理級跟蹤資訊,support 或 16 表示 Oracle 支援服務級跟蹤資訊。
- TRACE_DIRECTORY_CLIENT 指定存放客戶端 trace 檔案的目錄,預設為當前工作目錄。需要注意的是,啟動 oracle net 的使用者應該對該目錄有寫許可權。
- TRACE_FILE_CLIENT 指定客戶端會話 trace 檔案的名稱。
- TRACE_TIMESTAMP_CLIENT 指定客戶端 trace 的事件記錄中是否包含時間戳,預設為 on
- TRACE_ADR_ENABLED 是否開啟 Automatic Diagnosic Repository ,預設為 on,注意:開啟 ADR 的情況下,TRACE_DIRECTORY_CLIENT、TRACE_FILE_CLIENT 、TRACE_UNIQUE_CLIENT、 TRACE_FILELEN_CLIENT 和 TRACE_FILENO_CLIENT 5個引數將不起作用。這時的跟蹤檔案將儲存在 ADR 庫中,該庫的位置由 ADR_BASE 引數設定,ADR_BASE 的預設值為 $ORACLE_BASE ,實際的跟蹤檔案將放在該目錄下的 diag/client/user_USERNAME/HOSTID 下面。
- TRACE_FILELEN_CLIENT 和 TRACE_FILENO_CLIENT 控制 trace 檔案大小(以KB計)和數量。
可以看出,在試圖向資料庫伺服器的偵聽地址寫資料時發生錯誤。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28853590/viewspace-2156690/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle Trace檔案過量生成問題解決Oracle
- Oracle清理trace、alert、aud、listener.log檔案Oracle
- oracle trace檔案解析Oracle
- Oracle跟蹤檔案trace檔案Oracle
- Trace檔案過量生成問題解決
- Oracle EBS 如何生成trace檔案Oracle
- #用openfiledialog檔案和savefileDialog開啟和儲存檔案
- SVN檔案排除
- Oracle檢視trace檔案步驟Oracle
- git的gitignore檔案排除資料夾和檔案Git
- Oracle 使用者Trace 檔案路徑Oracle
- oracle之 利用 controlfile trace檔案重建控制檔案Oracle
- oracle控制檔案及引數檔案問題Oracle
- 檔案路徑問題( ./ 和 ../ 和 @/ )
- oracle清理trace、alert、aud、listener等日誌檔案Oracle
- 除了TRACE檔案,在哪檢視資料庫的 maxlogfiles ?資料庫
- trace檔案閱讀
- Oracle 增加控制檔案遇到的問題Oracle
- oracle 資料庫lsnrctl監聽的日誌路徑和trace檔案Oracle資料庫
- oracle trace檔名查詢Oracle
- tempfile檔案過大問題處理 for logical standby
- rsync排除多個檔案同步
- rm命令刪除檔案時排除特定檔案
- [20210622]logrotate清除oracle aud檔案的問題.txtlogrotateOracle
- Linux中使用rsync——檔案和目錄排除列表Linux
- trace檔案無法生成
- 利用trace重建控制檔案
- oracle檔案管理之 redo logOracle
- 檢視oracle固定目錄下日誌和trace檔案大小指令碼Oracle指令碼
- log4net配置和MySQL無法連線問題MySql
- oracle Database Event trace 設定【Blog 搬家】OracleDatabase
- [提問交流]用onethink 建立一個網站會生成15_03_17.log檔案網站
- tar打包且排除某個檔案
- 通過trace檔案重新建立控制檔案
- 透過trace檔案重新建立控制檔案
- oracle ebs 根據請求id找到對應trace 檔案Oracle
- 利用tkprof檢視trace檔案
- sql_trace 原檔案解析SQL