Oracle配置文件


在oracle安裝目錄$HOME/network/admin下,,經常看到sqlnet.ora tnsnames.ora listener.ora這三個文件,除了tnsnames.ora,其他兩個文件詳細的用途很多人都不太了解。
1. sqlnet.ora 用在oracle client端,用於配置連接服務端oracle的相關參數.
2. tnsnames.ora 用在oracle client端,用戶配置連接 數據庫的別名參數,就像系統中的hosts文件一樣。
3. listener.ora 用在oracle server端,配置oracle服務端程序的監聽辦法,比如限制某些ip等參數。
在安裝目錄$HOME/network/admin/samples下,會看到如上上個文件的示例文件,里面會有相關參數的說明和用法,如果遇到什么問題,大家可以對照這些示例文件中相關參數的說明進行解決。
如果連接數據庫出了什么問題,在保證網絡出正常,沒有防火牆干擾的情況下,查找問題的步驟是:
1)在客戶端順序檢查sqlnet.ora,tnsnames.ora是有問題。
2)在服務器端檢查listener.ora配置,並且保證監聽程序啟動,數據庫服務加載。
 
1. 認識sqlnet.ora
 
下面只講述幾個常用參數配置,詳細的資料,大家可以查看示例sqlnet.ora得到。
sqlnet.ora可以刪除,這樣在oracle客戶端連接數據庫的時候,默認采用tnsnames.ora中的配置。
1).NAMES.DEFAULT_DOMAIN
域名domain定義,在你用sqlplus訪問數據庫的時候,會在tns別名后面加上".domain"
示例:
sqlnet.ora中:
NAMES.DEFAULT_DOMAIN=com
tnsnames.ora中的tns定義如下:
local_dev =
   (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.111)(PORT = 1521))
          (CONNECT_DATA =
        (SERVER = DEDICATED)
      (SERVICE_NAME = linuxdb)
   )
)
在客戶端執行命令:sqlplus username/password@local_dev[/email]的時候,會出現如下錯誤信息:
"ORA-12154: TNS: 無法處理服務名"或者"ORA-12154: TNS:could not resolve service name"這樣的錯誤信息。
因為sqlplus username/password@local_dev[/email]的時候,將tns別名“local_dev”轉換成了“local_dev.com”,所以local_dev.com在tnsnames.ora中找不到,就報錯了。
修改tnsnames.ora中的定義如下:
local_dev.com =
   (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.111)(PORT = 1521))
          (CONNECT_DATA =
        (SERVER = DEDICATED)
      (SERVICE_NAME = linuxdb)
   )
)
再執行sqlplus [email=username/password@local_dev]username/password@local_dev[/email],連接成功。
2)NAMES.DIRECTORY_PATH
定義了在客戶端連接數據庫時,采用什么樣的匹配方式。
示例
sqlnet.ora內容如下:
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
那么在客戶端執行sqlplus  username/password@local_dev[/email]連接數據庫的時
首先采用tnsnames.ora的別名配置連接數據庫,若連不上再采用ONAMES進行解析,最后采用主機名進行解析。
ONAMES表示Oracle使用自己的名稱服務器(Oracle Name Server)來解析,目前Oracle建議使用輕量目錄訪問協議LDAP來取代ONAMES;
HOSTNAME表示使用host文件,DNS,NIS等來解析;
3)SQLNET.AUTHENTICATION_SERVICES
定義登錄數據庫的認證方式。
NONE表示Oracle數據庫身份驗證,NTS表示操作系統身份驗證,兩種方式可以並用。 
可以設置成SQLNET.AUTHENTICATION_SERVICES=(NONE,NTS)先后順序表明驗證的優先方式。
示例
sqlnet.ora內容如下:
SQLNET.AUTHENTICATION_SERVICES=(NONE)
在命令行上執行如下命令:
sqlplus "/ as sysdba"時,執行失敗。
提示錯誤信息ORA-01031: insufficient privileges
這個參數默認沒有設置。 
 
2. 認識tnsnames.ora
 
提供了客戶端連接某個數據庫的詳細信息,主機地址,端口,數據庫實例名等。
下面給出一個示例來說明問題:
local_dev =
   (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.111)(PORT = 1521))
          (CONNECT_DATA =
        (SERVER = DEDICATED)
      (SERVICE_NAME = linuxdb)
   )
)
PROTOCOL參數一般是TCP,可以根據服務器情況選擇一種配置方式。
HOST 一般是ip地址,也可以是主機名,這個主機名字只要能用ping hostname通就行,一般在客戶端系統的host文件上配好主機名和ip地址的映射關系。PORT 標准是1521,根據服務器端的監聽端口而定。SERVICE_NAME 就是數據庫的服務名,用system用戶登陸后,sqlplus> show parameter service_name命令查看。
 
3. 認識listener.ora
 
tnslsnr進程是監聽、並接受遠程連接數據庫請求的監聽進程,listener.ora是tnslsnr進程的配置文件,監聽的參數都是從該配置文件中讀取。
該文件位於服務端,如果只安裝oracle客戶端,一般不存在這個文件。
如果你只需要在本地連接數據庫,不接受遠程連接,那么也不需要啟動tnslsnr進程,也不需要去維護listener.ora文件。
啟動監聽進程的命令,在命令模式下,執行lsnrctl start命令就啟動了監聽進程tnslsnr。
監聽可以有多個,也就是說,可以同時監聽多個oracle實例,可以在listener.ora中定義多個監聽器進行監聽。
下面給出一個簡單的示例
listener.ora中的內容:
LISTENER_CSB =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 10.70.9.14)(PORT = 1621))
      )
    )
  )
SID_LIST_LISTENER_CSB =
  (SID_LIST =
    (SID_DESC =
      (ORACLE_HOME = /u02/oracle/app/oracle/product/10.2.0/db)
      (SID_NAME = zjde vcsb)
    )
  )
#############################################
LISTENER_CSA =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 10.70.9.14)(PORT = 1521))
      )
    )
  )
SID_LIST_LISTENER_CSA =
  (SID_LIST =
    (SID_DESC =
      (ORACLE_HOME = /u02/oracle/app/oracle/product/10.2.0/db)
      (SID_NAME = zjdevcsa)
    )
  )
在上面:
1). LISTENER_CSB,LISTENER_CSA定義了監聽器的兩個監聽名字,和這兩個監聽器監聽的參數:ip,port等。
2). SID_LIST_LISTENER_CSB,SID_LIST_LISTENER_CSA定義了兩個監聽服務,服務名字格式SID_LIST_<lsnrname>,lsnrname就是上面兩個監聽器的名字,指定了這個服務將會接受的服務將提交給那個監聽器;監聽的實例名zjdevcsb,zjdevcsa是在tnsnames.ora中需要指定的SERVICE_NAME參數對應。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM