[英]Unable to create Eclipse Data Source to Oracle 12c using 12c jar. However 11g works
當我打開Data Source Explorer窗口並嘗試創建新的連接配置文件時,我選擇“Oracle”,Oracle Thin Driver,然后將其指向我PC上的以下JAR文件:
C:\oracle_12101_64bit\product\12101_64bit\CLIENT_1\jdbc\lib\ojdbc7.jar
提供連接參數后,它使用以下格式導出以下格式的連接URL
jdbc:oracle:thin:@host:PORT:SID
但是,我想要它得出的是(注意冒號而不是正斜杠)
jdbc:oracle:thin:@host:PORT/SID
我似乎能夠使用生成的URL連接到11g數據庫,但是,不是12c,我不知道這是巧合還是我有不同的問題。
在我的程序中,我使用JPA,它從我的配置文件中以所需的正斜杠格式讀取連接URL,並且程序能夠連接,如果我更改url使用冒號而連接失敗。
如果我無法控制派生連接URL以生成帶斜杠而不是冒號的URL,如何在Eclipse的Data Source Explorer視圖中創建連接配置文件? 我得到的錯誤是:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
更新1
我注意到的一件事是,即使我關聯了Oracle 12c附帶的jdbc7.jar文件,驅動程序仍然顯示為“Oracle 11”。
更新2:
以下是我的tnsnames.ora文件中的示例:
AFDEDEV.MYCO.COM =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = servername.sys.MYCO.com)(PORT = 2))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = afdedev.MYCO.com)
)
)
看起來連接字符串構建器只需要一個SID。 我的SID是什么,或者我怎么知道? 我試過了AFDEDEV和AFDEDEV.MYCO.COM。 在11g確實有效的情況下,我使用了相當於AFDEDEV的東西。 對不起,我真的不太了解SID與服務名稱。 是否有我可以對數據庫執行的查詢告訴我SID?
這似乎是對Eclipse“Oracle Thin Driver”模板的限制。 它只允許您為連接指定SID,而不是服務名稱; 並且您要么不知道SID,要么沒有向偵聽器注冊(您的DBA需要解析)。
如果您從“Oracle Database 11g驅動程序”模板而不是“Oracle Thin Driver”模板創建新驅動程序,並將其指向12c ojdbc7.jar文件,那么您將能夠選擇提供服務名稱。 然后,它將生成一個類似jdbc:oracle:thin:@//servername.sys.MYCO.com:2/afdedev.MYCO.com
的URL jdbc:oracle:thin:@//servername.sys.MYCO.com:2/afdedev.MYCO.com
。
它仍然是相同的瘦驅動程序,Eclipse似乎更好地理解它,
您還可以從“其他驅動程序”模板創建配置文件,在“添加Jars”部分中添加ojdbc7.jar。
現在,您可以自己指定URL字符串和其他參數,模板不會自動為您填充任何內容。 這樣,您可以使用前面的“/”提供服務名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.