從連線到資料(一)
轉眼到年關。但凡是年關,總要總結一下過去,暢想一下未來。
總的來說,過去還是修行不夠,和大人們的差距很大。未來就是繼續努力!
這次說一說我們從連線Oracle到斷開的整個過程吧,也作為一個總結。其中肯定有環節是不明確或者有認識誤區,希望不吝指教。
連線資料庫到執行操作,直至最後斷開,共分為下面幾個階段。
1、 建立連線,發起會話
這個環節的主要過程是實現客戶端應用程式到資料庫例項之間的會話。其中主要涉及到Oracle監聽器和例項元件。
客戶端程式透過sqlplus或者plsql developer等工具,向資料庫伺服器提出連線請求。連線時,大部分情況是透過本地NET命名服務指定一個名稱來進行連線。
我們在netca中建立的“本地NET命名服務”實際上就是一個配置檔案專案。檢視客戶端上的tnsname.ora檔案,可以看到所配置的所有的本地NET命名服務資訊。下面是一段連線名配置段。
//tnsname.ora檔案配置片段
WILSON =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.88)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = wilson)
)
)
在配置片段中,說明定義了一個名字為wilson的本地命名,連線的資料庫伺服器在192.168.0.88的IP地址上。連線資料庫例項的服務名為wilson,監聽器所在的埠是1521。
我們連線的時候,使用conn命令。
SQL> conn scott/tiger@wilson
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
Connected as scott
分隔符@後,使用的就是本地命名服務。本質上說,這個服務名就是連線伺服器地址、服務名和監聽埠的代名詞。
在cmd視窗中,使用tnsping命令,是可以檢視本地命名服務對應的連線資訊的。
C:\Documents and Settings\Administrator>tnsping wilson
TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 30-12月-
2010 21:43:36
Copyright (c) 1997, 2005, Oracle. All rights reserved.
已使用的引數檔案:
D:\oracle\network\admin\sqlnet.ora //定義了oracle net service元件的一些引數,如安全等
已使用 TNSNAMES 介面卡來解析別名
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
(HOST = 192.168.0.88)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = wilson)))
OK (0 毫秒)
有時候,手工進行tnsname.ora檔案修改的時候,常常出現錯誤。實際中,可以使用tnsping命令檢視連線的資訊,判斷是否配置正確。
連線命令嘗試訪問資料庫伺服器的指定埠。這時候,要注意它嘗試連線的是資料庫伺服器的監聽程式程式。監聽程式作為一個獨立的程式(Linux/Unix和Windows),在監聽伺服器主機的特定埠(預設為1521)等待客戶端的請求。
監聽程式是客戶端與資料庫例項連線的橋樑紐帶。監聽程式一方面在等待客戶端的連線請求,另一方面接受資料庫例項的連線資訊。如果監聽器使用動態註冊技術,是可以週期性的獲取到PMON後臺程式提交的例項註冊資訊。例項註冊資訊包括例項的名稱和服務名。在這個過程中,監聽器也可以及時瞭解例項活動情況。下面是一段監聽器執行情況:
LSNRCTL> status
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle11g)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 30-DEC-2010 14:09:52
Uptime 0 days 2 hr. 0 min. 50 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/oracle/network/admin/listener.ora
Listener Log File /u01/diag/tnslsnr/oracle11g/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle11g)(PORT=1521)))
Services Summary...
Service "wilson" has 1 instance(s).
Instance "wilson", status READY, has 1 handler(s) for this service...
Service "wilsonXDB" has 1 instance(s).
Instance "wilson", status READY, has 1 handler(s) for this service...
The command completed successfully
當監聽器接受到客戶端的請求時,要進行請求匹配。將已有的註冊資訊與請求進行對比,如果有相同的註冊內容,就認為連線允許,並且轉接到資料庫例項進行處理。
要注意,這個步驟中,不進行任何的身份驗證。
監聽器向資料庫例項申請獲取到一個Server Process進行會話連線。Oracle例項是若干後臺程式和共享記憶體構成。客戶端是不允許直接和例項記憶體空間進行互動,都需要透過Server Process(也成為影子程式)。監聽器需要為客戶端尋找一個Server Process進行聯絡。
這時不同的連線模式下,Oracle的行為就有所差別了。如果是專用連線模式,也就是一個客戶端對應一個Server Process,客戶端連線斷開,Server Process釋放,監聽器需要向OS申請fork一個全新的Server Process。
如果是共享連線模式,資料庫伺服器上就還有一個名為Dispatcher的程式協同工作。監聽程相當於向Dispatcher提出要求,獲取一個Server Process。Dispatcher依據共享Server Process的原則,找到一個可以共享的Process返回給監聽器程式。
監聽器程式獲取到Server Process的資訊(程式號、通訊埠等)之後,將其返回給客戶端。客戶端重新連線伺服器主機,與Server Process單獨通訊連線。注意,這時兩者通訊的埠,不一定是1521。
直到這個階段,客戶端才將登陸使用者名稱和密碼資訊透過Server Process進行驗證。驗證透過後,兩者開始建立聯絡。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17203031/viewspace-682936/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料庫連線分析(1)-從JDBC到MyBatis資料庫JDBCMyBatis
- 從一個資料庫連線數計算公式談起資料庫公式
- DBeaver如何連線一個資料庫資料庫
- 如何從 Windows 上用 SSH 連線到 LinuxWindowsLinux
- 如何從 InfluxDB/OpenTSDB 無縫連線到 TDengineUX
- 【YashanDB資料庫】PHP無法透過ODBC連線到資料庫資料庫PHP
- 用Navicat連線資料庫-資料庫連線(MySQL演示)資料庫MySql
- 連線資料庫資料庫
- 資料庫連線 系列一:laravel框架如何連線兩個資料庫(不同伺服器)資料庫Laravel框架伺服器
- 從原始碼分析DBCP資料庫連線池的原理原始碼資料庫
- python 連線 mongo 資料庫連線超時PythonGo資料庫
- 資料庫連線池-Druid資料庫連線池原始碼解析資料庫UI原始碼
- 2018大資料學習路線從入門到精通大資料
- airtest資料線連線手機AI
- mysqli連線資料庫MySql資料庫
- Mongodb資料庫連線MongoDB資料庫
- Android 連線資料庫Android資料庫
- java連線資料庫Java資料庫
- FTP資料埠連線FTP
- 連線資料庫-mysql資料庫MySql
- jmeter連線資料庫JMeter資料庫
- Mybatis連線資料庫MyBatis資料庫
- JSP連線資料庫JS資料庫
- JDBC連線資料庫JDBC資料庫
- Flask連線資料庫Flask資料庫
- dbForge Studio for SQL Server入門教程:如何連線到資料庫SQLServer資料庫
- WebSocket:從建立連線到關閉的完整流程Web
- 淺析《死亡擱淺》的“連線”——從玩法到核心
- 《四 資料庫連線池原始碼》手寫資料庫連線池資料庫原始碼
- 連線數從異常到 300 到 5(RDS MySQL 的一個大坑•後記)MySql
- 資料治理:從一把手工程到資料文化!
- iis網站怎麼連線資料庫連線網站資料庫
- 2018最新大資料學習路線從入門到精通大資料
- 《精通資料科學:從線性迴歸到深度學習》資料科學深度學習
- python資料插入連線MySQL資料庫PythonMySql資料庫
- 資料探勘從入門到放棄(一):線性迴歸和邏輯迴歸邏輯迴歸
- .NET雲原生應用實踐(三):連線到PostgreSQL資料庫SQL資料庫
- java 資料庫程式設計(一)JDBC連線Sql Server資料庫Java資料庫程式設計JDBCSQLServer
- 從kali安裝到ssh連線kali虛擬機器虛擬機