2013-07-10 1 views
0

Для тех, кто хочет читать немного, (пропустить до конца для короткой версии):Проблемы подключение к БД 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 ноутбук.

+0

Ошибка, которую вы опубликовали, похоже, не имеет ничего общего с Oracle. Похоже, что вы получили часть Oralce, и в другой части вашего кода произошла совершенно другая ошибка. –

+0

ошибка, которую я опубликовал, похоже, связана с нестабильными 64-разрядными ojdbc .dylib-файлами.Я хотел бы придерживаться 32-битного, но я получаю ошибку «mach-o, но неправильная архитектура», когда я пытаюсь использовать 32-битные библиотеки и банки ojdbc. –

+0

try jdbc: oracle: thin: @hostname: port: sid или jdbc : oracle: thin: @ // host: port/serviceName и не забывайте иметь ТОЛЬКО тонкий драйвер в вашем пути к классам –

ответ

-1

Лучше использовать тонкий клиент jdbc oracle, если у вас нет веской причины. Если у вас не возникнет проблем.

+0

Использование тонкого драйвера не имеет значения, так как я получаю исключение nullpointer в DriverManager.getConnection (...), когда тот же код работает на моем рабочем столе на рабочем месте –

+0

Это может изменить ситуацию, показать код, где вы получаете соединение –

+0

hey @David, см. мое сообщение об обновлении –