新聞中心
Oracle數(shù)據(jù)庫(kù)是世界上更流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)之一。Oracle數(shù)據(jù)庫(kù)具有可靠性、高可用性和良好的性能,在企業(yè)中得到廣泛應(yīng)用。 Oracle數(shù)據(jù)庫(kù)性能是影響應(yīng)用程序性能的關(guān)鍵因素之一。優(yōu)化Oracle數(shù)據(jù)庫(kù)性能可以提高應(yīng)用程序的性能和可靠性。本文將,幫助讀者了解如何優(yōu)化數(shù)據(jù)庫(kù)性能。

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),丘北企業(yè)網(wǎng)站建設(shè),丘北品牌網(wǎng)站建設(shè),網(wǎng)站定制,丘北網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,丘北網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
1.了解Oracle數(shù)據(jù)庫(kù)架構(gòu)
要深入了解Oracle數(shù)據(jù)庫(kù)的性能分析技巧,首先需要了解Oracle數(shù)據(jù)庫(kù)架構(gòu)。 Oracle數(shù)據(jù)庫(kù)是一個(gè)分層架構(gòu),由五個(gè)層次組成。
物理存儲(chǔ)層:它由數(shù)據(jù)文件、控制文件和重做日志文件等組成。 邏輯存儲(chǔ)層:它由表、索引、視圖、序列和過(guò)程等組成。
訪問(wèn)和安全層:它由數(shù)據(jù)庫(kù)連接、用戶帳戶和角色等組成。
服務(wù)和應(yīng)用層:它由應(yīng)用程序和Oracle網(wǎng)絡(luò)服務(wù)等組成。
管理和監(jiān)控層:它由Oracle管理工具和性能監(jiān)控工具等組成。
2.使用SQL查詢優(yōu)化器
SQL查詢優(yōu)化器是Oracle數(shù)據(jù)庫(kù)的一個(gè)重要組件,它能夠自動(dòng)優(yōu)化SQL查詢的執(zhí)行計(jì)劃。 查詢優(yōu)化器是以成本為基礎(chǔ)的,它通過(guò)估算每個(gè)執(zhí)行計(jì)劃的成本,以找到更優(yōu)查詢計(jì)劃。
查詢優(yōu)化器可通過(guò)以下方法來(lái)優(yōu)化查詢性能。
索引優(yōu)化: 在查詢時(shí)使用索引可以使查詢速度更快。 查詢優(yōu)化器會(huì)嘗試選擇更優(yōu)索引所在的表,以盡可能快地返回?cái)?shù)據(jù)。
提前讀?。?Oracle預(yù)讀取技術(shù)可以在查詢之前預(yù)讀取一些數(shù)據(jù),以降低I/O成本。
連接優(yōu)化:連接查詢包含多個(gè)表,查詢優(yōu)化器會(huì)考慮連接各個(gè)表的多種方式,并選擇更優(yōu)的連接方式,以最小化查詢執(zhí)行時(shí)間。
3.使用SQL監(jiān)控工具
Oracle數(shù)據(jù)庫(kù)提供了SQL監(jiān)控工具,能夠監(jiān)控?cái)?shù)據(jù)庫(kù)中的SQL執(zhí)行性能。這個(gè)工具被稱為Oracle Database Enterprise Manager。它能夠幫助用戶監(jiān)控?cái)?shù)據(jù)庫(kù)的性能,并提供詳細(xì)的性能分析報(bào)告。
Oracle Database Enterprise Manager提供以下性能監(jiān)控功能。
SQL監(jiān)控: 監(jiān)控SQL執(zhí)行計(jì)劃和執(zhí)行時(shí)間等細(xì)節(jié),以確定SQL性能瓶頸。
性能監(jiān)控報(bào)告:Oracle Database Enterprise Manager能夠生成性能監(jiān)控報(bào)告,以提供有關(guān)數(shù)據(jù)庫(kù)性能的詳細(xì)信息。
會(huì)話監(jiān)控:會(huì)話監(jiān)控可以幫助用戶識(shí)別會(huì)話中存在的問(wèn)題,并提供解決方案。
4.使用存儲(chǔ)過(guò)程和觸發(fā)器
存儲(chǔ)過(guò)程和觸發(fā)器是優(yōu)化Oracle數(shù)據(jù)庫(kù)性能的另一種方法。它們可以在Oracle數(shù)據(jù)庫(kù)中存儲(chǔ)、管理和執(zhí)行代碼。存儲(chǔ)過(guò)程和觸發(fā)器可用于執(zhí)行復(fù)雜查詢、執(zhí)行批量數(shù)據(jù)插入和更新、執(zhí)行數(shù)據(jù)驗(yàn)證和檢查等。
Oracle數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程和觸發(fā)器可以幫助您優(yōu)化數(shù)據(jù)庫(kù)性能,因?yàn)樗鼈兛梢宰屇跀?shù)據(jù)庫(kù)內(nèi)部執(zhí)行常見(jiàn)任務(wù),而不必每次都查詢數(shù)據(jù)。
5.使用Oracle自動(dòng)管理功能
Oracle數(shù)據(jù)庫(kù)提供了自動(dòng)管理功能,以自動(dòng)管理數(shù)據(jù)庫(kù)中的系統(tǒng)資源。這些功能包括自動(dòng)存儲(chǔ)管理、自動(dòng)內(nèi)存管理和自動(dòng)I/O管理等。
自動(dòng)存儲(chǔ)管理:Oracle數(shù)據(jù)庫(kù)自動(dòng)調(diào)整數(shù)據(jù)文件大小、分配表空間并優(yōu)化表空間使用。
自動(dòng)內(nèi)存管理:Oracle數(shù)據(jù)庫(kù)自動(dòng)管理內(nèi)存分配,以提高性能和穩(wěn)定性。
自動(dòng)I/O管理:Oracle數(shù)據(jù)庫(kù)自動(dòng)重新分配I/O資源,以更大限度地提高I/O性能。
優(yōu)化Oracle數(shù)據(jù)庫(kù)的性能是重要的,因?yàn)樗梢蕴岣邞?yīng)用程序的性能和可靠性。了解Oracle數(shù)據(jù)庫(kù)架構(gòu)、使用SQL查詢優(yōu)化器、使用SQL監(jiān)控工具、使用存儲(chǔ)過(guò)程和觸發(fā)器以及使用Oracle自動(dòng)管理功能等技巧可以幫助您優(yōu)化數(shù)據(jù)庫(kù)性能。
相關(guān)問(wèn)題拓展閱讀:
- 如何設(shè)置使oracle10g性能更優(yōu) 性能調(diào)優(yōu) 步驟
- oracle 除了awr還有什么性能報(bào)告
如何設(shè)置使oracle10g性能更優(yōu) 性能調(diào)優(yōu) 步驟
一、磁盤(pán)方面調(diào)優(yōu)
1. 規(guī)范磁盤(pán)陣列
RAID 10比RAID5更適用于OLTP系統(tǒng),RAID10先鏡像磁盤(pán),再對(duì)其進(jìn)行分段,由于對(duì)數(shù)據(jù)州激的小規(guī)模訪問(wèn)會(huì)比較頻繁,所以對(duì)OLTP適用。而RAID5,優(yōu)勢(shì)在于能夠充分利用磁盤(pán)空間,并且減少陣列的總成本。但是由于陣列發(fā)出一個(gè)寫(xiě)入請(qǐng)求時(shí),必須改變磁盤(pán)上已修改的塊,需要從磁盤(pán)上讀取“奇偶校驗(yàn)”塊,并且使用已修改的塊計(jì)算新的奇偶校驗(yàn)塊,然后把數(shù)據(jù)寫(xiě)入磁盤(pán),且會(huì)限制吞吐量。對(duì)性能有所影響,RAID5適用于OLAP系統(tǒng)。
2. 數(shù)據(jù)文件分布
分離下面的東西,避免磁盤(pán)競(jìng)爭(zhēng)
? SYSTEM表空間
? TEMPORARY表空間
? UNDO表空間
? 聯(lián)機(jī)重做日志(放在最快的磁盤(pán)上)
? 操作系統(tǒng)磁盤(pán)
? ORACLE安裝目錄
? 經(jīng)常被訪問(wèn)的數(shù)據(jù)文件
? 索引表空間
? 歸伏大檔區(qū)域(應(yīng)該總是與將要恢復(fù)的數(shù)據(jù)分離)
例:
2 /: System
2 /u01: Oracle Software
2 /u02: Temporary tablespace, Control file1
2 /u03: Undo Segments, Control file2
2 /u04: Redo logs, Archive logs, Control file4
2 /u05: System, SYSAUX tablespaces
2 /u06: Data1 ,control file3
2 /u07: Index tablespace
2 /u08: Data2
通過(guò)下列語(yǔ)句查詢確定IO問(wèn)題
select name ,phyrds,phywrts,readtim,writetim
from v$filestat a,v$datafile b
where a.file#=b.file# order by readtim desc;
3. 增大日志文件
u 增大日志文件的大小,從而增加處理大型INSERT,DELETE,UPDATE操作的比例
查詢?nèi)罩疚募顟B(tài)
select a.member,b.* from v$logfile a,v$log b where a.GROUP#=b.GROUP#
查詢?nèi)罩厩袚Q時(shí)間
select b.RECID,to_char(b.FIRST_TIME,’yyyy-mm-dd hh24:mi:ss’) start_time,a.RECID,to_char(a.FIRST_TIME,’yyyy-mm-dd hh24:mi:ss’) end_time,round(((a.FIRST_TIME-b.FIRST_TIME)*25)*60,2) minutes
from v$log_history a ,v$log_history b
where a.RECID=b.RECID+1
order by a.FIRST_TIME desc
增大日志文件大小,以及對(duì)每組增加日志文件(一個(gè)主文件、一個(gè)多路利用文件)
u 增大LOG_CHECKPOINT_INTERVAL參數(shù),現(xiàn)已不提倡使用它
如果低于每半小時(shí)切換一次日志,就增大聯(lián)機(jī)重做日志大小。如果處理大型批處理任務(wù)時(shí)頻繁進(jìn)行切換,就增大聯(lián)機(jī)重做日志數(shù)目。
alter database add logfile member ‘/log.ora’ to group 1;
alter database drop logfile member ‘/log.ora’;
4. UNDO表空間
修改三個(gè)初始參數(shù):
UNDO_MANAGEMENT=AUTO
UNDO_TABLESPACE=CLOUDSEA_UNDO
UNDO_RETENTION=
5. 不要在系統(tǒng)表空間中執(zhí)行排序
二、初始化參數(shù)調(diào)優(yōu)
32位的尋址更大支持應(yīng)該是2的32次方,就是4G大小。但實(shí)際中32位系統(tǒng)(XP,windows2023等MS32位系統(tǒng), ubuntu等linux32 位系統(tǒng))要能利冊(cè)廳襪用4G內(nèi)存,都是采用內(nèi)存重映射技術(shù)。需要主板及系統(tǒng)的支持。如果關(guān)閉主板BIOS的重映射功能,系統(tǒng)將不能利用4G內(nèi)存,可能只達(dá)3.5G.而在windows下看到的一般為3.25G。所以SGA設(shè)置為內(nèi)存的40%,但不能超過(guò)3.25G
1. 重要初始化參數(shù)
l SGA_MAX_SIZE
l SGA_TARGET
l PGA_AGGREGATE_TARGET
l DB_CACHE_SIZE
l SHARED_POOL_SIZE
2. 調(diào)整DB_CACHE_SIZE來(lái)提高性能
它設(shè)定了用來(lái)存儲(chǔ)和處理內(nèi)存中數(shù)據(jù)的SGA區(qū)域大小,從內(nèi)存中取數(shù)據(jù)比磁盤(pán)快10000倍以上
根據(jù)以下查詢出數(shù)據(jù)緩存命中率
select sum(decode(name,’physical reads’,value,0)) phys,
sum(decode(name,’db block gets’,value,0)) gets,
sum(decode(name,’consistent gets’,value,0)) con_gets,
(1- (sum(decode(name,’physical reads’,value,0))/(sum(decode(name,’db block gets’,value,0))+sum(decode(name,’consistent gets’,value,0)) ) ))*100 Hitratio
from v$sysstat;
一個(gè)事務(wù)處理程序應(yīng)該保證得到95%以上的命中率,命中率從90%提高到98%可能會(huì)提高500%的性能,ORACLE正在通過(guò)CPU或服務(wù)時(shí)間與等待時(shí)間來(lái)分析系統(tǒng)性能,不太重視命中率,不過(guò)現(xiàn)在的庫(kù)緩存和字典緩存仍將命中率作為基本的調(diào)整方法。
在調(diào)整DB_CACHE_SIZE時(shí)使用V$DB_CACHE_ADVICE
select size_for_estimate, estd_physical_read_factor, estd_physical_reads
from v$db_cache_advice
where name = ‘DEFAULT’;
如果查詢的命中率過(guò)低,說(shuō)明缺少索引或者索引受到限制,通過(guò)V$SQLAREA視圖查詢執(zhí)行緩慢的SQL
3. 設(shè)定DB_BLOCK_SIZE來(lái)反映數(shù)據(jù)讀取量大小
OLTP一般8K
OLAP一般16K或者32K
4. 調(diào)整SHARED_POOL_SIZE以優(yōu)化性能
正確地調(diào)整此參數(shù)可以同等可能地共享SQL語(yǔ)句,使得在內(nèi)存中便能找到使用過(guò)的SQL語(yǔ)句。為了減少硬解析次數(shù),優(yōu)化對(duì)共享SQL區(qū)域的使用,需盡量使用存儲(chǔ)過(guò)程、使用綁定變量
保證數(shù)據(jù)字典緩存命中率在95%以上
select ((1- sum(getmisses)/(sum(gets)+sum(getmisses)))*100) hitratio
from v$rowcache
where gets+getmisses 0;
如果命中率小于 99%,就可以考慮增加shared pool 以提高library cache 的命中率
SELECT SUM(PINS) “EXECUTIONS”,SUM(RELOADS) “CACHE MISSES WHILE EXECUTING”,1 – SUM(RELOADS)/SUM(PINS)
FROM V$LIBRARYCACHE;
通常規(guī)則是把它定為DB_CACHE_SIZE大小的50%-150%,在使用了大量存儲(chǔ)過(guò)程或程序包,但只有有限內(nèi)存的系統(tǒng)里,最后分配為150%。在沒(méi)有使用存儲(chǔ)過(guò)程但大量分配內(nèi)存給DB_CACHE_SIZE的系統(tǒng)里,這個(gè)參數(shù)應(yīng)該為10%-20%
5. 調(diào)整PGA_AGGREGATE_TARGET以優(yōu)化對(duì)內(nèi)存的應(yīng)用
u OLTP :totalmemory*80%*20%
u DSS: totalmemory*80%*50%
6.個(gè)重要初始化參數(shù)
2 DB_CACHE_SIZE:分配給數(shù)據(jù)緩存的初始化內(nèi)存
2 SGA_TARGET:使用了自動(dòng)內(nèi)存管理,則設(shè)置此參數(shù)。設(shè)置為0可禁用它
2 PGA_AGGREGATE_TARGET:所有用戶PGA軟內(nèi)存更大值
2 SHARED_POOL_SIZE:分配給數(shù)據(jù)字典、SQL和PL/SQL的內(nèi)存
2 SGA_MAX_SIZE:SGA可動(dòng)態(tài)增長(zhǎng)的更大內(nèi)存
2 OPTIMIZER_MODE:
2 CURSOR_SHARING:把字面SQL轉(zhuǎn)換成帶綁定變更的SQL,可減少硬解析開(kāi)銷
2 OPTIMIZER_INDEX_COST_ADJ:索引掃描成本和全表掃描成本進(jìn)行調(diào)整,設(shè)定在1-10間會(huì)強(qiáng)制頻繁地使用索引,保證索引可用性
2 QUERY_REWRITE_ENABLED:用于啟用具體化視圖和基于函數(shù)的索引功能
2 DB_FILE_MULTIBLOCK_READ_COUNT:對(duì)于全表掃描,為了更有效執(zhí)行IO,此參數(shù)可在一次IO中讀取多個(gè)塊
2 LOG_BUFFER:為內(nèi)存中沒(méi)有提交的事務(wù)分配緩沖區(qū)(非動(dòng)態(tài)參數(shù))
2 DB_KEEP_CACHE_SIZE:分配給KEEP池或者額外數(shù)據(jù)緩存的內(nèi)存
2 DB_RECYCLE_CACHE_SIZE:
2 DBWR_IO_SLAVES:如果沒(méi)有異步IO,參數(shù)等同于DB_WRITER_PROCESSES模擬異步IO而分配的從SGA到磁盤(pán)的寫(xiě)入器數(shù)。如果有異步IO,則使用DB_WRITER_PROCESSES設(shè)置多個(gè)寫(xiě)程序,在DBWR期間更快地寫(xiě)出臟塊
2 LARGE_POOL_SIZE:分配給大型PLSQL或其他一些很少使用的ORACLE選項(xiàng)LARGET池的總塊數(shù)
2 STATISTICS_LEVEL:?jiǎn)⒂妙檰?wèn)信息,并可選擇提供更多OS統(tǒng)計(jì)信息來(lái)改進(jìn)優(yōu)化器決策。默認(rèn):TYPICAL
2 JAVA_POOL_SIZE:為JVM使用的JAVA存儲(chǔ)過(guò)程所分配的內(nèi)存
2 JAVA_MAX_SESSIONSPACE_SIZE:跟蹤JAVA類的用戶會(huì)話狀態(tài)所用內(nèi)存上限
2 MAX_SHARED_SERVERS:當(dāng)使用共享服務(wù)器時(shí)的共享服務(wù)器上限
2 WORKAREA_SIZE_POLICY:?jiǎn)⒂肞GA大小自動(dòng)管理
2 FAST_START_MTTR_TARGET:完成一次崩潰恢復(fù)的大概時(shí)間/S
2 LOG_CHECKPOINT_INTERVAL:檢查點(diǎn)頻率
2 OPEN_CURSORS:指定了保存用戶語(yǔ)句的專用區(qū)域大小,如此設(shè)置過(guò)高會(huì)導(dǎo)致ORA-4031
2 DB_BLOCK_SIZE:數(shù)據(jù)庫(kù)默認(rèn)塊大小
2 OPTIMIZER_DYNAMIC_SAMPLING:控制動(dòng)態(tài)抽樣查詢讀取的塊數(shù)量,對(duì)正在使用全局臨時(shí)表的系統(tǒng)非常有用
三、SQL調(diào)優(yōu)1. 使用提示
1. 改變執(zhí)行路徑
通過(guò)OPTIMIZER_MODE參數(shù)指定優(yōu)化器使用方法,默認(rèn)ALL_ROWS
? ALL_ROWS 可得更佳吞吐量執(zhí)行查詢所有行
? FIRST_ROWS(n) 可使優(yōu)化器最快檢索出之一行:
select /*+ FIRST_ROWS(1) */ store_id,… from tbl_store
1. 使用訪問(wèn)方法提示
允許開(kāi)發(fā)人員改變?cè)L問(wèn)的實(shí)際查詢方式,經(jīng)常使用INDEX提示
? CLUSTER 強(qiáng)制使用集群
? FULL
? HASH
? INDEX 語(yǔ)法:/*+ INDEX (TABLE INDEX1,INDEX2….) */ COLUMN 1,….
當(dāng)不指定任何INDEX時(shí),優(yōu)化器會(huì)選擇更佳的索引
SELECT /*+ INDEX */ STORE_ID FROM TBL_STORE
? INDEX_ASC 8I開(kāi)始默認(rèn)是升序,所以與INDEX同效
? INDEX_DESC
? INDEX_COMBINE 用來(lái)指定多個(gè)位圖索引,而不是選擇其中更好的索引
? INDEX_JOIN 只需訪問(wèn)這些索引,節(jié)省了重新檢索表的時(shí)間
? INDEX_FFS 執(zhí)行一次索引的快速全局掃描,只處理索引,不訪問(wèn)具體表
? INDEX_SS
? INDEX_SSX_ASC
? INDEX_SS_DESC
? NO_INDEX
? NO_INDEX_FFS
? NO_INDEX_SS
1. 使用查詢轉(zhuǎn)換提示
對(duì)于數(shù)據(jù)倉(cāng)庫(kù)非常有幫助
? FACT
? MERGE
? NO_EXPAND 語(yǔ)法:/*+ NO_EXPAND */ column1,…
保證OR組合起的IN列表不會(huì)陷入困境,/*+ FIRST_ROWS NO_EXPAND */
? NO_FACT
? NO_MERGE
? NO_QUERY_TRANSFORMATION
? NO_REWRITE
? NO_STAR_TRANSFORMATION
? NO_UNSET
? REWRITE
? STAR_TRANSFORMATION
? UNSET
? USE_CONCAT
1. 使用連接操作提示
顯示如何將連接表中的數(shù)據(jù)合并在一起,可用兩提示直接影響連接順序。LEADING指定連接順序首先使用的表,ORDERED告訴優(yōu)化器基于FROM子句中的表順序連接這些表,并使用之一個(gè)表作為驅(qū)動(dòng)表(最行訪問(wèn)的表)
ORDERED語(yǔ)法:/*+ ORDERED */ column 1,….
訪問(wèn)表順序根據(jù)FROM后的表順序來(lái)
LEADING語(yǔ)法:/*+ LEADING(TABLE1) */ column 1,….
類似于ORDER,指定驅(qū)動(dòng)表
? NO_USE_HASH
? NO_USE_MERGE
? NO_USE_NL
? USE_HASH前提足夠的HASH_AREA_SIZE或PGA_AGGREGATE_TARGET
通??梢詾檩^大的結(jié)果集提供更佳的響應(yīng)時(shí)間
? USE_MERGE
? USE_NL 通??梢砸宰羁焖俣确祷匾粋€(gè)行
? USE_NL_WITH_INDEX
1. 使用并行執(zhí)行
? NO_PARALLEL
? NO_PARALLEL_INDEX
? PARALLEL
? PARALLEL_INDEX
? PQ_DISTRIBUTE
1. 其他提示
? APPEND 不會(huì)檢查當(dāng)前所用塊中是否有剩余空間,而直接插入到表中,會(huì)直接將數(shù)據(jù)添加到新的塊中。
? CACHE 會(huì)將全表掃描全部緩存到內(nèi)存中,這樣可直接在內(nèi)存中找到數(shù)據(jù),不用在磁盤(pán)上查詢
? CURSOR_SHARING_EXACT
? DRIVING_SITE
? DYNAMIC_SAMPLING
? MODEL_MIN_ANASIS
? NOAPPEND
? NOCACHE
? NO_PUSH_PRED
? NO_PUSH_SUBQ
? NO_PX_JOIN_FILTER
? PUSH_PRED
? PUSH_SUBQ 強(qiáng)制先執(zhí)行子查詢,當(dāng)子查詢很快返回少量行時(shí),這些行可以用于限制外部查詢返回行數(shù),可極大地提高性能
例:select /*+PUSH_SUBQ */ emp.empno,emp.ename
From emp,orders
where emp.deptno=(select deptno from dept where loc=’1’)
? PX_JOIN_FILTER
? QB_NAME
2. 調(diào)整查詢
2. 在V$SQLAREA中選出最占用資源的查詢
HASH_VALUE:SQL語(yǔ)句的Hash值。
ADDRESS:SQL語(yǔ)句在SGA中的地址。
PARSING_USER_ID:為語(yǔ)句解析之一條CURSOR的用戶
VERSION_COUNT:語(yǔ)句cursor的數(shù)量
KEPT_VERSIONS:
SHARABLE_MEMORY:cursor使用的共享內(nèi)存總數(shù)
PERSISTENT_MEMORY:cursor使用的常駐內(nèi)存總數(shù)
RUNTIME_MEMORY:cursor使用的運(yùn)行時(shí)內(nèi)存總數(shù)。
SQL_TEXT:SQL語(yǔ)句的文本(更大只能保存該語(yǔ)句的前1000個(gè)字符)。
MODULE,ACTION:用了DBMS_APPLICATION_INFO時(shí)session解析之一條cursor時(shí)信息
SORTS: 語(yǔ)句的排序數(shù)
CPU_TIME: 語(yǔ)句被解析和執(zhí)行的CPU時(shí)間
ELAPSED_TIME: 語(yǔ)句被解析和執(zhí)行的共用時(shí)間
PARSE_CALLS: 語(yǔ)句的解析調(diào)用(軟、硬)次數(shù)
EXECUTIONS: 語(yǔ)句的執(zhí)行次數(shù)
INVALIDATIONS: 語(yǔ)句的cursor失效次數(shù)
LOADS: 語(yǔ)句載入(載出)數(shù)量
ROWS_PROCESSED: 語(yǔ)句返回的列總數(shù)
select b.username,a.DISK_READS,a.EXECUTIONS,a.DISK_READS/decode(a.EXECUTIONS,0,1,a.EXECUTIONS) rds_exec_ratio,a.SQL_TEXT
from v$sqlarea a ,dba_users b
where a.PARSING_USER_ID=b.user_id and a.DISK_READS>100 order by a.DISK_READS desc;
2. 在V$SQL中選出最占用資源的查詢
與V$SQLAREA類似
select * from
(select sql_text,rank() over (order by buffer_gets desc) as rank_buffers,to_char(100*ratio_to_report(buffer_gets) over (),’999.99′) pct_bufgets from v$sql)
where rank_buffers
2. 確定何時(shí)使用索引
2 當(dāng)查詢條件只需要返回很少的行(受限列)時(shí),則需要建立索引,不同的版本中這個(gè)返回要求不同
V5:20% V7:7% V8i,V9i:4% V10g: 5%
查看表上的索引
select a.table_name,a.index_name,a.column_name,a.column_position,a.table_owner
from dba_ind_columns a
where a.table_owner=’CLOUDSEA’
2 修正差的索引,可使用提示來(lái)限制很差的索引,如INDEX,F(xiàn)ULL提示
2 在SELECT 和WHERE中的列使用索引
如: select name from tbl where no=?
建立索引:create index test on tbl(name,no) tablespace cloudsea_index storage(….)
對(duì)于系統(tǒng)中很關(guān)鍵的查詢,可以考慮建立此類連接索引
2 在一個(gè)表中有多個(gè)索引時(shí)可能出現(xiàn)麻煩,使用提示INDEX指定使用索引
2 使用索引合并,使用提示INDEX_JOIN
2 基于函數(shù)索引,由于使用了函數(shù)造成查詢很慢.必須基于成本的優(yōu)化模式,參數(shù):
QUERY_REWRITE_ENALED=TRUE
QUERY_REWRITE_INTEGRITY=TRUSTED (OR ENFORCED)
create index test on sum(test);
2. 在內(nèi)存中緩存表
將常用的相對(duì)小的表緩存到內(nèi)存中,但注意會(huì)影響到嵌套循環(huán)連接上的驅(qū)動(dòng)表
alter table tablename cache;
2.使用EXISTS 與嵌套子查詢 代替IN
SELECT …FROM EMP WHERE DEPT_NO NOT IN (SELECT DEPT_NO FROM DEPT WHERE DEPT_CAT=’A’);
(方法一: 高效)
SELECT ….FROM EMP A,DEPT B WHERE A.DEPT_NO = B.DEPT(+) AND B.DEPT_NO IS NULL AND B.DEPT_CAT(+) = ‘A’
(方法二: 更高效)
SELECT ….FROM EMP E WHERE NOT EXISTS (SELECT ‘X’ FROM DEPT D WHERE D.DEPT_NO = E.DEPT_NO AND DEPT_CAT = ‘A’);
四、使用STATSPACK和AWR報(bào)表調(diào)整等待和閂鎖
1.GR2里的腳本
在$ORACLE_HOME/RDBMS/ADMIN下
Spcreate.sql 通過(guò)調(diào)用spcusr.sql spctab.sql 和spcpkg.sql創(chuàng)建STATSPACK環(huán)境,使用SYSDBA運(yùn)行它
Spdrop.sql 調(diào)用sptab.sql和spdusr.sql刪除整個(gè)STATSPACK環(huán)境,使用SYSDBA運(yùn)行它
Spreport.sql 這是生成報(bào)表的主要腳本,由PERFSTAT用戶運(yùn)行
Sprepins.sql 為指定的數(shù)據(jù)庫(kù)和實(shí)例生成實(shí)例報(bào)表
Sprepsql.sql 為指定的SQL散列值生成SQL報(bào)表
Sprsqins.sql 為指定的數(shù)據(jù)庫(kù)和實(shí)例生成SQL報(bào)表
Spauto.sql 使用DBMS_JOB自動(dòng)進(jìn)行統(tǒng)計(jì)數(shù)據(jù)收集(照相)
Sprepcon.sql 配置SQLPLUS變量來(lái)設(shè)置像閾值這樣的內(nèi)容的配置文件
Spurge.sql 刪除給定數(shù)據(jù)庫(kù)實(shí)例一定范圍內(nèi)的快照ID,不刪除基線快照
Sptrunc.sql 截短STATSPACK表里所有性能數(shù)據(jù)
五、執(zhí)行快速系統(tǒng)檢查1. 緩沖區(qū)命中率
查詢緩沖區(qū)命中率
select (1 – (sum(decode(name, ‘physical reads’,value,0)) /
(sum(decode(name, ‘db block gets’,value,0)) +
sum(decode(name, ‘consistent gets’,value,0))))) * 100 “Hit Ratio”
from v$sysstat;
如果有絕對(duì)的步驟,那么還需要dba么?
每個(gè)數(shù)據(jù)庫(kù)根據(jù)服務(wù)器性能,存儲(chǔ)性能,處理器性能,網(wǎng)絡(luò)環(huán)境,數(shù)旅襲世據(jù)禪告量,查詢量等等的拆肢不同,都會(huì)有所差異。所以才需要dba,如果真的有這么一個(gè)方法,1,2,3,4的去做,那么可能就 不會(huì)有dba這個(gè)職位了。
oracle 除了awr還有什么性能報(bào)告
Oracle性能分析入門(mén)學(xué)習(xí)中,遇到Oracle數(shù)據(jù)庫(kù)的性能問(wèn)題,一般首要的步驟告臘胡就是導(dǎo)出AWR的分析報(bào)告,AWR是10g中新引入的一個(gè)工具,在這
之前一般是利用statspack。要導(dǎo)出AWR報(bào)告,只要利用Oracle的一個(gè)腳本即可以完成,下面是我利用script錄制的一段導(dǎo)出AWR
report的過(guò)程。
首先進(jìn)入$ORACLE_HOME/rdbms/admin目錄,在sqlplus下襪攔運(yùn)行@awrrpt腳本,按照提示一步一步就可以達(dá)成,導(dǎo)出的格式有兩種,txt格式和html格式。
在OTN上,有一個(gè)DBA新feature系列,第六周就是專門(mén)講的這個(gè)feature,大家可以去那里了解一下(中文的)
Script started on Sun 27 Jan:47:15 PM PST
$ cd $ORACLE_HOME/rdbms/admin
$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.4.0 – Production on Sun Jan 27 20:47:
Copyright (c) 1982, 2023, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 – 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
SQL> @awrrpt
Current Instance
~~~~~~~~~~~~~~~~
DB Id DB Name Inst Num Instance
———– ———— ——– ————
ORCLDB 1 orcldb1
Specify the Report Type
~~~~~~~~~~~~~~~~~~~~~~~
Would you like an HTML report, or a plain text report?
Enter ‘html’局盯 for an HTML report, or ‘text’ for plain text
Defaults to ‘html’
Enter value for report_type: text
Type Specified: text
Instances in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DB Id Inst Num DB Name Instance Host
———— ——– ———— ———— ————
*ORCLDB orcldb1 sun880-1
ORCLDB orcldb4 sun880-4
ORCLDB orcldb2 sun880-2
ORCLDB orcldb3 sun880-3
Usingfor database Id
Using 1 for instance number
Specify the number of days of snapshots to choose from
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Entering the number of days (n) will result in the most recent
(n) days of snapshots being listed. Pressing without
specifying a number lists all completed snapshots.
Enter value for num_days: 1
Listing the last day’s Completed Snapshots
Snap
Instance DB Name Snap Id Snap Started Level
———— ———— ——— —————— —–
orcldb1 ORCLDBJan:55 1
67 27 Jan:55 1
68 27 Jan:55 1
69 27 Jan:55 1
70 27 Jan:55 1
71 27 Jan:55 1
72 27 Jan:55 1
73 27 Jan:55 1
74 27 Jan:55 1
75 27 Jan:55 1
76 27 Jan:55 1
77 27 Jan:55 1
78 27 Jan:55 1
83 27 Jan:54 1
84 27 Jan:55 1
85 27 Jan:55 1
Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enter value for begin_snap: 70
Begin Snapshot Id specified: 70
Enter value for end_snap: 71
End Snapshot Id specified: 71
Specify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is awrrpt_1_70_71.txt. To use this name,
press to continue, otherwise enter an alternative.
Enter value for report_name:
Using the report name awrrpt_1_70_71.txt
WORKLOAD REPOSITORY report for
DB Name DB Id Instance Inst Num Release RAC Host
———— ———– ———— ——– ———– — ————
ORCLDBorcldb1 1 10.2.0.4.0 YES sun880-1
Snap Id Snap Time Sessions Curs/Sess
——— ——————- ——– ———
Begin Snap:Jan-08 04:55:.2
End Snap:Jan-08 05:55:.5
Elapsed: 60.23 (mins)
DB Time: 5,814.07 (mins)
Cache Sizes
~~~~~~~~~~~ Begin End
//此處有刪減
————————————————————-
End of Report
Report written to awrrpt_1_70_71.txt
SQL> quit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 – 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
$ exit
oracle數(shù)據(jù)庫(kù)性能分析的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于oracle數(shù)據(jù)庫(kù)性能分析,深入探究Oracle數(shù)據(jù)庫(kù)性能分析技巧,如何設(shè)置使oracle10g性能更優(yōu) 性能調(diào)優(yōu) 步驟,oracle 除了awr還有什么性能報(bào)告的信息別忘了在本站進(jìn)行查找喔。
成都網(wǎng)站設(shè)計(jì)制作選創(chuàng)新互聯(lián),專業(yè)網(wǎng)站建設(shè)公司。
成都創(chuàng)新互聯(lián)10余年專注成都高端網(wǎng)站建設(shè)定制開(kāi)發(fā)服務(wù),為客戶提供專業(yè)的成都網(wǎng)站制作,成都網(wǎng)頁(yè)設(shè)計(jì),成都網(wǎng)站設(shè)計(jì)服務(wù);成都創(chuàng)新互聯(lián)服務(wù)內(nèi)容包含成都網(wǎng)站建設(shè),小程序開(kāi)發(fā),營(yíng)銷網(wǎng)站建設(shè),網(wǎng)站改版,服務(wù)器托管租用等互聯(lián)網(wǎng)服務(wù)。
新聞標(biāo)題:深入探究Oracle數(shù)據(jù)庫(kù)性能分析技巧 (oracle數(shù)據(jù)庫(kù)性能分析)
文章分享:http://fisionsoft.com.cn/article/dhegccd.html


咨詢
建站咨詢
