oracle監聽配置講解


在這裏我們簡單說明一下對於oracle的網絡配置基礎,
主要簡單介紹基本流程和兩個常用的文件listener.ora和tnsnames.ora

簡要說明:對於客戶端連接oracle服務器,
首先必須通過oracle服務的監聽程序找到對於的數據庫的路徑
然後創建數據庫服務器和客戶端之間的連接。整個過程對於監聽程序是沒有和數據庫進行直接連接的,
監聽程序主要是用給客戶端找到數據庫服務器並且創建連接。
通常,對於服務端,我們是需要配置監聽程序文件listener.ora,對於客戶端連接,我們需要配置tnsnames.ora


1 listener.ora文件的說明

 監聽配置文件,在數據庫服務端,對於linux系統,該文件可以通過netca命令進行配置,
 並且存放在$ORACLE_HOME/network/admin這個目錄下

下面給出一個文件的模板

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /u01/app/oracle)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = /u01/app/oracle)
      (SID_NAME = orcl)
    )

  )


LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.11.128)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
  )

說明:對於LISTENER  主要是配置監聽的ip地址和端口,一般通過netca配置以後就會
生成一個(ADDRESS = (PROTOCOL = TCP)(HOST = hsj2)(PORT = 1521)),其中對於host
建議改成對應的ip地址
     對於SID_LIST_LISTENER 是使用配置註冊文件的,一般oracle的service可以通過數據庫動態
註冊,但是這裏我們使用

    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = /u01/app/oracle)
      (SID_NAME = orcl)
    )
  這部分代碼進行靜態註冊。這樣註冊的話比較穩定,而且可以使用客戶端來啓動數據庫。

  啓動數據庫以後使用命令也可以註冊: alter system register

對於這部分的常用的命令
 lnsrctl start 啓動監聽
 lnsrctl stop  停止監聽
 lnsrctl status 查看狀態
 alter system register 手動給監聽註冊service

    
=====================================================

LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 03-NOV-2013 07:48:01

Copyright (c) 1991, 2005, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.11.128)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date                03-NOV-2013 07:35:39
Uptime                    0 days 0 hr. 12 min. 22 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/network/admin/listener.ora
Listener Log File         /u01/app/oracle/network/log/listener.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.11.128)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "orcl" has 2 instance(s).
  Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orcl_XPT" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully

============================================================
  Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
  Instance "orcl", status READY, has 1 handler(s) for this service...

  這裏對於service orcl有兩個instance,其中一個是oracle自動註冊,但是status UNKNOWN這個是靜態註冊的

2 tnsnames.ora 本地命令文件

這個文件用戶客戶端找到數據庫服務器的監聽,並且告訴監聽需要訪問的service,所以對於這個文件有三個地方
的信息重要,一個是ip地址,一個是端口號:一般都是1521,還有一個就是SERVICE_NAME.
對於這個配置文件,我們可以使用netca命令的本地命名配置進行配置,也可以只用vi編輯器直接修改

==================================================
ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.11.128)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

3 如果我們的客戶端不能連接數據庫服務器,我們可以使用以下幾個步驟進行排除
a 在服務器端使用本地策略連接數據庫,查看數據庫是否正常開啓
  sqlplus / as sysdba

b 查看監聽程序狀態是否正常,比如說沒有啓動監聽,在監聽信息中找不到對應的service和instance

  lnsrctl status

  如果沒有啓動 lnsrctl start
  如果沒有註冊成功,
   第一:靜態註冊,修改監聽文件listener.ora
       (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = /u01/app/oracle)
      (SID_NAME = orcl)
    )
    第二:手動註冊命令  alter system register

c 檢查客戶端配置

   tsnping  orcl
   sqlplus sys/root@orcl
   sqlplus sys/[email protected]:1521/orcl 這種方式可以連接說明tnsnames.ora配置有問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章