listener.ora 與 tnsnames.ora 及 sqlnet.ora

 listener.ora對應的是服務器上的監聽。
tnsnames.ora對應的是客戶端上的連接配置
 
可以說在本地的數據庫不用開監聽listener.ora就可以訪問數據庫(訪問數據庫時不帶 @dbname ),但是訪問遠程數據庫的話,遠程數據庫一定要開監聽
tsnnames.ora 裏  DESCRIPTION 前面那個oratest 不一定要跟裏面的service_name一樣,它只是給這個連接串起的一個別名,可以任意取名字。比如

ORATESTa =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST =
192.168.2.195)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = oratest)
    )
  )

注意:改oratest 爲 oratesta 以後,即修改tnsnames.ora後,要重新進入SQL*Plus進行連接

 

平時的連接 c:/>sqlplus aa/aa123@oratest 可以改爲直接用連接字符串,例如:
c:/>sqlplus aa/aa123@(DESCRIPTION = (ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST =192.168.2.195)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME =oratest))
 
監聽listener.ora
監聽的啓動lsnrctl start 並不會去找 sid_name 是否存在,甚至數據庫是否啓動都不理會。可是試驗將數據庫shutdown掉,lsnrctl start 都是成功的不會提示錯誤,或者數據庫運行狀態下將listener.ora的內容改一下比如改sid_name爲不存在sid,然後lsnrctl start也不會出錯,這就說明只有在連接的時候纔會去找sid_name,纔會有錯誤提示
 
另外,listener.ora內容修改以後,要重新啓動修改的內容才生效
 
sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES= (NTS,NONE)
當爲 nts 的時候是操作系統驗證,爲 none 的時候是採用密碼文件認證方式
試驗如下:
環境:windows
修改了SQLNET.AUTHENTICATION_SERVICES= (NONE) 但是
SQL> CONN AA/AA123
已連接。
照樣連接成功
SQL>CONN SYS/SYS123 AS SYSDBA
已連接。
也是連接成功

SQL> conn /as sysdba
ERROR:
ORA-01031: insufficient privileges

警告: 您不再連接到 ORACLE。

這就說明當值爲 NONE  的時候,是必須要輸入用戶名和密碼的,這就是密碼認證方式

注意:1、修改sqlnet.ora是不需要重新啓動數據庫的

      2、在其他Linux/Nuix平臺下跟別的參數有關,跟Windows環境下不同

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章