Oracle Database 設定檔中,這個設定檔:listener.ora  是要在主機端啟動的服務設定檔;而 tnsnames.ora & sqlnet.ora 則是在使用者諯的設定檔,主要是連到主機端資料庫的連線設定。關於比較詳細的說明如下:


sqlnet.ora:

作用類似於 linux 或者其他 unix 的 nsswitch.conf 文件,Oracle Database 利用這個設定檔來決定連接資料庫系統的連線方式順序 

例如使用者端輸入:sqlplus sys/oracle@orcl

且使用者端的 sqlnet.ora 是下面這個樣子

SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME, EZCONNECT)

 

那麼,使用者端就會首先在 tnsnames.ora 文件中找 orcl 的記錄.如果沒有相應的記錄則嘗試把 orcl 當作一個主機名,通過網路的途徑去解析它的 ip 地址然後去連接這個 ip 上GLOBAL_DBNAME=orcl 這個實例,當然我這裡orcl並不是一個主機名,如果我是這個樣子 NAMES.DIRECTORY_PATH= (TNSNAMES),那麼使用者端就只會從 tnsnames.ora 查找 orc l的記錄,括號中還有其他選項,如LDAP等並不常用。


tnsnames.ora:

這個文件類似於 unix 的 hosts 文件,tnsnames.ora 是設定連線簡稱(alias)對應於主機名或者ip address 的解析,只有當 sqlnet.ora中有 NAMES.DIRECTORY_PATH= (TNSNAMES) 的設定,也就是使用者端解析連接字符串的順序中有 TNSNAMES ,才會嘗試使用這個文件。

#下面的設定是連線到遠端:192.168.1.1 的資料庫

ORCL =
  (DESCRIPTION =
  (ADDRESS_LIST =  
  #下面是這個 TNSNAME 對應的資料庫主機,端口,協定  
   (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521))  
  )  
  (CONNECT_DATA =

  #使用專用服務器模式去連接需要跟服務器的模式匹配,如果沒有就根據服務器的模式  

  #自動調節
  (SERVER = DEDICATED) 

  #對應service_name,SQLPLUS>show parameter service_name;

  #進行查看  
  (SERVICE_NAME = orcl)  
   )  
  )

 

#下面設定是連到本機的資料庫

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost )(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

 


listener.ora:

listener 監聽器服務的配置文件:是接受使用者端對數據庫的連接進入申請,並轉交給 oracle database 的服務。LISTENER 監聽器的名字,一台數據庫可以有不止一個監聽器,Listener.ora 例子如下:

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )

DEFAULT_SERVICE_LISTENER = (XE)



監聽器的操作命令:lsnrctl、tnsping

$ORACLE_HOME/bin/lsnrctl start,其他諸如 stop,status 等。可以進入 lsnrctl 後,輸入 help 看其它的參數說明來作偵錯,也可以利用基本的指令 tnsping orcl 來作基本偵錯。  

上面說到的三個文件都可以通過圖形的配置工具 $ORACLE_HOME/netca & $ORACLE_HOME/netmgr 來完成配置,但以 netmgr 較為方便。

 

幾種連接用到的命令形式:

  • 1.) sqlplus / as sysdba 這是典型的操作系統認證,不需要listener進程
  • 2.) sqlplus system/oracle 這種連接方式只能連接本機數據庫,同樣不需要listener進程
  • 3.) sqlplus sysrem/oracle@orcl 這種方式需要listener進程處於可用狀態。最普遍的通過網路連接。

 

arrow
arrow

    MIS 發表在 痞客邦 留言(0) 人氣()