真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

oracle怎么設(shè)置參數(shù) oracle在sql中使用參數(shù)

Oracle內(nèi)存參數(shù)調(diào)優(yōu)技術(shù)詳解

目的

為企業(yè)提供成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、網(wǎng)站優(yōu)化、成都營銷網(wǎng)站建設(shè)、競價托管、品牌運營等營銷獲客服務(wù)。創(chuàng)新互聯(lián)擁有網(wǎng)絡(luò)營銷運營團(tuán)隊,以豐富的互聯(lián)網(wǎng)營銷經(jīng)驗助力企業(yè)精準(zhǔn)獲客,真正落地解決中小企業(yè)營銷獲客難題,做到“讓獲客更簡單”。自創(chuàng)立至今,成功用技術(shù)實力解決了企業(yè)“網(wǎng)站建設(shè)、網(wǎng)絡(luò)品牌塑造、網(wǎng)絡(luò)營銷”三大難題,同時降低了營銷成本,提高了有效客戶轉(zhuǎn)化率,獲得了眾多企業(yè)客戶的高度認(rèn)可!

希望通過整理此文檔 使大家對 oracle 內(nèi)存結(jié)構(gòu)有一個全面的了解 并在實際的工作中靈活應(yīng)用 使 oracle 的內(nèi)存性能達(dá)到最優(yōu)配置 提升應(yīng)用程序反應(yīng)速度 并進(jìn)行合理的內(nèi)存使用

實例結(jié)構(gòu)

oracle 實例 = 內(nèi)存結(jié)構(gòu) + 進(jìn)程結(jié)構(gòu)

oracle 實例啟動的過程 其實就是 oracle 內(nèi)存參數(shù)設(shè)置的值加載到內(nèi)存中 并啟動相應(yīng)的后臺進(jìn)程進(jìn)行相關(guān)的服務(wù)過程

進(jìn)程結(jié)構(gòu)

oracle 進(jìn)程 = 服務(wù)器進(jìn)程 + 用戶進(jìn)程

幾個重要的后臺進(jìn)程

DBWR 數(shù)據(jù)寫入進(jìn)程

LGWR: 日志寫入進(jìn)程

ARCH: 歸檔進(jìn)程

CKPT: 檢查點進(jìn)程 ( 日志切換 上一個檢查點之后 又超過了指定的時間 預(yù)定義的日志塊寫入磁盤 例程關(guān)閉 DBA 強制產(chǎn)生 表空間 offline)

LCKn ( ) 封鎖進(jìn)程

Dnnn: 調(diào)度進(jìn)程

內(nèi)存結(jié)構(gòu) ( 我們重點講解的 )

內(nèi)存結(jié)構(gòu) =SGA (系統(tǒng)全局區(qū)) +PGA (程序全局區(qū))

SGA 是用于存儲數(shù)據(jù)庫信息的內(nèi)存區(qū) 該信息為數(shù)據(jù)庫進(jìn)程所共享 它包含 Oracle 服務(wù)器的數(shù)據(jù)和控制信息 它是在 Oracle 服務(wù)器所駐留的計算機的實際內(nèi)存中得以分配 如果實際內(nèi)存不夠再往虛擬內(nèi)存中寫

我們重點就是設(shè)置 SGA 理論上 SGA 可占 OS 系統(tǒng)物理內(nèi)存的 / —— /

原則 SGA+PGA+OS 使用內(nèi)存 總物理 RAM

SGA=((db_block_buffers*blocksize)+(shared_pool_size+large_pool_size+java_pool_size+log_buffers)+ MB

SGA 系統(tǒng)全局區(qū) ( 包括以下五個區(qū) )

A 數(shù)據(jù)緩沖區(qū) : ( db_block_buffers )存儲由磁盤數(shù)據(jù)文件讀入的數(shù)據(jù)

大小 : db_block_buffers*db_block_size

Oracle i 設(shè)置數(shù)據(jù)緩沖區(qū)為 Db_cache_size

原則 SGA 中主要設(shè)置對象 一般為可用內(nèi)存 %

B 共享池 : ( shared_pool_size ) : 數(shù)據(jù)字典 sql 緩沖 pl/sql 語法分析 加大可提速度

原則 SGA 中主要設(shè)置對象 一般為可用內(nèi)存 %

C 日志緩沖區(qū) : ( log_buffer )存儲數(shù)據(jù)庫的修改信息

原則 K M 之間 不應(yīng)該太大

D JAVA 池( Java_pool_size )主要用于 JAVA 語言的開發(fā)

原則 若不使用 java 原則上不能小于 M 給 M 通常就夠了

E 大池( Large_pool_size )?? 如果不設(shè)置 MTS 主要用于數(shù)據(jù)庫備份恢復(fù)管理器 RMAN

原則 若不使用 MTS M 之間 不應(yīng)該太大

SGA= db_block_buffers*db_block_size+ shared_pool_size+ log_buffer+Java_pool+size+large_pool_size

原則 達(dá)到可用內(nèi)存的 % 就可以了

PGA 程序全局區(qū)

PGA 包含單個服務(wù)器進(jìn)程或單個后臺進(jìn)程的數(shù)據(jù)和控制信息 與幾個進(jìn)程共享的 SGA 正相反 PGA 是只被一個進(jìn)程使用的區(qū)域 PGA 在創(chuàng)建進(jìn)程時分配在終止進(jìn)程時回收

A Sort_area_size? 用于排序所占內(nèi)存

B Hash_area_size 用于散列聯(lián)接 位圖索引

這兩個參數(shù)在非 MTS 下都是屬于 PGA 不屬于 SGA 是為每個 session 單獨分配的 在我們的服務(wù)器上除了 OS + SGA 一定要考慮這兩部分

原則 OS 使用內(nèi)存 +SGA+ 并發(fā)執(zhí)行進(jìn)程數(shù) *(sort_area_size+hash_ara_size+ M) * 總內(nèi)存

實例配置

一 物理內(nèi)存多大

二 操作系統(tǒng)估計需要使用多少內(nèi)存

三 數(shù)據(jù)庫是使用文件系統(tǒng)還是裸設(shè)備

四 有多少并發(fā)連接

五 應(yīng)用是 OLTP 類型還是 OLAP 類型

基本掌握的原則是 db_block_buffer 通??梢员M可能的大 shared_pool_size 要適度 log_buffer 通常大到幾百 K 到 M 就差不多了

A 如果 M RAM? 單個 CPU?? db_block_size 是 bytes

SGA= * M= M 左右

建議 shared_pool_size = M db_block_buffer* db_block_size = M

具體 : shared_pool_size = # M

db_block_buffer= ????? # M

log_buffer = ???????? # k ( K*CPU 個數(shù) )

large_pool_size= ????? # M

java_pool_size = ??? # M

sort_area_size = ????? # k ( k M)

sort_area_retained_size = ?? # MTS 時 sort_area_retained_size = sort_area_size

B 如果 G RAM????? 單個 CPU?? db_block_size 是 bytes

SGA= * M= M 左右

建議 shared_pool_size = M db_block_buffer* db_block_size = M

具體 : shared_pool_size= ??? # M

db_block_buffer= ???????? # M

log_buffer = ???????? # k ( K*CPU 個數(shù) )

large_pool_size= ?????? # M

java_pool_size = ??? # M

sort_area_size = ????? # k ( k M)

sort_area_retained_size = ?? # MTS 時 sort_area_retained_size = sort_area_size

C 如果 G???? 單個 CPU?? db_block_size 是 bytes

SGA= * M= M 左右

建議 shared_pool_size = M db_block_buffer *db_block_size = M

具體 : shared_pool_size= ??? # M

db_block_buffer= ???????? # M

log_buffer = ??????????? # k ( K*CPU 個數(shù) )

large_pool_size= ????? # M

java_pool_size = ????? # M

sort_area_size = ???????? # k ( k M)

sort_area_retained_size = ?? # MTS 時 sort_area_retained_size = sort_area_size

假定 bit ORACLE

內(nèi)存 G

shared_pool_size = M data buffer = G

內(nèi)存 G

shared_pool_size = M data buffer = G

內(nèi)存 G

shared_pool_size = M M data buffer = G

參數(shù)更改方式

oracle i

主要都是通過修改 oracle 啟動參數(shù)文件進(jìn)行相關(guān)的配置

參數(shù)文件位置

d:\oracle\admin\DB_Name\pfile\init ora

按以上修改以上參數(shù)值即可

Oracle i:

兩種方式 第一種是修改 oracle 啟動參數(shù)文件后 通過此參數(shù)文件再創(chuàng)建服務(wù)器參數(shù)文件

第二種是直接運行 oracle 修改命令進(jìn)行修改

SQLalter system set db_cache_size= M scope=spfile;

lishixinzhi/Article/program/Oracle/201311/16995

ORACLE的初始化參數(shù)文件以及修改方法

i之前 oracle使用的初始化參數(shù)文件是pfile i開始引用了SPFILE 但保留了pfile

初始化參數(shù)文件在整個ORACLE系統(tǒng)之中起著關(guān)鍵的作用 啟動的過程中 oracle根據(jù)初始化參數(shù)的設(shè)置分配SGA 啟動后臺進(jìn)程 數(shù)據(jù)庫打開后 還是依據(jù)初始化的參數(shù)設(shè)置運行數(shù)據(jù)庫

I以后的oracle版本 初始化參數(shù)文件有spfileSID ORA spfile ORA init ORA oracle在啟動過程中也是按照這個順序依次查找初始化參數(shù)文件 若最終沒有找到 則數(shù)據(jù)庫啟動失敗 同時Alert_sid log報錯

i之后的版本 默認(rèn)啟動都是使用spfile參數(shù)文件啟動 當(dāng)然也可以指定pfile參數(shù)文件啟動ORACLE spfile參數(shù)文件的格式為spfileSID ORA 而pfile參數(shù)文件的格式為initSID ORA

startup pfile= /oradata/oracle/admin/TEST/pfile/init ora *****

另外 pfile和spfile兩者可以相互創(chuàng)建 創(chuàng)建默認(rèn)目錄在$ORACLE_HOME/dbs/

CREATE SPFILE FROM PFILE;

CREATE PFILE FROM SPFILE;

通過spfile創(chuàng)建的的初始化參數(shù)格式為 initSID ORA

修改初始化參數(shù)有兩種方式

一 在mond下修改初始化參數(shù)

修改pfile參數(shù) 可編輯的修改init ora

修改spfile參數(shù) 不可編輯參數(shù)文件 只能通過命令或者EM動態(tài)修改初始化參數(shù)

命令 Alter system set AAA=N scope=MEMORY|SPFILE|BOTH;

SCOPE參數(shù)有三個選項

MEMORY 修改只對運行的實例有效

SPFILE 修改SPFILE設(shè)置

BOTH 同時修改了SPFILE和此實例

注意 在修改靜態(tài)參數(shù)時必須得指定SPFILE參數(shù) 否則會報錯 亦即修改靜態(tài)參數(shù)時SCOPE參數(shù)不允許為BOTH

二 在EM中修改初始化參數(shù)設(shè)置

以sys用戶登錄EM

在主界面上選擇 管理 標(biāo)簽按鈕

在管理頁面下選擇 數(shù)據(jù)庫配置 下的 所有初始化參數(shù) 按鈕 轉(zhuǎn)入初始化參數(shù)設(shè)置頁面

默認(rèn)修改的的是SCOPE=MEMORY的設(shè)置 當(dāng)把 在當(dāng)前正在運行的實例模式下將更改應(yīng)用與SPFile 復(fù)選框選中時 相當(dāng)于SCOPE=BOTH的設(shè)置

在值那項文本框輸入新的值之后 點擊右上角的應(yīng)用按鈕 修改生效

修改屬性為SCOPE=SPFILE

lishixinzhi/Article/program/Oracle/201311/16518

如何設(shè)置空的oracle系統(tǒng)參數(shù)

普通參數(shù):也就是Oracle系統(tǒng)正常使用的一些參數(shù),

非凡參數(shù):包括三種,過時參數(shù)、強調(diào)參數(shù)和隱藏參數(shù)。

隨著Oracle數(shù)據(jù)庫新版本的發(fā)布,相應(yīng)每次都會增加或者刪除一些參數(shù)。下面具體介紹如何查詢當(dāng)前系統(tǒng)版本中的各種參數(shù)情況。

一、過時參數(shù) 和 強調(diào)參數(shù)

Oracle 數(shù)據(jù)庫中,系統(tǒng)提供了幾個視圖可以查看系統(tǒng)參數(shù)的情況。視圖 V$OBSOLETE_PARAMETER 中含有所有的過時 (obsolete) 和強調(diào) (underscored) 參數(shù)。

這里首先說明一下什么是 Oracle 的過時 (obsolote) 和強調(diào) (underscored) 參數(shù),過時參數(shù),顧名思義就是在 Oracle 以前的版本中存在,但在新版本中已經(jīng)淘汰了的參數(shù),已經(jīng)不再使用;而強調(diào)參數(shù),是指那些在新版本中保留了下來,但是除非非凡需要不希望用戶使用的那些參數(shù)。在視圖 V$OBSOLETE_PARAMETER 中,包含這些參數(shù)的名稱和一個標(biāo)志字 ISSPECIFIED ,該標(biāo)志字用來指出這個參數(shù)是否在 init.ora 文件中已實際設(shè)置。 下面的 SQL 腳本列出了當(dāng)前系統(tǒng)中所有的過時參數(shù)名稱以及它們是否在當(dāng)前系統(tǒng)中設(shè)定。

/* Formatted on 2010-5-12 17:46:27 (QP5 v5.115.810.9015) */

SELECT name, isspecified FROM v$obsolete_parameter;

上面談到, Oracle 系統(tǒng)并沒有將 V$OBSOLETE_PARAMETER 視圖中的所有參數(shù)均丟棄,而是將其中的一部分轉(zhuǎn)換為強調(diào)參數(shù),下面就來討論如何查看這些參數(shù)是已被丟棄還是被轉(zhuǎn)換。這可以通過系統(tǒng)視圖 X$KSPPO 來查看,該視圖中包含一個名為 KSPPOFLAG 的字段,用來指明該參數(shù)在當(dāng)前版本中是被丟棄還是被強調(diào),假如該值為 1 ,則表示該參數(shù)已被丟棄,該值為 2 ,則表明該參數(shù)現(xiàn)為強調(diào)參數(shù)。

Oracle設(shè)置系統(tǒng)參數(shù)進(jìn)行性能優(yōu)化

一 SGA

Shared pool tunning

Shared pool的優(yōu)化應(yīng)該放在優(yōu)先考慮 因為一個cache miss在shared pool中發(fā)生比在data buffer中發(fā)生導(dǎo)致的成本更高 由于dictionary數(shù)據(jù)一般比library cache中的數(shù)據(jù)在內(nèi)存中保存的時間長 所以關(guān)鍵是library cache的優(yōu)化

Gets (parse)在namespace中查找對象的次數(shù)

Pins (execution)在namespace中讀取或執(zhí)行對象的次數(shù)

Reloads (reparse)在執(zhí)行階段library cache misses的次數(shù) 導(dǎo)致sql需要重新解析

) 檢查v$librarycache中sql area的gethitratio是否超過 % 如果未超過 % 應(yīng)該檢查應(yīng)用代碼 提高應(yīng)用代碼的效率

Select gethitratio from v$librarycache where namespace= sql area ;

) v$librarycache中reloads/pins的比率應(yīng)該小于 % 如果大于 % 應(yīng)該增加參數(shù)shared_pool_size的值

Select sum(pins) executions sum(reloads) cache misses sum(reloads)/sum(pins) from v$librarycache;

reloads/pins %有兩種可能 一種是library cache空間不足 一種是sql中引用的對象不合法

)shared pool reserved size一般是shared pool size的 % 不能超過 % V$shared_pool_reserved中的request misses= 或沒有持續(xù)增長 或者free_memory大于shared pool reserved size的 % 表明shared pool reserved size過大 可以壓縮

)將大的匿名pl/sql代碼塊轉(zhuǎn)換成小的匿名pl/sql代碼塊調(diào)用存儲過程

)從 i開始 可以將execution plan與sql語句一起保存在library cache中 方便進(jìn)行性能診斷 從v$sql_plan中可以看到execution plans

)保留大的對象在shared pool中 大的對象是造成內(nèi)存碎片的主要原因 為了騰出空間許多小對象需要移出內(nèi)存 從而影響了用戶的性能 因此需要將一些常用的大的對象保留在shared pool中 下列對象需要保留在shared pool中

a 經(jīng)常使用的存儲過程

b 經(jīng)常操作的表上的已編譯的觸發(fā)器

c Sequence 因為Sequence移出shared pool后可能產(chǎn)生號碼丟失

查找沒有保存在library cache中的大對象

Select * from v$db_object_cache where sharable_mem and

type in ( PACKAGE PROCEDURE FUNCTION PACKAGE BODY ) and kept= NO ;

將這些對象保存在library cache中

Execute dbms_shared_pool keep( package_name );

對應(yīng)腳本 dbmspool sql

)查找是否存在過大的匿名pl/sql代碼塊 兩種解決方案

A.轉(zhuǎn)換成小的匿名塊調(diào)用存儲過程

B.將其保留在shared pool中

查找是否存在過大的匿名pl/sql塊

Select sql_text from v$sqlarea where mand_type= and length(sql_text) ;

)Dictionary cache的優(yōu)化

避免出現(xiàn)Dictionary cache的misses 或者misses的數(shù)量保持穩(wěn)定 只能通過調(diào)整shared_pool_size來間接調(diào)整dictionary cache的大小

Percent misses應(yīng)該很低 大部分應(yīng)該低于 % 合計應(yīng)該低于 %

Select sum(getmisses)/sum(gets) from v$rowcache;

若超過 % 增加shared_pool_size的值

Buffer Cache

)granule大小的設(shè)置 db_cache_size以字節(jié)為單位定義了default buffer pool的大小

如果SGA M granule= M 否則granule= M 即需要調(diào)整sga的時候以granule為單位增加大小 并且sga的大小應(yīng)該是granule的整數(shù)倍

) 根據(jù)v$db_cache_advice調(diào)整buffer cache的大小

SELECT size_for_estimate buffers_for_estimate estd_physical_read_factor estd_physical_reads

FROM v$db_cache_advice WHERE NAME= DEFAULT AND advice_status= ON

AND block_size=(SELECT Value FROM v$parameter WHERE NAME= db_block_size );

estd_physical_read_factor=

) 統(tǒng)計buffer cache的cache hit ratio % 如果低于 % 可以用下列方案解決

◆增加buffer cache的值

◆使用多個buffer pool

◆Cache table

◆為 sorting and parallel reads 建獨立的buffer cache

SELECT NAME value FROM v$sysstat WHERE NAME IN ( session logical reads

physical reads physical reads direct physical reads direct(lob) );

Cache hit ratio= (physical reads physical reads direct physical reads direct (lob))/session logical reads;Select (phy value dir value lob value)/log value from v$sysstat log v$sysstat phy v$sysstat dir v$sysstat LOB where log name= session logical reads and phy name= physical reads and dir name= physical reads direct and lob name= physical reads direct (lob) ;

影響cache hit ratio的因素 全表掃描 應(yīng)用設(shè)計 大表的隨機訪問 cache hits的不均衡分布

)表空間使用自動空間管理 消除了自由空間列表的需求 可以減少數(shù)據(jù)庫的競爭

其他SGA對象

)redo log buffer

對應(yīng)的參數(shù)是log_buffer 缺省值與 OS相關(guān) 一般是 K 檢查v$session_wait中是否存在log buffer wait v$sysstat中是否存在redo buffer allocation retries

A 檢查是否存在log buffer wait

Select * from v$session_wait where event= log buffer wait ;

如果出現(xiàn)等待 一是可以增加log buffer的大小 也可以通過將log 文件移到訪問速度更快的磁盤來解決

B

Select name value from v$sysstat where name in

( redo buffer allocation retries redo entries )

Redo buffer allocation retries接近 小于redo entries 的 % 如果一直在增長 表明進(jìn)程已經(jīng)不得不等待redo buffer的空間 如果Redo buffer allocation retries過大 增加log_buffer的值

C 檢查日志文件上是否存在磁盤IO競爭現(xiàn)象

Select event total_waits time_waited average_wait from v$system_event

where event like log file switch pletion% ;

如果存在競爭 可以考慮將log文件轉(zhuǎn)移到獨立的 更快的存儲設(shè)備上或增大log文件

D 檢查點的設(shè)置是否合理

檢查alert log文件中 是否存在 checkpoint not plete

Select event total_waits time_waited average_wait from v$system_event

where event like log file switch (check% ;

如果存在等待 調(diào)整log_checkpoint_interval log_checkpoint_timeout的設(shè)置

E 檢查log archiver的工作

Select event total_waits time_waited average_wait from v$system_event

where event like log file switch (arch% ;

如果存在等待 檢查保存歸檔日志的存儲設(shè)備是否已滿 增加日志文件組 調(diào)整log_archiver_max_processes

F DB_block_checksum=true 因此增加了性能負(fù)擔(dān) (為了保證數(shù)據(jù)的一致性 oracle的寫數(shù)據(jù)的時候加一個checksum在block上 在讀數(shù)據(jù)的時候?qū)hecksum進(jìn)行驗證)

)java pool

對于大的應(yīng)用 java_pool_size應(yīng)= M 對于一般的java存儲過程 缺省的 M已經(jīng)夠用了

)檢查是否需要調(diào)整DBWn

lishixinzhi/Article/program/Oracle/201311/17744


名稱欄目:oracle怎么設(shè)置參數(shù) oracle在sql中使用參數(shù)
分享路徑:http://weahome.cn/article/hhgihj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部