熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

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

2013-11-13 22:19:22  來源: Oracle 

  作者張希
  摘 要 該文在介紹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四種控制語句

From:http://tw.wingwit.com/Article/program/Oracle/201311/18766.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.