连接oracle数据库不一定要装客户端
net连接oracle使用的是oci接口,必须安装oracle客户端,并配置本地网络服务名 tnsnamesora。不过oracle网站有精简版的客户端软件,解压,并编辑tnsnamesora既可。
如果是java则可以使用thin进行连接,而不需要安装oracle客户端。
前提是你的windows能连接上你的linux啊,可以将你的虚拟机网络设置成桥接方式,然后配置linux的ip地址和你的windows在同一个网段,关掉防火墙,这时候你的windows就可以访问你的linux了。剩下的就是连接数据库的问题了,我不知道你是在程序当中连接还是怎么连接的。如果是写程序连接,直接写oracle的数据库的url就可以了,其他方式的话也是写地址就可以了。
以下几个步骤一一排除问题:
建立本地webservice引用,用这个引用试试能不能连接上oracle。如果能说明不是iis部署的问题。
程序中添加oralce的引用,像using SystemDataSqlClient;或using SystemDataOracleClient;这样的引用。排除数据库引用的问题。
用本机的oracle连接oracle服务器,看能不能连接上,如果能则排除连接问题。
java与oracle的接口:
在数据库中运行JAVA可以说是ORACLE8i的最令人激动的新特性。在你创建的使用ORACLE8i 数据库的应用程序中,你可以使用与JAVA有关的新特征,轻松的将程序发布到INTERNET或INTRANET上。
Methods for Using Java in ORACLE
大家都知道JAVA在跨平台开发与INTERNET开发中已经比较流行,ORACLE8i及以后的版本中都包含了对在数据库中运行JAVA的扩展支持,这里有两种方法可以使用:
JDBC:与ODBC类似, JDBC 提供了一个驱动接口使你可以在JAVA程序中访问数据库。注:JDBC驱动内嵌在数据库中虚拟机中。
SQLJ:是一个JAVA预编译器,它可以将内嵌的SQL语句转化为JAVA语句SQLJ的使用与运行机理与其它ORACLE的与编译器(如ProC,ProCOBOL)类似。实际上,为了使我们形象的记住SQLJ提供的功能,我们也可以直接将SQLJ改名为ProJava。
将JAVA集成到数据库中是双向的。也就是说你可以在JAVA中调用SQL与PL/SQL,也可以在SQL与PL/SQL中调用JAVA。JAVA程序可以直接通过JDBC驱动调用SQL与PL/SQL,反过来,你也可以在SQL与PL/SQL中直接调用JAVA。在数据库中,JAVA命名空间直接映射到数据库模式的命名空间中,这样可以方便JAVA的存取与调用。数据库同时提供扩展的DDL语句,通过这些语句,你可以象创建一个存储过程一样在数据中创建内嵌的JAVA程序。
Features of ORACLE JDBC Drivers
在ORACLE8i中有三种类型的JDBC驱动,他们都使用相同的 syntax, APIs, and Oracle extensions,以使JAVA代码在robust clients、Web-based Java applets, and Java stored procedures之间保持轻便灵活:三种类型如下:
1.JDBC OCI: 此驱动类似于传统的ODBC 驱动。因为它需要Oracle Call Interface and Net8,所以它需要在运行使用此驱动的JAVA程序的机器上安装客户端软件
2.JDBC Thin: 这种驱动一般用在运行在WEB浏览器中的JAVA程序。它不是通过OCI or Net8,而是通过Java sockets进行通信 ,因此不需要在使用JDBC Thin的客户端机器上安装客户端软件。
3.JDBC KPRB: 这种驱动由直接存储在数据库中的JAVA程序使用,如Java Stored Procedures 、triggers、Database JSP's。It uses the default/ current database session and thus requires no additional database username, password or URL
如何配置使JAVA可以通过Oracle JDBC Drivers连接到数据库:1安装Sun JDK
2 修改PATH环境变量,使其指向JDK的bin目录
3 设置CLASSPATH环境变量,使其指向正确的JDK的lib及oracle的JDBC接口。
CLASSPATH = ";"
3 运行"java –version" ,验证java的版本。
如何在不同的 *** 作系统上根据接口类型设置客户端:
对JDBC THIN接口:
在windows与unix下的设置方法一样:
1.根据jdk的版本,只需要将classesxxzip拷贝到指定的目录,不需要安装Oracle Client。在装完数据库后,该文件会在$ORACLE_HOME/jdbc/lib目录下。2.设置CLASSPATH,使其包含上面的classesxxzip
3.根据需要,拷贝oracle的其它zip文件并设置CLASSPATH
对JDBC OCI接口:
Fow Windows:
1.安装Oracle Client
2.根据jdk的版本,设置CLASSPATH,使其包含正确的classesxxzip
3.根据需要设置CLASSPATH,使其指向Oracle的其它zip文件
4.设置PATH,使其包含$ORACLE_HOME/bin目录
这个接口找不到的原因如下:
1、oracle客户端没有完全安装或安装失败。请重新安装oracle客户端,并确保所有组件都已成功安装。
2、oracle客户端的path环境变量设置不正确。请打开“环境变量”对话框,查看path变量是否包含了oracle客户端的安装路径。
3、oracle客户端的tnsnamesora文件配置不正确。请检查该文件是否存在,并且其中的连接信息是否正确。
4、如果使用的是64位的oracle客户端,而应用程序是32位的,则可能需要安装32位的oracle客户端。请下载并安装相应的版本。
Oracle 发布了 PL/SQL 和 Java 应用编程接口 (API) 后 市场上才会推出可利用这一新发布的 API 的点击工具或构建器 这一般是最好的做法 利用这一实践 开发人员可将新功能即刻融入其应用程序中以使其企业从中获益
然而 开发可利用新发布 API 的专门工具需要投入大量精力 因此 理想情况下 从 API 发布直至推出利用该 API 的直观最终用户工具 至少需要数个月 而实际上 这一滞后时间通常为一年或两年 同时 利用 API 可能需要企业使用自己的工具 或更为常见的是利用即席解决方案 例如在报表生成器和电子表格中嵌入对 API 的调用
一种常用方法是将 API 包装在数个脚本中 然后使用自定义按钮和菜单从电子表格访问这些脚本 但是 这一方法的主要缺点在于如今的电子表格是将单个单元格中的文本和数字作为值来进行处理的 因此它通常不是处理新功能的合适工具
本文将介绍如何快速将分析和其他 API 整合至一个最终用户可从其中轻松访问新代码的电子表格平台 作为指导性示例 其中还将阐释了如何将Oracle 数据挖掘(PL/SQL) API 重新打包为 Java API 以及如何从电子表格调用的 J Cells 访问该 API J Cells 完全以 Oracle JDeveloper 编写 它不仅可以将文本和数字作为单元格的值 而且还可将 Java 对象作为值进行处理 并可从其单元格直接访问任何 Java API 以即刻进行部署
电子表格平台
我使用的是电子表格界面 只是其中允许用户在单元格中创建任何 Java 对象以及使用基元 Java 类型 每个单元格都可用作另一个单元格的变量 用户可以选择在单元格中直接编写 Java 代码 或使用其他格式 将电子表格界面和对象(而不仅是常规电子表格中的数字和文本)使用相结合是自动进行的 J Cells 为每个适合单元格的对象计算指示值 这一指示值给予用户有关显示对象的充足线索 此外 还会实施一个完整的值系统 可根据需要(例如 当用户双击给定单元格时)以各种其他格式显示对象 即使在电子表格中 因为公式可能定义比较复杂 所以系统还需识别要创建的对象是否具有相关的向导 向导通常是一个特定于某个对象类型的图形化代码生成器 稍后本文示例将说明如何在 J Cells 中使用向导
图 显示了本文示例的电子表格界面
图 J Cells 的电子表格界面
数据挖掘 API
Oracle 支持两种兼容的 API 以访问数据库中的数据挖掘功能 第一种是 PL/SQL API 其中包括 DBMS_DATA_MINING 程序包 另一种也是 Java API 称为 Oracle 数据挖掘 Java API 因为 J Cells 目前最适合访问 Java API 所以需要以可直接从 Java 对其进行访问的方式打包 PL/SQL API 两个主要的 Oracle 数据挖掘概念是设置和模型 设置概念基本围绕带有两列(setting_name 和 setting_value)的设置表构建;其中 setting_name 是挖掘算法使用的属性名 而 setting_value 是与该属性相对应的值
DBMS_DATA_MINING 程序包包含若干过程 包括 CREATE_MODEL 和 APPLY CREATE_MODEL 过程根据设置表(作为过程的参数之一提供)中的值为给定挖掘函数和数据集创建挖掘模型 该过程简单且易于使用 实际上 由用户来为要创建的模型 要使用的挖掘函数 包含要使用的数据的表 要建模的列以及设置表提供名称 这一方法的优点在于所有不同算法都可以类似的方法调用 每种算法的微调都整合至设置表中 但在很多情况下 各种设置系数可由算法本身自动决定 设置表中条目的复杂性根据用户的专业技术背景和算法而有所不同 许多专业用户可能希望手动设置所有可能的系数 而我们中的多数人更可能乐意系统自动给出适用设置 Oracle 提供了一个要用作设置键的常量列表 以及命名为常量或数字间隔的值
表 algo_name(算法名)设置键的值
Oracle 的算法名 (algo_name) 键的常量值如上所示 对于其中的每一个值 使用了可能键和值的不同集等 以下(图 )显示了向导函数是如何将这些键映射到树结构 并允许用户通过 *** 纵该设置树定义设置表的
作为 Oracle 数据库中创建的挖掘模型 DBMS_DATA_MINING APPLY 过程用于将该模型应用到新数据集 而且 这是一个易于使用的过程 要求只输入挖掘模型名 包含新数据集的表名 用于识别新数据集中行的列以及结果数据集名 Java 类 OracleMiningModel (below) 在调用预测 评分或 apply 方法时 都会利用该 APPLY 过程 此外 DBMS_DATA_MINING 程序包包含若干根据类型将各个模型详细信息作为结果集或以 XML 格式返回的函数 这些细节函数也可通过使用 OracleMiningModel 类的实例(代表数据库中的不同模型)进行访问
此处可通过创建一个称为 OracleModelSettings 的 Java 类以 Java 打包 (PL/SQL) 设置概念 该类具有灵活的构造函数和各种签名 包括
public OracleModelSettings ( String modelSettingsName
Connection databaseConnection
String[] keyToValueStringMap)
throws SQLException
keyToValueStringMap 只是表单 > 的字符串数组 该数组详细说明了设置表的行 以及负责在数据库中维护设置表的类
类似地 此处也可通过创建一个称为 OracleMiningModel 的 Java 类以 Java 打包模型概念 该类具有构造函数和各种签名 包括
public OracleMiningModel ( String modelName
OracleModelSettings oms
String[] keyToValueStringMap)
boolean recreate)
throws SQLException
此处使用 keyToValueMappings 数组来确定在 Oracle 数据库中创建数据挖掘模型所需的算法以及其他命名属性 该类的用途就是创建和维护数据挖掘模型 此外 OracleMiningModel 类还定义了用于检索以及将该模型应用到新数据集的方法 这些方法包括以下各项 此处只显示了一小部分
public OracleResultSet infoAprioriAssociationRules(int topn)
public OracleResultSet infoAprioriFrequentItemsets(int topn)
public OracleResultSet infoAdaptiveBayesNeork()
public OracleResultSet infoAIMinimumDescLength()
public OracleResultSet infoKMeans()
public OracleResultSet infoNaiveBayes()
public OracleResultSet infoNonnegativeMatrixFactorization()
public OracleResultSet infoOCluster()
public OracleResultSet infoSupportVectorMachines()
public XMLType infoDecisionTree()
public Object getPrediction(String[] signature double[] doubleVal)
public HashMap score(String[] signature double[] doubleVal)
public OracleResultSet apply( String dataTable
String caseID
String resultTable
String schema
boolean overwrite)
除了具有上述签名外 所有的方法可能都会引发 SQL 意外 一旦可以从两个简单类来管理数据挖掘功能后 就可调用该电子表格平台来访问任何可用的数据挖掘算法 以在 Oracle 数据库中建模数据集
数据挖掘示例
因此 来看一个在该系统中编写的小数据挖掘模型 该模型可通过访问 Oracle 数据库创建并运行 ODM (Oracle Data Mining) 回归模型 该回归模型的用途是根据输入(例如血压 高度和体重)预测心率 使用 J Cells 可直接访问 Java API 以实例化对象并在对象上调用方法 首先 连接至 Oracle 数据库 DataSource 对象可通过将以下公式
() = ~ OracleDataSource( agust agust dbVaio vaioFS );
输入到电子表格的单元格 b 中进行实例化 Tilde 符号 (~) 表示缩写符号 允许 J Cells 将(右侧)语句转换为构造函数t new cell OracleDataSource( agust agust dbVaio vaioFS ); 使系统能够以用户 agust 的身份访问服务器 vaioFS 上的数据库 dbVaio
现在 可通过在 DataSource 对象上调用正确的方法(例如在单元格 b 和 b 中分别输入以下公式) 获得数据库连接以及检查数据库中的源数据
() = b getConnection();
() = b query( select from pulse_clinical );
第一个语句将向单元格 b 中返回一个 java sql Connection 对象 第二个语句将向单元格 b 中返回一个 java sql ResultSet 对象 只需通过双击单元格 (b ) 就可检查结果集 该 *** 作会将结果表显示在表格框架中以便查看
迄今为止 我只在该电子表格中创建了几个简单的数据对象 现在 可以调用数据挖掘 API 来定义一个设置对象 然后创建一个简单的数据挖掘模型 首先 通过在单元格 b 中输入以下语句来创建一个设置对象
() = new cell odm OracleModelSettings( xyz_settings b
new String[]{
algo_name > algo_support_vector_machines
svms_kernel_function > svms_linear } );
立刻我发现该公式中的问题是最终用户友好的 因此 注册一个带有 J Cells 的向导 在提示用户后自动生成该公式 可能是个不错的办法 一般 电子表格在用户创建复杂公式时都会给予帮助 因此用户可以期望在实例化对象时获得指导
部署的向导如图 所示
图 典型的向导界面
同样 数据挖掘模型通过使用向导或输入公式来创建 在这两种情况中 结果模型都是在直接指定 API 调用的单元格 b 中进行实例化
()= new cell odm OracleMiningModel( xyz_model b
new String[]{
data_table_name > pulse_clinical
mining_function > regression
target_column_name > pulse
case_id_column_name > subject }
false );
使用该公式结果实例化数据挖掘模型将在 Oracle 数据库中生成标准的 Oracle 数据挖掘模型 该模型可通过双击单元格 b 进行查看 模型的完整值如图 所示
图 查看单元格 b 中的模型
使用上述的 OracleMiningModel 方法 可将该模型应用到 Oracle 数据库中的数据集 作为一个简单的交互式评分模型(一般适用于电子表格应用程序) 用户可能希望输入血压 高度和体重值 让数据库使用刚才定义的模型预测心率 这个在模型对象上定义的 Java API 方法 getPrediction 非常适合这一用途 在单元格 e e e 以及 e 中(以单元格 b 中签名数组指定的顺序)键入输入值后 通过输入以下公式可进行评分
() = b getPrediction(b new double[]{e e e e });
同样 该公式将直接访问 Java API 以获取并在单元格 e 中显示评分结果 如图 所示
图 将模型应用到输入值
电子表格优点
电子表格在最终用户之间的流行多少有些令人费解 一方面 当今最常用的电子表格系统长期以来令许多开发人员气馁 他们习惯于更为灵活 强大的系统 而另一方面 对于非开发人员而言 使用电子表格系统具有以下一些明显优点 无须构建图形化用户界面 单独构建和测试每个公式(代码)以及隐藏公式 看到的是更为简单的计算结果 这些优点只存在于当今流行的电子表格中 使用公式可将数字或文本返回到单元格 而许多系统主要受限于此 此处演示了如何移除这一限制并创建更为强大的工具 然后用它来直接访问 Oracle 的数据挖掘模型功能以及其他 API
结论
lishixinzhi/Article/program/Oracle/201311/17437
需要给数据库地址
在实际项目中常常需要做接口提供给其他平台使用,需要给调用者提供Oracle数据库用户,此用户可能只能访问我方生产库中的某几张表,而且只能查询不能增删改,这就需要我们从Oracle数据库中给接口设置相应的权限,具体如下:
假设我方用户为scott,我们给第三方用户建立的接口用户为scott_read,我们开放给第三方用户的表为student表。
1使用system用户登录:sqlplus system/password@orcl。
2创建scott_read用户:create user scott_read(用户名) identified by tiger(密码)。
3将connect和resource权限赋给scott_read用户:grant connect,resource to scott_read。
注意:此处一定注意不要将dba权限赋给scott_read,否则此用户可以 *** 作我们数据库的任何东西,这是大忌。
4将scott的student表查询权限赋给scott_read用户:grant select on scottstudent(表或视图名) to scott_read。
以上就是关于连接oracle数据库 一定要装客户端么全部的内容,包括:连接oracle数据库 一定要装客户端么、windows中Oracle数据库如何连接linux中Oracle数据库、c#webservice接口开发调用Oracle数据库为什么会出现这种状况等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)