Oracle客户端使用
1.Oracle客户端的安装及配置
大部分时间,Oracle数据库我们都是安装在服务器端,然后再在本地使用其他工具进行连接。例如:PL/SQL、Navicat Premium等其他工具来进行连接。但是Oracle与mysql和MSSQLServer不一样,在服务器端安装好数据库后,Oracle还需要在本地配置客户端,然后才能由其他管理工具连接。
第一步:通过官网下载Oracle的客户端,Oracle 11g及Oracle 11g Clent,Oracle虽说是收费的,但是对于个人学习而言还是可以免费使用的。并且Oracle 的收费规则也并不是对软件本身收费,而是通过对Oracle的服务进行收费。
第二步:安装Oracle Client。解压下载的安装包,就可以看到如下图片,点击安装即可:
点击setup.exe后,等一会就会弹出安装的图形化界面,选择安装类型为管理员(功能多一点,嘿嘿),然后一直下一步,或者选择安装路径,就可以安装成功了。
不过如果已经安装过Oracle客户端,然后卸载再安装,可能会出现Oracle 11.2.0.1 INS-32025 错误:所选安装与指定Oracle主目录中已安装的软件冲突。这个问题可能是以前安装过的文件在注册表中没有删除干净,将安装目录换一个其他名字就好了。
第三步:在开始第3步之前,首先要明确一点,Oracle Client在服务器上和我们自己的电脑上都需要安装一个。在服务器上,用Oracle Client开启监听;在自己电脑上,配置本地Net服务名。服务器监听,本地Net服务。这个弄明白之后,就可以进行下面的操作。
在开始菜单找到下面的文件夹
打开这个配置程序,可以看到如下界面:
在这个几面用到最多的2个选项就是监听程序配置和本地Net服务配置。通过前面的说明,监听程序配置是在服务器端配置的。在服务器端安装数据库时,好像会附带安装好Client,直接在安装好的目录找到,然后配置就好了。这里会有个小小的问题,等会讲。
监听程序配置:监听程序的配置比较简单,选择监听程序配置,点击下一步,填写监听程序的名称,后面在一直下一步就好了,就不具体截图了。
本地Net配置本地Net配置会有几个参数需要注意一下,选择本地Net服务名配置,点击下一步,可以选择要做的工作(监听配置是也大致是这样);
选择添加,然后下一步:
这里的服务名是Oracle数据库实例的名称,安装oracle时,如果没有修改默认数据库实例的名称,会自动新建一个名称为orcl的数据库实例。这里可以填写orcl,接着点下一步,下面要填写的内容就比较容易了。
2.Oracle管理工具的使用
管理工具推荐:PL/SQL(免费,也好用,不过个人不是很喜欢这个界面风格);
Navicat Preminum(好用,界面也好看,不过是收费的,但是大家都懂的,嘿嘿)
这里就介绍一下Navicat Preminum吧。
1.新建连接
点击界面上的连接->选择Oracle,就会弹出下面的窗口:
连接名:自己随便起一个就好了,只要自己以后还认的就好。
主机名或IP地址:服务器的IP。
用户名:Oracle的用户名
密码:Oracle的密码
2.用户设置
在刚才的图片中,需要输入用户名和密码。刚开始没有创建新的用户是,一般都是输入管理员的账号。这时候,需要用这个工具创建新的用户。在Oracle中,一般只有一个数据库实例,然后通过创建不同的用户来区分不同的schema(可以等价于MySql或MSSqlServer中的数据库吧)。
添加用户
打开连接(双击左侧那个灰色的树形列表),然后点击用户,接着点击添加用户,就会弹出下面的界面:
输入用户名、密码,然后点击成员属于,配置成员角色归属。这个属于根据自己需求配置即可,由于我这里需要远程连接和操作数据库,我这里配置了CONNECT和DBA。
接着配置一下服务器权限。由于我要对表进行操作,股我勾选了UNLIMITED TABLESPACE这个权限。
其他内容可以根据自己需求配置,配置完之后,可以在SQL预览中看到,具体的操作语句(也可以用这个语句直接在数据库中运行)。
配置好之后,点击保存,用户的添加就完成了。添加完之后就可以用新增的用户名和密码打开新的连接(相当于连接到新的数据库了吧),然后就可以愉快的操作其他内容了。
3. 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。
首先说一说出现这个错误的过程。
第一次:使用visual studio开发的WebService部署到服务器上的IIS上,由于项目发布时,目标平台选择的是X86,故在IIS上开始是报错是找不到dll的依赖项,所以必须开启应用池的启用32位应用程序。启用之后,通过部署的WCF服务来从数据库获取数据时,通过调试就可以看到出现了这个异常。
解决办法:既然它提示这个错误,那么我将项目全部编译成64位,这个问题就解决了。但是这种办法不是很通用。
第二次:将正式项目的服务部署在服务器的IIS上,也和上面的原因一样,出现了这个异常,但是正式项目不可能更改全部的目标平台。就只能通过其他方面去更改。
代码生成目标平台不能更改,就只能从数据库入手。现在部署的项目是由于要将测试环境和正式环境区分开来,对比了一下测试服务器和正式服务器的数据库版本,都是64位。那在来回顾一下通过代码或者Oracle管理工具访问Oracle的流程:
代码/Oracle管理工具->Oracle Client配置的Net服务->Oracle Client的监听->Oracle数据库(大致是这样吧,个人理解,如果有错误还请大佬指导)
部署到服务器的IIS上的代码将会通过服务器上的Oracle Client来进行中间2步操作,通过所报的错误,大致能推理出错误应该出现在Oracle Client上,于是从Oracle官网下载了一个32位的Oracle Client,安装到了服务器上,通过这个新安装的客户端配置了Net服务,就发现这个异常消失了。
不过本人还是有一点不是很清楚,那就是服务器上有多个Oracle Client,配置Net服务时不会有太多问题,但是配置监听时,只有通过Oracle数据库安装时附带的Oracle Client进行配置才会生效,其他客户端配置都没用。百度了一下好像说通过下面的内容来配置,但是不怎么会改,还望有大佬指教。