簡體   English   中英

tnsping ping失敗,即使我可以成功連接到數據庫

[英]tnsping ping fails, even though I can successfully connect to database

在嘗試從我的工作站建立連接(實際上,我在WinXP32和Win764工作站上看到相同的行為)到Oracle服務器時,我總是嘗試的第一件事是tnsping。 當我這樣做時,這就是我得到的:

> C:\>tnsping MYDBNAME
> 
> TNS Ping Utility for 32-bit Windows:
> Version 10.2.0.1.0 - Production on
> 25-JAN-2 011 15:03:35
> 
> Copyright (c) 1997, 2005, Oracle.  All
> rights reserved.
> 
> Message 3511 not found; No message
> file for product=NETWORK,
> facility=TNSMessage  3512 not found;
> No message file for product=NETWORK,
> facility=TNSAttempting to contact
> (DESCRIPTION = (ADDRESS_LIST =
> (ADDRESS = (PROTOCOL = TCP) (HOST =
> thisismyservername.com)(PORT = 1577)))
> (CONNECT_DATA = (SID = MYDBNAME)))
> Message 3509 not found; No message
> file for product=NETWORK, facility=TNS

因此,正如您所看到的,它正確檢測我的tnsnames文件,並為指定的數據庫選擇正確的服務器地址和端口,但tnsping失敗,出現3511和3509錯誤。

奇怪的是,使用sqlplus或Toad,來自同一個工作站,我可以成功連接到同一個數據庫。

任何人都可以解釋這里發生了什么?

FWIW:

設置ORACLE_HOME系統環境變量(以及任何其他oracle環境變量)。

更新

ORACLE_HOME環境變量不一定必須設置,它似乎依賴於每台機器。 我的特殊問題是:Oracle 10g有一個已知的缺陷,即tnsping.exe根本無效。 有補丁

我相信當您的ORACLE_HOME環境變量設置不正確時會發生這種情況。 仍然可以從PATH獲取tnsping ,但它無法找到其消息文件。 echo %ORACLE_HOME%顯示什么,以及Oracle客戶端實際安裝在哪里?

這不一定會對Toad的訪問產生任何影響,因為它不需要直接訪問ORACLE_HOME ; 您可能已經提供了完整的連接字符串,或者如果TNS_ADMIN ,它可能能夠獲取服務名稱。

編輯您可能還有幾個相互干擾的Oracle產品。 如果是這樣,請嘗試進入開始 - >所有程序 - > Oracle安裝產品 - >主頁選擇器,然后選擇與您正在執行的tnsping相關的tnsping (實際上這是針對9i客戶端的;我認為對於10g,您可能需要使用通用安裝程序,通過Installed Products-> Environment進行更改,但無法檢查)。

除了設置ORACLE_HOME變量之外,還應該確保c:\\ orant \\ bin; 條目在任何其他路徑條目之前到達您可能已安裝的其他oracle客戶端。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM