天天看點

Oracle DB 配置Oracle Network環境

• 使用Enterprise Manager 執行以下操作: – 建立其它監聽程式 – 建立Oracle Net 服務别名 – 配置連接配接時故障轉移 – 控制Oracle Net 監聽程式 • 使用tnsping測試Oracle Net 的連接配接 • 确定何時使用共享伺服器以及何時使用專用伺服器  

  • Oracle Net 服務
Oracle DB 配置Oracle Network環境

使用Oracle Net 服務可建立從客戶機或中間層應用程式到Oracle 伺服器的網絡連接配接。建立網絡會話之後,Oracle Net 充當客戶機應用程式與資料庫伺服器的資料信使。它負責建立并維護客戶機應用程式和資料庫伺服器之間的連接配接,并負責在二者之間交換消息。Oracle Net(或模拟Oracle Net 功能的程式,如Java 資料庫連接配接)位于需要與資料庫伺服器通信的每台計算機上。 在客戶機計算機上,Oracle Net 是供應用程式連接配接資料庫的背景元件。 在資料庫伺服器上,Oracle Net 包含一個稱為“Oracle Net 監聽程式”的活動程序,該程序負責協調資料庫與外部應用程式之間的連接配接。 Oracle Net 服務最常見的用法是傳入資料庫連接配接。通過配置其它網絡服務,可允許通路外部代碼庫(EXTPROC) 以及通過Oracle 異構服務将Oracle執行個體連接配接到非Oracle 資料源,如Sybase、Informix、DB2 和SQL Server。  

  • Oracle Net 監聽程式
Oracle DB 配置Oracle Network環境

Oracle Net 監聽程式(簡稱 監聽程式)是将所有非本地使用者連接配接到Oracle 執行個體的網關。 單個監聽程式可用于多個資料庫執行個體以及成千上萬個客戶機連接配接。 Enterprise Manager 是通路監聽程式的一種方式。可以控制實際監聽程式以及密碼保護和日志檔案位置等一般參數的配置。 進階管理者還可以根據需要,使用标準作業系統(OS) 文本編輯器(如vi或gedit)手動編輯配置檔案來配置Oracle Net 服務。 注:安裝了用于獨立伺服器的Grid Infrastructure 後,Oracle Net 監聽程式從其軟體安裝目錄(<Grid_home>) 啟動。需要從這一軟體安裝中運作監聽程式,以便能夠連接配接到ASM 執行個體。預設使用這一監聽程式監聽安裝在同一伺服器上的所有資料庫執行個體。  

  • 建立網絡連接配接

要建立客戶機或中間層連接配接,Oracle Net 要求客戶機了解下列事項: • 運作監聽程式的主機 • 監聽程式監視的端口 • 監聽程式使用的協定 • 監聽程式處理的服務名   如果要讓應用程式通過Oracle Net 監聽程式連接配接到某服務,應用程式必須擁有關于該服務的資訊,包括 監聽程式所駐留的位址或主機、監聽程式接受的協定,以及監聽程式監視的 端口。在确定監聽程式的位置之後,應用程式所需的最後一項資訊就是它 所要連接配接到的服 務名。 Oracle Net“名稱解析”就是确定該連接配接資訊的過程。  

  • 建立連接配接

Oracle Net 名稱解析完成之後, 連接配接請求将從使用者或中間層應用程式(以下稱為“使用者程序”)傳遞到 監聽程式。監聽程式會接收一個CONNECT資料包,之後會檢查此CONNECT資料包請求的Oracle Net 服務名是否有效。 如果沒有請求服務名(例如tnsping請求),監聽程式會确認連接配接請求,此外不執行任何其它操作。如果請求的服務名無效,則監聽程式會将錯誤代碼傳輸給該使用者程序。

  • 使用者會話
Oracle DB 配置Oracle Network環境

如果CONNECT資料包請求了一個有效的服務名,則監聽程式将衍生一個新的程序來處理該連接配接。此新程序稱為 “伺服器程序”。監聽程式會連接配接到該程序并傳遞初始化資訊,包 括使用者程序的位址資訊。此時, 監聽程式不再處理連接配接,所有工作都會傳遞到伺服器程序。伺服器程序将檢查使用者的驗證身份證明(通常為密碼),如果身份證明有效,則建立一個 使用者會話。 專用伺服器程序:建立會話後,伺服器程序随即充當伺服器上的使用者代理。伺服器程序負責以下工作: • 對通過應用程式發出的所有SQL 語句進行文法分析,然後運作 • 在資料庫緩沖區高速緩存中查找執行SQL 語句所需的資料塊 • 從磁盤上的資料檔案中将必要的資料塊讀入到系統全局區(SGA) 的資料庫緩沖區高速緩存部分(如果SGA 中沒有這些資料塊) • 管理所有排序活動。排序區是用于處理排序的記憶體區;它包含在與程式全局區(PGA) 關聯的記憶體部分中 • 将結果傳回到使用者程序,以便應用程式可以處理這些資訊 • 讀取審計選項并将使用者程序報告給審計目标  

  • 配置和管理Oracle Network 的工具

• Enterprise Manager 的“Net Services Administration(網絡服務管理)”頁 • Oracle Net Manager • Oracle Net Configuration Assistant • 指令行   配置和管理Oracle Network 的工具 使用以下工具和應用程式管理Oracle Network 配置: • Enterprise Manager:提供了配置和管理Oracle Net 服務的內建環境。使用Enterprise Manager 可針對多個檔案系統上的Oracle 主目錄配置Oracle Net 服務,還可管理監聽程式。 • Oracle Net Manager:提供一個圖形使用者界面(GUI),通過此界面可針對本地客戶機或伺服器主機上的Oracle 主目錄配置Oracle Net 服務。通過Oracle Net Manager,可 針對本地客戶機或伺服器主機上的Oracle 主目錄配置Oracle Net 服務。可以使用Oracle Net Manager 配置以下網絡元件: - 命名:定義簡單的名稱和連接配接辨別符,并将它們映射至連接配接描述符以确定網絡位置和服務辨別。Oracle Net Manager 支援在本地tnsnames.ora檔案或集中式目錄服務中配置連接配接描述符 - 命名方法:配置将連接配接辨別符解析為連接配接描述符的不同方法 - 概要檔案:配置用于在客戶機或伺服器上啟用和配置Oracle Net 功能的首選項 - 監聽程式:建立和配置監聽程式以接收客戶機連接配接   • Oracle Net Configuration Assistant:安裝Oracle 軟體時通過Oracle Universal Installer 啟動。使用Oracle Net Configuration Assistant 可配置Oracle DB 的監聽協定位址和 服務資訊。在典型的資料庫安裝期間,Oracle Net Configuration Assistant 會自動配置一個名為 LISTENER的監聽程式,該監聽程式具有資料庫的 TCP/IP 監聽協定位址。 如果執行定制安裝,則Oracle Net Configuration Assistant 會提示配置所選擇的 監聽程式名稱和協定位址。在安裝資料庫之後,使用Oracle Net Configuration Assistant 進行初始網絡配置。然後,可以使用Oracle Enterprise Manager 和Oracle Net Manager 配置和管理你的網絡。 • 指令行:用于 啟動、停止監聽程式程序或檢視監聽程式程序的狀态。由作業系統使用者啟動或停止監聽程式。 如果未啟動監聽程式,則無法使用Enterprise Manager。  

  • 監聽程式控制實用程式

可以使用lsnrctl指令行實用程式(或通過EM)控制 Oracle Net 監聽程式。 [[email protected] ~]$ . oraenv ORACLE_SID = [test0924] ? The Oracle base remains unchanged with value /u01/app/oracle [[email protected] ~]$ lsnrctl   LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 10-OCT-2013 15:50:26   Copyright (c) 1991, 2011, Oracle.  All rights reserved.   Welcome to LSNRCTL, type "help" for information.   LSNRCTL> help The following operations are available An asterisk (*) denotes a modifier or extended command:   start                               stop                status              services                         version             reload              save_config                   trace               spawn               change_password         quit                 exit                set*                                 show*      監聽程式控制實用程式 啟動執行個體時,監聽程式程序會建立一個指向Oracle DB 的通信路徑。随後,監聽程式可接受資料庫連接配接請求。 使用監聽程式控制實用程式可控制監聽程式。使用lsnrctl,可以: • 啟動監聽程式 • 停止監聽程式 • 檢查監聽程式的狀态 • 根據配置檔案參數重新初始化監聽程式 • 動态配置多個監聽程式 • 更改監聽程式密碼 該實用程式的基本指令文法為: LSNRCTL> command [listener_name] 發出lsnrctl指令時,如果沒有指定其它監聽程式名稱或執行SET CURRENT_LISTENER指令,此指令将作用于預設的監聽程式(名為LISTENER)。如果監聽程式名為LISTENER,則可省略listener_name參數。 注:在Grid Infrastructure 主目錄和Oracle DB 主目錄中都有lsnrctl 實用程式。在使用此 實用程式之前,務必将環境變量設定為合适的主目錄。  

  • 監聽程式控制實用程式的文法

可以使用指令行或LSNRCTL 提示符發出監聽程式控制實用 程式的指令。 • 指令行文法: $ lsnrctl <command name> $ lsnrctl start $ lsnrctl status • 提示符文法: LSNRCTL> <command name> LSNRCTL> start LSNRCTL> status   LSNRCTL> status Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rtest.localdomain)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias                     LISTENER Version                   TNSLSNR for Linux: Version 11.2.0.3.0 - Production Start Date                07-OCT-2013 18:12:21 Uptime                    2 days 21 hr. 44 min. 3 sec Trace Level               off Security                  ON: Local OS Authentication SNMP                      OFF Listener Parameter File   /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora Listener Log File         /u01/app/oracle/diag/tnslsnr/rtest/listener/alert/log.xml Listening Endpoints Summary...   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rtest.localdomain)(PORT=1521))) Services Summary... Service "test0924" has 1 instance(s).   Instance "test0924", status READY, has 1 handler(s) for this service... Service "test0924XDB" has 1 instance(s).   Instance "test0924", status READY, has 1 handler(s) for this service... The command completed successfully   監聽程式控制實用程式的文法 可以從實用程式内部(提示符文法)或指令行發出lsnrctl指令。以下兩個指令具有 相同的效果,但分别使用的是指令行文法和提示符文法: 指令行文法: $ lsnrctl start   [[email protected] ~]$ lsnrctl start   LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 10-OCT-2013 15:57:37   Copyright (c) 1991, 2011, Oracle.  All rights reserved.   Starting /u01/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr: please wait...   TNSLSNR for Linux: Version 11.2.0.3.0 - Production System parameter file is /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora Log messages written to /u01/app/oracle/diag/tnslsnr/rtest/listener/alert/log.xml Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rtest.localdomain)(PORT=1521)))   Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rtest.localdomain)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias                     LISTENER Version                   TNSLSNR for Linux: Version 11.2.0.3.0 - Production Start Date                10-OCT-2013 15:57:37 Uptime                    0 days 0 hr. 0 min. 0 sec Trace Level               off Security                  ON: Local OS Authentication SNMP                      OFF Listener Parameter File   /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora Listener Log File         /u01/app/oracle/diag/tnslsnr/rtest/listener/alert/log.xml Listening Endpoints Summary...   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rtest.localdomain)(PORT=1521))) The listener supports no services The command completed successfully   提示符文法: $ lsnrctl LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 30-JUN- 2009 01:00:01 Copyright (c) 1991, 2009, Oracle. All rights reserved. Welcome to LSNRCTL, type "help" for information. LSNRCTL> start   指令行文法通常用于執行單個指令或腳本指令。如果計劃執行若幹個連續的lsnrctl指令,則使用提示符文法更高效。請注意,上面省略了listener_name參數,是以stop 指令會影響名為LISTENER的監聽程式。如果監聽程式受到密碼的保護,則必須使用提示符文法。   請注意,如果監聽程式名稱不是LISTENER,則在指令文法中必須包含 監聽程式名稱,或者使用 SET CURRENT_LISTENER指令。假設你的監聽程式名為custom_lis。以下是 使用提示符文法停止名為custom_lis的監聽程式的兩個示例: LSNRCTL> stop custom_lis Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host01)(PORT=5521))) The command completed successfully   該示例與以下示例産生的結果相同: LSNRCTL> set cur custom_lis Current Listener is custom_lis LSNRCTL> stop Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host01)(PORT=5521))) The command completed successfully 注:在上面的文法中,current_listener縮寫成了cur。   使用指令行文法可産生相同的結果: $ lsnrctl stop custom_lis LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 30-JUN- 2009 01:01:53 Copyright (c) 1991, 2009, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host01)(PORT=5521))) The command completed successfully  

  • 使用SRVCTL啟動和停止監聽程式

如果配置了Oracle Restart 來監視你的監聽程式,則你應使用SRVCTL來管理該監聽程式。 對于由Oracle Restart 管理的任何監聽程式,可以使用SRVCTL啟動、停止它并檢視其狀态。示例包括: • 使用SRVCTL中提供的指令顯示幫助:srvctl –h • 啟動預設監聽程式:srvctl start listener • 停止預設監聽程式:srvctl stop listener • 啟動名為mylistener 的監聽程式:srvctl start listener –l mylistener • 顯示預設監聽程式的狀态:srvctl status listener  

  • 監聽程式首頁

單擊Enterprise Manager 的“Database(資料庫)”首頁上的“Listener(監聽程式)”連結可通路“Listener(監聽程式)”首頁。

Oracle DB 配置Oracle Network環境
Oracle DB 配置Oracle Network環境

在此頁上,可看到: • 最近24 小時内監聽程式的狀态和可用性 • 監聽程式版本和Oracle 主目錄 • 監聽程式的第一個監聽位址 • 用于啟動監聽程式的配置檔案的位置 • 監聽程式的啟動時間和主機資訊 • Oracle Restart 狀态 要啟動監聽程式,請轉到“Database(資料庫)”首頁,單擊監聽程式名稱以打開“Listener(監聽程式)”首頁。單擊“Stop(停止)”可停止運作的監聽程式;單擊 “Start(啟動)”可啟動未運作的監聽程式。請以可啟動和停止監聽程式的作業系統使用者身份登入到主機。  

  • “Net Services Administration(網絡服務管理)”頁
Oracle DB 配置Oracle Network環境

使用“Net Services Administration(網絡服務管理)”頁可針對多個檔案系統上的Oracle 主目錄配置Oracle Net 服務。 此頁還提供管理監聽程式的公用管理功能。可以使用“Net Services Administration(網絡服務管理)”頁配置和管理以下各項: • 監聽程式:添加、删除、啟動和停止監聽程式,以及更改其跟蹤特性和事件記錄特性。此外,還可檢視監聽程式的控制狀态報表。 • 目錄命名:可以定義簡單的名稱和連接配接辨別符,并将定義的内容映射至連接配接描述符以确定網絡位置和服務辨別。将資料庫服務、Oracle Net 服務和Oracle Net 服務别名儲存到集中式目錄服務中。 • 本地命名:将Oracle Net 服務名儲存在tnsnames.ora檔案中。 • 概要檔案:配置sqlnet.ora參數。 • 檔案位置:更改Oracle Net 服務的配置檔案的位置。    

  • 建立監聽程式

要建立Oracle Net 監聽程式,請單擊“Listener(監聽程式)”屬性頁“Related Links(相關連結)”區域中的“Net Services Administration(網絡服務管理)”。然後執行以下步驟: 1. 從“Administer(管理)”下拉清單中選擇“Listeners(監聽程式)”,然後單擊“Go(執行)”。

Oracle DB 配置Oracle Network環境

2. 如果未輸入主機首選身份證明,則出現“Host Login(主機登入)”頁。輸入使用者名和密碼,然後單擊“Login(登入)”。 輸入oracle以及密碼oracle。

Oracle DB 配置Oracle Network環境

3. 單擊“Create(建立)”。  

Oracle DB 配置Oracle Network環境

4. 輸入一個監聽程式名稱。此名稱對此伺服器必須是唯一的。單擊“Add(添加)”添加一個監聽程式位址。 每個監聽程式必須至少有一個監聽程式位址。

Oracle DB 配置Oracle Network環境
  • 添加監聽程式位址

建立監聽程式工作流的下一步是建立監聽程式位址: 5. 選擇網絡協定。TCP/IP 是最常用的協定,也是預設協定。可以選擇其它協定,如Internal Process Communication(内部程序通信,IPC),此協定通常用于連接配接到本地應用程式(駐留于資料庫伺服器上),或者選擇外部代碼庫(EXTPROC) 以及帶有bSSL 的TCP/IP。 注:使用“Other Services(其他服務)”頁籤可配置EXTPROC 協定。 6. 輸入監聽程式要監視的端口。Oracle Net 的預設端口是1521。如果選擇使用1521 之外的端口,該監聽程式或執行個體還需要進行其它配置。 7. 輸入監聽程式将在其上運作的伺服器的名稱或IP 位址。

Oracle DB 配置Oracle Network環境

8. 對監聽程式而言,其它所有配置步驟都是可選項。單擊“OK(确定)”儲存位址。 唯一必不可少的配置是監聽位址和名稱。

Oracle DB 配置Oracle Network環境

9. 在“Create Listener(建立監聽程式)”頁上,複查剛建立的位址的有關資訊,然後單擊“OK(确定)”儲存更改。 10.要啟動新的監聽程式,請從“Actions(操作)”下拉清單中選擇“Start/Stop(啟動/停止)”,然後單擊“Go(執行)”。

Oracle DB 配置Oracle Network環境
Oracle DB 配置Oracle Network環境
  • 資料庫服務注冊

監聽程式必須了解執行個體名稱以及執行個體的ORACLE_HOME位置,然後才能将客戶機連接配接轉發到執行個體。監聽程式可通過下列兩種方式查找此資訊: • 動态服務注冊:Oracle8i和更高版本的執行個體會在啟動資料庫時向預設監聽程式自動進行注冊。預設監聽程式不需要其它的監聽程式配置。 • 靜态服務注冊:Oracle DB 的早期版本并不自動向監聽程式進行注冊,是以,要求監聽程式配置檔案包含一個清單,其中含有監聽程式為之提供服務的所有資料庫服務。 在較新版本中,如果存在以下情況,仍然可以選擇使用靜态服務注冊: - 監聽程式所在的端口不是預設的1521 端口,又不希望将執行個體配置為使用非預設端口進行注冊 - 應用程式要求進行靜态服務注冊 要添加靜态資料庫服務,請單擊“Edit Listener(編輯監聽程式)”頁上的“Static Database Registration(靜态資料庫注冊)”,然後單擊“Add(添加)”按鈕。輸入服務 名稱(與全局資料庫名<DB_NAME>.<DB_DOMAIN>相同)、ORACLE_HOME路徑和SID(與執行個體名相同)。單擊“OK(确定)”。要使這些更改生效,必須重新加載(使用RELOAD指令)或重新啟動監聽程式。   服務名 SERVICE_NAMES 初始化參數指定客戶機可用來連接配接到執行個體的一個或多個名稱。執行個體向監聽程式注冊其服務名。客戶機請求服務時,監聽程式确定哪些執行個體提供所請求的服務,并将客戶機路由到相應的執行個體。 可以指定多個服務名以區分同一資料庫的不同用法,如下面的示例所示: SERVICE_NAMES = sales.example.com, eurosales.example.com 還可以使用服務名來辨別兩個不同的資料庫通過複制提供的單個服務。 如果未在該參數中使用域來限定名稱,則Oracle 會使用DB_DOMAIN 參數的值來限定它們。如果未指定DB_DOMAIN,則不會向非限定的SERVICE_NAMES 值應用任何域。 處理客戶機連接配接請求時,監聽程式嘗試将該參數的值與客戶機連接配接描述符中SERVICE_NAME 參數的值進行比對。如果客戶機連接配接描述符使用SID 參數,則監聽程式 不會嘗試映射這些值。該參數的值通常來自初始化參數檔案中DB_NAME 和DB_DOMAIN 參數的組合(DB_NAME.DB_DOMAIN),但此值也可以包含客戶機用于标 識服務的任何有效名稱。  

  • 命名方法

• 本地命名:使用本地配置檔案 • 目錄命名:使用符合LDAP 的集中式目錄伺服器 • 外部命名:使用受支援的非Oracle 命名服務   命名方法 Oracle Net 支援以下幾種命名方法: • 簡便連接配接命名:使用簡便連接配接命名方法,客戶機可使用如下所示的 TCP/IP 連接配接字元 串(由主機名、可選端口和服務名組成)連接配接到Oracle DB 伺服器: CONNECT username/[email protected][:port][/service_name] 簡便連接配接命名方法不需要進行配置。 • 本地命名:本地命名方法将連接配接描述符(由網絡服務名辨別)存儲在客戶機上的名為tnsnames.ora的本地配置檔案中。 • 目錄命名:為了通路資料庫服務,目錄命名方法将連接配接辨別符存儲在符合輕型目錄通路協定(LDAP) 的集中式目錄伺服器中。 • 外部命名:外部命名方法将網絡服務名存儲在受支援的非Oracle 命名服務中。 受支援的第三方服務包括: - 網絡資訊服務(NIS) 外部命名 - 分布式計算環境(DCE) 單元目錄服務(CDS)  

  • 簡便連接配接

• 預設啟用此方式 • 不需要進行客戶機配置 • 僅支援TCP/IP(無SSL) • 不支援進階連接配接選項,如: – 連接配接時故障轉移 – 源路由 – 負載平衡 SQL> CONNECT hr/[email protected]:1521/dba11g  

Oracle DB 配置Oracle Network環境

  使用簡便連接配接時,你需要在連接配接字元串中提供Oracle Net 連接配接所需的所有資訊。簡便連接配接 的連接配接字元串采用以下形式: <username>/<password>@<hostname>:<listener port>/<service name> 監聽程式端口和服務名為可選項。如果未提供監聽程式端口,Oracle Net 假定使用的是預設端口1521。如果未提供服務名,Oracle Net 假定連接配接字元串中提供的資料庫服務名與主機名是相同的。 假定監聽程式使用TCP 監聽端口1521,并使用SERVICE_NAMES=db和DB_DOMAIN=us.oracle.com執行個體參數,則顯示的連接配接字元串可簡化為: SQL> connect hr/[email protected] 注:SERVICE_NAMES初始化參數可接受多個逗号分隔的值。這些值中隻能有一個db,此方案才能起作用。    

  • 本地命名

• 需要客戶機名稱解析檔案 • 支援所有的Oracle Net 協定 • 支援進階連接配接選項,如: – 連接配接時故障轉移 – 源路由 – 負載平衡 SQL> CONNECT hr/[email protected]

Oracle DB 配置Oracle Network環境

  使用本地命名時,使用者可為Oracle Net 服務提供别名。Oracle Net 會根據本地已知服務的清單來檢查别名,如果發現比對名稱,會将别名轉換為主機、協定、端口和服務名。 本地命名的一個優勢是,資料庫使用者僅需要記住一個短别名,而不必記住簡便連接配接所需的長連接配接字元串。 本地已知服務清單存儲在以下文本配置檔案中: <oracle_home>/network/admin/tnsnames.ora 這是tnsnames.ora檔案的預設位置,但是,也可以使用TNS_ADMIN環境變量将該檔案放到其它位置。 如果組織的Oracle Net 服務配置不經常更改,則适合使用本地命名。 本地命名的tnsnames.ora如下: TEST0924 =   (DESCRIPTION =     (ADDRESS = (PROTOCOL = TCP)(HOST = rtest.localdomain)(PORT = 1521))     (CONNECT_DATA =       (SERVER = DEDICATED)       (SERVICE_NAME = test0924)     )   )  

  • 目錄命名

• 需要加載了Oracle Net 名稱解析資訊的LDAP: – Oracle Internet Directory – Microsoft Active Directory Services • 支援所有的Oracle Net 協定 • 支援進階連接配接選項  

Oracle DB 配置Oracle Network環境

使用目錄命名時,使用者可為Oracle Net 服務提供别名。Oracle Net 會根據外部已知服務的清單來檢查别名,如果發現比對名稱,會将别名轉換為主機、協定、端口和服務名。與本地命名一樣,資料庫使用者隻需要記住短别名。 目錄命名的一個優勢是,一旦将新的服務名添加到LDAP 目錄,此服務名便可供使用者在連接配接時使用。使用本地命名時,必須先由資料庫管理者(DBA) 分發更新的tnsnames.ora檔案(這些檔案包含已更改的服務名資訊),使用者才能連接配接到新服務或修改後的服務。如果組織的Oracle Net 服務配置經常更改,則适合使用目錄命名。  

  • 外部命名方法

• 使用受支援的非Oracle 命名服務 • 包括: – 網絡資訊服務(NIS) 外部命名 – 分布式計算環境(DCE) 單元目錄服務(CDS)

Oracle DB 配置Oracle Network環境

外部命名方法 外部命名方法将Oracle Net 服務名存儲在受支援的非Oracle 命名服務中。受支援的第三方服務包括: • 網絡資訊服務(NIS) 外部命名 • 分布式計算環境(DCE) 單元目錄服務(CDS) 從概念上講,外部命名類似于目錄命名。  

  • 配置服務别名

請通過選擇“Directory Naming(目錄命名)”而不是“Local Naming(本地命名)”,可配置目錄命名的服務别名。 注:如果尚未配置目錄命名,則無法選擇“Directory Naming(目錄命名)”選項。   1、要建立本地Oracle Net 服務别名,從“Net Services Administration(網絡服務管理)”頁上的“Administer(管理)”下拉清單中選擇“Local Naming(本地命名)”,然後單擊“Go(執行)”。

Oracle DB 配置Oracle Network環境

2、然後單擊“Create(建立)”。

Oracle DB 配置Oracle Network環境

3、在“Create Net Service Name(建立網絡服務名)”頁的“Net Service Name(網絡服務名)”字段中輸入一個唯一名稱。(此名稱是使用者輸入的要使用的别名)。輸入要連接配接到的資料庫的服務名或系統辨別符(SID)。

Oracle DB 配置Oracle Network環境

4、然後單擊“Add(添加)”按鈕,輸入服務名的位址。

Oracle DB 配置Oracle Network環境

5、對于位址,輸入監聽程式連接配接所需服務要使用的協定、端口和主機。

Oracle DB 配置Oracle Network環境
Oracle DB 配置Oracle Network環境

/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora TEST1011 =   (DESCRIPTION =     (ADDRESS_LIST =       (ADDRESS = (PROTOCOL = TCP)(HOST = 10.27.1.208)(PORT = 1522))       (LOAD_BALANCE = yes)     )     (CONNECT_DATA =       (SERVICE_NAME = test0924)     )   )

  • 進階連接配接選項

對于本地命名和目錄命名,Oracle Net 支援下列進階連接配接選項: • 連接配接時故障轉移 • 負載平衡 • 源路由   進階連接配接選項:可以通過多個監聽程式協定位址通路某個資料庫服務時,可以指定使用這些位址的順序。 可以随機選擇這些位址,也可以依次嘗試這些位址。如果有多個監聽程式可用(如Oracle Real Application Cluster (RAC) 配置),Oracle Net 可以利用監聽程式故障轉移和負載平衡功能以及Oracle Connection Manager 源路由功能。 如果啟用了“連接配接時故障轉移”,則一個别名下将列出兩個或多個監聽程式位址。如果第一個位址不可用,則嘗試使用第二個位址。Oracle Net 會始終按列出的順序試用位址,直至遇到起作用的監聽程式,或者試用的所有位址均失敗。 透明應用程式故障轉移(TAF) 是一項客戶機功能,它使客戶機可以在資料庫執行個體發生故障時重新連接配接到正常運作的資料庫。伺服器使用通知在客戶機上觸發TAF 回調。 如果啟用了“負載平衡”,Oracle Net 會從位址清單中随機選擇一個位址。運作時連接配接負載平衡功能可以在多個分派程式之間平衡活動的連接配接數,進而改進連接配接性能。在RAC 環境中,連接配接池負載平衡還能在多個執行個體之間平衡活動的連接配接數。 “源路由”與Oracle Connection Manager 一起使用,後者充當Oracle Net 通信的代理伺服器,使Oracle Net 通信可以安全地通過防火牆進行路由。Oracle Net 将位址視為中繼清單,首先連接配接到第一個位址,然後請求從第一個位址傳遞到第二個位址,直至到達目标位置。 它與故障轉移或負載平衡的不同之處在于,每次進行連接配接時都會用到所有的位址。

Oracle DB 配置Oracle Network環境
  • 測試Oracle Net 連接配接

tnsping實用程式測試Oracle Net 服務别名: • 確定客戶機與Oracle Net 監聽程式之間的連接配接 • 不驗證所請求的服務是否可用 • 支援簡便連接配接名稱解析: tnsping host01.example.com:1521/orcl • 支援本地命名和目錄命名: tnsping orcl   測試Oracle Net 連接配接 Oracle Net 中的tnsping相當于TCP/IP 的ping 實用程式。它提供了快速測試,可驗證到目标位置的網絡路徑是否正常。例如,在指令行視窗中輸入tnsping orcl。 該實用程式可驗證主機名、端口以及協定是否可到達監聽程式,它并不實際檢查監聽程式是否處理服務名。tnsping實用程式還會顯示配置檔案的位置。當系統中具有多個 ORACLE_HOME位置時,這很有用。  

  • 使用者會話:專用伺服器程序
Oracle DB 配置Oracle Network環境

使用專用伺服器程序時,伺服器程序與使用者程序之間的比例是一比一。每個伺服器程序都會使用系統資源,包括CPU 周期和記憶體。 在負荷很高的系統中,由于專用伺服器程序占用了記憶體和CPU 資源,其成本可能難以承受,還可能對系統的可伸縮性産生負面影響。如果專用伺服器體系結構的資源需求對系統産生了負面影響,則你有下列兩種選擇: • 通過增加更多的記憶體和額外的CPU 容量來增加系統資源 • 使用Oracle 共享伺服器程序體系結構  

  • 使用者會話:共享伺服器程序
Oracle DB 配置Oracle Network環境

每個參與共享伺服器程序體系結構的服務均至少具有一個(通常為多個)分派程式程序。連接配接請求到達時,監聽程式将不衍生專用伺服器程序,而是維護一個可用于每個服務名的分派程式以及每個分派程式的連接配接負載(并發連接配接數量)清單。 連接配接請求将路由至負載最小的分派程式,該程式将為給定服務名提供服務。使用者在會話持續時間内均一直連接配接至相同的分派程式。 與專用伺服器程序不同,單個分派程式可以管理數以百計的使用者會話。實際上分派程式并不處理使用者請求的工作,而是将使用者請求傳遞到位于SGA 共享池部分 的公用隊列。 共享伺服器程序接管專用伺服器程序的大部分工作,将請求從隊列中拉出并進行處理,直至完成該請求。 由于單個使用者會話的請求可能由多個共享伺服器程序來處理,是以通常存儲在PGA 中的大部分記憶體結構必須位于共享記憶體位置(預設情況下在共享池中)。但是,如果配置了大型池,或者為自動記憶體管理設定了SGA_TARGET,則這些記憶體結構會存儲在SGA 的大型池部分。    

  • SGA 和PGA

Oracle 共享伺服器:在SGA 中存放使用者會話資料。 調整SGA 大小時,務必将共享伺服器記憶體要求考慮在内。   使用專用伺服器或共享伺服器時,SGA 和PGA 的内容不同: • 所有SQL 語句的文本和文法分析形式均存儲在SGA 中。 • 遊标狀态包含SQL 語句的運作時記憶體值,例如檢索的行等。 • 使用者會話資料包括安全性和資源用量資訊。 • 堆棧空間包含程序的局部變量。   技術注釋 SGA 和PGA 中的更改對使用者而言是透明的;但是,如果要支援多個使用者,則需要增大LARGE_POOL_SIZE初始化參數。每個共享伺服器程序均必須通路所有會話的資料空間,以便任何伺服器均可以處理來自任何會話的請求。在SGA 中為每個會話配置設定資料空間。 可通過設定 PRIVATE_SGA資源限制參數來限制每個會話可以配置設定的空間數量,該參數位于使用者概要檔案“General(一般資訊)”頁的“Database Services(資料庫服務)”區域中。  

  • 共享伺服器:連接配接共享
Oracle DB 配置Oracle Network環境

使用連接配接共享功能,資料庫伺服器可以使空閑會話逾時,進而使用其連接配接為活動會話提供服務。空閑會話邏輯上仍處于打開狀态,當該會話下次送出請求時會自動重建立立實體連接配接。是以,Web 應用程式可使用現有硬體來滿足大量并發使用者的需求。連接配接共享是通過共享伺服器進行配置的。 上圖中,Oracle DB 伺服器配置了255 個連接配接。某個客戶機的空閑期已超出了指定時間。通過連接配接共享,此連接配接可用于第256 個傳入的客戶機連接配接。如果空閑客戶機還有其它任務要執行,通過另一個客戶機的空閑連接配接可為該客戶機重建立立連接配接。  

  • 不能使用共享伺服器的情況

不能使用共享伺服器執行某些類型的資料庫工作: • 資料庫管理 • 備份和恢複操作 • 批處理和批量加載操作 • 資料倉庫操作   不能使用共享伺服器的情況 Oracle 共享伺服器體系結構是一個有效的程序和記憶體使用模型,但是并不适用于所有的連接配接。由于存在公共請求隊列,并且大量使用者會共享分派程式響應隊列,是以當存在必須處理大批資料的操作時共享伺服器的性能并不是很好,如處理倉庫查詢或執行批處理時。使用Oracle Recovery Manager 進行備份和恢複會話時,也會處理大量的資料集,是以也必須使用專用連接配接。 許多管理任務不能(無法)使用共享伺服器連接配接執行,其中包括啟動和關閉執行個體、建立表空間和資料檔案、維護索引和表、分析統計資訊,以及通常由DBA 執行的其它多個任務。所有DBA 會話都必須選擇專用伺服器。  

  • 配置資料庫之間的通信

• 在站點之間發送資料或消息時需要在雙方站點上進行網絡配置。 • 必須配置以下項: – 網絡連接配接(例如TNSNAMES.ora) – 資料庫連結 CREATE DATABASE LINK <remote_global_name> CONNECT TO <user> IDENTIFIED BY <pwd> USING '<connect_string_for_remote_db>'; 用于建立固定使用者資料庫連結的文法。   配置資料庫之間的通信 資料庫連結是一個資料庫中的方案對象,通過該對象可以通路另一個資料庫中的對象。另一個資料庫不必是Oracle DB 系統。但是,要通路非Oracle 系統,必須使用Oracle 異構服務。 要建立專用資料庫連結,必須具有 CREATE DATABASE LINK系統權限。要建立公用資料庫連結,必須具有 CREATE PUBLIC DATABASE LINK系統權限。還必須具有對遠端Oracle DB 的CREATE SESSION系統權限。 應用程式使用資料庫連結通路遠端資料庫時,Oracle DB 會代表本地請求在遠端資料庫中建立一個資料庫會話。建立資料庫連結時使用的CONNECT TO子句确定了在遠端資料庫上建立連接配接的方式。可以建立固定使用者、目前使用者和已連接配接使用者的資料庫連結。目前使用者連結隻能通過Oracle 進階安全選件使用。建立資料庫連結之後,可以使用它來引用另一個資料庫上的表和視圖。 在SQL 語句中,可以通過将@dblink追加到表名或視圖名來引用另一個資料庫上的表或視圖。可以查詢另一個資料庫上的表或視圖,或對該表使用任意INSERT、UPDATE、DELETE或LOCK TABLE語句。  

  • 連接配接到其它資料庫

tnsnames.ora REMOTE_ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = host02.example.com) (PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl.example.com) ) ) 顯示了在建立資料庫連結之前需要的tnsnames.ora條目。 SQL*Plus CONNECT hr/[email protected]; CREATE DATABASE LINK remote CONNECT TO HR IDENTIFIED BY HR USING 'REMOTE_ORCL'; SELECT * FROM [email protected]   顯示了一個名為REMOTE的固定使用者資料庫連結,它使用連接配接字元串REMOTE_ORCL連接配接到使用者HR。 建立資料庫連結之後,可以使用它來引用另一個資料庫上的表和視圖。 視圖的說明如下所示: SQL> DESC DBA_DB_LINKS Name Null? Type -------------------- -------- ---------------------------- OWNER     NOT NULL          VARCHAR2(30) DB_LINK     NOT NULL         VARCHAR2(128) USERNAME                         VARCHAR2(30) HOST                                   VARCHAR2(2000) CREATED     NOT NULL         DATE SQL> select owner, db_link, username from dba_db_links; OWNER     DB_LINK             USERNAME ----------- ------------------- --------- HR     REMOTE.EXAMPLE.COM     HR