listener.ora--sqlnet.ora--tnsnames.ora的關係以及手工配置舉例
listener.ora--sqlnet.ora--tnsnames.ora的關係以及手工配置舉例
[@more@]三個配置檔案listener.ora、sqlnet.ora、tnsnames.ora ,都是放在$ORACLE_HOMEnetworkadmin目錄下。
重點:三個檔案的作用和使用
#-----------------------
sqlnet.ora-----作用類似於linux或者其他unix的nsswitch.conf檔案,透過這個檔案來決定怎麼樣找一個連線中出現的連線字串,
例如我們客戶端輸入
sqlplus sys/oracle@orcl
假如我的sqlnet.ora是下面這個樣子
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME)
那麼,客戶端就會首先在tnsnames.ora檔案中找orcl的記錄.如果沒有相應的記錄則嘗試把orcl當作一個主機名,透過網路的途徑去解析它的ip地址然後去連線這個ip上GLOBAL_DBNAME=orcl這個例項,當然我這裡orcl並不是一個主機名
如果我是這個樣子
NAMES.DIRECTORY_PATH= (TNSNAMES)
那麼客戶端就只會從tnsnames.ora查詢orcl的記錄
括號中還有其他選項,如LDAP等並不常用。
#------------------------
Tnsnames.ora------這個檔案類似於unix 的檔案,提供的tnsname到主機名或者ip的對應,只有當sqlnet.ora中類似
NAMES.DIRECTORY_PATH= (TNSNAMES) 這樣,也就是客戶端解析連線字串的順序中有TNSNAMES是,才會嘗試使用這個檔案。
例子中有兩個,ORCL 對應的本機,SALES對應的另外一個IP地址,裡邊還定義了使用主用伺服器還是共享伺服器模式進行連線,一句一句說
#你所要連線的時候輸入得TNSNAME
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
#下面是這個TNSNAME對應的主機,埠,協議
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
#使用專用伺服器模式去連線需要跟伺服器的模式匹配,如果沒有就根據伺服器的模式
#自動調節
(SERVER = DEDICATED)
#對應service_name,SQLPLUS>show service_name;
#進行檢視
(SERVICE_NAME = orcl)
)
)
#下面這個類似
SALES =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.188.219)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = sales)
)
)
#----------------------
客戶端完了我們來看伺服器端
listener.ora------listener監聽器程式的配置檔案
關於listener程式就不多說了,接受遠端對資料庫的接入申請並轉交給oracle的伺服器程式。所以如果不是使用的遠端的連線,listener程式就不是必需的,同樣的如果關閉listener程式並不會影響已經存在的資料庫連線。
Listener.ora檔案的例子
#listener.ora Network File: #E:oracleproduct10.1.0Db_2NETWORKADMINlistener.ora
# Generated by Oracle configuration tools.
#下面定義LISTENER程式為哪個例項提供服務
#這裡是ORCL,並且它對應的ORACLE_HOME和GLOBAL_DBNAME
#其中GLOBAL_DBNAME不是必需的除非使用HOSTNAME做資料庫連線
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = boway)
(ORACLE_HOME = E:oracleproduct10.1.0Db_2)
(SID_NAME = ORCL)
)
)
#監聽器的名字,一臺資料庫可以有不止一個監聽器
#再向下面是監聽器監聽的協議,ip,埠等,這裡使用的tcp1521埠,並且使#用的是主機名
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = boway)(PORT = 1521))
)
上面的例子是一個最簡單的例子,但也是最普遍的。一個listener程式為一個(SID)提供服務。
監聽器的操作命令
$ORACLE_HOME//lsnrctl start,其他諸如stop,status等。具體敲完一個lsnrctl後看幫助。
上面說到的三個檔案都可以透過圖形的配置工具來完成配置
$ORACLE_HOME/netca 嚮導形式的
$ORACLE_HOME/netmgr
本人比較習慣netmgr,
profile 配置的是sqlnet.ora也就是名稱解析的方式
service name 配置的是tnsnames.ora檔案
listeners配置的是listener.ora檔案,即監聽器程式
具體的配置可以嘗試一下然後來看一下配置檔案。
這樣一來總體結構就有了,是當你輸入sqlplus sys/oracle@orcl的時候
1. 查詢sqlnet.ora看看名稱的解析方式,發現是TNSNAME
2. 則查詢tnsnames.ora檔案,從裡邊找orcl的記錄,並且找到主機名,埠和service_name
3. 如果listener程式沒有問題的話,建立與listener程式的連線。
4. 根據不同的伺服器模式如專用伺服器模式或者共享伺服器模式,listener採取接下去的動作。預設是專用伺服器模式,沒有問題的話客戶端就連線上了資料庫的server process。
5. 這時候網路連線已經建立,listener程式的歷史使命也就完成了。
#---------------
幾種連線用到的命令形式
1.sqlplus / as sysdba 這是典型的作業系統認證,不需要listener程式
2.sqlplus sys/oracle 這種連線方式只能連線本機資料庫,同樣不需要listener程式
3.sqlplus sys/oracle@orcl 這種方式需要listener程式處於可用狀態。最普遍的透過網路連線。
以上連線方式使用sys使用者或者其他透過密碼檔案驗證的使用者都不需要資料庫處於可用狀態,作業系統認證也不需要資料庫可用,普通使用者因為是資料庫認證,所以資料庫必需處於open狀態。
然後就是
#-------------
平時排錯可能會用到的
1.lsnrctl status檢視伺服器端listener程式的狀態
LSNRCTL> help
The following operations are available
An asterisk (*) denotes a modifier or extended command:
start stop status
services version reload
save_config trace change_password
quit exit set*
show*
LSNRCTL> status
2.tnsping 檢視客戶端sqlnet.ora和tnsname.ora檔案的配置正確與否,及對應的伺服器的listener程式的狀態。
C:>tnsping orcl
TNS Ping Utility for 32-bit Windows: Version 10.1.0.2.0 - Production on 16-8月 -
2005 09:36:08
Copyright (c) 1997, 2003, Oracle. All rights reserved.
Used parameter files:
E:oracleproduct10.1.0Db_2networkadminsqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
(HOST = 127.0.0.1)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_
NAME = orcl)))
OK (20 msec)
3.
SQL>show sga 檢視instance是否已經啟動
SQL> select open_mode from v$database; 檢視資料庫是開啟還是mount狀態。
OPEN_MODE
----------
READ WRITE
#-----------------
使用hostname訪問資料庫而不是tnsname的例子
使用tnsname訪問資料庫是預設的方式,但是也帶來點問題,那就是客戶端都是需要配置tnsnames.ora檔案的。如果你的資料庫伺服器地址發生改變,就需要重新編輯客戶端這個檔案。透過hostname訪問資料庫就沒有了這個麻煩。
需要修改
伺服器端listener.ora
#監聽器的配置檔案listener.ora
#使用host naming則不再需要tnsname.ora檔案做本地解析
# listener.ora Network Configuration File: d:oracleproduct10.1.0db_1NETWORKADMINlistener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
# (SID_NAME = PLSExtProc)
(SID_NAME = orcl)
(GLOBAL_DBNAME = boway)
(ORACLE_HOME = d:oracleproduct10.1.0db_1)
# (PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = boway)(PORT = 1521))
)
)
客戶端sqlnet.ora 如果確認不會使用TNSNAME訪問的話,可以去掉TNSNAMES
# sqlnet.ora Network Configuration File: d:oracleproduct10.1.0db_1NETWORKADMINsqlnet.ora
# Generated by Oracle configuration tools.
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (HOSTNAME)
Tnsnames.ora檔案不需要配置,刪除也無所謂。
下面就是網路和作業系統的配置問題了,怎麼樣能夠解析我的主機名的問題了
可以透過下面的方式連線
sqlplus sys/oracle@boway
這樣的話,會連線boway這臺伺服器,並且listener來確定你所要連線的service_name。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9697/viewspace-1022895/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- listener.ora、sqlnet.ora、tnsnames.ora的關係以及手工配置舉例SQL
- 海明碼舉例分析(監督關係與資訊碼 冗餘位)
- 列舉常見的關係型資料庫和非關係型都有那些?資料庫
- Web Service和SOAP以及HTTP的關係? .WebHTTP
- Eloquent 關係圖例(譯)
- [全程建模]業務建模和用例模型以及需求規格說明書的關係模型
- openfile解讀以及和latch的一點關係
- 配置節點間的SSH信任關係
- DDD興起的原因以及與微服務的關係微服務
- JVM調優總結-典型配置舉例1JVM
- JVM調優總結-典型配置舉例2JVM
- 這一次搞懂Spring Web零xml配置原理以及父子容器關係SpringWebXML
- spring cloud alibaba 元件版本關係 以及 畢業版本依賴關係SpringCloud元件
- #define巨集與列舉以及typedef關鍵字的區別
- CLASSPATH 以及包和目錄結構的關係 (轉)
- 微服務架構的理解以及和 RPC 的關係微服務架構RPC
- Activity 的啟動模式 以及與AppManager類的關係模式APP
- PHP的工作原理以及lamp四者之間的關係PHPLAMP
- JVM調優總結(七)-典型配置舉例1JVM
- JVM調優總結(八)-典型配置舉例2JVM
- 敏捷開發領域裡的 Epic 以及和 User Story 的關聯關係敏捷
- 關於對MySQL的SQL_NO_CACHE的理解和用法舉例MySql
- 關於 Angular 部署以及 index.html 裡 base hRef 屬性的關聯關係AngularIndexHTML
- [全程建模]用例的子流和分析類的關係
- openstack, kvm, qemu-kvm以及libvirt之關係
- 關於Qos中常用的CIR、PIR、CBS、PBS、EBS的解釋以及用法關係
- mssql sqlserver in 關鍵字在值為null的應用舉例SQLServerNull
- Linux系統配置SSH信任關係Linux
- 誰能說說SessionFacade的粒度,以及和Delegate的關係?Session
- PostgreSQL的表檔案以及TOAST表檔案對應關係SQLAST
- 專案,計劃以及總體工作之間的關係(轉)
- JAVA反射舉例Java反射
- 盒模型舉例模型
- 死鎖-舉例
- 對ES6中類class以及例項物件、原型物件、原型鏈之間關係的詳細總結物件原型
- 探討PostgreSQL例項中資料庫之間的關係SQL資料庫
- java中的單例模式,舉例說明。Java單例模式
- 城鄉關係 | 以北京為例透視城市化與城市病研究中的城鄉關係