编码通过TNS连接到Oracle

时间:2016-07-26 20:55:08

标签: oracle oracle11g tns

在我的工作场所,通过Oracle UI,我只能使用 TNS作为连接类型,因为他们无法打开端口供我进行连接。它是Oracle 11g。

但是,现在我需要编写代码来连接Oracle并获取数据。我尝试了几种编码语言,但没有一种可以工作......

这是我尝试过的事情

尝试1:Spark Scala ,Spark Python类似,我在这里使用Spark Notebook

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()

此方法失败,显示

  

找不到合适的驱动程序

试用2:Oracle教程

然后我检查了Oracle Tutorial,它对我不起作用,因为它使用基本连接类型而不是TNS 我还检查了相对的Java连接方法,不适合我

尝试3:R

最后,我改为R,这是教程:R connect to Oracle

使用RODBC的第一种方法失败,显示

  

消息[Microsoft] [ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序

以下是代码:

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

2 个答案:

答案 0 :(得分:0)

使用Class.forName(&#34; oracle.jdbc.driver.OracleDriver&#34;)首先加载驱动程序。而oracle jdbc驱动程序jar文件应该在你的$ CLASSPATH

答案 1 :(得分:0)

最后发现R适用于我,而我的公司阻止太多事情。 R很快。这是解决方案:

第1步: Download .jar for ojdbc,需要为您的Oracle版本选择一个版本,对我而言,它是11g。此.jar文件的路径为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)