Oracle配置監聽和連接,已經一些比較容易混淆的相關概念

http://www.cnblogs.com/jacktu/archive/2008/02/27/1083235.html

 

1.配置監聽

配置監聽的方法有3種:

Database 

PLSExtProc 

Executable

Database 模式是標準的配置方式,也是最常用的數據庫連接方式。

PLSExtProc  模式允許PL/SQL程序訪問外部程序,並且被大多數實例配置爲默認連接方式

Executable  模式允許外部程序能通過一個tns連接被訪問(目前沒用到過)

Database 模式配置方式:

(SID_DESC =

      (GLOBAL_DBNAME= querymqq)

      (ORACLE_HOME= /data/oracle/product/10.2.0/db_1/)

      (SID_NAME = mqq)

    )

PLSExtProc模式配置方式:

(SID_DESC =

      (SID_NAME = PLSExtProc)

      (ORACLE_HOME = /usr/local/oracle/product/10.2.0/db_1)

      (PROGRAM = extproc)

在我們新oracle和8.155機器上只使用PLSextProc方式配置,並不能建立連接,還得加database配置。

對PLSextProc的解釋,網上也沒人能說出個名堂,疑惑的提問倒是一堆一堆的。那個e文檔也含糊的很。

2.監聽狀態

命令:lsnrctl status,紅色部分爲註解

LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 12-3ÔÂ -2007 21:39:27

 

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

 

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))

STATUS of the LISTENER

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

Alias                     LISTENER

Version                   TNSLSNR for Linux: Version 10.2.0.1.0 - Production

Start Date                12-3ÔÂ -2007 20:53:47

Uptime                    0 days 0 hr. 45 min. 39 sec

Trace Level               off /*關閉跟蹤*/

Security                  ON: Local OS Authentication

SNMP                      OFF

Listener Parameter File   /usr/local/oracle/product/10.2.0/db_1/network/admin/listener.ora  /*監聽配置文件地址*/

Listener Log File         /usr/local/oracle/product/10.2.0/db_1/network/log/listener.log    /*監聽日誌文件地址*/

Listening Endpoints Summary...

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

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

Services Summary...

Service "MQQ_XPT" has 1 instance(s).

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

Service "PLSExtProc" has 1 instance(s).

  Instance "PLSExtProc", status UNKNOWN/*UNKNOWN 表示是在listener.ora文件配置*/, has 1 handler(s) for this service...

Service "mqq" has 1 instance(s).

  Instance "mqq", status READY/*READY表示是在DB啓動PMON(監控進程)之後,自動註冊DB到監聽,一般在啓動實例後1分鐘註冊監聽*/, has 1 handler(s) for this service...

The command completed successfully

 

3.比較容易混淆的概念:

Db_name:對一個數據庫(Oracle database)的唯一標識。這種表示對於單個數據庫是足夠的,但是隨着由多個數據庫構成的分佈式數據庫的普及,這種命令數據庫的方法給數據庫的管理造成一定的負擔,因爲各個數據庫的名字可能一樣,造成管理上的混亂。爲了解決這種情況,引入了Db_domain參數,這樣在數據庫的標識是由Db_name和Db_domain兩個參數共同決定的,避免了因爲數據庫重名而造成管理上的混亂。這類似於互連網上的機器名的管理。我們將Db_name和Db_domain兩個參數用’.’連接起來,表示一個數據庫,並將該數據庫的名稱稱爲Global_name,即它擴展了Db_name。Db_name參數只能由字母、數字、’_’、’#’、’$’組成,而且最多8個字符。查看方式:show parameter db_name;

Db_domain:定義一個數據庫所在的域,域只是爲了更好的管理分佈式oracle系統。查看方式:show parameter db_domain;

Global_name:對一個數據庫(Oracle database)的唯一標識,oracle建議用此種方法命令數據庫。該值是在創建數據庫是決定的,缺省值爲Db_name. Db_domain。在以後對參數文件中Db_name與Db_domain參數的任何修改不影響Global_name的值,如果要修改Global_name,只能用ALTER DATABASE RENAME GLOBAL_NAME TO ‘db_name.db_domain’。查看方式:show parameter global_name;

Service_name:該參數是oracle8i新引進的。在8i以前,我們用SID來表示標識數據庫的一個實例,但是在Oracle的並行環境中,一個數據庫對應多個實例,這樣就需要多個網絡服務名,設置繁瑣。爲了方便並行環境中的設置,引進了Service_name參數,該參數對應一個數據庫,而不是一個實例,而且該參數有許多其它的好處。該參數的缺省值爲Db_name. Db_domain,即等於Global_name。一個數據庫可以對應多個Service_name,以便實現更靈活的配置。該參數與SID沒有直接關係,即不必Service name 必須與SID一樣。查看方式:show parameter service_name;

Net service name:網絡服務名,又可以稱爲數據庫別名(database alias)。是客戶端程序訪問數據庫時所需要,屏蔽了客戶端如何連接到服務器端的細節,實現了數據庫的位置透明的特性。查看方式:show parameter Net service name;

 

4.SQLPLUS運行時,建立連接的方式

在用戶輸入sqlplus system/manager@test後,sqlplus程序會自動到sqlnet.ora文件中找NAMES.DEFAULT_DOMAIN參數,假如該參數存在,則將該參數中的值取出,加到網絡服務名的後面,即此例中你的輸入由sqlplus system/manager@test自動變爲sqlplus system/[email protected] ,然後再到tnsnames.ora文件中找test.server.com網絡服務名;假如NAMES.DEFAULT_DOMAIN參數不存在,則sqlplus程序會直接到tnsnames.ora文件中找test網絡服務名,然後取出其中的host,port,tcp,service_name,利用這些信息將連接請求發送到正確的數據庫服務器上。

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