2016-07-26 9 views
0

В моем рабочем месте через Oracle UI я могу использовать только TNS как Тип подключения, потому что они не могут открыть порт для меня, чтобы выполнить соединение. это Oracle 11g.Кодирование для подключения к Oracle через TNS

Но, прямо сейчас я необходимо написать код для подключения к Oracle и получения данных. Я попытался несколько кодирования языков и ни один из них не работает ...

Here're, что я пытался

Попробуйте 1: Спарк Scala, Спарк Python похож, и я использую ноутбук Спарк здесь

val jdbcUsername = "[my user name]" 
val jdbcPassword = "[my pswd]" 
val jdbcHostname = "[Oracle hostname]" 
val jdbcPort = [default port number] 
val jdbcDatabase ="DATABASE" 
val jdbcUrl = s"jdbc:oracle://${jdbcHostname}:${jdbcPort}/${jdbcDatabase}?user=${jdbcUsername}&password=${jdbcPassword}" 
val connectionProperties = new java.util.Properties() 

Class.forName("com.oracle.jdbc.Driver") 

import java.sql.DriverManager 
val connection = DriverManager.getConnection(jdbcUrl, jdbcUsername, jdbcPassword) 
connection.isClosed() 

Этот метод не удалось, и он показывает

нет подходящий драйвер не найден

Try 2: Oracle Учебник

Затем я проверил Oracle Tutorial, он не работает для меня, потому что он использует Basic тип подключения не TNS Я также проверил относительный метод подключения Java, не работа для меня

Попробуйте 3: R

Наконец, я изменил R, это учебник: R connect to Oracle

Первый метод, использующий RODBC не удалось, показывая

сообщение [Microsoft] [ODBC Driver Manager] Источник данных не найден и драйвер по умолчанию не указано

Вот код:

library(RODBC) 
con <- odbcConnect("[Oracle Host name]", uid="[my user id]", pwd="[my pswd]", rows_at_time = 500) 

Для второго метода я не могу использовать RJDBC. Для третьего метода, я попробовал все mirror urls in my location, и до сих пор не может установить пакет ROracle .....

Мой вопрос, является то, что можно написать код и подключиться к таблицам Oracle, используя TNS в качестве типа подключения ? Я хорош с Python, Java и R, нормально с Spark Scala

+3

Почему ваша первая загрузка 'com.mysql.jdbc.Driver' для соединения Oracle? И что вы имеете в виду, что вы не можете открыть порт - TNS переходит через сеть к тому же порту, которое будет использовать базовое соединение. –

ответ

0

Наконец-то найдено, что R работает для меня, в то время как моя компания блокирует слишком много вещей. И R очень быстро. Вот решение:

Шаг 1:Download .jar for ojdbc, вам нужно выбрать тот, который подходит для вашей версии Oracle, для меня это 11g. Путь этого.баночка файл будет classPath

Шаг 2: Установка Java JDK, если вы не имеете его, в противном случае вы не можете загрузить rJava пакет. Download Java JDK here

library(rJava) 
library(RJDBC) 
drv <- JDBC("oracle.jdbc.OracleDriver", classPath="[your .jar file path]\\ojdbc6.jar", " ") 
con <- dbConnect(drv, "jdbc:oracle:thin:@[hostname]:[port number]:[database name]", "[user name]", "[user paswd]") 
d <- dbGetQuery(con, "select * from [table name] WHERE ROWNUM <= 3") 
d$[a column name] 
dbDisconnect(con) 
0

Используйте Class.forName ("oracle.jdbc.driver.OracleDriver") для загрузки драйвера в первую очередь. И файл orarle jdbc driver jar должен находиться в вашем $ CLASSPATH

+0

1/Неверный класс водителя. Начиная с 9i, ​​вы должны использовать \ oracle.jdbc.OracleDriver '. Хотя я согласен, что все работает с именем класса антивирусных драйверов. 2/Кроме того, вам больше не нужно использовать Class.forName, поскольку JDBC 3/Наконец, он пропускает «@» в своей строке соединения. (Jdbc: oracle: thin: scott/tiger @ // myhost: 1521/myservicename) 4/TNS соединение другая строка подключения вообще –

+0

@Alain Pannetier 'виктор @ ViksPro: ~/jlib $ распакуйте -l ojdbc7.jar | Grep OracleDriver 2285 06-30-14 11:32 оракул/JDBC/OracleDriver.class 459 06-30-14 11:32 oracle/jdbc/driver/OracleDriver $ 1.class 16742 06-30-14 11:32 oracle/jdbc/driver/OracleDriver.class 950 06-30-14 11 : 32 oracle/jdbc/driver/OracleDriverExtension.class viktor @ ViksPro: ~/jlib $ ' – BbIKTOP

+0

@BblKTOP, давай! [Это то, что говорит Oracle] (http://www.oracle.com/technetwork/database/enterprise-edition/111070-readme-083278.html) «В выпуске Oracle JDBC версии 9.0.1 использование классов в этом пакете был анонсирован новый пакет oracle.jdbc, и клиентам было рекомендовано начать использовать интерфейсы и классы , определенные в oracle.jdbc. В каждом выпуске с 9.0.1 мы предложили клиентам перейти на oracle.jdbc и заявил, что oracle.jdbc.driver будет отключен. Пришло время . Код клиента, который ссылается на oracle.jdbc.driver, будет не компилироваться ... " –