- Oracle DBA基礎教程
- 林樹澤
- 1522字
- 2021-03-26 13:21:40
3.3 客戶端配置
客戶端要連接到數據庫服務器必須要知道一些信息,如數據庫服務器的IP地址、使用通信協議、連接端口號,以及對應的數據庫服務名,這些需要在數據庫客戶端設置,這些信息存儲在tnsnames.ora文件中,在該文件中設置要連接到的每一個數據庫服務器的實體信息。
3.3.1 本地命名
本地命名使用的配置文件是tnsnames.ora文件,該文件位于客戶端。我們可以使用netca來配置這個文件。本地命名是建立Oracle數據庫連接最便捷的方法,在文件tnsnames.ora中存儲了數據庫服務名和鏈接描述符,該文件默認位于$Oracle_HOME/network/admin目錄中。
在使用SQL*PLUS或其他方法初始化一個客戶端連接時,Oracle Net組件會提供數據庫的詳細信息,這些信息就存儲在tnsnames.ora文件中,這些信息包括數據庫服務器的網絡地址、通信協議以及連接端口。通過這些信息與監聽程序建立通信,而后監聽程序會將該連接交給SERVICE_NAME指定的數據庫,一旦數據庫服務器確定了用戶名和密碼匹配,則建立客戶端的連接。此時的tnsnames.ora就是一個服務名解析的作用,將一個服務名解析為一個網絡連接實體,確定要連接的具體的數據庫服務。
下面是tnsnames.ora文件的內容,其中我們添加了數據庫PROD的服務名信息。如果客戶端需要連接到更多的數據庫,則需要添加更多的映射信息。
例子3-19 tnsnames.ora文件的內容
MYPROD = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ocm1.oracle)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PROD) ) )
ADDRESS是監聽器的實體信息,CONNECT_DATA說明使用的服務器體系架構和對應的數據庫服務名。這樣客戶端軟件就可以根據這些信息建立到監聽器的連接,而監聽器根據SERVICE_NAME找到注冊的數據庫,將連接交給數據庫服務器,一旦數據庫服務器通過用戶名和密碼驗證,則建立客戶端和服務器之間的連接。
上例列出了2個數據庫,二者具有不同的特性,數據庫MYPROD位于主機ocm1.oracle上,數據庫服務名為PROD,而數據庫EMREP位于主機ocm2.oracle上,數據庫服務名為EMREP。當連接到這兩個數據庫時,客戶端用這個文件來解析,完成到數據庫服務器的連接。
說明
tnsnames.ora文件必須位于客戶端上,如果有多個客戶端則需要復制過去,保證連接成功,且數據庫服務器端的監聽程序必須運行,數據庫服務器才能保持運行。
下面我們通過如下語法測試連接。
SQL>connect username/password@net_servive_name
例子3-20 打開SQL*Plus對數據庫進行操作
[Oracle@ocm1 admin]$ sqlplus sys/Oracle@myprod as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on Mon Oct 24 11:31:10 2011 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, Oracle Label Security, OLAP and Data Mining options SQL>
3.3.2 簡單命名
簡單命名網絡連接是最簡潔的連接方法,在配置方面要求很少。此時客戶端用戶不需要配置如TCP/IP環境下的tnsnames.ora文件就可以連接到Oracle數據庫服務器。客戶機只需要根據主機名(或者IP地址)、端口號以及數據庫的服務名即可連接數據庫服務器,這樣就省去了系統中對數據庫配置TCP/IP連接實體。
但是使用簡單連接要求在客戶機和數據庫服務器上同時運行TCP/IP協議棧,簡單連接在Oracle9i中引入,是數據庫連接的有益補充。下面是簡單連接的語法。
$CONNECT username/password@[//]host[:port][/service_name]
下面是簡單連接中的幾個注意事項。
● //(雙斜杠)是可選的。
● Host:是強制參數,可以是主機名也可以是IP地址。
● Port:是端口號,該參數是可選的,如果是默認端口可以不寫。
● Service_name:該參數指定數據庫服務器的服務名,默認是主機名,是可選參數。如果主機名和數據庫服務器名相同,則這個參數可以省略;如果不同,則必須提供數據庫服務器的服務名。
下面是一個連接實例。
例子3-21 簡單連接實例
[Oracle@ocm1 admin]$ sqlplus system/Oracle@ ocm1.oracle:1521/prod SQL*Plus: Release 10.2.0.1.0 - Production on Tue Oct 25 22:29:48 2011 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, Oracle Label Security, OLAP and Data Mining options SQL>
數據庫服務器所在的IP地址為192.168.1.10,使用默認端口1521作為監聽端口,數據庫服務器的服務名為PROD。
既然是默認端口號,此時可以不寫這個參數,如下例所示。
例子3-22 默認端口號
[Oracle@ocm1 admin]$ sqlplus system/Oracle@// ocm1.oracle /prod SQL*Plus: Release 10.2.0.1.0 - Production on Tue Oct 25 22:34:26 2011 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, Oracle Label Security, OLAP and Data Mining options SQL>
其實,使用簡單連接方法與使用本地命名方法是相同的,在簡單連接方法中提供的連接參數,在本地命名連接方法中的tnsnames.ora文件中都有,如下例所示。
例子3-23 本地命名連接方法中的tnsnames.ora文件
MYPROD = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ocm1.oracle)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PROD) ) )
- Building Modern Web Applications Using Angular
- Apache Spark 2.x Machine Learning Cookbook
- R語言游戲數據分析與挖掘
- 64位匯編語言的編程藝術
- Backbone.js Blueprints
- 用Flutter極速構建原生應用
- JavaScript動態網頁開發詳解
- C++從入門到精通(第5版)
- Machine Learning in Java
- Serverless Web Applications with React and Firebase
- UML2面向對象分析與設計(第2版)
- Learning Nessus for Penetration Testing
- Delphi開發典型模塊大全(修訂版)
- Microsoft Exchange Server 2016 PowerShell Cookbook(Fourth Edition)
- Java設計模式深入研究