tnsnames.ora檔案的查詢路徑

charsi發表於2010-11-24

我們有時候會遇到,明明在$ORACLE_HOME/network/admin/tnsnames.ora檔案中新增了資料庫的連線配置,但是在執行tnsping的時候就是報無法解析的錯誤

/oravl01/oracle/9.2.0/network/admin > tnsping SP9DB1

TNS-03505: Failed to resolve name

對於這種問題,排除新增的配置格式錯誤後.可能原因是讀取的tnsnames.ora路徑根本就不是$ORACLE_HOME/network/admin

tnsnames.ora檔案的查詢路徑順序為
$HOME => $TNS_ADMIN => /etc => $ORACLE_HOME/network/admin/


我們從下面可以看出tnsnames.ora檔案的查詢路徑順序:

[oracle:/oracle#]
[oracle:/oracle#]
[oracle:/oracle#]echo $HOME ----oracle使用者的HOME路徑
/oracle
[oracle:/oracle#]echo $TNS_ADMIN
/home/oracle
[oracle:/oracle#]strace -o /tmp/a3 tnsping testdb ---設定的TNS_ADMIN路徑

TNS Ping Utility for Linux: Version 10.2.0.1.0 - Production on 06-4?? -2011 16:04:50

Copyright (c) 1997, 2005, Oracle. All rights reserved.

Used parameter files:


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.43.4)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = testdb)))
OK (10 msec)
[oracle:/oracle#]
[oracle:/oracle#]
[oracle:/oracle#]
[oracle:/oracle#]
[oracle:/oracle#]grep tns /tmp/a3
execve("/opt/ora10g/product/10.2.0/db_1/bin/tnsping", ["tnsping", "testdb"], [/* 32 vars */]) = 0
access("/oracle/.tnsnames.ora", F_OK) = -1 ENOENT (No such file or directory) ---首先查詢$HOME/.tnsnames.ora檔案未找到
access("/home/oracle/tnsnames.ora", F_OK) = -1 ENOENT (No such file or directory) ---再查詢$TNS_ADMIN/tnsnames.ora檔案未找到
access("/etc/tnsnames.ora", F_OK) = -1 ENOENT (No such file or directory) ---查詢/etc/tnsnames.ora檔案未找到
access("/opt/ora10g/product/10.2.0/db_1/network/admin/tnsnames.ora", F_OK) = 0 ---最後查詢$ORACLE_HOME/network/admin/tnsnames.ora檔案
stat64("/opt/ora10g/product/10.2.0/db_1/network/admin/tnsnames.ora", {st_mode=S_IFREG|0644, st_size=181, ...}) = 0
open("/opt/ora10g/product/10.2.0/db_1/network/admin/tnsnames.ora", O_RDONLY|O_LARGEFILE) = 3
open("/opt/ora10g/product/10.2.0/db_1/network/mesg/tnszhs.msb", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/ora10g/product/10.2.0/db_1/network/mesg/tnsus.msb", O_RDONLY) = 3
[oracle:/oracle#]

本文參考http://www.itpub.net/thread-1216746-1-1.html#

[@more@]

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

相關文章