listener.ora對應的是服務器上的監聽。
tnsnames.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環境下不同