1. 程式人生 > >[整理記錄]oracle: listener.ora 、sqlnet.ora 、tnsnames.ora的配置及例子

[整理記錄]oracle: listener.ora 、sqlnet.ora 、tnsnames.ora的配置及例子

1.解決問題:TNS或者資料庫不能登入。

 
    最簡單有效方法:使用oracle系統提供的工具 netca 配置(把原來的刪除掉重新配置) 
    $netca 


2.然而,仍有疑問:如何指定'listener.ora'存放的目錄?不要預設目錄($ORACLE_HOME/network/admin)

    在 '.profile' 中加入

3.介紹三個配置檔案

    1)listener.ora

    2)sqlnet.ora

    3)tnsnames.ora

    此三檔案都是放在$ORACLE_HOME/network/admin目錄下。 

1)sqlnet.ora(客戶及伺服器端)

      作用類似於linux或者其他unix的nsswitch.conf檔案,通過這個檔案來決定怎麼樣找一個連線中出現的連線字串
  
  例如我們客戶端輸入
  
  sqlplus sys/[email protected]
  
  假如我的sqlnet.ora是下面這個樣子
  

 
  
  那麼,客戶端就會首先在tnsnames.ora檔案中找orcl的記錄,如果沒有相應的記錄則嘗試把orcl當作一個主機名,通過網路的途徑去解析它的ip地址然後去連線這個ip上GLOBAL_DBNAME=orcl這個例項。當然我這裡orcl並不是一個主機名
  
  如果我是這個樣子
  
  
  
  那麼客戶端就只會從tnsnames.ora查詢orcl的記錄
  
  括號中還有其他選項,如LDAP等並不常用。

2)Tnsnames.ora(客戶及伺服器端)

        這個檔案類似於unix 的hosts檔案,提供的tnsname到主機名或者ip的對應,只有當sqlnet.ora中類似


  
  NAMES.DIRECTORY_PATH= (TNSNAMES) 這樣,也就是客戶端解析連線字串的順序中有TNSNAMES時,才會嘗試使用這個檔案。
  
  例子中有兩個,ORCL 對應的本機,SALES對應的另外一個IP地址,裡邊還定義了使用主用伺服器還是共享伺服器模式進行連線,一句一句寫如下:
  
  

3)listener.ora(伺服器端) --listener監聽器程序的配置檔案

  關於listener程序就不多說了,接受遠端對資料庫的接入申請並轉交給oracle的伺服器程序。所以如果不是使用的遠端的連線,listener程序就不是必需的,同樣的如果關閉listener程序並不會影響已經存在的資料庫連線。
  
  Listener.ora檔案的例子
  
  
  
  上面的例子是一個最簡單的例子,但也是最普遍的。一個listener程序為一個instance(SID)提供服務。

4.監聽器的操作命令


  
  $ORACLE_HOME/bin/lsnrctl start     

      其他諸如stop,status等。具體敲完一個lsnrctl後看幫助。
  
  上面說到的三個檔案都可以通過圖形的配置工具來完成配置

  • $ORACLE_HOME/netca 嚮導形式的    
  • $ORACLE_HOME/netmgr 
  1. profile 配置的是sqlnet.ora也就是名稱解析的方式    
  2. service name 配置的是tnsnames.ora檔案    
  3. 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程序的歷史使命也就完成了。 

5.幾種連線用到的命令形式

  
  1.sqlplus / as sysdba 這是典型的作業系統認證,不需要listener程序   
  2.sqlplus sys/oracle 這種連線方式只能連線本機資料庫,同樣不需要listener程序   
  3.sqlplus sys/[email protected] 這種方式需要listener程序處於可用狀態。最普遍的通過網路連線。
  
  以上連線方式使用sys使用者或者其他通過密碼檔案驗證的使用者都不需要資料庫處於可用狀態,作業系統認證也不需要資料庫可用,普通使用者因為是資料庫認證,所以資料庫必需處於open狀態。
  
  然後就是

6.平時排錯可能會用到的
  
  

 1.lsnrctl status檢視伺服器端listener程序的狀態
  

  
  2.tnsping 檢視客戶端sqlnet.ora和tnsname.ora檔案的配置正確與否,及對應的伺服器的listener程序的狀態。
  

  
  3.
  
  
  
  ----------
  
  READ WRITE

7.使用hostname訪問資料庫而不是tnsname的例子

  
  使用tnsname訪問資料庫是預設的方式,但是也帶來點問題,那就是客戶端都是需要配置tnsnames.ora檔案的。如果你的資料庫伺服器地址發生改變,就需要重新編輯客戶端這個檔案。通過hostname訪問資料庫就沒有了這個麻煩。
  
  需要修改伺服器端listener.ora
  

  
  客戶端sqlnet.ora 如果確認不會使用TNSNAME訪問的話,可以去掉TNSNAMES
  

  
  Tnsnames.ora檔案不需要配置,刪除也無所謂。
  
  下面就是網路和作業系統的配置問題了,怎麼樣能夠解析我的主機名的問題了
  
  可以通過下面的方式連線
  
  sqlplus sys/[email protected]
  
  這樣的話,會連線boway這臺伺服器,並且listener來確定你所要連線的service_name。

-------------------------------------------------------------------------------

8.啟動時listener.ora,sqlnet.ora,tnsnames.ora配置問題解決思路

from:http://www.ixdba.net/hbcms/article/ec/231.html 
 
1:監聽檔案listener.ora  tnsnames.ora中關於host的配置建議都用ip來表示


2:如果監聽不能啟動或者啟動後不能正常使用,

(1)首先確認你的OS的hostname,執行hostname命令,嘗試ping "hostname",看是否能通,
(2)然後檢查監聽的listener.ora ,tnsnames.ora這兩個配置檔案中關於host的資訊是否是用主機名錶示的。
(3)如果是,更改到新的主機名,然後把新的主機名加入系統的hosts檔案,linux下為/etc/hosts;
然後ping 新主機名,應該能通的。
(4)如果全部是用ip表示的,那麼直接將新的主機名加入系統的hosts檔案即可。
然後ping 新主機名,也應該能通的。

3:如果第二步還是解決不了問題,

(1)檢查啟動的oracle的instance資訊,select * fromv$instance;
然後檢視本級系統的主機名,兩者應該是相等的。
(2)如果查詢出來的是老的主機名,嘗試"ping老主機名"應該不通,
通過listener也應該是連結不上;
(3)如果是新的主機名,如果"ping新主機名"不通,
請修改/etc/hosts檔案增加新主機名,確認能ping通,然後重啟oracle

4:注意tns和listener檔案的設定
具體操作步驟:

1)修改hostname為www.ixdba.net 

2)修改/etc/hosts,去掉原來的主機名的行,增加該行
    192.168.60.253 www.ixdba.net
3)重啟資料庫,查詢instance資訊
     select * from v$instance;
     得到新的HOST_NAME為www.ixdba.net
4)修改listener.ora,把HOST改成新的主機名
5)修改tnsname.ora,修改對應的HOST為新的主機名
6)重啟listener
      然後connect oracle/[email protected]應該可以成功的。

相關推薦

[整理記錄]oracle: listener.ora sqlnet.ora tnsnames.ora配置例子

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

關於PLSQL配置了正確的Oracle客戶端但是不能識別tnsnames.ora問題

場景描述:      在通過安裝Oracle客戶端使用PLSQL的時候發現PLSQL在已經正常配置了Oracle Home和Ocdi library的情況下不能識別tnsnames.ora中的有效配置。 正常安裝Oracle客戶端效果: PLSQL中關於Oracle Ho

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

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

Oracle啟動中,spfile.orainit<SID>.oraspfile<SID>.ora 這三個文件正確的先後順序是什麽?

nbsp tar acl 命令 spfile 缺省 start spf 解答 Oracle啟動中,spfile.ora、init<SID>.ora、spfile<SID>.ora 這三個文件正確的先後順序是什麽? 解答:啟動數據庫,使用start

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.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服務名

oracle listener.ora檔案配置

# listener.ora Network Configuration File: /oracleDB/product/11.2.0/db_1/network/admin/listener.ora # Generated by Oracle configuration tools. SID

oracle listener.ora文件配置

list gen ogr env product min acl dll address # listener.ora Network Configuration File: /oracleDB/product/11.2.0/db_1/network/admin/lis

ORACLE 使用rman備份通過restorerecover恢復standby庫ORA-10877實戰

1、備庫standby異常報錯 昨天凌晨磁碟空間突然暴漲導致oracle備庫異常,報警,後了過來清理掉磁碟的備份檔案,去了之後,歸檔日誌能同步過來了,但是啟動備庫standby發現mrp沒有啟動,後臺報錯如下,google了,說這種情況要重新再做備庫(

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

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

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

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

Oracel數據庫 listener.oratnsnames.ora配置

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

簡單記錄一次REDO文件損壞報錯 ORA-00333重做日誌讀取塊出錯

clas 後者 利用 實例恢復 poi cancel true cover html 一.故障描寫敘述 首先是實例恢復須要用到的REDO文件損壞 二、解決方法 1.對於非當前REDO或者當前REDO可是無活動事務使用下面CLEAR命令: 用CLEAR命令重建該日誌

oracle數據庫連接時提示ora-00257錯誤,提示數據庫歸檔日誌歸檔失敗

輸入 custom sed inter server2 別名 sna mil _id 轉 http://jingyan.baidu.com/article/425e69e6b142d1be15fc16dc.html Microsoft Windows [版本 6

Oracle 12c DG備庫Alert報錯ORA-01110

ring ror app unp can round stand reported apply 環境是12.2.0.1 version, Oracle Data Guard備庫今天故障恢復了一下,RMAN恢復後發現備庫Alert一直報錯,但是備庫主庫同步一致,數據一致。20

Oracle 12c DG備庫Alert報錯ORA-10877全庫恢復

rec file ack ble archive 數據 edi guard enc 12C Oracle Data Guard 備庫今天異常 2018-07-05T21:31:32.291970+08:00GEN0 (ospid: 75371): terminating t

Oracletnsnames.ora配置(PLSQL Developer)

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

Oracle:新增用戶登錄提示“ORA-04098:觸發器‘GD.ON_LOGON_TRIGGER’無效且未通過重新驗證”

begin sql dbms ont env 用戶 database 環境 objects 接著上一篇創建一個只有查看權限的用戶,在測試環境,新建賬號後嘗試登錄,提示如下: 1.看提示是base庫的觸發器有問題了,所以先定位到這個觸發器 SELECT * FRO

oracle 安裝完成後遇到的問題(ORA-01507: database not mounted)

oracle安裝完成後,想把使用者sys的密碼改成123,語句是:alter user system identified by 123;    然後報錯: 我先在百度上找了找 ORA-02231:missing or invalid option to ALTER DATABAS