我要求我的java应用程序使用Oracle钱包连接到Oracle数据库(10和11g)以获取数据库凭据。
我的问题是当连接尝试连接到数据库时,我得到:
java.sql.SQLException: could not resolve the connect identifier "mydb".
sqlnet.ora如下所示:
AUTOMATIC_IPC = OFF
TRACE_LEVEL_CLIENT = OFF
names.directory_path = (TNSNAMES)
names.default_domain = world
names.default_zone = world
WALLET_LOCATION =
(SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY = <wallet location C:....>)
)
)
SQLNET.WALLET_OVERRIDE = TRUE
SSL_CLIENT_AUTHENTICATION = FALSESSL_VERSION = 0
我的tnsnames.ora条目如下:
mydb.WORLD =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP) (Host = <HOST>)
(Port = <PORT>))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = <DB_SERVICES>)
(INSTANCE_NAME = mydb)
)
)
我的钱包条目设置如下:
mkstore -wrl C:\oracle\wallet -createCredential mydb username "password"
Java应用程序连接字符串如下:
jdbc:oracle:thin:/@mydb
现在,如果从tnsnames.ora中的条目中删除.world
,则连接有效,但根据我的理解,names.default_domain = world
应该传递给tnsnames.ora查找,这是正确的吗?如果是这样,为什么不设置?
我可以使用sqlplus / @mydb
由于