2014-04-16 54 views
1

我使用的客戶端提供的筆記本電腦(Windows XP專業版2002),不具備管理權限(因此不能ST任何必需的環境變量以及):通過CMD提示從即時客戶端連接到Oracle Server時出錯,但SQL Developer連接?

SQL開發人員提供,我能夠訪問Oracle服務器xaal5 @:1521 /從SQL開發人員,

我需要使用SQL LOADER來執行一些重載。我決定下載即時客戶端,看我是否可以節省一些時間,而我的oracle客戶端安裝請求需要很長時間才能通過審批。

我去的鏈接:http://www.oracle.com/technetwork/topics/winsoft-085727.html 用於Windows和下載下面的即時客戶端下載適用於Microsoft Windows(32位)

版本10.2.0.4

即時客戶端軟件包 - 基本:所需的所有文件運行OCI,OCCI和JDBC-OCI應用 下載instantclient-basic-win32-10.2.0.4.zip(34742358個字節)

*即時客戶端程序包 - SQL *加:其他庫和可執行文件運行的SQL * Plus與即時客戶端 下載instantclient-sqlplus-win32-10.2.0.4.zip(725418個字節)

提取這兩個zip文件到C:\ instantclient-Win32文件夾,得到了以下文件(是在它裏面沒有SQL LOADER,但我決定先設置Oracle客戶端起來,然後尋找SQL LDR)

SQLPLUS.EXE OCI.DLL ocijdbc10.dll OCIW32.DLL orannzsbb10.dll oraocci10.dll oraociei10.dll Orasqlplusic10。 dll classes12.jar ojdbc14.jar glogin.sql

我運行Windows機器的下面CMD提示:

sqlplus中xaal5 @:1521/SID

,並得到了以下錯誤:

ERROR: 
ORA-12514: TNS:listener does not currently know of service requested in connect 
descriptor 

我創建了一個tnsnames.ora文件與以下條目:

PLMS = (DESCRIPTION = 
(ADDRESS = (PROTOCOL = TCP)(HOST = XXXXXX)(PORT = 1521)) 
(CONNECT_DATA = 
    (SID = sblcusdv) 
)) 

並設置一個USER VARIABLES指向路徑tnsnames.ora文件(在環境變量窗口中),因爲我無法創建系統變量。 $ TNS_ADMIN = C:\ instantclient-win32的

我跑以下CMD再次提示:

sqlplus中xaal5 @:1521/SID

,並得到了以下錯誤,再次:

ERROR: 
ORA-12514: TNS:listener does not currently know of service requested in connect 
descriptor 

我做錯了什麼!還是有另一種方式讓SQL加載程序在我的系統上工作,考慮到這些限制(長時間等待Oracle客戶機安裝的批准)。

+0

使用的SQLPLUS命令如下: sqlplus xaal5 @ HOST:1521/SID – Kfactor21

回答

1

當您使用此格式:

sqlplus [email protected]:1521/SID 

...您使用的'easy connect' syntax,繞過tnsnames.ora並連接到服務名稱SID - 我想你實際上正在使用來自SID您的TNS文件,/sblcusdv。 SID和服務名稱並不總是相同的,並且錯誤表明它們在此環境中不同。

要使用tnsnames.ora項,使用此語法:

sqlplus [email protected] 

也就是說,你所定義的TNS別名。如果您不想使用該文件,則需要知道服務名稱。從服務器上,您可以使用lsnrctl services來查看哪些服務名稱已註冊,但您可能無法訪問。如果您有權限,則可以從SQL * Plus執行show parameters service_names(通過TNS連接時),或者您可以查詢性能視圖以獲取該信息。但是您的帳戶可能無法訪問該信息。在這種情況下,您需要詢問您的DBA。 (我還假設SQL Developer是通過SID連接的,但它有可能使用的是服務名稱,因此您可以將其複製)。

sqlplus [email protected]//HOST:1521/SERVICE_NAME 

儘管如此,您仍然無法從imstant客戶端使用SQL * Loader,因此您仍然需要等待安裝完整的客戶端。您可能想看看external tables作爲SQL * Loader的替代方案;那麼你可以堅持即時客戶端(或者確實是SQL Developer)。但是您需要能夠將數據文件導入服務器上的數據庫識別目錄,這可能會遇到自己的問題。

+0

嗨,亞歷克斯,感謝您的答覆。 在嘗試了很多連接字符串的組合後,我嘗試了以下操作: sqlplus xaal5 @'HOST:1521/SID' 它工作正常。 我確實嘗試過你提到的語法,因爲它在後面的oracle文檔中提到過,但它不起作用,不知道爲什麼! http://docs.oracle.com/cd/E16655_01/install.121/e17719/post_inst_task.htm#LACLI1391 此外,我將着眼於外部表的選項,但在更容易獲得進入任何事情數據庫的服務器將再次是一個艱鉅的任務... – Kfactor21

+0

@ Kfactor21 - 我從來沒有見過連接字符串必須像這樣引用,所以這有點奇怪,除非它是Windows的東西。如果這對你有用,那麼我猜你的SID和服務名稱是一樣的。 –

0

您必須按照說明使用描述。

sqlplus Username/[email protected] 

你的情況:

sqlplus Username/[email protected] 

這應該是足夠了,沒有必要提及的主機名或端口。

如果不起作用,請檢查您的系統變量PATH是否包含oracle安裝文件夾。當你在同一臺機器上安裝了Oracle DB和Oracle Client時,看看兩個TNSNAMES是否都有你想要的連接。