国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

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

2024-08-29 13:38:53
字體:
來源:轉載
供稿:網友

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 芜湖市| 宕昌县| 克东县| 九寨沟县| 金阳县| 库尔勒市| 富顺县| 苏尼特左旗| 衡东县| 清流县| 洪雅县| 福海县| 尤溪县| 信阳市| 汶上县| 内黄县| 蓝田县| 南岸区| 弥勒县| 隆回县| 凌海市| 叶城县| 江门市| 肇东市| 郑州市| 碌曲县| 乐平市| 文山县| 武安市| 河南省| 许昌市| 扬州市| 怀宁县| 当涂县| 元氏县| 琼海市| 太仆寺旗| 成武县| 十堰市| 湘潭市| 尉犁县|