ORACLE監聽配置及測試實驗


實驗一:

修改db_domain和service_name

我們將Db_name和Db_domain兩個參數用’.’連接起來,表示一個數據庫,並將該數據庫的名稱稱為Global_name即等於service_name,即它擴展了Db_name。

SYS@VDEDU > show parameter db_domain--查看db_domain

NAME      TYPE  VALUE

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

db_domain      string

SYS@VDEDU > alter system set db_domain='oracle.com' scope=spfile;

System altered.

tnsnames.ora是Oracle客戶端的網絡服務名配置文件,用於存放該客戶端配置的可連接實例的參數

可以在tnsname里修改service_name,加上.oracle.com

wps494.tmp

lsnrctl status

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 31-MAY-2018 16:27:17

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle01)(PORT=1521)))

STATUS of the LISTENER

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

Alias                     LISTENER

Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production

Start Date                31-MAY-2018 14:25:47

Uptime                    0 days 2 hr. 1 min. 30 sec

Trace Level               off

Security                  ON: Local OS Authentication

SNMP                      OFF

Listener Parameter File   /u01/app/oracle/product/11.2.4/dbhome_1/network/admin/listener.ora

Listener Log File         /u01/app/oracle/diag/tnslsnr/oracle01/listener/alert/log.xml

Listening Endpoints Summary...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle01)(PORT=1521)))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

Services Summary...

Service "VDEDU.oracle.com" has 1 instance(s).

  Instance "VDEDU", status READY, has 1 handler(s) for this service...

Service "VDEDUXDB.oracle.com" has 1 instance(s).

  Instance "VDEDU", status READY, has 1 handler(s) for this service...

The command completed successfully

Lsnrctl status查看service

Sqlplus / as sysdba再啟動數據庫

Quit 退出sqlplus

此時再登錄,就可以了

[oracle@oracle01 admin]$ sqlplus scott/oracle@VDEDU

當客戶端有用戶想要操作數據庫的時候,比如說在數據庫下建表,插入、刪除數據,這個時候用戶需要登錄認證,而用戶的登錄就是一次連接請求,是客戶端與服務器的連接,oracle服務器需要監聽到這個請求,然后對此連接的用戶名密碼進行判斷,因此必須要有一個監聽進程,就是用來監聽客戶端的連接以及斷開請求,這就決定了運行連接命令 SQL>conn /as sysdba之前必須已經啟動了監聽進程

數據庫啟動時,查看lsnrctl status可以看到動態監聽、靜態監聽和對應實例

wps4A5.tmp

關閉數據庫時只能看到靜態監聽

實驗二

設置靜態監聽

首先進去$ORACLE_HOME/network/admin目錄下,修改listener.ora

寫入靜態參數,注意第一行頂格寫,下面的行都不要頂格寫

SID_LIST_LISTENER = ##(此處應與監聽名相同)

        (SID_LIST =

        (SID_DESC =

        (GLOBAL_DBNAME = kingsql_static) ##(Service_name)

        (ORACLE_HOME =/u01/app/oracle/product/11.2.0/dbhome_1)

        (SID_NAME=VDEDU) ##(實例)

        ) )

Lsnrctl reload 監聽文件重載

關閉數據庫

此時再查看lsnrctl status,只能看到靜態監聽

wps4A6.tmp

sqlplus sys/oracle@192.168.183.132:1521/kingsql_static as sysdba此時數據庫如果沒有啟動也能進入

Sqlplus scott/oracle@192.168.183.132:1521/kingsql_static

配置靜態監聽的好處:靜態注冊,不管數據庫有沒有打開,監聽都已經啟動。而動態監聽是數據庫開啟之后才啟動。

注冊就是將數據庫作為一個服務注冊到監聽程序。

客戶端不需要知道數據庫名和實例名,只需要知道該數據庫對外提供的服務名就可以申請連接到數據庫。

這個服務名可能與實例名一樣,也有可能不一樣。

在數據庫服務器啟動過程中,數據庫服務器會向監聽程序注冊相應的服務(無論何時啟動一個數據庫,默認地都有兩條信息注冊到監聽器中:數據庫服務器對應的實例和服務)

相當於是這樣:在數據庫服務器和客戶端之間有一監聽程序(Listener),在監聽程序中,會記錄相應數據庫對應的服務名(一個數據庫可能對應有多個服務名),當客戶端需要連接數據庫時,只需要提供服務名,就可以建立客戶端和服務器之間的連接.

動態注冊不需要顯示的配置listener.ora文件,實例MOUNT時,PMON進程就會根據instance_name,service_name參數將實例和服務動態注冊到listerer中。

動態監聽的優點:
(1)不需要人工干預,在lsnrctl start后,會自動注冊數據庫的instance_name,service_name,然后tns不論使用SID和SERVICE_NAME均可以連接上來
(2)修改了SERVICE_NAME或者SID不用修改listener.ora文件

(3)動態注冊的數據庫通過狀態信息中的狀態READY或狀態BLOCKED(對於一個備用數據庫)來指明。

不管關閉何時數據庫,動態注冊的數據庫都會動態地從 監聽器注銷,而與之相關的信息將從狀態列表中消失。

這樣,不管數據庫是在運行還是已經關閉,監聽器總是知道它的狀態。

該信息將被用於連接請求的回退(fallback)和負載平衡。動態監聽由PMON進程會向監聽進行動態注冊,也可以手動注冊:ALTER SYSTEM REGISTER;

實驗三

創建第二個監聽程序

編輯listener.ora

wps4C6.tmp

LSNR2 =

  (DESCRIPTION_LIST =

   (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = oracle01)(PORT = 1528))

    (ADDRESS = (PROTOCOL = IPC)(KEY =EXTPROC1528))

   )

  )

查看本地監聽

SYS@VDEDU>show parameter local_Listener

NAME                                 TYPE        VALUE

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

local_listener                       string

修改數據庫本地監聽,使數據庫的登錄向LSNR2申請

SYS@VDEDU>alter system set local_listener=’(ADDRESS = (PROTOCOL = TCP)(HOST = oracle01)(PORT = 1528))’; 

System altered.

重啟數據庫

Lsnrctl start/stop/status/reload=Lsnrctl start/stop/status/reload LISTENER

Lsnrctl start/stop/status/reload LSNR2不能省略

修改tnsname.ora

KINGSQL =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = oracle01)(PORT = 1528))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = KINGSQL)

    )

  )

把端口修改為1528

再次登錄 sqlplus scott/oracle@KINGSQL 就是通過LSNR2監聽(1528端口)登錄了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM