日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle的sga

發(fā)布時(shí)間:2025/3/8 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle的sga 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?sga

? ?

SGA的管理

■有三種方式:

? ? ? ? ? ●8i:SGA的總大小由所有內(nèi)存組件大小之和決定,不能直接定義SCA大小。對(duì)內(nèi)部組件大小的修改必須在數(shù)據(jù)庫重起? ? ? ? ? ? ? ? ? ? 后?才能生為,所以叫做SGA的靜態(tài)管理。

? ? ? ? ? ●9i:?SGA總大小由初始化參數(shù)SGA_?MAX?SIZE確定,各個(gè)內(nèi)存組件大小之和不能超過這個(gè)參數(shù)。在這個(gè)大小之下,? ? ? ? ? ? ? ? ? ? ? SGA?各個(gè)內(nèi)存組件可以在不重起數(shù)據(jù)庫的情況下直接修改大小,所以叫做SGA的動(dòng)態(tài)管理。

? ? ? ? ? ●10g:??SGA大小既可以像9i一樣動(dòng)態(tài)管理,也可以實(shí)施SGA的自動(dòng)管理,只需要設(shè)置初始化參數(shù)SGA_?TARGET,?SGA? ? ? ? ? ? ? ? ? ? ? ?各個(gè)內(nèi)存組件??三就可以由數(shù)據(jù)庫自動(dòng)設(shè)置大小,設(shè)置的依據(jù)來源于系統(tǒng)自動(dòng)收集的統(tǒng)計(jì)信息

?

?■在9i以后,SGA的內(nèi)部組件大小可以動(dòng)態(tài)調(diào)整,也可以由數(shù)據(jù)庫自動(dòng)管理,在設(shè)置內(nèi)存大小的時(shí)候,分配的基本單位是粒? ? ? ? ? ? 度(granule)。Granule是一段連續(xù)的虛擬內(nèi)存,大小取決于SGA?_MAX?SIZE的大小

? ? ? ? ? ?●如果SGA_?MAX?_SIZE小于128M,?Granule為4M,?否則Granule為16M

? ? ? ? ? ?●各個(gè)內(nèi)存組件分配大小必須是Granule的整倍數(shù)

? ? ? ? ? ?●整個(gè)SGA最小不小于3個(gè)Granule大小

■9i中的規(guī)則如下:

? ? ? ?●linux/unix
? ? ? ? ? ? ?SGA<=12BM?granutle?4M

? ? ? ? ? ? ?SGA?>128M?granule?16M? ?

? ? ? ●Windows
? ? ? ? ? ? SGA<=128M?granule?4M

? ? ? ? ? ? SGA?>128M?granule?8M

■10g中的分配規(guī)則為

? ? ? ? ●?linuxunix

? ? ? ? ●Windows
? ? ? ? ? ? SGA<=1G?granute?4M否則16M

shared pool

■用于存儲(chǔ):

? ?◆最近執(zhí)行的SQL 語句

? ?◆最近使用的數(shù)據(jù)定義
■由兩個(gè)與性能相關(guān)的部分組成:

? ?◆庫緩存
? ?◆數(shù)據(jù)字典緩存
■由參數(shù)SHARED POOL SIZE決定大小

庫緩存

■存儲(chǔ)最近使用的SQL和PL/SQL語句的信息

■共享最常用的語句

■管理上遵循LRU規(guī)則

■包括兩個(gè)部分:
? ?◆共享SQL區(qū)

? ?◆共享PLSQL區(qū)
■大小由Shared Pool的大小決定

數(shù)據(jù)字典緩存■存儲(chǔ)在數(shù)據(jù)庫中最近使用的定義
■包括數(shù)據(jù)文件,表,索引,列,用戶,權(quán)限和其他的數(shù)據(jù)庫對(duì)象
■在分析階段,服務(wù)器進(jìn)程查找數(shù)據(jù)字典去驗(yàn)證對(duì)象的名字以及是否是合法訪問
■對(duì)于查詢和DML語句,如果數(shù)據(jù)字典的信息在緩存中能夠提高響應(yīng)時(shí)間大小由Shared Pool的大小決定

SGA中關(guān)鍵的內(nèi)存片段。特別是性能與擴(kuò)展上。
是sqI.pl/sql程序進(jìn)行語法分析,編譯,執(zhí)行的內(nèi)存區(qū)域。
庫lbrary cache數(shù)據(jù)字典data dictionary cache,控制結(jié)構(gòu)control structure組成。shared pool. size 決定大小。10G以后自動(dòng)管理。
過小導(dǎo)致latch爭(zhēng)用,ora-0431 錯(cuò)誤。Lbrarycache 爭(zhēng)用與等待。
>alter system set flush shared pool命令可清除shared pool內(nèi)存中信息與我們相關(guān)的就是lthrancrache 庫繆油或sal語句紹油了
用戶提交一個(gè)sq語可,通過PGA轉(zhuǎn)建到SGA, oracle 對(duì)冊(cè)可進(jìn)行分析.

■如果以前執(zhí)行過,則按照以前執(zhí)行的計(jì)劃執(zhí)行,通常是軟分析[soft parse|或快速軟分析

? ? ◆通過PCA提交Sql語句>parse語句>soft parse->執(zhí)行語句- >通過PCA輸出

■如果沒執(zhí)行過,oracle 開始分析語句的語法,語義,按照優(yōu)化器規(guī)則獲得最佳執(zhí)行計(jì)劃,并在內(nèi)存中保存這個(gè)語句與之對(duì)應(yīng) ? ?的執(zhí)行計(jì)劃等相關(guān)信息,便于下次快速調(diào)用。

? ?◆通過PGA提交Sql語句parse語句hard parse→分析與得到優(yōu)化方案[CBOor RB0|→根據(jù)優(yōu)化方案制定執(zhí)行計(jì)劃》執(zhí)行語句 ? ?◆一-通過PGA輸出

數(shù)據(jù)高速緩存區(qū)

■暫存從數(shù)據(jù)文件中獲得的數(shù)據(jù)塊的數(shù)據(jù)映像

■同樣遵循LRU算法管理內(nèi)存
■當(dāng)再次需要操作這些數(shù)據(jù)時(shí)可以從內(nèi)存中直接獲取和更新,語句執(zhí)行效率能夠大幅度的提高
■初始化參數(shù)DB_ BLOCK SIZE決定了數(shù)據(jù)塊的大小,這也是數(shù)據(jù)庫I/O的最小單位
■數(shù)據(jù)高速緩存區(qū)由多個(gè)獨(dú)立的子緩存池構(gòu)成,可以獨(dú)立的設(shè)置大小:
? ? ◆Default池 ?DB CACHE SIZE
? ? ◆Keep池 ?DB KEEP CACHE SIZERecycle池 ?

? ? ◆DB RECYCLE CACHE SIZE

■只有defualt池可以被sga自動(dòng)管理

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? SQL

Buffer?

Cache

的大小

配置

?SELECT component,current_size,min_size FROM v$sga_dynamic_components;

?

使用

advice

來確認(rèn)

buffer

cache

的大小

?alter?system?set?dby?cache_?size=20M?scope=memory; SELECT size_for_estimate "Cache Size(MB)",size_factor,buffers_for_estimate "Buffers", estd_physical_read_factor est_read_factor, estd_physical_reads estd_phy_red, estd_physical_read_time est_phy_read_t FROM v$db_cache_advice WHERE NAME='DEFAULT'AND block_size=(SELECT VALUE FROM v$parameter WHERE NAME='db_block_size');

在0LTP系統(tǒng)中,對(duì)于DB_CACHE_SIZE的設(shè)置,推薦配置是:

DB_CACHE_SIZE=SGA_MAX_SIZE/2~?SGA_MAX_SIZE*2/3

Block

狀態(tài)

0,FREE,?no?valid?block?image

1,XCUR,?a?current?mode?block,?exclusive?to?this?instance

2,?SCUR,?a?current?mode?block,?shared?with?other?instances

3,CR,a?consistent?read?(stale)?block?image

4,READ,?buffer?is?reserved?for?a?block?being?read?from?disk

5,?MREC,?a?block?in?media?recovery?mode

6,IREC,?a?block?in?instance?(crash)?recovery?mode

select O.object_name, decode(state,0,'free',1,'xcur',2,'scur',3,'cr',4,'read',5,'mrec',6,'irec',7,'write',8,'pi')state,count(*) blocks from x$bh b,dba_objects O where b.obj=O.data_object_id group by O.object_name, state order by blocks desc;

?

lru_flag

LRU_?FLAG=2,表示lru鏈的冷端

LRU_?FLAG=8,表示在LRU鏈的熱端

LRU_?FLAG=0,表示沒有標(biāo)識(shí)

select class,flag,state,1ru_f1ag from x$bh where dbarfil=1 and dbablk = 30;

個(gè)

pool



?
?????

?

?

select decode (wbpd.bp_id,1,'keep',2,'recycle',3,'default',4,'2k pool',5,'4k pool',6,'8k pool',7,'16k pool8,',8,'32k pool', 'unknown') pool,bh.owner,bh.object_name object_name,count(1) numOfBuffers from x$kcbwds wds,x$kcbwbpd wbpd, (select set_ds,x.addr,o.name object_name,u.name owner from sys.obj$ o,sys.user$ u, x$bh X where o.owner#=u.user# and o.dataobj#=x.obj and x.state!=0 and o.owner#!=0) bh where wds.set_id >=wbpd.bp_lo_sid and wds.set_id<=wbpd.bp_hi_sid and wbpd.bp_size!= 0 and wds.addr=bh.set_ds --and?object_name='T2' group by decode (wbpd.bp_id,1,'keep',2,'recycle',3,'default',4,'2k pool',5,'4k pool',6,'8k pool',7,'16k pool8,',8,'32k pool', 'unknown'),bh.owner,bh.object_name order by 1, 4,3,2;

SELECT obj object,dbarfil file#,dbablk block,tch touches FROM x$bh WHERE tch>10 ORDER BY tch desc

?

例,

10%

內(nèi)

?

?

?

?

?

?

?

select decode(state,0,'FREE',1,decode(lrba_seq,0,'AVAILABLE','BEING USED'), 3,'BEING USED',state) "BL0CK STATUS", count(*) from x$bh group by decode(state,0,'FREE',1,decode(lrba_seq,0,'AVAILABLE','BEING USED'), 3,'BEING USED',state)

?

最浪費(fèi)

內(nèi)存的

前10個(gè)

語句占

所有語

句的比

例,建

議控制

在5%

以內(nèi)

?

?

?

?

?

select sum(pct_bufgets) "Percent" from (select rank() over ( order by buffer_gets desc) as rank_bufgets,to_char(100*ratio_to_report(buffer_gets)over (),'999.99') pct_bufgets from v$sqlarea) where rank_bufgets<11;

??
??
??
??
??

?

?

重做日志緩沖區(qū)■暫存數(shù)據(jù)庫中所有數(shù)據(jù)塊的改變
■內(nèi)存管理方法是FIFO
■重做日志被用于提供數(shù)據(jù)恢復(fù)功能
■暫存重做日志的目的是為了提高語句的執(zhí)行速度
■大小由參數(shù)LOG_ BUFFER決定,但這個(gè)內(nèi)存區(qū)不能動(dòng)態(tài)調(diào)整大小
大池

■大池是系統(tǒng)全局區(qū)中可選的一個(gè)內(nèi)存區(qū)
■主要在下面幾種情況下使用:
? ? ◆共享服務(wù)器的用戶全局區(qū)(UGA)
? ? ◆使用RMAN作 備份恢復(fù)-|并行進(jìn)程 ?09
■大小由參數(shù)LARGE POOL SIZE決定,也可以動(dòng)態(tài)改變大小

java池

■是系統(tǒng)全局區(qū)中一個(gè)可選內(nèi)存區(qū)。

■用于Java程序的解析 和執(zhí)行
■大小由參數(shù)JAVA POOL_ SIZE決定,也可以動(dòng)態(tài)調(diào)整
■如果granule是4M, 默認(rèn)是24M: 如果granule是16M, 默認(rèn)大小是32M如果在數(shù)據(jù)庫創(chuàng)建時(shí)選擇了安裝JVM組件,那么這 ? ? 個(gè)池必須配置

???
???

?

總結(jié)

以上是生活随笔為你收集整理的oracle的sga的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。