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 =
#下面設定是連到本機的資料庫 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進程處於可用狀態。最普遍的通過網路連接。
留言列表