Oracle: listener.ora 、sqlnet.ora 、tnsnames.ora的配置及例子

來源:互聯網
上載者:User

Oracle: listener.ora 、sqlnet.ora 、tnsnames.ora的配置及例子
1.解決問題:TNS或者資料庫不能登入。  
    最簡單有效方法:使用Oracle系統提供的工具 netca 配置(把原來的刪除掉重新設定) 
    $netca  2.然而,仍有疑問:如何指定'listener.ora'存放的目錄?不要預設目錄($ORACLE_HOME/network/admin)

    在 '.profile' 中加入

  1. TNS_ADMIN=/f01/oracle11/app/oracle/product/8.0.6/network/admin   
  2. export TNS_ADMIN   

3.介紹三個設定檔

    1)listener.ora

    2)sqlnet.ora

    3)tnsnames.ora

    此三檔案都是放在$ORACLE_HOME/network/admin目錄下。 

1)sqlnet.ora(客戶及伺服器端)

      作用類似於linux或者其他unix的nsswitch.conf檔案,通過這個檔案來決定怎麼樣找一個串連中出現的連接字串,
  
  例如我們用戶端輸入
  
  sqlplus sys/oracle@orcl
  
  假如我的sqlnet.ora是下面這個樣子   

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

  
  那麼用戶端就只會從tnsnames.ora尋找orcl的記錄
  
  括弧中還有其他選項,如LDAP等並不常用。

2)Tnsnames.ora(客戶及伺服器端)

        這個檔案類似於unix 的hosts檔案,提供的tnsname到主機名稱或者ip的對應,只有當sqlnet.ora中類似
  
  NAMES.DIRECTORY_PATH= (TNSNAMES) 這樣,也就是用戶端解析連接字串的順序中有TNSNAMES時,才會嘗試使用這個檔案。
  
  例子中有兩個,ORCL 對應的本機,SALES對應的另外一個IP地址,裡邊還定義了使用主用伺服器還是共用伺服器模式進行串連,一句一句寫如下:   
    

  1. #你所要串連的時候輸入得TNSNAME    
  2.      
  3.   ORCL =   
  4.      
  5.   (DESCRIPTION =   
  6.      
  7.   (ADDRESS_LIST =   
  8.      
  9.   #下面是這個TNSNAME對應的主機,連接埠,協議   
  10.      
  11.   (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))   
  12.      
  13.   )   
  14.      
  15.   (CONNECT_DATA =   
  16.      
  17.   #使用專用伺服器模式去串連需要跟伺服器的模式比對,如果沒有就根據伺服器的模式   
  18.      
  19.   #自動調節   
  20.      
  21.   (SERVER = DEDICATED)   
  22.      
  23.   #對應service_name,SQLPLUS>show parameter service_name;   
  24.      
  25.   #進行查看   
  26.      
  27.   (SERVICE_NAME = orcl)   
  28.      
  29.   )   
  30.      
  31.   )   
  32.      
  33.   #下面這個類似   
  34.      
  35.   SALES =   
  36.      
  37.   (DESCRIPTION =   
  38.      
  39.   (ADDRESS_LIST =   
  40.      
  41.   (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.188.219)(PORT = 1521))   
  42.      
  43.   )   
  44.      
  45.   (CONNECT_DATA =   
  46.      
  47.   (SERVER = DEDICATED)   
  48.      
  49.   (SERVICE_NAME = sales)   
  50.      
  51.   )   
  52.      
  53.   )   

3)listener.ora(伺服器端) --listener監聽器進程的設定檔

  關於listener進程就不多說了,接受遠程對資料庫的接入申請並轉交給oracle的伺服器處理序。所以如果不是使用的遠端串連,listener進程就不是必需的,同樣的如果關閉listener進程並不會影響已經存在的資料庫連接。
  
  Listener.ora檔案的例子   
    

  1. #listener.ora Network Configuration File: #E:/oracle/product/10.1.0/Db_2/NETWORK/ADMIN/listener.ora    
  2.      
  3.   # Generated by Oracle configuration tools.   
  4.      
  5.   #下面定義LISTENER進程為哪個執行個體提供服務   
  6.      
  7.   #這裡是ORCL,並且它對應的ORACLE_HOME和GLOBAL_DBNAME   
  8.      
  9.   #其中GLOBAL_DBNAME不是必需的除非使用HOSTNAME做資料庫連接   
  10.      
  11.   SID_LIST_LISTENER =   
  12.      
  13.   (SID_LIST =   
  14.      
  15.   (SID_DESC =   
  16.      
  17.   (GLOBAL_DBNAME = boway)   
  18.      
  19.   (ORACLE_HOME = E:/oracle/product/10.1.0/Db_2)   
  20.      
  21.   (SID_NAME = ORCL)   
  22.      
  23.   )   
  24.      
  25.   )   
  26.      
  27.   #監聽器的名字,一台資料庫可以有不止一個監聽器   
  28.      
  29.   #再向下面是監聽器監聽的協議,ip,連接埠等,這裡使用的tcp1521連接埠,並且使#用的是主機名稱   
  30.      
  31.   LISTENER =   
  32.      
  33.   (DESCRIPTION =   
  34.      
  35.   (ADDRESS = (PROTOCOL = TCP)(HOST = boway)(PORT = 1521))   
  36.      
  37.   )   

  
  上面的例子是一個最簡單的例子,但也是最普遍的。一個listener進程為一個instance(SID)提供服務。
  • 1
  • 2
  • 3
  • 下一頁

相關文章

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.