分享
 
 
 

OracleSQL*NETTCP/IP的通信模式、配置方法及应用实例

王朝oracle·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

作者:张希

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

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

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

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

一、引言

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

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

ansparent Network Substrate)和MPI(Multiprotocol Interchange)

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

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

上独立的网络应用的能力。

以下在概要介绍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网络通信模式如图1所示。

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

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

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

机和服务器透明通信。

图1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

图2

三、SQL*NET TCP/IP 的配置

1.SQL*NET V1的配置

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

orasrv

1525/tcp

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

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

主机名和绝对地址:

如:

202.119.13.99 fgg0

202.119.13.98 fgg1

(2)客户端

在oracle.ini文件中加入:

local=host-string (缺省数据库)

remote=host-string (远程数据库)

host-string也称connect-string(连接串),用来指明要连接的Or

acle数据库。

host-string的形式为:

net-prefix:host.name:SYSTEM.ID

其中:net-prefix 网络协议前缀,对于TCP/IP为T

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

述过。

SYSTEM ID ORACLE服务器的标识符。

上述两个数据库服务器的host-string分别为:

t:fgg0:ora7

t:fgg1:ora7

2.从SQL*NET V1升级到SQL*NET V2的配置

(1)服务器端

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

listener

1521/tcp

.在oracle-home/network/admin目录中配置listener.ora文件:

LISTENER:

(ADDRESS-LIST:

(ADDRESS:

(PROTOCOL:tcp)

(HOST:fgg0)

(PORT:1521)

)

)

STARTUP-WAIT-TIME-LISTENER=0

CONNECT-TIMEOUT-LISTENER=10

SID-LIST-LISTENER=

(SID-LIST:

(SID-DESC:

(SID-NAME:ora7)

(ORACLE-HOME:/export/home/oracle7)

)

)

TRACE-LEVEL-LISTENER=OFF

?如是分布式数据库,且有多个V2节点,则还需配置tnsnames.ora

文件:

(参见客户端此文件)

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

议互换),则还需配置tnsnav.ora文件:

?如在采用SQL*NET V2 后启用ORACLE7的多线索,则需在oracle-

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

mts-dispatchers="tcp,1"

mts-max-dispatchers=10

mts-servers=1

mts-max-servers=10

mts-service:ora7

mts-listener-address:"(ADDRESS=(PROTOCOL:tcp)(PORT:1521)

(HOST:fgg0))"

(2)客户端

.在c:\orawin\network\admin目录中配置tnsnames.ora文件:

fgg0:

(DESCRIPTION:

(ADDRESS-LIST:

(ADDRESS:

(PROTOCOL:TCP)

(Host:202.119.13.99)

(Port:1521)

)

)

(CONNECT-DATA:(SID:ora7)

)

)

fgg1:

(DESCRIPTION:

(ADDRESS-LIST:

(ADDRESS:

(PROTOCOL:TCP)

(Host:202.119.13.99)

(Port:1521)

)

)

(CONNECT-DATA:(SID:ora7)

)

)

.在c:\windows\oracle.ini文件中将"local=......."改为:loca

l=fgg0。

四、连接数据库

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

1.在SQL*PLUS中,用CONNECT命令。

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

connect scott/tiger@t:fgg0:ora7 (用SQL*NET V1连接)

connect scott/tiger@fgg0

(用SQL*NET V2连接)

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

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

sqlplus scott/tiger@t:fgg1:ora7 (用SQL*NET V1连接)

sqlplus scott/tiger@fgg1

(用SQL*NET V2连接。)

五、存取数据库

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

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

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

1.建立数据库链路

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

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

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

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

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

create public database link link0 using'fgg0';(根据需要

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

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

select * from scott.temp@link0;

2.建立表快照

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

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

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

create snapshot tempshot as select * from scott.temp@lin

k0;

查询快照:

select * from tempshot;

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

、正确地反映主表中的数据。

3.数据库之间数据复制

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

数据复制。

如在fgg1上复制fgg0数据库中表temp,复制后的表名为temp1:

copy from scott/tiger@fgg0

replace temp1

using select * from temp

根据需要可使用replace,create,insert,update四种控制语句。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有