<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    幸せのちから

    平凡的世界
    看似平常實崎嶇
    成如容易卻艱辛

    關(guān)于Oracle Shared Server及一些參數(shù)設(shè)置(轉(zhuǎn))


    關(guān)于Oracle Shared Server及一些參數(shù)設(shè)置
    ===========================================================
    Oracle Shared Server比較適合一些小而快的事務(wù)連接,這些事務(wù)的特點就是事務(wù)比較短,操作和返回的數(shù)據(jù)量比較少。而對于一些數(shù)據(jù)倉庫而言,顯然是不適合建成 Shared Server模式。下面說一下Shared Server和Dedicated Server的一些區(qū)別:
    在Dedicated Server環(huán)境中,每一個連接都將啟動一個專用服務(wù)進程,這個專用服務(wù)進程始終服務(wù)于這個連接直到連接斷開。每一個專用服務(wù)進程都有一個屬于自己的內(nèi)存區(qū)域,叫做PGA(Program GlobalArea),里面存放了會話的信息,包括綁定變量、游標、排序等等。而在Shared Server環(huán)境中,這些信息被存放到SGA中的UGA(User Global Area)區(qū)域中,這個區(qū)域一般都位于大型池中(Large pool)。見下圖:

    shared_server structure

    在Shared Server環(huán)境中,一個調(diào)度器服務(wù)多個連接的請求,并將請求放到請求隊列(request queue)中,所有調(diào)度器共用一個請求隊列,接著由共享服務(wù)進程(Shared Server processes)來處理這些請求,并將處理后的結(jié)果返回到響應(yīng)隊列(response queue),與請求隊列不同,每個調(diào)度器都有自己的一個響應(yīng)隊列,然后由調(diào)度器把響應(yīng)隊列中的結(jié)果返回給客戶端。其中請求隊列和響應(yīng)隊列都是SGA中的一部分。
    在一個共享服務(wù)環(huán)境中,一個客戶端請求的步驟是這樣的:
    1、 客戶端發(fā)送一個請求到調(diào)度器
    2、 調(diào)度器將請求放入到請求隊列中
    3、 共享服務(wù)進程從請求隊列中取出請求進行處理
    4、 共享服務(wù)進程將處理后的結(jié)果放到調(diào)度器的響應(yīng)隊列中
    5、 調(diào)度器從響應(yīng)隊列中取出結(jié)果返回給客戶端
    示例圖如下:

    shared_server structure

    同時,在Shared server環(huán)境中,也可以使用連接池的方法來存放多個連接請求,數(shù)據(jù)庫定時斷開空閑的連接來服務(wù)其它新的連接請求。
    在Shared server環(huán)境中也存在不足,當某一個請求需要處理并返回大量數(shù)據(jù)的時候,將會導(dǎo)致其它新的請求得不到及時的響應(yīng)。所以對于這樣的請求,最好使用專用服務(wù)進程。同時,部分數(shù)據(jù)庫管理操作需要使用專用服務(wù)進程,比如數(shù)據(jù)庫啟動關(guān)閉,數(shù)據(jù)庫備份恢復(fù)等等,對于表分析、大量數(shù)據(jù)加載、索引重建等操作也建議使用專用服務(wù)進程。
    監(jiān)聽器在Shared server環(huán)境中也扮演著重要的角色。PMON進程定期檢測調(diào)度器的負載情況,并將這些信息反饋給監(jiān)聽器。監(jiān)聽器記錄著每個調(diào)度器的地址信息及負載情況(當前服務(wù)多少個連接等等),當有新的連接請求的時候,監(jiān)聽器將負載較低的調(diào)度器地址信息返回給客戶端,客戶端根據(jù)地址信息連接到相應(yīng)的調(diào)度器。
    下面談?wù)勅绾闻渲肙racle shared server環(huán)境。
    可以通過多種方法來配置shared server,包括創(chuàng)建數(shù)據(jù)庫的時候指定參數(shù)、EM、修改初始化參數(shù)文件,還有可以通過Alter system進行修改,因為這些參數(shù)都是動態(tài)參數(shù)。
    1) DISPATCHERS:指定調(diào)度器的數(shù)量、響應(yīng)的協(xié)議等等。下面是具體的參數(shù)及說明:

    shared_server structure

    其中最經(jīng)常使用的兩個屬性值就是DISPATCHERS和PROTOCOL。
    DISPATCHERS = “(PRO=TCP)(DIS=3)(PRO=IPC)(DIS=2)”
    上面表示配置了3個TCP協(xié)議的調(diào)度器,2個IPC協(xié)議的調(diào)度器。那么,調(diào)度器的數(shù)量應(yīng)該如何確定呢?主要考慮數(shù)據(jù)庫最大的連接數(shù)和每個調(diào)度器服務(wù)的連接數(shù),可以通過下面的公式進行計算:
    調(diào)度器數(shù)量 = 數(shù)據(jù)庫最大session數(shù) /每個調(diào)度器服務(wù)的session數(shù);
    數(shù)據(jù)庫的session數(shù)可以通過下面的視圖獲得:
    1、 v$session:獲得當前數(shù)據(jù)庫的session數(shù)
    SQL> select count(*) from v$session where username is not null;
    2、 V$LICENSE:獲得當前數(shù)據(jù)庫的session數(shù)及數(shù)據(jù)庫啟動以來最大的session數(shù)
    SQL> select sum(sessions_current) cur_sessions,sum(sessions_highwater) high_sessions from V$LICENSE;
    比如數(shù)據(jù)庫當前有500個TCP/IP session,每個調(diào)度器管理50個session,那么就需要10(500/50)個調(diào)度器。參數(shù)設(shè)置如下:
    DISPATCHERS=”(PRO=TCP)(DIS=10)”
    當然也可以根據(jù)數(shù)據(jù)庫當前的負載,使用ALTER SYSTEM命令動態(tài)的增加或減少調(diào)度器的數(shù)據(jù),如下:
    ALTER SYSTEM SET DISPATCHERS=”(PRO=TCP)(DIS=5)”;

    設(shè)置連接池:
    DISPATCHERS="(PROTOCOL=tcp)(DISPATCHERS=1)(POOL=on)(TICK=1)(CONNECTIONS=500)(SESSIONS=1000)"
    上面表示啟動連接池,一個調(diào)度器的連接數(shù)最大為500個,sessions數(shù)目最大為1000個,并10分鐘后自動斷開未活動的連接。(TICK=1表示10分鐘)
    2) MAX_DISPATCHERS:設(shè)置最大的調(diào)度器數(shù),可以動態(tài)調(diào)整
    ALTER SYSTEM SET MAX_DISPATCHERS=10;
    3) SHARED_SERVERS:設(shè)置數(shù)據(jù)庫啟動時啟動的最小SHARED_SERVER數(shù),默認值庫1。設(shè)置為0表示不使用SHARED_SERVER。
    ALTER SYSTEM SET SHARED_SERVERS = 5;
    4) SHARED_SERVER_SESSIONS:設(shè)置ORACLE SHARED SERVER的最大session數(shù)。
    當連接到SHARED SERVER的session數(shù)超過此值的話,將報錯:
    ERROR:
    ORA-00018 maximum number of sessions exceeded
    不過當數(shù)據(jù)庫session超過此值的時候,仍然可以通過專用服務(wù)器連接進行連接。
    ALTER SYSTEM SET SHARED_SERVER_SESSIONS = 5;
    5) MAX_SHARED_SERVERS:設(shè)置最大的SHARED_SERVER數(shù)。如果未給此參數(shù)附值,那么SHARED_SERVER數(shù)庫無限制。
    ALTER SYSTEM SET MAX_SHARED_SERVERS = 20;
    下面談?wù)凮RACLE SHARED SERVER環(huán)境的管理:
    1)從監(jiān)聽獲得信息
    D:>lsnrctl services
    LSNRCTL for 32-bit Windows: Version 10.1.0.2.0 - Production on 21-APR-2004
    20:50:35
    Copyright (c) 1991, 2004, Oracle. All rights reserved.
    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MJW01)
    (PORT=1521)))
    Services Summary...
    Service "PLSExtProc" has 1 instance(s).
    Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
    Handler(s):
    "DEDICATED" established:0 refused:0
    LOCAL SERVER
    Instance "MJW", status READY, has 3 handler(s) for this service...
    Handler(s):
    "DEDICATED" established:0 refused:0 state:ready
    LOCAL SERVER
    "D001" established:11 refused:1 current:1 max:1002 state:ready
    DISPATCHER
    (ADDRESS=(PROTOCOL=tcp)(HOST=MJW01)
    (PORT=4152))
    "D000" established:15 refused:3 current:2 max:1002 state:ready
    DISPATCHER
    (ADDRESS=(PROTOCOL=tcp)(HOST=MJW01)
    (PORT=3845))
    The command completed successfully
    上面的信息表明當前數(shù)據(jù)庫擁有兩個調(diào)度器,分別庫"D000"和"D001",與"D000"建立連接的總共有15個,拒絕掉的有3個,當前活動的連接有2個;與"D001"建立連接的總共有11個,拒絕掉的有1個,當前活動的連接有1個。
    2)從動態(tài)性能圖獲得信息:
    V$DISPATCHER:顯示當前調(diào)度器的一些信息,包括調(diào)度器的狀態(tài)(等待還是繁忙)、當前的連接數(shù)、歷史的連接數(shù)等等。
    V$DISPATCHER_CONFIG:顯示調(diào)度器的一些配置參數(shù)。
    V$SHARED_SERVER:顯示當前數(shù)據(jù)庫SHARED SERVER的一些狀態(tài)信息
    V$SHARED_SERVER_MONITOR:顯示當前數(shù)據(jù)庫SHARED SERVER的一些統(tǒng)計信息,包括SHARED SERVER的最大連接數(shù),會話數(shù)及啟動的SHARED SERVER數(shù)等等。
    同時,在ORACLE SHARED SERVER環(huán)境中,也可以配置專用服務(wù)器連接,但只有當你是使用Localnaming方法的時候才可以,如果你是使用Hostnaming方法的話則不可以。有幾個方法進行配置,如下:
    1、 手工修改Tnsname文件
    ora10g =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.172)(PORT = 1521))
    )
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = ora10g)
    )
    )
    2、通過Oracle net manager進行配置
    3)對于配置了ORACLE SHARED SERVER的數(shù)據(jù)庫,有一些參數(shù)需要值得我們的關(guān)注:
    1、LARGE POOL SIZE
    在ORACLE SHARED SERVER環(huán)境中,ORACLE 將UGA存放在LARGE POOL中,而在沒有LARGE POOL或者LARGE POOL太小的數(shù)據(jù)庫中,UGA將存放于SHARED POOL中,這樣將影響到數(shù)據(jù)庫其它的性能。所以LARGE POOL的大小也值得我們考究。LARGE POOL最小為300K,最大為2G(不同操作系統(tǒng)可能有所不同)。一般來講,在ORACLE SHARED SERVER環(huán)境中,一個連接將占用1-3M的內(nèi)存,不過要看會話做了哪些操作。我們可以通過下面的語句獲得數(shù)據(jù)庫啟動以來,最大的UGA值:
    select sum(value) "Max MTS Memory Allocated"from v$sesstat ss, v$statname st
    where name = 'session uga memory max'and ss.statistic# =st.statistic#;
    Max MTS Memory Allocated
    ------------------------------------
    244416

    可以看到,ORACLE分配的最大UGA庫240K,如果數(shù)據(jù)庫同時支持100個并發(fā)連接,那么可以將LARGE POOL設(shè)置庫23M(240K*100)。如果LARGE POOL設(shè)置過小,可能遇到下面的錯誤:
    ORA-04031: unable to allocate 490 bytes of shared memory
    ("large pool","MWEIS","session heap","define var info")
    可以通過ALTER SYSTEM命令進行動態(tài)修改。
    ALTER SYSTEM SET LARGE_POOL_SIZE = 51200000 SCOPE=SPFILE;
    2、 調(diào)度器數(shù)目
    可以通過查詢V$DISPATCHER視圖來查看調(diào)度器的狀態(tài):
    SQL> desc v$dispatcher;
    Name Type Nullable Default Comments
    --------- ------------- -------- ------- --------
    NAME VARCHAR2(4) Y
    NETWORK VARCHAR2(128) Y
    PADDR RAW(4) Y
    STATUS VARCHAR2(16) Y
    ACCEPT VARCHAR2(3) Y
    MESSAGES NUMBER Y
    BYTES NUMBER Y
    BREAKS NUMBER Y
    OWNED NUMBER Y
    CREATED NUMBER Y
    IDLE NUMBER Y
    BUSY NUMBER Y
    LISTENER NUMBER Y
    CONF_INDX NUMBER Y
    SQL> Select name, (busy / (busy + idle))*100
    2 "Dispatcher % busy Rate"
    3 From V$DISPATCHER
    4 /
    NAME Dispatcher % busy Rate
    ---- ----------------------
    D000 0.0052861386871346
    如果繁忙的百分比超過50%,那么可以考慮增加調(diào)度器,可以使用下面的語句動態(tài)修改:
    ALTER SYSTEM SET DISPATCHERS=“(PRO=TCP)(DIS=2)”;
    3、 調(diào)度器響應(yīng)時間
    可以通過查看V$QUEUE 和 V$DISPATCHER來獲得連接等待調(diào)度器響應(yīng)的時間:
    SELECT decode(sum(totalq),0,’No Responses’,
    Sum(wait)/sum(totalq)) “Average Wait time”
    FROM V$QUEUE q, V$DISPATCHER d
    WHERE q.type = ‘DISPATCHER’
    AND q.paddr = d.paddr;
    Average Wait Time
    ------------------
    .0413
    4、 連接等待shared server處理請求的時間
    Select decode(totalq,0,’No Requests’) “Wait Time”,
    Wait/totalq || ‘ hundredths of seconds’
    “Average Wait time per request”
    from V$QUEUE
    where type = ‘COMMON’
    Wait Time Average Wait time per request
    -------- -----------------------------------
    .023132 hundredths of a second

     

     

     

    tolywang 發(fā)表于:2007.07.19 10:16 ::分類: ( Oracle數(shù)據(jù)庫管理 ) ::閱讀:(543次) :: 評論 (0) :: 引用 (0)

    posted on 2009-03-20 21:26 Lucky 閱讀(1032) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    <2009年3月>
    22232425262728
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    導(dǎo)航

    隨筆分類(125)

    文章分類(5)

    日本語

    搜索

    積分與排名

    最新隨筆

    最新評論

    主站蜘蛛池模板: 日韩亚洲变态另类中文| 亚洲欧美国产欧美色欲| 亚洲A∨精品一区二区三区| 日韩免费视频在线观看| 美女被cao网站免费看在线看| 亚洲AV成人无码网天堂| 亚洲成A∨人片在线观看无码| 国产精品亚洲成在人线| 俄罗斯极品美女毛片免费播放| 大学生一级毛片免费看| 999久久久免费精品播放| 色播在线永久免费视频网站| 美女视频免费看一区二区| 亚洲欧美精品午睡沙发| avtt天堂网手机版亚洲| 亚洲精品美女久久久久| 久久精品国产亚洲沈樵| 国产成人亚洲精品影院| 免费观看午夜在线欧差毛片| 成人人免费夜夜视频观看| 一二三四免费观看在线电影| 免费黄色福利视频| 国产精品亚洲lv粉色| 亚洲人成小说网站色| 亚洲最大av无码网址| 亚洲精品456播放| 亚洲AV无码成人精品区大在线| 日本一区免费电影| 日韩免费观看视频| 免费jjzz在线播放国产| 四虎国产精品免费视| 国产一级淫片a免费播放口之| 国产精品免费视频一区| 国产大片91精品免费观看男同| 国产猛烈高潮尖叫视频免费| 日本一线a视频免费观看| 国产小视频在线免费| 亚洲午夜激情视频| 国产亚洲成AV人片在线观黄桃| 亚洲成AV人片在线观看无| 亚洲天堂视频在线观看|