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

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

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

    Mongoose House

    Technical Edition

    統(tǒng)計(jì)

    留言簿(4)

    積分與排名

    閱讀排行榜

    關(guān)于Oracle的MTS

    一、簡介

    MTS(Multi-Threaded Server)是ORACLE SERVER的一個(gè)可選的配置選擇,是相對(duì)DEDICATE方式而言,它最大的優(yōu)點(diǎn)是在以不用增加物理資源(內(nèi)存)的前提下支持更多的并發(fā)的連接。換句話說,如果你只有2G的物理內(nèi)存,而你又想支持2000個(gè)連接,在獲取最好性能的前提下,你就應(yīng)該選擇MTS了。

    本文先說一說MTS的工作方式,然后與DEDICATE方式的做一下比較,接下來說一下MTS具體配置實(shí)現(xiàn),最后說一些優(yōu)化MTS配置選項(xiàng)的問題。

    二、MTS的工作方式

    1、Joseph C.Johnson以餐館給出一個(gè)MTS的形象的比喻

    假設(shè)ORACLE是一家餐館,當(dāng)你走進(jìn)一家餐館時(shí)你感覺最舒服的服務(wù)方式就是有一個(gè)專門的waiter來為你服務(wù),而不管餐館中來了多少人,她只對(duì)你請(qǐng)求應(yīng)答,這是DEDICTE的處理方式,也就是說每一個(gè)ORACLE客戶端的連接都有一個(gè)專門的服務(wù)進(jìn)程來為它服務(wù)。而大部的餐館的服方式都不是一對(duì)一的,當(dāng)你走進(jìn)的時(shí)侯,你就被指定了一個(gè)waiter,她也可能為其它桌服著務(wù),這對(duì)于餐館來說是最有利的,因?yàn)樗麄兛梢苑?wù)更多的客人而不需要增加他們的員工。這樣對(duì)你來說也可能是不錯(cuò)的,如果餐館不是太忙,她服務(wù)的客人的請(qǐng)求都很簡短且容易完成,你的感覺也好像自己擁有一個(gè)專門的waiter,waiter把你的ORDER轉(zhuǎn)給廚師,然后把做好的菜拿給你,這就是MTS的處理方式,這些共享的waiters我們叫她們?yōu)镈ispatchers,廚師我們則叫他們?yōu)镾hared Server Processes。

    2、以簡圖說一下MTS的工作方式(SYBEX書中的一幅圖)

    Oracle MTS的工作方式

    1)客戶端向Dispatcher發(fā)一個(gè)服務(wù)請(qǐng)求

    2)Dispatch把這個(gè)請(qǐng)求放到SGA區(qū)的請(qǐng)求對(duì)隊(duì)列中

    3)由一個(gè)或幾個(gè)服務(wù)進(jìn)程來處理這個(gè)請(qǐng)求

    4)服務(wù)進(jìn)程把進(jìn)行的結(jié)果放到Dispatch的SGA區(qū)的的響應(yīng)隊(duì)列中

    5)Dispatcher從響應(yīng)隊(duì)列拾起結(jié)果

    6)完成客戶端的請(qǐng)求并把結(jié)果回送給客戶端

    三、MTS與DEDICATE方式方面做一下比較,為方便比較繪制如下的簡表

    序號(hào)

    比較項(xiàng)

    MTS 方式

    DEDICATE 方式

    1

    服務(wù)進(jìn)程

    多個(gè)連接共享一個(gè)服務(wù)進(jìn)程

    一個(gè)連接有一個(gè)專門的服務(wù)進(jìn)程

    2

    每個(gè)客戶端的連接使用的內(nèi)存量

    3-4M

    150-200K

    3

    適合的應(yīng)用環(huán)境

    適合連接數(shù)很多且請(qǐng)求很短少的 OLTP 環(huán)境

    如果 Oracle 服務(wù)器的資源夠用,這種方式是優(yōu)選

    4

    CPU 負(fù)載

    會(huì)造成一些 CPU 的負(fù)載,如果你的 CPU 有瓶頸,則不要用這種方式

    ?


    四、? MTS的配置實(shí)現(xiàn)

    1、? Oracle8i MTS環(huán)境常用到的幾個(gè)參數(shù)

    序號(hào)

    參數(shù)

    說明

    1

    mts_dispatchers

    用于配置當(dāng) Instance 啟動(dòng)的時(shí)侯啟用的 Dispatcher 的數(shù)量、及 Dispatcher 所響應(yīng)的協(xié)議,它是一個(gè)動(dòng)態(tài)的參數(shù),可以用 Alter system 進(jìn)行動(dòng)態(tài)修定,它沒有默認(rèn)值。

    2

    mts_max_dispatchers

    用于指定同時(shí)運(yùn)行的 Dispatcher 進(jìn)程的最大數(shù)量,對(duì)于大部分的應(yīng)用,每 250 個(gè)連接啟用一個(gè) Dispatcher 可以獲得較好的性能。默認(rèn)值是 5 或所配置的 Dispatcher 的數(shù)量

    3

    mts_servers

    用于指定當(dāng) Instance 啟動(dòng)時(shí)你想啟用的服務(wù)進(jìn)程的數(shù)量,它是一個(gè)動(dòng)態(tài)參數(shù),可以用 Alter systme 動(dòng)態(tài)修定。

    4

    mts_max_servers

    用于指定同時(shí)進(jìn)行的共享的庫的服務(wù)進(jìn)程的數(shù)量,如果你的系統(tǒng)經(jīng)常出現(xiàn)死鎖,應(yīng)該適當(dāng)?shù)脑黾舆@個(gè)值。

    5

    mts_service

    設(shè)為 SID

    6

    mts_listener_address

    TNS 監(jiān)聽的地址


    2、? Oracle9i MTS環(huán)境常用到的幾個(gè)參數(shù)

    序號(hào)

    參數(shù)

    說明

    1

    Dispatchers

    等同于8i中的mts_dispatchers參數(shù)

    2

    max_dispatchers

    等同于8i中的mts_max_dispatchers參數(shù)

    3

    shared_servers

    等同于8i中的mts_server參數(shù)

    4

    max_shared_servers

    等同于8i中的mts_max_servers參數(shù)


    3、? 以我一個(gè)實(shí)際環(huán)境(Oracle8.1.7.4)舉個(gè)例子,9i類似,我在Init<SID>這個(gè)初始化參數(shù)文件中加入了如下的MTS的參數(shù),完成了MTS的配置。

    #mts set by qiuyb
    mts_dispatchers="(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.223.125))(DISPATCHERS=10)"
    mts_max_dispatchers=20
    mts_servers=10
    mts_max_servers=50
    mts_service=BILLING
    mts_listener_address="(address=(protocol=tcp)(host=192.168.223.125)(port=1521))" large_pool_size=400M
    #end of qiuyb's set?

    需要說明的是large_pool_size這個(gè)初始化參數(shù),在MTS環(huán)境中為獲取更好的性能建議設(shè)置這個(gè)參數(shù),這樣UGA都從large_pool這樣一個(gè)固定的區(qū)域中進(jìn)行分配,而不用從Shared Pool中動(dòng)態(tài)進(jìn)行分配,這樣也可以減少ORA-04031錯(cuò)誤的發(fā)生。

    五、 優(yōu)化MTS配置選項(xiàng)及你可能問的幾個(gè)問題

    1、? large_pool_size這個(gè)參數(shù)我該設(shè)為多大呢?

    當(dāng)large_pool_size的大小能夠滿足所有的共享服務(wù)進(jìn)程所需的內(nèi)存就可以了,當(dāng)然如果內(nèi)存夠用的話可以適當(dāng)?shù)募哟笠稽c(diǎn),如下的語句便可以得出自實(shí)例啟動(dòng)來MTS連接所用的內(nèi)存的最大數(shù)量,可以看出來是200多M。

    ?

    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
    ------------------------
    214457296


    2、? 如何判斷我dispatcher的數(shù)量是不是夠用呢?

    使用如下的語句,當(dāng)dispatcher的繁忙比率超過50%的時(shí)侯,你就要考慮增加Dispatcher的數(shù)量了,用Alter system動(dòng)態(tài)卻可完成。

    SELECT?name,?(busy?/?(busy?+?idle))*100?"Dispatcher?%?busy?Rate"
    FROM?V$DISPATCHER


    3、? 如何判斷共享服務(wù)進(jìn)程是不是夠用呢?

    使用如下的語句來確定每次請(qǐng)求的平均等待時(shí)間,監(jiān)測Average Wait time per reques這個(gè)值,當(dāng)這個(gè)值持續(xù)增長時(shí)你該考慮增加shared servers了。

    SELECT?decode(totalq,0,'No?Requests')?"Wait?Time",
    ???????Wait
    /totalq?||'hundredths?of?seconds'?"Average?Wait?time?per?request"
    FROM?V$QUEUE
    WHERE?type?=?'COMMON'


    4、? 如何在MTS配置的Server請(qǐng)求Dedicate的連接著?

    你在tnsnames.ora中做服務(wù)名配置時(shí)加入SRVR=DEDICATED這個(gè)選項(xiàng)就可以了,示例如下:

    billing =
    (DESCRIPTION =
    ? (
    ?? ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = ks3)(PORT = 1521))
    ? )
    ? (
    ?? CONNECT_DATA =
    ??? (SERVICE_NAME = billing)
    ??? (SRVR = DEDICATED)
    ? )
    )


    六、 結(jié)文

    在你的Oracle的服務(wù)器出現(xiàn)高的內(nèi)存利用率和出現(xiàn)頻繁換頁時(shí),使用MTS是一個(gè)不錯(cuò)的選擇??傮w上說來,MTS較適合OLTP這種類型的應(yīng)用,對(duì)于那些數(shù)據(jù)倉庫、DDS這些類型的應(yīng)用它則是不適合的。


    繼續(xù)說一說Oracle的MTS

    1、在Oracle Server調(diào)整為MTS方式后,一些客戶端出現(xiàn)了連不上Oracle Server的狀況,大部分報(bào)的錯(cuò)為TNS-12509,如何解決?

    回答:
    在實(shí)際過程中是存在著這方面的情況,我總結(jié)了一下,大部是由Oracle8 的client引起的,就是那些配服務(wù)名還得掛著個(gè).world的那種客戶端,其實(shí)解決起來很簡單,只需要把tnsname.ora這個(gè)文件中你的那個(gè)服務(wù)名配置的"sid="改成"service_name=",這就Ok了。

    2、我使用了成都邁普公司的"隧道網(wǎng)關(guān)"這種產(chǎn)品,以前在dedicated方式是好好的,可是改成MTS后,為什么Client死活連不是Oracle的Server呢?

    回答:
    其實(shí)我們公司也用了這種產(chǎn)品,在MTS應(yīng)用之初也遇到了這個(gè)問題。出現(xiàn)這個(gè)問題的原因?yàn)檫~普的這種產(chǎn)品只為監(jiān)測靜態(tài)的端返回,它認(rèn)為Oracle的監(jiān)聽端口即為返回端口,實(shí)際在MTS中不是這樣的,多進(jìn)行幾次連接,用netstat -n在客戶端觀看一下就會(huì)明白,MTS返回的端口是動(dòng)態(tài)的,所以邁普的這個(gè)產(chǎn)品就不好用了。解燃眉之急的辦法可以這樣:在MTS客戶端配置"服務(wù)名"時(shí),請(qǐng)求個(gè)Dedicate的連接,即使用SERVER = DEDICATED選項(xiàng),這就把問題解決了。

    3、如何跟蹤一下MTS的dispatcher和shared server進(jìn)程?

    回答:
    這需用到診斷事件了,dispatcher的診斷事件號(hào)為10248,shared server的為10249,如下以shared server為例簡單說一下,假定s015的操作系統(tǒng)的進(jìn)程號(hào)為13161.

    sql>conn sys/pass as sysdba
    sql>oradebug setospid 13161?
    sql>oradebug TRACEFILE_NAME?? --看一下跟蹤文件的名稱
    sql>oradebug EVENT 10249 trace name context forever, level 10

    也可以在init<SID>.ora中加入如下兩行完成trace:

    event="10248 trace name context forever, level X"? -- dispatchers
    event="10249 trace name context forever, level X"? -- shared servers


    4、如何在MTS中設(shè)置IPC

    回答:
    LISTENER.ORA:
    =============
    ?
    LISTENER=
    ? (ADDRESS_LIST=
    ???? (ADDRESS=
    ??????? (PROTOCOL=IPC)
    ??????? (KEY=<sid name>)
    ???? )
    ???? (ADDRESS=
    ??????? (PROTOCOL=IPC)
    ??????? (KEY=<alias in tnsnames.ora for the sid>)
    ???? )
    ? )
    CONNECT_TIMEOUT_LISTENER=10
    STARTUP_WAIT_TIME_LISTENER=0
    SID_LIST_LISTENER=
    ? (SID_LIST=
    ??? (SID_DESC=
    ????? (SID_NAME=<sid name>)?
    ????? (ORACLE_HOME=<home directory path for Oracle>)
    ??? )
    ? )
    ?
    地址列表中可以使用其它的協(xié)議,加入應(yīng)的地址。這個(gè)例子完全是一個(gè)IPC的例子
    ?
    TNSNAMES.ORA:
    =============
    ?
    <alias>=
    ? (DESCRIPTION=
    ???? (ADDRESS=
    ??????? (PROTOCOL=IPC)
    ??????? (KEY=<sid name>)
    ???? )
    ???? (CONNECT_DATA=
    ??????? (SID=<sid name>)
    ???? )
    ? )
    ?
    ?
    INIT.ORA entries for MTS:
    =========================
    ?
    MTS_DISPATCHERS="IPC,2"
    MTS_SERVERS=1
    MTS_MAX_DISPATCHERS=6
    MTS_MAX_SERVERS=3
    MTS_SERVICE=<sid name>
    MTS_LISTENER_ADDRESS="(ADDRESS=(PROTOCOL=IPC)(KEY=<sid name>))"


    5、如何查看一下某個(gè)shared_server正在忙什么?

    回答:
    其實(shí)這與Dedicated方式的查看方法是一樣的,還以s015為例,它的spid為13161,使用如下的sql便可查出:

    SELECT?a.username,
    ???????a.machine,
    ???????a.program,
    ???????a.sid,
    ???????a.serial#,
    ???????a.status,
    ???????c.piece,
    ???????c.sql_text
    ??
    FROM?v$session?a,
    ???????v$process?b,
    ???????v$sqltext?c
    ?
    WHERE?b.spid=13161
    ???
    AND?b.addr=a.paddr
    ???
    AND?a.sql_address=c.address(+)
    ?
    ORDER?BY?c.piece

    6、我在unix看到一個(gè)shared server的進(jìn)程占用了大量的CPU資源,通過select addr from v$process where spid=<os process pid>查到進(jìn)程的address,而select * from v$session where paddr=<paddr>確沒的結(jié)果,所以我無法得知我的這個(gè)shared server在忙什么,我該怎么辦呢?

    回答:

    SELECT?status?FROM?v$circuit?
    ?
    WHERE?CIRCUIT?IN?
    ??(
    ???
    SELECT?circuit?FROM?v$shared_server?
    ????
    WHERE?paddr=<your?paddr>
    ??)


    如果status的返回是EOF,說明實(shí)際這個(gè)shared server已經(jīng)掉死了,你可以把它在操作系統(tǒng)上清除掉了:
    eg:
    ? oracle$kill -9 <shared server's pid>

    你不用擔(dān)心kill掉會(huì)有什么大的影響,其它幾分鐘之后,pmon會(huì)為你把這個(gè)shared server進(jìn)程給重新啟動(dòng)的。


    7、如何在非down庫的情況下恢復(fù)到Dedicate的連接方式,及啟用更多的dispatcher?

    回答:
    7.1關(guān)掉:
    ? sql>ALTER SYSTEM SET MTS_DISPATCHERS='TCP,0';

    7.2啟用更多的dispatcher
    ? sql>ALTER SYSTEM SET MTS_DISPATCHERS='TCP,40';



    本文轉(zhuǎn)載自CSDN上hrb_qiuyb的三篇文章
    說一說如何配置Oracle的MTS Part1
    說一說如何配置Oracle的MTS part2
    繼續(xù)說一說Oracle的MTS

    posted on 2006-08-31 14:35 Mongoose 閱讀(996) 評(píng)論(1)  編輯  收藏

    評(píng)論

    # re: 關(guān)于Oracle的MTS 2006-09-01 12:31 Mongoose

    從MTS模式切換到dedicated模式
    alter system set mts_dispatchers='TCP,0' SCOPE=BOTH;  回復(fù)  更多評(píng)論   


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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲人成电影在线天堂| 日本a级片免费看| 性xxxxx大片免费视频| 久久毛片免费看一区二区三区| 有码人妻在线免费看片| 青娱乐在线免费观看视频| 免费大片av手机看片| 免费可以看黄的视频s色| 午夜不卡久久精品无码免费| 日本一卡精品视频免费| 久久成人a毛片免费观看网站| 免费成人在线电影| 久久久久久影院久久久久免费精品国产小说 | 伊人久久亚洲综合| 亚洲午夜无码久久久久| 亚洲乳大丰满中文字幕| 亚洲AV中文无码乱人伦下载 | 凹凸精品视频分类国产品免费| 国产免费黄色大片| 亚洲毛片av日韩av无码| 亚洲人精品午夜射精日韩| 亚洲高清在线播放| 久久亚洲精品国产精品| jiz zz在亚洲| 暖暖免费中文在线日本| 丝袜捆绑调教视频免费区| 国产白丝无码免费视频| 黄色网址免费大全| 免费无码不卡视频在线观看| 亚洲AV日韩精品一区二区三区| 亚洲午夜久久久影院伊人| 91亚洲va在线天线va天堂va国产 | 亚洲成人中文字幕| 亚洲免费观看网站| 激情小说亚洲图片| 免费91最新地址永久入口| 操美女视频免费网站| 亚洲精品第一国产综合境外资源| 久久亚洲伊人中字综合精品| 亚洲综合久久一本伊伊区| 老湿机一区午夜精品免费福利|