1. 程式人生 > >listener.ora--sqlnet.ora--tnsnames.ora的關係以及手工配置舉例

listener.ora--sqlnet.ora--tnsnames.ora的關係以及手工配置舉例

最近看到好多人說到tns或者資料庫不能登入等問題,就索性總結了下面的文件。
  
  首先來說Oracle的網路結構,往復雜處說能加上加密、LDAP等等。。這裡不做討論,重點放在基本的網路結構也就是我們最常用的這種情況
  
  三個配置檔案
  
  listener.ora、sqlnet.ora、tnsnames.ora ,都是放在$ORACLE_HOME/network/admin目錄下。
  
  重點:三個檔案的作用和使用
  
  #-----------------------
  
  sqlnet.ora-----作用類似於linux或者其他unix的nsswitch.conf檔案,通過這個檔案來決定怎麼樣找一個連線中出現的連線字串,
  
  例如我們客戶端輸入
  
  sqlplus sys/

[email protected]l
  
  假如我的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 的
hosts
檔案,提供的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
parameter
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 Configuration File: #E:/oracle/product/10.1.0/Db_2/NETWORK/ADMIN/listener.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:/oracle/product/10.1.0/Db_2)
  
  (SID_NAME = ORCL)
  
  )
  
  )
  
  #監聽器的名字,一臺資料庫可以有不止一個監聽器
  
  #再向下面是監聽器監聽的協議,ip,埠等,這裡使用的tcp1521埠,並且使#用的是主機名
  
  LISTENER =
  
  (DESCRIPTION =
  
  (ADDRESS = (PROTOCOL = TCP)(HOST = boway)(PORT = 1521))
  
  )
  
  上面的例子是一個最簡單的例子,但也是最普遍的。一個listener程序為一個instance(SID)提供服務。
  
  監聽器的操作命令
  
  $ORACLE_HOME/bin/lsnrctl start,其他諸如stop,status等。具體敲完一個lsnrctl後看幫助。
  
  上面說到的三個檔案都可以通過圖形的配置工具來完成配置
  
  $ORACLE_HOME/netca 嚮導形式的
  
  $ORACLE_HOME/netmgr
  
  本人比較習慣netmgr,
  
  profile 配置的是sqlnet.ora也就是名稱解析的方式
  
  service name 配置的是tnsnames.ora檔案
  
  listeners配置的是listener.ora檔案,即監聽器程序
  
  具體的配置可以嘗試一下然後來看一下配置檔案。
  
  這樣一來總體結構就有了,是當你輸入sqlplus sys/[email protected]的時候
  
  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/[email protected] 這種方式需要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:/oracle/product/10.1.0/Db_2/network/admin/sqlnet.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:/oracle/product/10.1.0/db_1/NETWORK/ADMIN/listener.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:/oracle/product/10.1.0/db_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:/oracle/product/10.1.0/db_1/NETWORK/ADMIN/sqlnet.ora
  
  # Generated by Oracle configuration tools.
  
  SQLNET.AUTHENTICATION_SERVICES= (NTS)
  
  NAMES.DIRECTORY_PATH= (HOSTNAME)
  
  Tnsnames.ora檔案不需要配置,刪除也無所謂。
  
  下面就是網路和作業系統的配置問題了,怎麼樣能夠解析我的主機名的問題了
  
  可以通過下面的方式連線
  
  sqlplus sys/[email protected]
  
  這樣的話,會連線boway這臺伺服器,並且listener來確定你所要連線的service_name。

相關推薦

listener.ora--sqlnet.ora--tnsnames.ora關係以及手工配置舉例

最近看到好多人說到tns或者資料庫不能登入等問題,就索性總結了下面的文件。    首先來說Oracle的網路結構,往復雜處說能加上加密、LDAP等等。。這裡不做討論,重點放在基本的網路結構也就是我們最常用的這種情況    三個配置檔案    listener.ora、sqln

Linux下如何查詢sqlnet.oralistener.oratnsnames.ora 配置檔案的目錄

1.首先切換到oracle 使用者下 使用env 檢視資料庫配置檔案資訊 2.然後找到LD_LIBRARY_PATH=/home/opt/oracle/product/11.2.0.4/db_1 (配置檔案後面的 路徑) 3.切換到 目錄下 cd /home/opt/oracle/p

Oracle----listener.ora ,tnsnames.ora ,sqlnet.ora三個檔案解析

1.解決問題:TNS或者資料庫不能登入。       最簡單有效方法:使用oracle系統提供的工具 netca 配置(把原來的刪除掉重新配置)      $netca  2.然而,仍有疑問:如何指定'listener.ora'存放的目錄?不要預設目錄($ORACLE_

[整理記錄]oracle: listener.orasqlnet.oratnsnames.ora配置及例子

1.解決問題:TNS或者資料庫不能登入。      最簡單有效方法:使用oracle系統提供的工具 netca 配置(把原來的刪除掉重新配置)     $netca  2.然而,仍有疑問:如何指定'listener.ora'存放的目錄?不要預設目錄($ORACLE_HOM

Oracel數據庫 listener.oratnsnames.ora配置

cat too ini rac edi 參考 image tns 登錄 oracel服務經常會出現各種監聽問題,很多情況是 listener.ora和tnsnames.ora 的配置有問題 D:\app\Administrator\product\11.2.0\dbhom

Oracle資料庫中的listener.oratnsnames.ora的作用

listener.ora檔案 listener.ora是伺服器端用的,oracle監聽程式,就是讀的這個檔案,裡面有oracle伺服器端的socket監聽地址和埠(如果要想區域網中的其他人,能夠訪問我本地的oracle,要把我本機的地址寫進去,如10.11.19.19

oracle安裝完成後沒有tnsnames.oralistener.ora問題方法

可以再開始選單裡面找這個: 配置和移植工具 Net Configuration Assistant 進去後第一項是監聽程式配置,配完就有listener.ora 第3項是本地Net服務名

sqlnet.oratnsnames.ora檔案裡有些是服務端的內容有些是客戶端的內容

sqlnet.ora和tnsnames.ora檔案兩個檔案是客戶端和服務端都可能會用的到的檔案,而不像listener.ora檔案那樣只會服務端用到,客戶端用不到。 但是客戶端和服務端用到的內容不一樣,所以放在客戶端和服務端的tnsnames.ora檔案(或是sqlnet.

在WIN7下安裝ORACLE並配置listener.oratnsnames.ora檔案,以此使用PLSQL

問題: 去年安裝的ORACLE當時執行的沒出問題,也就沒有寫總結。後來到公司,自己電腦的連不上公司的ORACLE資料庫了,自己一頓操作猛如虎,然後自己的資料庫也連不上了。這篇文章就是用來記錄這次資料庫從正常到被我作壞,然後由恢復正常的過程中遇到的問題以及解決辦

Oracle的tnsnames.ora配置(PLSQL Developer)

好文章 pro base script 必須 第一步 單機 sys RoCE 首先打開tnsnames.ora的存放目錄,一般為D:\app\Administrator\product\11.2.0\client_1\network\admin,就看安裝具體位置了。

pl/sql的tnsnames.ora檔案配置

位置:D:\app\product\11.2.0\dbhome_1\network\admin\tnsnames.ora(根據安裝位置具體情況而定) zx_U=  (DESCRIPTION =    (ADDRESS = (PROTOCOL = TCP)(HOST =

沒有安裝oracle,配置plsql的tnsnames.ora

在 https://download.csdn.net/download/sinat_29983215/10336939 下載 PL/SQL Developer。   1.  解壓,在instantclient_11_2目錄下新建NETWORK資料夾,

Oracle之tnsnames.ora

為什麼要建立tnasnames.ora檔案 客戶機為了和伺服器連線,必須先和伺服器上的監聽程序聯絡。ORACLE通過tnsnames.ora檔案中的連線描述符來說明連線資訊。一般tnsnames

PLSQL Developer安裝、tnsnames.ora配置 解答

rticle/details/51055850 前提是您已經安裝好了PLSQL-Developer工具,安裝PLSQL程式相信大家都會 正常的登入視窗: 當你的圖為: 沒有這個選項無法連線資料庫.沒有安裝Oracle的話

【 PLSQL Developer安裝、tnsnames.ora配置 解答】

使用plsql遠端連線資料庫需要安裝plsql工具+ oracle的遠端客戶端 在不登入的狀態開啟plsql: 點選工具---首選項:指定oracle客戶端的安裝路徑: C:\javaSoft\PLSQL\instantclient_11_2 C:\javaSoft\PLSQL\ins

多種TNS報錯總結--監聽器及tnsnames.ora配置檔案多種出錯總結

注意:本文內容基本無sqlnet.ora的情況。關於sqlnet.ora,詳見:監聽中sqlnet.ora的作用 本地命名的配置:.本地名可以用簡單的名稱訪問到所需的資料庫或伺服器所需的資訊,而這些資訊儲存到了tnsnames.ora中. LOCALNAME: 本地名稱 A

oracle的 tnsnames.ora檔案解析

其中  XNJ23 =   (DESCRIPTION =     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.23)(PORT = 1521))     (CONNECT_DATA = &n

客戶機安裝Oracle 11g client後的配置(用Net Configuration Assistant配置tnsnames.ora)

一、配置 1.安裝好Oracle Client後,點選開始選單,找到Net Configuration Assistant工具--開啟 2.歡迎頁面,選中“本地網路服務名配置”,點選“下一步” 3.“新增”,點選“下一步” 4.輸入你要連線的目標資料庫的“服務名”,例

tnsnames.ora配置小結

listener.ora,sqlnet.ora,tnsnames.ora,都是放在$ORACLE_HOME/network/admin目錄下。重點:三個檔案的作用和使用    #-----------------------    sqlnet.ora-----作用類似於li

tnsnames.ora配置遠端oracle後,plsql無法連線

下午在公司內部伺服器上安裝了oracle11g,安裝好之後想在本地用plsql遠端連線看看,在tnsnames.ora配置檔案裡配置好後,plsql死活連不上,一直報ora-12154:TNS:無法解析指定的連線識別符號,如下圖: 最後檢查下來,發現tns