理解oracle的網路結構解決串連問題

來源:互聯網
上載者:User

最近看到好多人說到tns或者資料庫不能登入等問題,就索性總結了下面的東東。

首先來說oracle的網路結構,往複雜處說能加上加密、LDAP等等。。這裡不做討論,重點放在基本的網路結構也就是我們最常用的這種情況

三個設定檔

listener.ora、sqlnet.ora、tnsnames.ora ,都是放在$ORACLE_HOME\network\admin目錄下。

重點:三個檔案的作用和使用

#-----------------------

sqlnet.ora-----作用類似於linux或者其他unix的nsswitch.conf檔案,通過這個檔案來決定怎麼樣找一個串連中出現的連接字串,

例如我們用戶端輸入

sqlplus sys/oracle@orcl

假如我的sqlnet.ora是下面這個樣子

SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME)

那麼,用戶端就會首先在tnsnames.ora檔案中找orcl的記錄.如果沒有相應的記錄則嘗試把orcl當作一個主機名稱,通過網路的途徑去解析它的ip地址然後去串連這個ip上GLOBAL_DBNAME=orcl這個執行個體,當然我這裡orcl並不是一個主機名稱

如果我是這個樣子

NAMES.DIRECTORY_PATH= (TNSNAMES)

那麼用戶端就只會從tnsnames.ora尋找orcl的記錄

括弧中還有其他選項,如LDAP等並不常用。

#------------------------

Tnsnames.ora------這個檔案類似於unix 的hosts檔案,提供的tnsname到主機名稱或者ip的對應,只有當sqlnet.ora中類似

NAMES.DIRECTORY_PATH= (TNSNAMES) 這樣,也就是用戶端解析連接字串的順序中有TNSNAMES是,才會嘗試使用這個檔案。

例子中有兩個,ORCL 對應的本機,SALES對應的另外一個IP地址,裡邊還定義了使用主用伺服器還是共用伺服器模式進行串連,一句一句說

#你所要串連的時候輸入得TNSNAME

ORCL =

(DESCRIPTION =

(ADDRESS_LIST =

#下面是這個TNSNAME對應的主機,連接埠,協議

(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))

)

(CONNECT_DATA =

#使用專用伺服器模式去串連需要跟伺服器的模式比對,如果沒有就根據伺服器的模式

#自動調節

(SERVER = DEDICATED)

#對應service_name,SQLPLUS>show parameter service_name;

#進行查看

(SERVICE_NAME = orcl)

)

)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.