溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

數(shù)據(jù)庫(kù)的共享模式與專有模式是什么

發(fā)布時(shí)間:2021-11-08 15:02:02 來源:億速云 閱讀:254 作者:iii 欄目:關(guān)系型數(shù)據(jù)庫(kù)

這篇文章主要介紹“數(shù)據(jù)庫(kù)的共享模式與專有模式是什么”,在日常操作中,相信很多人在數(shù)據(jù)庫(kù)的共享模式與專有模式是什么問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”數(shù)據(jù)庫(kù)的共享模式與專有模式是什么”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

一、簡(jiǎn)介

概念

  • 專有連接:用一個(gè)服務(wù)器進(jìn)程響應(yīng)一個(gè)客戶端請(qǐng)求

  • 共享連接:在共享服務(wù)器模式下,客戶端通過監(jiān)聽連接到dispatcher之后,dispatcher會(huì)隨機(jī)分配一個(gè)端口,此時(shí)客戶端斷開和監(jiān)聽的連接,通過分配的端口和dispatcher連接。和監(jiān)聽的連接是短暫的。

適用場(chǎng)景

  • 對(duì)于連接數(shù)不多的應(yīng)用,適宜用專有連接,客戶的請(qǐng)求響應(yīng)及時(shí);

  • 對(duì)于連接數(shù)較大的應(yīng)用,適宜用共享連接,充分利用系統(tǒng)資源

二、相關(guān)參數(shù)

通用參數(shù)

  • remote_listener:可以實(shí)現(xiàn)數(shù)據(jù)庫(kù)和listener的分離。

    • 單機(jī)環(huán)境的remote_listener 一般為空。

    • rac環(huán)境下,listener是跟隨集群crs啟動(dòng)的。而且數(shù)據(jù)庫(kù) rdbms的啟動(dòng)要依賴asm實(shí)例的資源,所以不存在啟動(dòng)數(shù)據(jù)庫(kù)后,listener沒啟動(dòng),當(dāng)然出現(xiàn)故障除外。

      • local_listener是該節(jié)點(diǎn)的listener信息

      • remote_listener一般是scan的信息

  • local_listener

    pmon只會(huì)動(dòng)態(tài)注冊(cè)port等于1521的監(jiān)聽,否則pmon不能動(dòng)態(tài)注冊(cè)listener,要想讓pmon動(dòng)態(tài)注冊(cè)listener,需要設(shè)置local_listener參數(shù)。

  • listener_networks:配置多個(gè)remote_listener、local_listener時(shí)需要,平時(shí)很少用

    例子:alter system set LISTENER_NETWORKS='((NAME=network1)(LOCAL_LISTENER=listener_net1)(REMOTE_LISTENER=scanone.gaopp.com:1521))','((NAME=network2)(LOCAL_LISTENER=listener_net2)(REMOTE_LISTENER=remote_net2))';

共享參數(shù)

  • SHARED_SERVERS:如果shared_server值為0,則表示數(shù)據(jù)庫(kù)沒有啟動(dòng)共享服務(wù)模式。 這個(gè)參數(shù)是配置shared server必須的,而且只有這個(gè)參數(shù)是必須的。它指定了當(dāng)實(shí)例啟動(dòng)的時(shí)候 shared server process 啟動(dòng)的數(shù)量,不要將這個(gè)參數(shù)設(shè)置得太大,否者啟動(dòng)數(shù)據(jù)庫(kù)instance的時(shí)候就會(huì)花更多時(shí)間,ORACLE啟動(dòng)過后會(huì)根據(jù)負(fù)載來動(dòng)態(tài)調(diào)整shared_servers

  • MAX_SHARED_SERVERS:oracle在同一個(gè)時(shí)刻最大能夠使用的shared server process.不要將這個(gè)參數(shù)設(shè)置小于shared_servers,如果動(dòng)態(tài)修改shared_servers大于max_shared_servers,oracle會(huì)覆蓋max_shared_servers的值,此時(shí)你需要修改max_shared_servers.同時(shí)也不能大于processes。這個(gè)參數(shù)是為了給占用很大資源操作而設(shè)的(批處理),為了預(yù)留一些process 給DBA任務(wù)(rman備份)

  • SHARED_SERVER_SESSIONS:指定了總共允許的的shared server session 的數(shù)量。如果設(shè)置了這個(gè)參數(shù),那么就不要將這個(gè)值超過sessions,如果沒有設(shè)置這個(gè)值,那么只要還有空閑的session,就可以被使用。設(shè)置這個(gè)值是為專用連接預(yù)留的User Sessions.

  • DISPATCHERS: 共享連接的分派器數(shù)量

  • MAX_DISPATCHERS: 可同時(shí)并發(fā)的共享連接的最大的分派器數(shù)量,此參數(shù)目前可忽略;

  • CIRCUITS: 可用的虛擬回路數(shù)(Specifies the total number of virtual circuits that are available for inbound and outbound network sessions)

三、資源

內(nèi)存

  • large_pool_size
    相比于專用服務(wù)器模式,共享服務(wù)模式的UGA在SGA中,而專用服務(wù)器模式的UGA在PGA當(dāng)中,共享服務(wù)器模式下如果設(shè)置了large_pool_size則用戶的UGA會(huì)在large_pool中。MTS減少的內(nèi)存實(shí)際上是專用服務(wù)器模式下每個(gè)用戶連接到操作系統(tǒng)進(jìn)程所需的內(nèi)存,共享服務(wù)器模式由于限制了Server Process的數(shù)量,減少了建立Server Process所需要的內(nèi)存,同時(shí)當(dāng)并發(fā)量大時(shí)不需要頻繁的創(chuàng)建和刪除進(jìn)程,減少了與之對(duì)應(yīng)的開銷,提升了并發(fā)量。所以共享服務(wù)器模式適合于高并發(fā),處理量小的業(yè)務(wù)系統(tǒng)。

進(jìn)程

數(shù)據(jù)庫(kù)啟動(dòng)之后比專用服務(wù)器模式會(huì)多出兩種進(jìn)程,一種是調(diào)度進(jìn)程(Dnnn),一種是共享服務(wù)器進(jìn)程(Snnn)。來自客戶端的請(qǐng)求會(huì)被dispatcher接受,然后dispatcher將請(qǐng)求置入Request隊(duì)列??臻e的Server Process會(huì)按照request隊(duì)列開始處理隊(duì)列中的請(qǐng)求。處理過后的結(jié)果放入Response隊(duì)列中。最后再由DIspatcher來將最后的結(jié)果返回給客戶端。

  • Snnn:分派器進(jìn)程使得客戶端進(jìn)程可以共享數(shù)量有限的服務(wù)器進(jìn)程??梢詾閱蝹€(gè)數(shù)據(jù)庫(kù)實(shí)例創(chuàng)建多個(gè)分派器進(jìn)程。分派器進(jìn)程的最佳個(gè)數(shù)取決于操作系統(tǒng)的限制和每個(gè)進(jìn)程的連接數(shù)。

  • Dnnn:在共享服務(wù)器配置中,每個(gè)共享服務(wù)器進(jìn)程為多個(gè)客戶端請(qǐng)求服務(wù)。除了共享服務(wù)器進(jìn)程不與特定客戶端進(jìn)程相關(guān)聯(lián)外,共享服務(wù)器進(jìn)程和專用服務(wù)器進(jìn)程提供相同的功能。

四、優(yōu)缺點(diǎn)

優(yōu)點(diǎn)

  • 減少了實(shí)例中的進(jìn)程數(shù)

  • 增加了更多并發(fā)用戶的數(shù)量

  • 實(shí)現(xiàn)動(dòng)態(tài)負(fù)載均衡

  • 減少了空閑服務(wù)器進(jìn)程數(shù)量

  • 減少了實(shí)例PGA內(nèi)存

缺點(diǎn):由于共享服務(wù)器模式存在種種問題,同時(shí)中間件也完全可以實(shí)現(xiàn)連接池的效果,所以一般情況下不會(huì)共享服務(wù)器模式,使用專用服務(wù)器模式即可。

  • 共享服務(wù)器的代碼路徑比專用服務(wù)器長(zhǎng),所以它天生就比專用服務(wù)器慢。

  • 存在人為死鎖的可能,因?yàn)樗谴械?,只要一個(gè)連接阻塞,則該服務(wù)器進(jìn)程上的所有用戶都被阻塞,并且極可能死鎖。

  • 存在獨(dú)占事務(wù)的可能,因?yàn)槿绻粋€(gè)會(huì)話的事務(wù)運(yùn)行時(shí)間過長(zhǎng),它獨(dú)占共享資源,其它用戶只能等待,而專用服務(wù)器,每個(gè)客戶端是一個(gè)會(huì)話。

  • 共享服務(wù)器模式限制了某些數(shù)據(jù)庫(kù)特性,例如:不能單獨(dú)啟動(dòng)和關(guān)閉實(shí)例,不能進(jìn)行介質(zhì)恢復(fù),不能使用Log Miner,并且SQL_TRACE沒有意義(因?yàn)槭枪蚕矶皇钱?dāng)前會(huì)話的)。

五、信息收集

event

  • event 10257(后續(xù)會(huì)距離詳細(xì)說明)

視圖

  • V$DISPATCHER:提供DISPATCH進(jìn)程信息,包括DISPATCH名稱,網(wǎng)絡(luò),地址,狀態(tài),統(tǒng)計(jì)信息和索引號(hào)等;

    有記錄,說明是配置了dispatchers參數(shù)

  • V$DISPATCHER_CONFIG:提供DISPATCH的配置信息

  • V$DISPATCHER_RATE:提供DISPATCH的速度(RATE)統(tǒng)計(jì)

  • V$CIRCUIT:提供用戶通過DISPATCH連接到數(shù)據(jù)庫(kù)的虛擬回路信息(virtual circuits)

    有記錄說明當(dāng)前有使用共享模式的連接,無記錄則不能判定服務(wù)器模式

  • V$SHARED_SERVER:提供共享服務(wù)器信息

    有記錄,且STATUS字段為WAIT(COMMON),則說明啟動(dòng)共享;

    無記錄,或STATUS字段為TERMINATED,則說明沒有啟動(dòng)共享服務(wù)器

  • V$SHARED_SERVER_MONITOR:提供共享服務(wù)器的優(yōu)化信息

  • V$QUEUE:提供共享服務(wù)器隊(duì)列信息.

  • V$SESSION:如果SERVER字段的值除了DEDICATED,還有NONE,則說明當(dāng)前實(shí)例啟動(dòng)了共享服務(wù)器,并且SERVER為NONE的會(huì)話正使用共享服務(wù)器連接,同時(shí),如果只顯示有DEDICATED,則不能說明服務(wù)器就一定工作在專用服務(wù)器下面,此時(shí)也有可能啟動(dòng)了共享模式。只是目前連接到數(shù)據(jù)庫(kù)的都是專用服務(wù)器模式。

六、關(guān)閉數(shù)據(jù)庫(kù)共享模式

  1. 只需要將參數(shù)shared_servers設(shè)置為0,即可關(guān)閉數(shù)據(jù)庫(kù)的共享模式。執(zhí)行該腳本后,所有以共享方式連接到數(shù)據(jù)庫(kù)都不能成功,但是未釋放的共享連接會(huì)繼續(xù)保持連接,直到斷開為止。

    alter system set shared_servers=0;
  2. 如果同時(shí)將參數(shù)shared_servers和max_shared_servers都設(shè)置為0,那么共享連接方式將被終結(jié)。所有的共享方式連接都會(huì)斷開(已經(jīng)連接的會(huì)話也會(huì)斷開)

七、開啟數(shù)據(jù)庫(kù)共享模式

  1. 設(shè)置shared_servers這個(gè)參數(shù),將其值設(shè)置為大于0即可開啟服務(wù)器共享模式。其他的共享服務(wù)器參數(shù)可以不用設(shè)置,但是最好也設(shè)置一下max_shared_servers參數(shù)

    alter system set shared_servers=1 scope=both;
    alter system set max_shared_servers =24 scope=both;
  2. 關(guān)于參數(shù)dispatchers的設(shè)置,可以使用下面命令

    alter system set dispatchers='(protocol=TCP)(disp=8)(serv=xxx)’

    前面表示的是協(xié)議,disp表示調(diào)度器(dipatcher)的進(jìn)程數(shù)量,service分別指定要采用共享服務(wù)器模式的服務(wù)名稱。使用上面的模式指定只啟動(dòng)某個(gè)服務(wù)的共享模式,如果要設(shè)置所有服務(wù)都使用共享模式,則設(shè)置為:

    alter system set dispatchers='(PROTOCOL=TCP)';

八、當(dāng)前模式的判斷

  1. 查看V$SESSION視圖
    通過v$session視圖的SERVER字段來進(jìn)一步判斷當(dāng)前連接模式

    SELECT SID, USERNAME, OSUSER, MACHINE,TERMINAL, SERVER
      FROM V$SESSION
     WHERE USERNAME IS NOT NULL;
  2. 查看連接數(shù)據(jù)庫(kù)的tns配置文件,如下所示

    TEST =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.16.22)(PORT = 1521))
        )
        (CONNECT_DATA =
          # SERVER = DEDICATED為專用服務(wù)模式
          (SERVER = SHARED)
          (SERVICE_NAME = epps)
        )
      )

到此,關(guān)于“數(shù)據(jù)庫(kù)的共享模式與專有模式是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI