欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Oracle Dedicated server 和 Shared server(專

系統(tǒng) 2147 0

一. 官網說明

在DBCA 建庫的時候,有提示讓我們選擇連接類型,這里有兩種類型:專用服務器模式和共享服務器模式。默認使用專用模式。如下圖:

Oracle Dedicated server 和 Shared server(專用模式 和 共享模式) 說明

Oracle 官方文檔對這兩種文檔的說明如下:

About Dedicated andShared Server Processes

http://download.oracle.com/docs/cd/B28359_01/server.111/b28310/manproc001.htm

OracleDatabase creates server processes to handle the requests of user processesconnected to an instance. A server process can be either of the following:

(1)Adedicated server process, which services only one userprocess

(2)Ashared server process, which can service multiple userprocesses

Oracle 創(chuàng)建Server process 來處理user processes連接實例的的請求。 server process 分兩種: dedicated server process和 sharedserver process。

Yourdatabase is always enabled to allow dedicated server processes, but you mustspecifically configure and enableshared serverby setting one ormore initialization parameters.

1.1 Dedicated Server Processes

Figure4-1, "Oracle Database Dedicated Server Processes" illustrateshow dedicated server processes work. In this diagram two user processes areconnected to the database through dedicated server processes.

Ingeneral, it is better to be connected through adispatcherand use ashared server process. This is illustrated in Figure4-2, "Oracle Database Shared Server Processes" . A shared serverprocess can be more efficient because it keeps the number of processes requiredfor the running instance low.

Inthe following situations, however, users and administrators should explicitlyconnect to an instance using a dedicated server process:

在以上兩種情況,需要顯示的使用dedicated server process 去連接實例:

(1)To submit a batch job (for example, when a job can allow little orno idle time for the server process)

(2)To use Recovery Manager (RMAN) to back up, restore, or recover a database

Torequest a dedicated server connection when Oracle Database is configured forshared server, users must connect using a net service name that is configuredto use a dedicated server. Specifically, the net service name value shouldinclude theSERVER=DEDICATEDclause in the connect descriptor.

如果數據庫配置的是shared server,想要用dedicated server 去連接實例,就必須配置在net service name(tnsnames.ora)里指定SERVER=DEDICATED。


Oracle Dedicated server 和 Shared server(專用模式 和 共享模式) 說明

Figure 4-1 OracleDatabase Dedicated Server Processes



1.2 Shared ServerProcesses

Consideran order entry system with dedicated server processes. A customer phones theorder desk and places an order, and the clerk taking the call enters the orderinto the database. For most of the transaction, the clerk is on the telephonetalking to the customer. A server process is not needed during this time, sothe server process dedicated to the clerk's user process remains idle. Thesystem is slower for other clerks entering orders, because the idle serverprocess is holding system resources.

Sharedserver architecture eliminates the need for a dedicated server process for eachconnection (see Figure4-2 ).

Oracle Dedicated server 和 Shared server(專用模式 和 共享模式) 說明

Figure 4-2 OracleDatabase Shared Server Processes



Ina shared server configuration, client user processes connect to a dispatcher.The dispatcher can support multiple client connections concurrently. Eachclient connection is bound to avirtual circuit, which is a piece ofshared memory used by the dispatcher for client database connection requestsand replies. The dispatcher places a virtual circuit on a common queue when arequest arrives.

Anidle shared server process picks up the virtual circuit from the common queue,services the request, and relinquishes the virtual circuit before attempting toretrieve another virtual circuit from the common queue. This approach enables a small pool of server processes to serve a largenumber of clients. A significant advantage of shared server architectureover the dedicated server model is the reduction of system resources, enablingthe support of an increased number of users.

Foreven better resource management, shared server can be configuredforconnection pooling. Connection pooling lets a dispatcher support moreusers by enabling the database server to time-out protocol connections and touse those connections to service an active session. Further, shared server canbe configured forsession multiplexing, which combines multiple sessionsfor transmission over a single network connection in order to conserve the operatingsystem's resources.

Sharedserver architecture requires Oracle Net Services. User processes targeting theshared server must connect through Oracle Net Services, even if they are on thesame machine as the Oracle Database instance.

二. 說明

2.1 Dedicated server 說明

Oracle Dedicated server 和 Shared server(專用模式 和 共享模式) 說明

對于專用服務器配置,在登錄時,Oracle 總會創(chuàng)建一個新的進程,這個服務器進程會在會話生存期中專門這個連接服務。對于每個會話,都會出現一個新的專用服務器,會話與專用服務器之間存在一對一的映射。按照定義,這個專用服務器不是實例的一部分。客戶進程(也就是想要連接數據庫的程序)會通過某種網絡通道(如TCP/IP socket)與這個專用服務器直接通信,并由這個服務器進程接收和執(zhí)行我的SQL。如果必要,它會讀取數據文件,并在數據庫的緩存中查找我要的數據。也許它會完成我的更新語句,也可能會運行我的PL/SQL 代碼。這個服務器進程的主要目標就是對我提交的SQL 調用做出響應。


2.2 Shared server 說明

2.2.1 說明

共享服務器(shared server),正式的說法是多線程服務器(Multi-Threaded Server)或MTS。如果采用這種方式,就不會對每條用戶連接創(chuàng)建另外的線程或新的UNIX 進程。

在共享服務器中,Oracle 使用一個“共享進程”池為大量用戶提供服務。共享服務器實際上就是一種連接池機制。利用共享服務器,我們不必為10,000 個數據庫會話創(chuàng)建10,000 個專用服務器(這樣進程或線程就太多了),而只需建立很少的一部分進程/線程,顧名思義,這些進程/線程將由所有會話共享。這樣Oracle 就能讓更多的用戶與數據庫連接,否則很難連接更多用戶。如果讓我的機器管理10,000個進程,這個負載肯定會把它壓垮,但是管理100 個或者1,000 個進程還是可以的。采用共享服務器模式,共享進程通常與數據庫一同啟動,使用ps命令可以看到這個進程。

共享服務器連接和專用服務器連接之間有一個重大區(qū)別,與數據庫連接的客戶進程不會與共享服務器直接通信,但專用服務器則不然,客戶進程會與專用服務器直接通信。之所以不能與共享服務器直接對話,原因就在于這個服務器進程是共享的。為了共享這些進程,還需要另外一種機制,通過這種機制才能與服務器進程“對話”。為此,Oracle 使用了一個或一組稱為調度器(dispatcher,也稱分派器)的進程。

客戶進程通過網絡與一個調度器進程通信。這個調度器進程將客戶的請求放入SGA中的請求隊列(這也是SGA 的用途之一)。第一個空閑的共享服務器會得到這個請求,并進行處理(例如,請求可能是UPDATE T SETX = X+5 WHERE Y = 2)。完成這個命令后,共享服務器會把響應放在原調度器(即接收請求的調度器)的響應隊列中。調度器進程一直在監(jiān)聽這個隊列,發(fā)現有結果后,就會把結果傳給客戶。從概念上講,共享服務器請求的流程如圖2-3 所示。

Oracle Dedicated server 和 Shared server(專用模式 和 共享模式) 說明

如圖2-3 所示,客戶連接向調度器發(fā)送一個請求。調度器首先將這個請求放在SGA 中的請求隊列中①。第一個可用的共享服務器從請求隊列中取出這個請求②并處理。共享服務器的處理結束后,再把響應(返回碼、數據等)放到響應隊列中③,接下來調度器拿到這個響應④,傳回給客戶。

2.2.2 共享服務器具有以下一些缺點

一般我們以oracle默認的專用服務器方式就行了,沒必要使用共享服務器模式。一個是我們是使用中間件(如:weblogic)去連oracle的,中間件本身有連接池機制,另外就是oracle的這個共享服務器方式也做的不夠好了,有諸多缺點。

1)共享服務器的代碼路徑比專用服務器長,所以它天生就比專用服務器慢。
2)存在人為死鎖的可能,因為它是串行的,只要一個連接阻塞,則該服務器進程上的所有用戶都被阻塞,并且極可能死鎖。
3)存在獨占事務的可能,因為如果一個會話的事務運行時間過長,它獨占共享資源,其它用戶只能等待,而專用服務器,每個客戶端是一個會話。
4)共享服務器模式限制了某些數據庫特性,例如:不能單獨啟動和關閉實例,不能進行介質恢復,不能使用Log Miner,并且SQL_TRACE沒有意義(因為是共享而不是當前會話的)。

MTS減少的內存實際上是專用服務器模式下每個用戶連接到操作系統(tǒng)進程所需的內存,但它卻使用SGA的Large_Pool來分配UGA,拆東墻補西墻,所減少的內存是很少的。如果用戶會話的連接和斷開很頻繁,數據庫進程的創(chuàng)建和刪除的開銷會非常大,這種情況最好采用共享服務器模式(否則,應該使用連接池技術)。如果客戶端一次連接終身使用(會話生命周期內),使用共享服務器模式的意義不大。因為大部分時間,一個會話就連接到一個服務器進程,無法共享服務器進程。

2.2.3 共享服務初始化參數的一些說明

shared_servers : 指定了當instance 啟動的時候 shared server process 啟動的數量,不要將這個參數設置得太大,否者啟動數據庫instance 的時候 就會花更多時間,Oracle啟動過后會根據負載來動態(tài)調整shared_servers。如果為0,表示數據庫沒有啟動共享服務模式。 這個參數是配置shared server 必須的,而且只有這個參數是必須的。

修改參數: alter system set shared_servers=1;

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

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

dispatchers: 配置 dispatcher process .如果不設置這個參數,只要設置了shared_servers ,oracle 也會自動設置一個基于tcp協(xié)議的dispatcher。還需要查看操作系統(tǒng)支持一個dispatcher能處理多少個connections

SQL> select * from v$dispatcher;

max_dispatchers: 設置同一時刻能夠同時運行的dispatchers的數量,必須大于等于 dispatchers ,小于processes。這個參數也會被dispatchers覆蓋。

circuits: 指定了virtual circuits 的總數量。

2.2.4關閉共享模式

將shared_servers參數置為0,那么所有以共享方式連接到數據庫都不能成功,但是未釋放的共享連接會繼續(xù)保持連接,直到斷開。如果將shared_servers 和max_shared_servers都設為0,那么共享連接將被終結。所有的共享方式連接都斷開了的話,就可以使用alter system set dispatcher=’’; 將dispatcher清除,防止下次啟動數據庫又打開了共享連接方式。

2.3 TCP/IP 連接的基本原理

這里將分析網絡上最常見的一種情形:在TCP/IP 連接上建立一個基于網絡的連接請求。在這種情況下,客戶在一臺機器上,而服務器駐留在另一臺機器上,這兩臺機器通過一個TCP/IP 網絡連接。客戶率先行動,使用Oracle 客戶軟件(Oracle 提供的一組應用程序接口,或API)建立一個請求,力圖連接數據庫。

例如,客戶可以發(fā)出以下命令:

C:\Users\Administrator.DavidDai>sqlplus sys/oracle@dave2_202as sysdba;

SQL*Plus: Release 11.2.0.1.0 Production onSun Aug 21 14:36:47 2011

Copyright (c) 1982, 2010, Oracle. All rights reserved.

Connected to:

Oracle Database 10g Enterprise EditionRelease 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Miningoptions

SQL>

這里,客戶是程序SQL*Plus,dave2_202是一個TNS 服務名。TNS 代表透明網絡底層(Transparent Network Substrate),這是Oracle 客戶中處理遠程連接的“基礎”軟件,有了它才有可能建立對等通信。TNS 連接串告訴Oracle 軟件如何與遠程數據庫連接。

一般地,機器上運行的客戶軟件會讀取一個tnsnames.ora 文件。這是一個純文本的配置文件,通常放在[ORACLE_HOME]\network\admin目錄下。配置如下:

dave2_202 =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.202)(PORT = 1521))

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = dave2)

)

)

根據這個配置信息,Oracle 客戶軟件可以把我們使用的TNS 連接串dave2_202映射到某些有用的信息,也就是主機名、該主機上“監(jiān)聽器”進程接受(監(jiān)聽)連接的端口、該主機上所連接數據庫的服務名,等等。

服務名表示具有公共屬性、服務級閾值和優(yōu)先級的應用組。提供服務的實例數量對應用是透明的,每個數據庫實例可以向監(jiān)聽器注冊,表示要提供多個服務。 所以,服務就映射到物理的數據庫實例,并允許DBA 為之關聯閾值和優(yōu)先級。這個串(dave2_202)還可以用其他方式來解析。例如,可以使用Oracle Internet 目錄(Oracle Internet Directory,OID),這是一個分布式輕量級目錄訪問協(xié)議(Lightweight Directory Access Protocol,LDAP)服務器,其作用就相當于解析主機名的DNS。不過,tnsnames.ora文件通常只適用于大多數小到中型安裝,在這些情況下,這個配置文件的副本不算太多,尚可管理。

既然客戶軟件知道要連接到哪里,它會與主機名為192.168.3.202 的服務器在端口1521 上打開一條TCP/IP socket 連接。如果服務器DBA 安裝并配置了Oracle Net,并且有一個監(jiān)聽器在端口1521上監(jiān)聽連接請求,就會收到這個連接。 在網絡環(huán)境中,我們會在服務器上運行一個稱為TNS 監(jiān)聽器的進程。就是這個監(jiān)聽器進程能讓我們與數據庫物理連接。當它收到入站連接請求時,它會使用自己的配置文件檢查這個請求,可能會拒絕請求(例如,因為沒有這樣的數據庫,或者可能我們的IP 地址受到限制,不允許連接這個主機),也可能會接受請求,并真正建立連接。

如果建立一條專用服務器連接,監(jiān)聽器進程就會為我們創(chuàng)建一個專用服務器。在UNIX上,這是通過fork()和exec()系統(tǒng)調用做到的(在UNIX 中,要在初始化之后創(chuàng)建新進程,惟一的辦法就是通過fork())。 這個新的專用服務器進程繼承了監(jiān)聽器建立的連接,現在就與數據庫物理地連接上了。

在Windows 上,監(jiān)聽器進程請求數據庫進程為連接創(chuàng)建一個新線程。一旦創(chuàng)建了這個線程,客戶就會“重定向”到該線程,相應地就能建立物理連接。圖2-4 顯示了UNIX 上的監(jiān)聽器進程和專用服務器連接。

Oracle Dedicated server 和 Shared server(專用模式 和 共享模式) 說明

另一方面,如果我們發(fā)出共享服務器連接請求,監(jiān)聽器的表現則會有所不同。監(jiān)聽器進程知道實例中運行了哪些調度器。接收到連接請求后,監(jiān)聽器會從可用的調度器池中選擇一個調度器進程。監(jiān)聽器會向客戶返回連接信息,其中說明了客戶如何與調度器進程連接;如果可能的話,還可以把連接“轉發(fā)”給調度器進程(這依賴于不同的操作系統(tǒng)和數據庫版本,不過實際效果是一樣的)。

監(jiān)聽器發(fā)回連接信息后,它的工作就結束了,因為監(jiān)聽器一直在特定主機的特定端口上運行(主機名和端口號大家都知道),而調度器會在服務器上隨意指派的端口上接受連接。監(jiān)聽器要知道調度器指定的這些隨機端口號,并為我們選

擇一個調度器。客戶再與監(jiān)聽器斷開連接,并與調度器直接連接。現在就與數據庫有了一個物理連接。這個過程如圖2-5 所示。

Oracle Dedicated server 和 Shared server(專用模式 和 共享模式) 說明

三. 判斷oracle是共享模式還是專用模式的方法

3.1. showparameter shared_server;

(注:8i應為:showparameter mts_servers;)
SQL> show parameter shared_server;

NAME TYPEVALUE
------------------------------------ ----------- ------------------------------
max_shared_servers integer 20
shared_server_sessionsinteger 330
shared_serversinteger 1

3.2 查看v$session 視圖

SQL> Select username,server,program fromv$session where username is not null;

USERNAME SERVER PROGRAM

------------------------------ ------------------------------------------------

SYS DEDICATED rman.exe

RMAN DEDICATED rman.exe

SYS DEDICATED rman.exe

SYS DEDICATED sqlplus.exe

SYS DEDICATED rman.exe

DAVE DEDICATED toad.exe

SYS DEDICATED toad.exe

3.3 查看監(jiān)聽: lsnrctl service

C:\Users\Administrator.DavidDai>lsnrctlservice

LSNRCTL for 32-bit Windows: Version11.2.0.1.0 - Production on 26-6月 -2010 11:7:40 Copyright (c) 1991, 2010, Oracle. All rights reserved.

正在連接到(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

服務摘要..

服務"orcl" 包含 1 個實例。

實例 "orcl", 狀態(tài) READY, 包含此服務的 1 個處理程序...

處理程序:

"DEDICATED" 已建立:34 已拒絕:0 狀態(tài):ready

LOCAL SERVER

服務"orclXDB" 包含 1 個實例。

實例 "orcl", 狀態(tài) READY, 包含此服務的 1 個處理程序...

處理程序:

"D000" 已建立:0 已被拒絕:0 當前: 0 最大: 1022 狀態(tài): ready

DISPATCHER <machine: DAVIDDAI, pid:10884>

(ADDRESS=(PROTOCOL=tcp)(HOST=DavidDai)(PORT=58400))

命令執(zhí)行成功

3.4.查看TNSNAMES.ora 文件。如:

ORCL =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = DavidDai)(PORT = 1521))

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)

)

)

這里是以DEDICATED 專用模式連接 orcl 實例。寫上 (SERVER = SHARED) 則是使用共享服務器模式,但是這時shared_server_process需要打開,要不然會出錯連不上oracle。要是這段放空沒寫,那么系統(tǒng)會根據服務器模式自動調節(jié),不過根據實測結果,就算服務器是定義成共享服務器模式,shared_server_process沒打開的情況下,在v$session中查到的連接依然是SERVER = DEDICATED。

所以基本上我們這段話我們都是可以放空著不寫的,但是有時候要連上我們的共享服務器模式的數據庫,放空有可能系統(tǒng)認為要用共享服務器方式去連,那時就要聲明 SERVER = DEDICATED采用專用服務器方式去連接。

在數據庫啟動的時候,如果沒有指定shared_servers,但是設置了dispatchers,那么ORACLE就認為啟動了shared server ,并且設置shared_servers為1. 在數據庫啟動的時候,沒有設置shared_servers,沒有設置dispatchers,即使以后修改了dispatchers,也不能啟動shared server,必須從新啟動數據庫。


另外,Background process ,以及通過本地連接進來的,只能是DEDICATED .比如說sqlplus user/pass形式。如果數據庫沒有配置共享服務器,那么客戶端只能以DEDICATED方式連接數據庫.

-------------------------------------------------------------------------------------------------------

Blog: http://blog.csdn.net/tianlesoftware

Weibo: http://weibo.com/tianlesoftware

Email: dvd.dba@gmail.com

DBA1 群:62697716(滿); DBA2 群:62697977(滿)DBA3 群:62697850(滿)

DBA 超級群:63306533(滿); DBA4 群: 83829929(滿)DBA5群: 142216823(滿)

DBA6 群:158654907(滿) 聊天 群:40132017(滿) 聊天2群:69087192(滿)

--加群需要在備注說明Oracle表空間和數據文件的關系,否則拒絕申請


<!--EndFragment-->

Oracle Dedicated server 和 Shared server(專用模式 和 共享模式) 說明


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产精品91在线播放 | 欧洲一级毛片 | 色在线视频网站 | 极品美女一区二区三区视频 | 请吃饭的姐姐 | 鲁一鲁影院 | 国产一区二 | ppp42.com | 日本三级久久 | 2021精品国产品免费观看 | 欧美日韩无线码免费播放 | www.尤物视频.com | 无码日韩精品一区二区免费 | 成年人网站在线免费观看 | 九一免费在线观看 | 午夜在线免费视频 | 亚洲精品国产不卡在线观看 | 久久精品国产一区 | 亚洲在线观看免费视频 | 日本一级在线 | 免费香蕉视频 | 五月婷婷丁香在线观看 | 麻豆精品国产自产在线 | 国产精品国产三级国产播12软件 | 青青青国产依人精品视频 | 韩国一级免费视频 | 久久九| 国产精品成人免费视频不卡 | xx00视频| 欧美色欧美亚洲另类二区精品 | 久久精品成人 | 日本一级毛片视频 | 狠狠色噜噜综合社区 | 亚洲精品日韩在线 | 激情奇米 | 欧美亚洲一区二区三区 | 天堂色在线 | 狠狠色丁香婷婷综合 | 欧美日韩专区国产精品 | 亚洲三级视频 | 国产精品一区视频 |