oracle裝在虛擬機裏邊,用JDBC連接數據庫寫url的時候不知道數據庫名是什麼,去init.ora裏一看49行db_name='ORCL',以爲這就是數據庫名,連接的時候報錯:Exception in thread "main" java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
The Connection descriptor used by the client was:
192.168.0.50:1521:orcl
然後網上查報listener does not currently know of SID given in connect descriptor的原因,說監聽出毛病的較多,其中有個只這樣改的#
listener.ora Network Configuration File: e:\oracle\product\10.2.0\db_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = e:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = oracle)
(ORACLE_HOME = e:\oracle\product\10.2.0\db_1)
(SID_NAME = oracle)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
結果還是報這個錯.接着查到這句-->oracle配置文件:tnsnames.ora、listener.ora 裏面寫明瞭遠程連接的實例名和端口號,也就是SERVICE_NAME。
實際上還有另外一種查看方式,那就是用SQL語句查詢。用管理員身份system登陸後輸入“show parameter service_name;”命令便可查看出來。
在tnsnames.ora中
MAX1 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = mx7vm)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = max1)
)
)
原來數據庫對象的名字是max1....
ok 測試結果:oracle.jdbc.driver.T4CConnection@64f6cd 成功 也許這就是花1個多小時的樂趣
其中他到某位網友這句話,最近其實深有感觸啊--->jdbc:oracle:thin:@localhost:1521:orcl"; @ 後面是主機地址。1521是端口號。這個端口號你在安裝的時候應該記住。orcl是oracle的簡寫。也就是數據庫名稱。你下了oracle,在它的文檔裏有它的鏈接方式。你應該在那裏面去查。這纔是最好的使用新東西。以後工作了也是這樣。