幾個月前頭腦發渾,把機器名由“south”修改為“southyj”。過了許久,才發現Oracle不能使用了。趕緊查原因。原來是Oracle在安裝時,會根據機器名來組建目錄,並且機器名也會寫入到監聽設定檔和串連設定檔中。在Oracle目錄中搜尋舊機器名“south”,把搜尋出來的“south”統統替換成“southyj”;再開啟oracle\product\10.2.0\db_1\NETWORK\ADMIN目錄,把listener.ora和tnsnames.ora檔案中的機器名也改正過來。於是世界又恢複了舊有的秩序。一切都很完美。
誰知我的發渾不只一次。今天要配置IIS,發現總是報錯:
System.Web.Services.Protocols.SoapException: 伺服器無法處理請求。 ---> System.Exception: ORA-12154: TNS: 無法解析指定的串連標識符
用PL/SQL Developer串連,發現可以正常訪問。查看listener.ora檔案,也沒發現異常。這就奇了!
在cmd視窗中輸入:
C:\Documents and Settings\Administrator>tnsping localhost
TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 14-12月-
2009 14:28:31
Copyright (c) 1997, 2005, Oracle. All rights reserved.
已使用的參數檔案:
C:\oracle\product\10.2.0\client_1\network\admin\sqlnet.ora
已使用 EZCONNECT 適配器來解析別名
Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=localhost))(ADDRE
SS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))
OK (10 毫秒)
初看這個結果很正常。再看,
已使用的參數檔案:
C:\oracle\product\10.2.0\client_1\network\admin\sqlnet.ora
“client_1”?我什麼時候裝過用戶端?真的是頭腦發渾了便會亂來。
於是從oracle\product\10.2.0\db_1\NETWORK\ADMIN目錄下把listener.ora和tnsnames.ora複製到oracle\product\10.2.0\client_1\NETWORK\ADMIN目錄中。世界總算又恢複了正常。