浅谈Oracle数据库的网络应用

运维 数据库运维 Oracle
ORACLE数据库有极强的网络功能,它支持各种网络协议,如TCP/IP、SPX/IPX、X.25、LU6.2、Decnet等等,支持异种网络协议互联、异种数据库互联。SQL*Net是ORACLE的网络软件,本文将对SQL*Net及其配置进行简单介绍。

SQL*Net产品介绍

ORACLE不仅支持传统的主机─终端方式,还支持流行的Client/Server体系结构方式,使得应用与数据库核心分布处理,极大地提高了资源的利用率和处理效率。Client/Server的Server端安放ORACLE Server;Client端安放用户界面程序或ORACLE的Client端产品,如SQL*Plus;SQL*Net是ORACLE的网络软件,通过SQL*Net可以实现Client与Server的连接,SQL*Net是建立在某一网络协议之上的网络中间件产品,如下图所示:

 

目前,SQL*Net有SQL*Net V1和SQL*Net V2两种版本。从上图中可以看出,必须在底层网络已经连通的前提下,才能对SQL*Net作合适的配置。

SQL*Net提供了以下网络功能:

网络透明性:在一个本地数据库上开发的应用,可以不加修改地分布到网络上去运行;

协议独立性:在任何一台计算机上编制的应用,都可以不加修改地分布到任何协议的网络上去运行;

异种机网络:通过多协议转换,可实现多种网络协议之间的互联;

位置透明:通过位置透明策略,可以使网络中数据,如同放在单一本地数据库中一样使用。以后当数据分布发生变化时,应用程序不用作任何修改;

自动字符集转换:两个通讯节点之间不同的字符集和NLS(国际语言支持)数据描述可以通过SQL*Net来管理。

下面介绍SQL*Net运行过程中相关的文件(以UNIX环境中TCP/IP协议为例):

lsnrctl:放在“/ORACLE_HOME/bin”目录下,用于启动SQL*Net V2.0监听进程。常用的命令有:lsnrctl start启动监听服务,lsnrctl stop停止监听服务,lsnrctl status查看监听服务当前是否启用。

tcpctl和orasrv:放在“/ORACLE_HOME/bin”目录下,用于启动SQL*Net V1.0监听进程。由于现在使用的是V2.0版本,故此处不再详述。

listener.ora和tnsnames.ora:放在“/ORACLE_HOME/network/admin”子目录下,是SQL*Net V2正常工作所需的配置文件及整个网络的配置文件。listener.ora是服务器监听进程网络配置文件,tnsnames.ora是客户机与服务器联络所需的网络配置文件。

config.ora:该文件放置了ORACLE运行的一些参数,与网络有关的有LOCAL_CONNECT,指明缺省访问ORACLE的连接描述符。如在该文件中有一行:LOCALE_CONNECT = ora,表示缺省连接描述符为ora。如果运行SQL*Plus时,可省去“$ sqlplus 用户名/口令@ora”中的连接描述符“ora:”只输入“$ sqlplus 用户名/口令”即可。

config.ora文件放在“/ORACLE_HOME/dbs”子目录下。

sqlnet.ora文件放在“/ORACLE_HOME/network/admin”子目录中,其作用类似Unix中nsswitch.conf配置文件,当输入连接数据库字符串时,通过这个文件来决定连接字符串与数据库实例名的对应关系。比如sqlnet.ora中描述为NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME),我们在客户端输入:sqlplus system/system@oracleTest,客户端首先在tnsnames.ora文件中找oracleTest的记录。如果没有相应的记录则尝试把oracleTest当作一个主机名,通过网络的途径去解析它的ip地址然后去连接这个ip上GLOBAL_DBNAME=oracleTest这个实例,当然这里oracleTest并不是一个主机名;如果将sqlnet.ora中的NAMES.DIRECTORY_PATH改为NAMES.DIRECTORY_PATH= (TNSNAMES),那么客户端就只会从tnsnames.ora中查找oracleTest记录。

TCP/IP的配置文件:与SQL*Net有关的TCP/IP协议配置文件有两个:

/etc/hosts:存放整个网络环境中每个节点的IP地址。

/etc/services:存放TCP/IP协议使用的各个端口的地址。

#p#

配置客户机/服务器结构

使用ORACLE的SQL*Net V2连接客户机和服务器,需配置每个客户机和服务器。在服务器上需配置的文件有:listener.ora、/etc/services,在客户机上需配置tnsnames.ora文件。

1.数据库连接过程

当输入sqlplus system/manager@oracleTest的时候

(1)查询sqlnet.ora看看名称的解析方式,发现是TNSNAME;则查询tnsnames.ora文件,从里边找oracleTest的记录,并且找到主机名,端口和service_name;

(2)如果listener进程没有问题的话,建立与listener进程的连接;根据不同的服务器模式如专用服务器模式或者共享服务器模式,系统默认是专用服务器模式,一切都没有问题的话客户端就连接上了数据库的server process;

(3)网络连接就建立起来了,listener进程的历史使命也就完成了。

注:几种连接用到的命令形式:

sqlplus / as sysdba 这是典型的操作系统认证,不需要listener进程

sqlplus system/manager 这种连接方式只能连接本机数据库,同样不需要listener进程

sqlplus system/manager@oracleTest 这种方式需要listener进程处于可用状态。最普遍的通过网络连接。

以上连接方式使用system用户或者其他通过密码文件验证的用户都不需要数据库处于可用状态,操作系统认证也不需要数据库可用,普通用户因为是数据库认证,所以数据库必需处于open状态。

2. 配置listener.ora

listener.ora文件中存放了客户机与服务器连接所需要的监听地址,以及服务器启动监听进程时的信息。listener.ora文件缺省放置在/ORACLE_HOME/network/admin之下。一个完整的listener.ora文件样式如下:

LISTENER=(ADDRESS=(COMMUNITY=TCP1)(PROTOCOL=TCP)(HOST=Server1)(PORT=1521))
SID_LISTENER=(SID_DESC=(SID_NAME=oracle)(ORACLE_HOME=/usr/oracle))

其中,LISTENER是服务器中监听进程的名称;COMMUNITY代表服务器在整个网络中的节点位置(该参数不是一定要有值,可以为空);PROTOCOL表明所使用的网络协议,若是TCP/IP协议,则该值必须为“TCP”;HOST表示服务器的网络地址;PORT指TCP/IP协议在主机中所占用端口号,ORACLE缺省使用1521,不能改变;SID_NAME指服务器上运行的ORACLE数据库名称,该值应与.profile文件中的环境变量ORACLE_SID相同;ORACLE_HOME是指ORACLE数据库的主目录,该值也应与.profile文件中的环境变量ORACLE_HOME相同。另外,在listener.ora文件中,还有一些启动监听进程所需要的参数。下面是listener.ora文件的实例:

listener = 服务器监听进程名称
(address_list = 网络地址列表
(address = 网络地址之一
(protocol = tcp) 网络协议(tcp表示TCP/IP协议)
(host = 192.168.0.1) 服务器IP地址:192.168.0.1
(port = 1251) 端口号:1251
)
)
startup_wait_time_listener = 0 监听进程对状态控制命令响应前等待秒数
connect_timeout_listener = 10 连接***允许等待时间
sid_list_listener = 服务器标识列表
(sid_desc = 服务器标识描述之一
(sid_name = oracle) 数据库标识名:oracle
(oracle_home = /usr/oracle) ORACLE数据库主目录:/usr/oracle
)

3. 配置/etc/services文件

在/etc/services文件中加如下一行:

lsnrctl ftp/1521

指明监听进程使用的协议及端口地址。

4. 配置tnsnames.ora文件

客户机为了和服务器连接,和服务器之间的互联,都必须先和服务器上的监听进程联络。ORACLE通过tnsnames.ora文件中的连接描述符来说明连接信息。一般tnsnames.ora 是建立在客户机上的。如果是客户机/服务器结构,整个网络上只有一台机器安装了ORACLE数据库服务器,那么只需在每个要访问ORACLE服务器的客户机上定义该文件,在服务器上无需定义。但是,如果网络上有多台机器均安装了ORACLE数据库服务器,并且服务器之间有数据共享的要求,那么在每台服务器上都必须定义该文件。tnsnames.ora文件缺省放在/ORACLE_HOME/network/admin目录下。下面是tnsnames.ora的文件样式:

REMOTE_DB=(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=
(COMMUNITY=SPX.US.Oracle)
(PROTOCOL=SPX)
(SERVICE=NOVELL1))
(ADDRESS=
(COMMUNITY=TCP1.US.Oracle)
(PROTOCOL=TCP)
(HOST=SERVER1)
(PORT=1521)
(CONNECT_DATA=
(SID=oracle)
(SERVER=DEDICATED)
)
)

请注意以下几点:

(1) REMOTE_DB为连接描述符名字,可根据需要随意定义,以后客户机要登录服务器时使用:

$sqlplus 用户名/口令@REMOTE_DB

(2) ADDRESS_LIST,表示该客户机要经由多种协议与一台或多台服务器连接。在该样式文件中就表示该客户机要用NOVELL网上的SPX/IPX协议和用TCP/IP网上的TCP/IP协议来和服务器相连。若只使用一种协议相连,那么仅使用ADDRESS关键字即可,而不用使用ADDRESS_LIST。

(3) PROTOCOL指明要连接使用的协议。

(4) SERVICE是NOVELL网上使用的关键字。

(5) HOST是TCP/IP协议使用的服务器IP地址。

(6) PORT是TCP/IP使用的端口地址。

(7) SID指定要连接的服务器上ORACLE数据库的ORACLE_SID。

(8) SERVER=DEDICATED表示用专用服务器连接ORACLE数据库。

下面是一个tnsnames.ora文件内容举例:

ora = 连接描述符名:ora
(description = 描述
(address =网络地址之一
(protocol = tcp)网络协议(tcp表示TCP/IP协议)
(host = 192.168.0.1)服务器IP地址:192.168.0.1
(port = 1521)服务器端口号:1521
)
(connect_data =连接数据
(sid = oracle)数据库标识名:oracle
)
)

【编辑推荐】

  1. 深入解析Oracle数据库安全策略
  2. Oracle性能调整的要点之SGA
  3. 利用脚本文件管理Oracle数据库
责任编辑:杨鹏飞 来源: IT专家网
相关推荐

2009-04-16 09:08:21

Oracle开发经验

2011-03-31 09:55:59

Oracle数据库开发技术

2010-04-14 13:25:15

Oracle数据

2009-10-13 09:43:43

Oracle数据库备份

2009-07-15 16:23:54

Java JDBC

2009-04-13 10:06:58

Oracle安全管理

2011-07-29 16:21:21

Oracle数据库回滚段

2011-03-11 16:42:51

Oracle数据库视图

2009-04-20 14:29:41

Oracle连接创建连接

2020-08-31 07:00:00

数据库数据库同步

2012-08-13 14:25:16

内存数据库

2010-04-13 10:55:35

Oracle数据库

2009-05-19 10:10:01

Oracle时间加减时间操作

2010-04-21 11:27:55

Oracle数据库

2018-05-17 23:07:12

2010-04-13 12:23:34

Oracle数据库

2011-04-12 13:44:17

CachéOracle数据库

2021-11-26 22:07:57

数据库管理Mongodb

2011-08-05 12:44:57

Oracle数据库表空间

2010-04-23 09:23:44

Oracle 数据库
点赞
收藏

51CTO技术栈公众号