萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> oracle教程 >> 理解oracle的網絡結構解決連接問題

理解oracle的網絡結構解決連接問題

最近看到好多人說到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)

)

)

  • 共4頁:
  • 上一頁
  • 1
  • 2
  • 3
  • 4
  • 下一頁
copyright © 萬盛學電腦網 all rights reserved