Oracle 專用模式(DEDICATED) 和 共用模式(SHARE)

來源:互聯網
上載者:User

標籤:

 

Oracle 是一門博大精深的技術。玩了2年的oracle,依舊還有很多知識點不清楚。 昨天群裡的朋友提到了 DEDICATED 和 SHARE 兩種模式。 不清楚,默默的做點功課了。從網上搜了點知識,整理如下: 專用伺服器(DEDICATED):一個用戶端串連對應一個伺服器處理序共用伺服器(SHARE):多個用戶端串連對應一個伺服器處理序,伺服器端存在一個進程調度器來管理。它必須使用net services.也就是說必須配置tns。它適合用於高並發,事物量小,如果這個時候採用了共用模式,可以大大減少由於高度並發對於ORACLE伺服器的資源消耗。共用伺服器體系:客戶進程最終與一個發送器串連,PMON進程註冊了發送器的位置和負荷,使監聽器能夠提交到負荷最小的發送器。一個發送器能並發地支援多重的客戶串連。   專用伺服器體系:每個客戶進程與專用伺服器處理序串連。伺服器處理序沒被任何另外的客戶共用。        另:專用伺服器體繫結構不支援HTTP和IIOP客戶,僅支援TTC客戶。一般我們以oracle預設的專用伺服器方式就行了,沒必要使用共用伺服器模式。一個是我們是使用中介軟體(如:weblogic)去連oracle的,中介軟體本身有串連池機制,另外就是oracle的這個共用伺服器方式也做的不夠好了,有諸多缺點。共用伺服器具有以下一些缺點:1)共用伺服器的代碼路徑比專用伺服器長,所以它天生就比專用伺服器慢。2)存在人為死結的可能,因為它是串列的,只要一個串連阻塞,則該伺服器處理序上的所有使用者都被阻塞,並且極可能死結。3)存在獨佔事務的可能,因為如果一個會話的事務已耗用時間過長,它獨佔共用資源,其它使用者只能等待,而專用伺服器,每個用戶端是一個會話。4)共用伺服器模式限制了某些資料庫特性,例如:不能單獨啟動和關閉執行個體,不能進行介質恢複,不能使用Log Miner,並且SQL_TRACE沒有意義(因為是共用而不是當前會話的)。MTS減少的記憶體實際上是專用伺服器模式下每個使用者串連到作業系統進程所需的記憶體,但它卻使用SGA的Large_Pool來分配UGA,拆東牆補西牆,所減少的記憶體是很少的。如果使用者會話的串連和斷開很頻繁,資料庫進程的建立和刪除的開銷會非常大,這種情況最好採用共用伺服器模式(否則,應該使用串連池技術)。如果用戶端一次串連終身使用(會話生命週期內),使用共用伺服器模式的意義不大。因為大部分時間,一個會話就串連到一個伺服器處理序,無法共用伺服器處理序。共用服務初始化參數的一些說明:shared_servers :指定了當instance 啟動的時候 shared server process 啟動的數量,不要將這個參數設定得太大,否者啟動資料庫instance 的時候 就會花更多時間,Oracle啟動過後會根據負載來動態調整shared_servers。如果為0,表示資料庫沒有啟動共用服務模式。 這個參數是配置shared server 必須的,而且只有這個參數是必須的。 修改參數:  alter system set shared_servers=1;max_shared_servers:ORACLE在同一個時刻最大能夠使用的 shared server process.不要將這個參數設定小於 shared_servers,如果動態修改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協議的dispatcher。還需要查看作業系統支援一個dispatcher能處理多少個connections    SQL> select * from v$dispatcher;max_dispatchers: 設定同一時刻能夠同時啟動並執行dispatchers的數量,必須大於等於 dispatchers ,小於processes。這個參數也會被dispatchers覆蓋。circuits:指定了virtual circuits 的總數量。關閉共用模式:將shared_servers參數置為0,那麼所有以共用方式串連到資料庫都不能成功,但是未釋放的共用串連會繼續 保持串連,直到斷開。如果將shared_servers 和max_shared_servers都設為0,那麼共用串連將被終結。所有的共用方式串連都斷開了的話,就可以使用alter system set dispatcher=’’; 將dispatcher清除,防止下次啟動資料庫又開啟了共用串連方式。判斷oracle是共用模式還是專用模式的方法: 1. show parameter shared_server; (註:8i應為:show parameter mts_servers;)SQL> show parameter shared_server;NAME                    TYPE        VALUE------------------------------------ ----------- ------------------------------max_shared_servers           integer     20shared_server_sessions         integer     330shared_servers                integer     12.  查看v$session 視圖SQL> Select username,server,program from v$session where username is not null;USERNAME          SERVER    PROGRAM------------------------------ --------- ---------------------------------------SYS                  DEDICATED rman.exeRMAN                DEDICATED rman.exeSYS                  DEDICATED rman.exeSYS                  DEDICATED sqlplus.exeSYS                  DEDICATED rman.exeDAVE                DEDICATED toad.exeSYS                  DEDICATED toad.exe3. 查看監聽: lsnrctl serviceC:\Users\Administrator.DavidDai>lsnrctl serviceLSNRCTL for 32-bit Windows: Version 11.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", 狀態 READY, 包含此服務的 1 個處理常式...    處理常式:      "DEDICATED" 已建立:34 已拒絕:0 狀態:ready         LOCAL SERVER服務 "orclXDB" 包含 1 個執行個體。  執行個體 "orcl", 狀態 READY, 包含此服務的 1 個處理常式...    處理常式:      "D000" 已建立:0 已被拒絕:0 當前: 0 最大: 1022 狀態: ready         DISPATCHER <machine: DAVIDDAI, pid: 10884>         (ADDRESS=(PROTOCOL=tcp)(HOST=DavidDai)(PORT=58400))命令執行成功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。要是這段放空沒寫,那麼系統會根據伺服器模式自動調節,不過根據實測結果,就算伺服器是定義成共用伺服器模式,shared_server_process沒開啟的情況下,在v$session中查到的串連依然是SERVER = DEDICATED。所以基本上我們這段話我們都是可以放空著不寫的,但是有時候要連上我們的共用伺服器模式的資料庫,放空有可能系統認為要用共用伺服器方式去連,那時就要聲明 SERVER = DEDICATED採用專用伺服器方式去串連。在資料庫啟動的時候,如果沒有指定shared_servers,但是設定了dispatchers,那麼ORACLE就認為啟動了shared server ,並且設定shared_servers為1. 在資料庫啟動的時候,沒有設定shared_servers,沒有設定dispatchers,即使以後修改了dispatchers,也不能啟動shared server,必須從新啟動資料庫。 另外,Background process ,以及通過本地串連進來的,只能是DEDICATED .比如說sqlplus user/pass形式如果資料庫沒有配置共用伺服器,那麼用戶端只能以DEDICATED方式串連資料庫.ORA-12545 串連因對象主機或對象不存在而失敗.ORA-12545:Connect failed because target host or object does not existCause:The address specified is not valid, or the program being connected to does not exist.Action:Ensure the ADDRESS parameters have been entered correctly; the most likely incorrect parameter is the node name. Ensure that the executable for the server exists (perhaps "oracle" is missing.) If the protocol is TCP/IP, edit the TNSNAMES.ORA file to change the host name to a numeric IP address and try again.根據上面的要求修改,還是不行,後來修改了HOST檔案,在其中增加了伺服器的主機對應IP地址,問題得以解決.WINDOWS XP的HOST檔案在c:windows\system32\drivers\etc 下面.檔案名稱就叫HOST,沒有副檔名.# Copyright (c) 1993-1999 Microsoft Corp.127.0.0.1 localhost10.85.10.80 DAVIDDAI In Dedicated Server Mode, there is a dedicated server process for each user process.Select this option when the number of total clients is expected to be small, or when database clients will make persistent, long-running requests to the database. In Shared Server Mode, several client connections share a database-allocated pool of resources. Use this mode when a large number of users need to connect to the database. It is also useful when database memory is limited and for better performance, since you can have more client connections to the database than in dedicated server mode with the same memory. If you choose shared server mode, you must also indicate the number of server processes you want to create when an instance is started up. For more information about setting this parameter, click Help.  http://blog.itpub.net/15672129/viewspace-686318 

Oracle 專用模式(DEDICATED) 和 共用模式(SHARE) (轉)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.