数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Oracle SQL*NET TCP/IP 的通信模式、配置方法及应用实例


发布日期:2024年08月03日
 
Oracle SQL*NET TCP/IP 的通信模式、配置方法及应用实例

作者张希

摘 要 该文在介绍Oracle SQL*NET TCP/IP的通信模式及其组成

的基础上给出SQL*NET TCP/IP各版本下客户端及服务器端的具体配

以及利用SQL*NET在分布式环境下进行数据透明存取的应用实例

关键词 SQL*NET TCP/IP通信模式配置应用

引言

SQL*NET是Oracle公司的远程数据访问报文式软件用于实现客户

机/服务器和服务器/服务器的通信SQL*NET V基于Oracle的TNS(Tr

ansparent Network Substrate)和MPI(Multiprotocol Interchange)

新技术在SQL*NET V基础上又增加了两种功能即与所有工业标准协

议之间单一公用的接口以及通过一个或者多个多协议互换连接物理

上独立的网络应用的能力

以下在概要介绍Oracle SQL*NET TCP/IP的通信模式及其组成的

基础上给出SQL*NETTCP/IP各版本下客户端及服务器端的具体配置

以及利用SQL*NET在分布式环境下进行数据透明存取的应用实例

SQL*NET TCP/IP的通信模式及其组成

SQL*NET TCP/IP在网络通信协议层中对应ISO/OSI模式的第五层

和第六层(即会话层和表示层)所以它的运行还需第三方的TCP/IP网

络软件支持基于客户机/服务器的SQL*NET

TCP/IP网络通信模式如图所示

在分布式(事务)处理中通常有两种不同类型的计算机分别起客

户机和服务器的作用SQL*NET首先确保消除客户机和服务器之间的

所有区别(如内部数据类型表示NLS国家语言字符集等)以实现客户

机和服务器透明通信

在完整的分布式处理中不论是客户机/服务器模式还是服务器/

服务器模式都包含若干软件成分分别示出客户机/服务器和服

务器/服务器对话阶段的组成部分(以SQL*NET V为例)

客户机和服务器之间的通信是在对等的关系下以具有相应通信级

别的类似堆栈的方式进行的堆栈每一层上的逻辑交换单元运送那个

级别所用的综合内容Oracle客户机和服务器交换SQL语句和数据行

在各UPI/OPI(User/Oracle Programmatic Interface)层将这些交换

转换成一系列对SQL例程(如注册语法分析执行等)的调用SQL*N

ET层将这些调用作为一系列Oracle发送/接收报文对待TNS负责解决

所有一般性的机器及连通问题(如服务器或TNS的终点位置辨别连接

中是一个还是多个Multiprotocol Interchange多种协议互换等)Ora

cle协议适配器则负责把TNS功能映像到客户机/服务器连接中所用的

任何工业标准协议上或在multicommunity(多群体)连接情况下客户

机服务器的某些组成部分所用的工业标准协议上

SQL*NET TCP/IP 的配置

SQL*NET V的配置

()服务器端在/ect/services文件中加入下列行:

orasrv

/tcp

(orasrv是SQL*NET V使用的服务进程为ORACLE公司推荐用

户使用的TCP/IP的端口号)在/etc/hosts文件中加入数据库服务器的

主机名和绝对地址:

如:

fgg

fgg

()客户端

在oracleini文件中加入:

local=hoststring (缺省数据库)

remote=hoststring (远程数据库)

hoststring也称connectstring(连接串)用来指明要连接的Or

acle数据库

hoststring的形式为:

netprefix:hostname:SYSTEMID

其中:netprefix 网络协议前缀对于TCP/IP为T

host name Oracle服务器的主机名此主机名应在hosts文件中描

述过

SYSTEM ID ORACLE服务器的标识符

上述两个数据库服务器的hoststring分别为:

t:fgg:ora

t:fgg:ora

从SQL*NET V升级到SQL*NET V的配置

()服务器端

在/ect/services文件中加入下列行:

listener

/tcp

在oraclehome/network/admin目录中配置listenerora文件:

LISTENER:

(ADDRESSLIST:

(ADDRESS:

(PROTOCOL:tcp)

(HOST:fgg)

(PORT:)

)

)

STARTUPWAITTIMELISTENER=

CONNECTTIMEOUTLISTENER=

SIDLISTLISTENER=

(SIDLIST:

(SIDDESC:

(SIDNAME:ora)

(ORACLEHOME:/export/home/oracle)

)

)

TRACELEVELLISTENER=OFF

·如是分布式数据库且有多个V节点则还需配置tnsnamesora

文件:

(参见客户端此文件)

·如网络中包含一个或多个Multiprotocol Interchang(多种协

议互换)则还需配置tnsnavora文件:

·如在采用SQL*NET V 后启用ORACLE的多线索则需在oracle

home/dbs/oracleini(ORACLE初始化参数文件)加入下列行:

mtsdispatchers=tcp

mtsmaxdispatchers=

mtsservers=

mtsmaxservers=

mtsservice:ora

mtslisteneraddress:(ADDRESS=(PROTOCOL:tcp)(PORT:)

(HOST:fgg))

()客户端

在c:\orawin\network\admin目录中配置tnsnamesora文件:

fgg:

(DESCRIPTION:

(ADDRESSLIST:

(ADDRESS:

(PROTOCOL:TCP)

(Host:)

(Port:)

)

)

(CONNECTDATA:(SID:ora)

)

)

fgg:

(DESCRIPTION:

(ADDRESSLIST:

(ADDRESS:

(PROTOCOL:TCP)

(Host:)

(Port:)

)

)

(CONNECTDATA:(SID:ora)

)

)

在c:\windows\oracleini文件中将local=改为:loca

l=fgg

连接数据库

可使用下列两种方法之一连接数据库:

在SQL*PLUS中用CONNECT命令

如需连接到fgg主机上的数据库可用:

connect scott/tiger@t:fgg:ora (用SQL*NET V连接)

connect scott/tiger@fgg

(用SQL*NET V连接)

在启动SQL*PLUS时指明所需连接的数据库

如需连接到fgg主机上的数据库可用:

sqlplus scott/tiger@t:fgg:ora (用SQL*NET V连接)

sqlplus scott/tiger@fgg

(用SQL*NET V连接)

存取数据库

一旦配置好了SQL*NET运行在网络上的Oracle工具服务器均可

存取修改共享和存储在其它服务器上的数据Oracle分布式数据

库系统提供多种存取远程数据库的方法

建立数据库链路

Oracle中的数据库链路为远程数据库定义一路径一旦建立了数

据库链路任何一个连接到本地数据库的应用均可通过数据库链路引

用远程数据库上的表和视图仅需在相应的SQL语句中所引用的远程表

和视图后加上@数据库链路名

如:在fgg主机上建立一引用fgg数据库的数据库链路:

create public database link link usingfgg;(根据需要

可建立公用和专用的数据库链路)

在本地查询fgg数据库中表temp:

select * from scotttemp@link;

建立表快照

ORACLE的表快照(table snapshot)允许一个主表在分布式数据库

的其它结点进行复制使用快照可在本地为远程数据维持只读副本

如在fgg上建立fgg数据库中表temp的快照:

create snapshot tempshot as select * from scotttemp@lin

k;

查询快照:

select * from tempshot;

在定义快照时还可指定快照刷新的时间和方式以确保快照及时

正确地反映主表中的数据

数据库之间数据复制

使用SQL*PLUS的COPY命令可在网络上的数据库之间进行表及表的

数据复制

如在fgg上复制fgg数据库中表temp复制后的表名为temp:

copy from scott/tiger@fgg

replace temp

using select * from temp

根据需要可使用replacecreateinsertupdate四种控制语句

上一篇:Oracle10gRACwithocfs在windows安装

下一篇:Oraclesqlplus中方向键、退格键的使用