科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Oracle SQL*NET TCP/IP 的通信模式、配置方法及应用实例

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

  作者:张希   摘 要 该文在介绍Oracle SQL*NET TCP/IP的通信模式及其组成   的基础上,给出SQL*NET TCP/IP各版本下客户端及服务器端的具体配   置,以及利用SQL*NET在分布式环境下进行数据透明存取的应用实例

作者:中国IT实验室 来源:中国IT实验室 2007年10月4日

关键字: 新手入门 数据库 ORACLE

  • 评论
  • 分享微博
  • 分享邮件

  作者:张希
  摘 要 该文在介绍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四种控制语句。
  

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件