目標
描述主機命名與本地服務名稱解析之間的區別
使用 Oracle Net Configuration Assistant 配置
主機命名方法
本地命名方法
網絡服務名
排除簡單連接出現的故障
要點
命名方法概覽
客戶機應用程序在試圖連接數據庫服務時需要借助命名方法將連接標識符解析為連接描述符
Oracle Net 提供了五種命名方法
主機命名(Host Naming)使 TCP/IP 環境中的用戶能夠通過其現有名稱解析服務來解析名稱
本地命名使用在每個客戶機的 tnsnamesora 文件中配置和存儲的信息查找網絡地址
目錄命名將數據庫服務或網絡服務名解析為連接描述符該描述符存儲在中央目錄服務器中
Oracle Names這是由 Oracle Names 服務器系統構成的 Oracle 目錄服務這些服務器可以為網絡上的每個服務提供由名稱到地址的解析
外部命名使用受支持的第三方命名服務
對於只有幾個數據庫的小型組織來說應使用主機命名將名稱存儲在現有名稱解析服務中也可使用本地命名將名稱存儲在客戶機上的 tnsnamesora 文件中
對於有多個數據庫的大型組織來說應使用目錄命名將名稱存儲在集中管理的符合 LDAP 的目錄服務器中
主機命名
在下列情況下客戶機可使用主機名來連接服務器
使用 Oracle Net Services Client 軟件連接 Oracle 數據庫服務
使用 TCP/IP 協議建立客戶機與服務器的連接
主機名通過 DNS 或本地的 /etc/hosts 文件等 IP 地址轉換機制來解析
不使用 連接管理器 (Connection Manager) 或安全選項等高級功能
主機命名方法具有下列優點
需要的用戶配置最少用戶只需提供主機名即可建立連接
無需創建與維護本地名稱配置文件 (tnsnamesora)
無需了解 Oracle Names 或 Oracle Internet Directory 管理過程
主機命名在每個節點上只能標識一個 SID而使用其它命名方法還可標識其它 SID
如果在主機 (hosts) 文件中對多個全局名稱設置了別名讓它們指向同一 IP 地址這樣即使這些數據庫位於同一節點上也可使用主機命名連接任意數據庫
客戶端要求
如果使用主機命名方法則必須在客戶機上安裝 TCP/IP 協議此外還必須安裝 Oracle Net Services 和 TCP/IP 協議適配器
主機名通過域名服務 (Domain Name Services DNS)網絡信息服務 (Network Information Services NIS) 或集中維護的 TCP/IP 主機文件等 IP 地址轉換機制來解析
使用主機命名方法之前必須先對客戶端進行如上配置
服務器端要求
如果使用主機命名方法除了客戶機還必須在服務器上也安裝 TCP/IP 協議此外需要在服務器端安裝 Oracle Net Services 和 TCP/IP 協議適配器
在 Oraclei 和 Oraclei 中只要滿足以下條件之一就可向監聽程序自動注冊有關數據庫的信息(包括全局數據庫名稱)
在端口 上使用 TCP/IP 運行的名為 LISTENER 的缺省監聽程序正在運行
已在初始化文件中設置了 LOCAL_LISTENER 參數
早期版本中是通過listenerora文件向監聽程序注冊數據庫信息的必須靜態配置SID_LIST_listener_name段以包含GLOBAL_DBNAME參數
全局數據庫名稱由數據庫名稱和數據庫域名構成可以從初始化參數文件中的SERVICE_NAMES參數或DB_NAME和DB_DOMAIN參數來獲取 GLOBAL_DBNAME 的值
主機名必須與在客戶機中指定的連接字符串匹配其它信息還包括要連接的數據庫的信息
說明
主機命名在客戶端使用sqlnetora文件在服務器端使用listenerora文件
sqlnetora中的NAMESDIRECTORY_PATH參數確定的是連接時搜尋先後順序例如NAMESDIRECTORY_PATH= (TNSNAMES ONAMES HOSTNAME)
則先從本地TNSNAMES文件中去找連接時提供的描述符如果沒有發現匹配的則再去oracle name server上找
再沒有則使用主機命名方法進行連接——將連接描述符(假定為test)當作一個主機去連接去該主機上尋找GLOBAL_DBNAME=test的實例(實例名可能不是test)進行連接
本地命名
本地命名的優點
提供了一種相對簡單明了的解析服務名地址的方法
對於使用不同協議的各個網絡可跨網絡解析服務名
可使用圖形配置工具輕松配置
本地命名方法要求網絡服務名存儲在 tnsnamesora 文件中
本地命名在客戶端使用tnsnamesora和sqlnetora文件在服務器端使用listenerora文件
在圖形化界面中配置網絡服務名
service name為該數據庫服務的service name一般為db_namedb_domain
net服務名為按該服務在本地的標識符相當於別名
故障排除
ORATNS無法解析服務名
原因Oracle Net Services 找不到在 tnsnamesora 配置文件中指定的連接描述符
操作
檢查 tnsnamesora 文件是否存在以及是否可訪問
檢查 tnsnamesora 文件是否位於 TNS_ADMIN 環境變量指定的位置中
在 tnsnamesora 文件中核實在連接字符串中指定的服務名已經映射為tnsnamesora文件中的連接描述符還要核實文件中沒有語法錯誤
確認不存在 sqlnetora 文件的重復副本
如果正從登錄對話框連接則應核實連接服務名前沒有 at 符號 (@)
ORATNS找不到指向目標的路徑和ORATNS無法連接目標
原因客戶機找不到所需數據庫
操作
核實已正確輸入要連接的數據庫的服務名
核實 TNSNAMESORA 文件的連接描述符中的服務名 ADDRESS 參數是正確的
核實 TNSNAMESORA 文件已存儲在 TNS_ADMIN 環境變量定義的目錄中
核實遠程節點上的監聽程序已經啟動並正在運行如果未啟動可使用 監聽程序控制實用程序啟動監聽程序
如果正從登錄對話框連接則應核實連接服務名前沒有 at 符號 (@)
ORATNSADDRESS 參數非法
原因tnsnamesora 文件內指定的連接描述符的 ADDRESS 段中的協議特定參數不正確
操作
有關針對不同協議的關鍵字的詳細信息請參考適用於平台的 Oracle 操作系統文檔
ORATNS沒有監聽程序
原因無法與遠程節點上的監聽程序取得聯系
操作
核實遠程節點上的監聽程序已經啟動可使用 監聽程序控制實用程序 的 STATUS 命令檢查監聽程序的狀態如果需要還可使用 START 命令啟動該監聽程序
From:http://tw.wingwit.com/Article/program/Oracle/201311/16638.html