Для тех, кто хочет читать немного, (пропустить до конца для короткой версии):Проблемы подключение к БД Oracle через ojdbc
Я пытаюсь подключить Java приложение к удаленной базе данных Oracle. без везения я использую Mac 10.7.5 с IntelliJ Idea 12, java-версия «1.6.0_51» 64-бит. Я пытаюсь получить эту работу весь день без успеха. Я также не смог использовать представление DataSource в IntelliJ из-за отсутствия общего dylib, отсутствующего в java.library.path. Я подозреваю, что эти два вопроса связаны.
Я попытался установить Oracle Instant Client 64-бит (включая JDBC-файлы), скопировал dylibs в/USR/Lib/Java, и это заставило меня приблизиться к решению «DataSource» вид вопроса с другой ошибкой:
java.lang.RuntimeException: java.rmi.UnmarshalException: Error unmarshaling return header; nested exception is:
java.io.EOFException
in RemoteUtil$RemoteInvocationHandler.invoke(RemoteUtil.java:219)
at com.sun.proxy.$Proxy115.connect(Unknown Source)
in LocalDataSource.getConnection(LocalDataSource.java:158)
Caused by: java.rmi.UnmarshalException: Error unmarshaling return header; nested exception is:
java.io.EOFException
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:209)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:142)
at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:178)
at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:132)
at com.sun.proxy.$Proxy114.connect(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
in RemoteUtil$RemoteInvocationHandler.invoke(RemoteUtil.java:211)
... 21 more
Caused by: java.io.EOFException
at java.io.DataInputStream.readByte(DataInputStream.java:250)
at sun.rmi.transport.StreamRemoteCall.executeCal
Итак, путешествие продолжилось, и я попытался использовать 32-разрядную версию ojdbc .dylibs и .jars, но затем я столкнулся с «неправильной архитектурой», пытаясь подключиться к oracle db, используя представление DataSource от IntelliJ.
Я бы хотел, чтобы все было согласовано с использованием 32-разрядной версии, поскольку большинство моих приложений используют библиотеки, которым требуется 32-разрядная JVM.
Т.Л., ERS Dr»:
-Cannot подключения к БД Oracle через IntelliJ Idea 12 зрения DataSource, ни подключиться через Java приложения с помощью JDBC
-background Информация: Mac OSX 10.7.5, Java 1.6. 0_51 64-разрядный, IntelliJ Idea 12, удаленный Oracle 11G DB
-Tried как 32-разрядные и 64-разрядные версии Oracle Instant Client с JDBC файлами, не повезло
Любые предложения будут с благодарностью! Спасибо
Дополнительные примечания: Я не могу подключиться через sqlplus; Я получаю сообщение об ошибке ORA-21561: генерация OID не удалась. Результаты поиска указывают только на исправление файла/etc/hosts, который не имеет для меня смысла, поскольку сервер db находится на удаленном сервере, и я подключаюсь с использованием записи TNS в /etc/tnsnames.ora
=== UPDATE 1 === Я достиг некоторого прогресса в подключении через код Java. Используя этот код:
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@hostname:port/service_name", "user", "password");
но получил ошибку:
java.sql.SQLRecoverableException: IO Error: The Network Adapter could not establish the connection
Я могу подключиться, используя именно этот кусок кода на моей рабочей машине через Eclipse IDE, но не на моем Mac ноутбук.
Ошибка, которую вы опубликовали, похоже, не имеет ничего общего с Oracle. Похоже, что вы получили часть Oralce, и в другой части вашего кода произошла совершенно другая ошибка. –
ошибка, которую я опубликовал, похоже, связана с нестабильными 64-разрядными ojdbc .dylib-файлами.Я хотел бы придерживаться 32-битного, но я получаю ошибку «mach-o, но неправильная архитектура», когда я пытаюсь использовать 32-битные библиотеки и банки ojdbc. –
try jdbc: oracle: thin: @hostname: port: sid или jdbc : oracle: thin: @ // host: port/serviceName и не забывайте иметь ТОЛЬКО тонкий драйвер в вашем пути к классам –