什麼是oracle監聽
oracle監聽是個伺服器端進程,負責監聽客戶端發來的請求,能夠給客戶端電腦和資料庫電腦建立資料的連結;oracle監聽收到request後派生出server process提供服務,會根據資料庫配置提供專有和共享兩種模式。
本教學操作環境:Windows10系統、Oracle 11g版、Dell G3電腦。
什麼是oracle監聽
oracle監聽,是個伺服器端進程,負責監聽客戶端發來的請求
監聽器可以不必駐留在資料庫主機上,即可以把實例註冊到遠端主機上的監聽
監聽是oracle自帶的軟體或是說元件
本地連線可以不用監聽,但是遠端連線必須
oracle監聽收到user process發出的request後,派生出server process來提供服務,server程序根據資料庫的配置有2種模式:專有模式和共享模式
專有模式:每個客戶端進程都有單獨的server程序來建立session提供服務,絕大部分超過99%的資料庫都是這種模式
共享模式:有個分配器叫dispatch,監聽把請求放入請求隊列中, dispatch會不停的查詢請求佇列,當發現有請求時候就把請求轉給server進程,再透過server程序提供服務,處理完後回傳給回應佇列,dispatch再把回應佇列中的轉送給使用者程序。類似與餐廳吃飯,server進程相當於廚師,dispatch相當於服務員,服務員接受請求並轉發給相應的空閒廚師提供服務,廚師做好的菜放在哪兒,服務員再端給客戶;這種模式用的不多
dbca建庫後一般會有預設監聽,不用再配置,監聽的服務埠預設1521
一般的庫一個監聽就夠了,但是並發量太大的話可能需要設定多個監聽,非預設監聽的連接埠號碼大於1024即可,不同監聽之間服務名稱和連接埠號碼不能一樣
監聽如何區別不同的函式庫呢,所以需要把實例進行服務註冊,註冊到在listen中,
註冊就是將主機上跑的實例加入到listen裡,讓listen知道主機上有哪些實例
設定方法
##動態註冊
服務註冊有2種,一種是動態註冊,是透過pmon進程主動的自動的把實例註冊到listen中監聽和實例的啟動順序,當監聽先啟動,沒問題,如果監聽後啟動,那麼可以手工alter system register註冊下,或者不用管,pmon會隔一段時間就去註冊下一般默認監聽是動態註冊不需要listener.ora檔案服務狀態中有status READY(庫在mount或open狀態)字樣pmon給監聽提供實例名稱、服務名稱、服務處理程序的型別與位址註冊的服務名叫db_name.db_domain,db_nameXDB.db_domain如果要pmon註冊到非預設監聽,就要設定local_listener參數了
[oracle@study admin]$ sql SQL*Plus: Release 11.2.0.1.0 Production on Thu Sep 19 17:07:41 2019 Copyright (c) 1982, 2009, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options 17:07:42 SYS@study> show parameter local_list NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ local_listener string 17:08:19 SYS@study> alter system set local_listener='LISTENER2'; System altered. Elapsed: 00:00:00.04 17:09:03 SYS@study> alter system register; System altered. Elapsed: 00:00:00.00 17:09:21 SYS@study> Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options [oracle@study admin]$ lsnrctl status listener2 LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 19-SEP-2019 17:10:22 Copyright (c) 1991, 2009, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=study.localdomain)(PORT=1522))) STATUS of the LISTENER ------------------------ Alias listener2 Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production Start Date 19-SEP-2019 16:38:16 Uptime 0 days 0 hr. 32 min. 6 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/study/listener2/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=study.localdomain)(PORT=1522))) Services Summary... Service "study" has 1 instance(s). Instance "study", status READY, has 1 handler(s) for this service... Service "studyXDB" has 1 instance(s). Instance "study", status READY, has 1 handler(s) for this service... The command completed successfully [oracle@study admin]$
LISTENER2 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = study.localdomain)(PORT = 1522)) (ADDRESS = (PROTOCOL = TCP)(HOST = study.localdomain)(PORT = 1521)) )
.ora在动态监听中不是必须的,只是为了配置个本地的字符串方便local_listener的配置命令而已,直接配置如下形式也ok
alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=study.localdomain)(PORT=1521))'; 等同于alter system set local_listener='';
配置注册到多个监听,可以如下
alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=study.localdomain)(PORT=1521))','(ADDRESS=(PROTOCOL=TCP)(HOST=study.localdomain)(PORT=1522))';
或者先在tnsnames.ora中配置多个地址的字符串
再设置alter systemset local_listener='LISTENER2';
在共享服务器模式下,可以配置listener的一个参数叫做dispatchers,把这个分派器注册到一个非默认监听
ALTER SYSTEM SET DISPATCHERS=”(PROTOCOL=tcp)(LISTENER=lsnr2)”;
select service_id,name from vactiveservices可以查出,前面2个服务是注册到监听的,后面2个是Oracle有两个内部的服务,SYSBACKGROUND是后台进程使用的,SYS$USERS提供给没有指定服务的用户会话使用
service_names是服务名,如果为空,会把db_name.db_domain 注册到监听
推荐教程:《Oracle视频教程》
以上是什麼是oracle監聽的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

要查詢 Oracle 表空間大小,請遵循以下步驟:確定表空間名稱,方法是運行查詢:SELECT tablespace_name FROM dba_tablespaces;查詢表空間大小,方法是運行查詢:SELECT sum(bytes) AS total_size, sum(bytes_free) AS available_space, sum(bytes) - sum(bytes_free) AS used_space FROM dba_data_files WHERE tablespace_

數據導入方法:1. 使用 SQLLoader 實用程序:準備數據文件、創建控製文件、運行 SQLLoader;2. 使用 IMP/EXP 工具:導出數據、導入數據。提示:1. 大數據集推薦 SQL*Loader;2. 目標表應存在,列定義匹配;3. 導入後需驗證數據完整性。

Oracle 安裝失敗的卸載方法:關閉 Oracle 服務,刪除 Oracle 程序文件和註冊表項,卸載 Oracle 環境變量,重新啟動計算機。若卸載失敗,可使用 Oracle 通用卸載工具手動卸載。

創建 Oracle 表涉及以下步驟:使用 CREATE TABLE 語法指定表名、列名、數據類型、約束和默認值。表名應簡潔、描述性,且不超過 30 個字符。列名應描述性,數據類型指定列中存儲的數據類型。 NOT NULL 約束確保列中不允許使用空值,DEFAULT 子句可指定列的默認值。 PRIMARY KEY 約束標識表的唯一記錄。 FOREIGN KEY 約束指定表中的列引用另一個表中的主鍵。請參見示例表 students 的創建,其中包含主鍵、唯一約束和默認值。

在 Oracle 中查看實例名的方法有三種:命令行中使用 "sqlplus" 和 "select instance_name from v$instance;" 命令。在 SQL*Plus 中使用 "show instance_name;" 命令。通過操作系統的任務管理器、Oracle Enterprise Manager 或檢查環境變量 (Linux 上的 ORACLE_SID)。

Oracle 提供多種去重查詢方法:DISTINCT 關鍵字返回每列的唯一值。 GROUP BY 子句對結果分組並返回每個分組的非重複值。 UNIQUE 關鍵字用於創建僅包含唯一行的索引,查詢該索引將自動去重。 ROW_NUMBER() 函數分配唯一數字並過濾出僅包含第 1 行的結果。 MIN() 或 MAX() 函數可返回數字列的非重複值。 INTERSECT 運算符返回兩個結果集的公共值(無重複項)。

Oracle 視圖加密允許您加密視圖中的數據,從而增強敏感信息安全性。步驟包括:1) 創建主加密密鑰 (MEk);2) 創建加密視圖,指定要加密的視圖和 MEk;3) 授權用戶訪問加密視圖。加密視圖工作原理:當用戶查詢加密視圖時,Oracle 使用 MEk 解密數據,確保只有授權用戶可以訪問可讀數據。

在 Oracle 中創建用戶需遵循以下步驟:使用 CREATE USER 語句創建新用戶。使用 GRANT 語句授予必要權限。可選:使用 RESOURCE 語句設置配額。配置其他選項,如默認角色和臨時表空間。
