使用Oracle数据库进行企业开发(一)
开发人员与DBA是两个不同的角色,在实际工作中,两个角色可以互相帮助,互通有无,共同做好项目。但是实际上,开发人员需要一定的Oracle基础知识,这样才可以做出更好更专业的应用程序。
对于Oracle系统架构等和开发关系不太大的知识,并不在本文讨论范围之内,本文仅针对部分开发人员需要了解的方面展开讨论,并且在某种程度上更偏向于dotnet程序员。
一、网络配置
使 用Oracle做后台数据库,前端的应用程序必须通过网络配置才能与服务器相连,即便数据库与应用程序在同一台机器上,也需要做一定的配置,如果客户端与服务器不在同一台机器,那么客户端必须安装Oracle客户端软件才可以,客户端的版本与服务器的版本不一定严格一致,比如服务器是Oracle10g,客户端只要装一个Oracle9i以上版本就可以了。下面分别做一下说明:
1.应用程序与数据库在同一台机器
这种模式相对简单,因为装了完整版的Oracle后,已经包括了Oracle客户端组件,在默认的情况,连接数据库只要提供数据库的用户名和密码即可,网络相关的东西可以不用理会。这种情况适合于本机只装了一个Oracle的实例,如果有多个实例的话,会需要配置的更复杂一些,与下面的第二点相同,请参考后面介绍。
2.数据库服务器与应用程序脱离
所谓脱离,指的是两个机器在物理上是隔离的,这种连接,必须靠OCI来实现。OCI指的是专门用于客户端与服务器连接的一种方式,实现它有多种方式,最简单的办法就是拿Oracle安装盘,在客户端机器上装一个Oracle的客户端版本即可。但是这种方式部署比较困难,因为Oracle的客户端也比较大,最少在100M以上,安装的时候需要指定目录等操作,比较复杂。如果做大面积CS结构部署,会很麻烦。
替代办法是目前可以找到一个“精简版Oracle客户端”,此版本并非Oracle官方发布,只有9M左右,安装完成后,可以实现客户端与服务器的连接通道,但是不包括任何的客户端工具。
能否在自己的应用程序中直接把Oracle客户端打包进去一起发布呢,我想肯定能,但是我不会。
OCI是如何实现这个桥梁作用的呢?在服务器端有一个监听器,一直负责监听外面的请求,这个请求正是客户端的OCI发过来的,监听器收到请求后,然后真正向数据库服务器提出申请,实现整个的连接过程。
一般服务器端默认情况需要1521端口,因此需要在服务器及中间的firewall上打开1521端口,对于UNIX系列服务器,这样做完就可以了,但是对于Windows系列服务器,你会发现,虽然firewall已经放行1521端口,客户端依然是无法连通,但是把firewall全部打开又太过危险。这是Windows的Socket机制造成的一个特有的现象,原理不再解释,仅说明一下处理方式:
需要在数据库服务器注册表的如下路径:
我的电脑\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0中添加一个键:USE_SHARED_SOCKET,并赋值为TRUE,然后就可以了。记得一点,如果还不行,就把数据库服务器重新启动一下。
针对客户端,有一个主要的文件就是tnsnames.ora,安装过Oracle客户端后,在安装目录可以找到这个文件,在这里面记录着如何连接服务器,一般安装客户端后,系统会自动建立几个连接,如果需要新建,直接模仿就可以,这是个文本文件,可以直接编辑,存盘后即生效,不需要重新启动机器或Oracle服务。
未完
对于Oracle系统架构等和开发关系不太大的知识,并不在本文讨论范围之内,本文仅针对部分开发人员需要了解的方面展开讨论,并且在某种程度上更偏向于dotnet程序员。
一、网络配置
使 用Oracle做后台数据库,前端的应用程序必须通过网络配置才能与服务器相连,即便数据库与应用程序在同一台机器上,也需要做一定的配置,如果客户端与服务器不在同一台机器,那么客户端必须安装Oracle客户端软件才可以,客户端的版本与服务器的版本不一定严格一致,比如服务器是Oracle10g,客户端只要装一个Oracle9i以上版本就可以了。下面分别做一下说明:
1.应用程序与数据库在同一台机器
这种模式相对简单,因为装了完整版的Oracle后,已经包括了Oracle客户端组件,在默认的情况,连接数据库只要提供数据库的用户名和密码即可,网络相关的东西可以不用理会。这种情况适合于本机只装了一个Oracle的实例,如果有多个实例的话,会需要配置的更复杂一些,与下面的第二点相同,请参考后面介绍。
2.数据库服务器与应用程序脱离
所谓脱离,指的是两个机器在物理上是隔离的,这种连接,必须靠OCI来实现。OCI指的是专门用于客户端与服务器连接的一种方式,实现它有多种方式,最简单的办法就是拿Oracle安装盘,在客户端机器上装一个Oracle的客户端版本即可。但是这种方式部署比较困难,因为Oracle的客户端也比较大,最少在100M以上,安装的时候需要指定目录等操作,比较复杂。如果做大面积CS结构部署,会很麻烦。
替代办法是目前可以找到一个“精简版Oracle客户端”,此版本并非Oracle官方发布,只有9M左右,安装完成后,可以实现客户端与服务器的连接通道,但是不包括任何的客户端工具。
能否在自己的应用程序中直接把Oracle客户端打包进去一起发布呢,我想肯定能,但是我不会。
OCI是如何实现这个桥梁作用的呢?在服务器端有一个监听器,一直负责监听外面的请求,这个请求正是客户端的OCI发过来的,监听器收到请求后,然后真正向数据库服务器提出申请,实现整个的连接过程。
一般服务器端默认情况需要1521端口,因此需要在服务器及中间的firewall上打开1521端口,对于UNIX系列服务器,这样做完就可以了,但是对于Windows系列服务器,你会发现,虽然firewall已经放行1521端口,客户端依然是无法连通,但是把firewall全部打开又太过危险。这是Windows的Socket机制造成的一个特有的现象,原理不再解释,仅说明一下处理方式:
需要在数据库服务器注册表的如下路径:
我的电脑\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0中添加一个键:USE_SHARED_SOCKET,并赋值为TRUE,然后就可以了。记得一点,如果还不行,就把数据库服务器重新启动一下。
针对客户端,有一个主要的文件就是tnsnames.ora,安装过Oracle客户端后,在安装目录可以找到这个文件,在这里面记录着如何连接服务器,一般安装客户端后,系统会自动建立几个连接,如果需要新建,直接模仿就可以,这是个文本文件,可以直接编辑,存盘后即生效,不需要重新启动机器或Oracle服务。
未完
天道酬勤不酬怨
李鸣(aicken)原创 转载注明
李鸣(aicken)原创 转载注明