Oracle9i 數據庫設計指引全集-3

3.6 系統調優知識

3.6.1.1 生成狀態報表( statspack 的使用)

使用(存放位置 @?\rdbms\admin\ )的文件生成報表用戶

@?\rdbms\admin\Spcreate.sql 建表

將 timed_statistics 設定 true

使用生成的 perfstat 用戶登錄,執行以下語句手動收集信息

Exex statspack.snap

Exec statspack.snap(I_SNAP_LEVEL=>0,I_MODEFY_PRAMETER=>TRUE) 0 級,最少 10 最大

使用下面的語句生成狀態報表

@?\rdbms\admin\Spreport.sql

其他相關文件

delete stats$snapshot ; 清原來記錄數據

@?\rdbms\admin\Saputo.sql

select job from user_jobs 取用戶作業號

exec dbms_remove( 作業號 )

timed_statistics=true 要求

@?\rdbms\admin\spdrop.sql ;

3.6.1.2 sql 追蹤

設定全部用戶跟蹤

alter system set sql_trace=true;

用戶級別跟蹤

alter session set sql_trace=true;

用戶的跟蹤文件生成在 admin\{pid}\udump\{pid} _ora_{ SPID}.trc 中 ,spid 從下面語句得到

SELECT b.name bkpr, s.username, p.spid,s.sid,s.serial# FROM v$bgprocess b, v$session s, v$process p WHERE p.addr = b.paddr(+) AND p.addr = s.paddr and s.username=user;

DBA 對特定用戶跟蹤

exec dbms_system_set_Sql_trace_in_session(sid,serial#,true)

信息從下面得到

SELECT b.name bkpr, s.username, p.spid,s.sid,s.serial#,osuser,s.program

FROM v$bgprocess b, v$session s, v$process p

WHERE p.addr = b.paddr(+)

AND p.addr = s.paddr;

/*p.spid 用於 sql_trace 時日誌編號, dbms_system.set_sql_trace_in_session(sid,erial#,true)*/

用戶的跟蹤文件生成在 admin\{pid}\udump 中

系統的跟蹤文件生成在 admin\{pid}\bdump\alert_{pid}.log

tkprof.exe 將 log 文件生成格式化文本

在 av Rd(ms) 20 以上說明表空間使用過用頻繁,考慮將表分開其他表空間上

系統變量 fast_start_mttr_target 的值要大到不產生 log 等待,當然也可通過加 log 組使其不等待

reao log 大小應爲每 30 分鐘切換一次

建議表空間的利用率不超 80%

buffer hit 要達 80% 以上爲好

3.6.1.3 內存調整

一般的內存分配原則

SGA 50% (其中 80% DATA BUFFER , 15% SHARE POOL , 5 其他)

PGA30%

OS 20%

例如: 2G 的 WINDOWS 的平臺, OS 300M , SAG 1.2G,PGA 500M

內存分配的基本單位

SGA《=128M 4M

SGA》128M  64位系統16M,32M系統8M

動態分配時總值不可大於 sga_max_size

通過 V$SGA_DYNAMIC_FREE_MEMORY 取空閒內存空間

在縮小時如果內存空間實際在應用中,CPU利用率將達100%,最後將語句出錯。

V$SGASTAT  可看實際的使用情況

Redo log buffer 一般在5M內,可通過 v$sessuon_wait 看是否等, v$sysstat

可也通過報警文件看是否等切換,方法可加組。可通過 nologging (數據庫也要設定支持 nologging )方法減少日誌文件產生量。

java_pool 沒有設定時,使用 shared_pool_size

3.6.1.3.1 shared_pool

本緩衝區用於 sql 語句, pl sql 等的對象保存

Cursor_sharing{Exact|Similar|force} 遊標共享設定

Force 方式適用 OLTP 數據庫, Exact 方式適合數據倉庫, similar 爲智能方式

hard parses 硬 SQL 語句分析,每秒要底於 100 次 , 小要加大 shared_pool

soft parse 軟 SQL 語句分析, OLTP 要達 90% 以上,小要加大 shared_pool

不建議用無命名 PL SQL 段

如果有大 PL SQL( 存儲過程 ) 對象可強制保存於內存,也可加大 SHARED_POOL_RESERVED_SIZE ,大小不可過 SHARED_POOL_SIZE 的 50% ,不然實例不能起動

3.6.1.3.2 db_cache

本緩衝區用於數據庫數據對象保存

db_cache_advice 爲 on ,可以提出通過企業管理器看到系統建議

通過 select * from v$system_event 進行系統查看。

發現存在 free buffer waits ,說明不能將 data buffer 及時寫入 data file;

可通過增加加 CPU 後,加 db_writer_processes=CPU 數改善。

也可設 disk_asynch_io 爲 true, 使用異步 IO (前提同要操作系統支持) db_writer_processes=1 時(只有一個 CPU 的情況下),也可通加大 dbwr_io_slaves 來改善。 db_writer_processes>1, 不可用本功能

調整效果排序:異步 IO>CPU>dbwr_io_slaves

Buffer Busy Waits 大說明出現 IO 衝突

Buffer Busy Waits 大 和 dbbock 大說明全表掃描多,說明數據不能讀入,可加大

db_cache_size 來改善 .

Undo block 大要加大回滾段(手動管理方式,9I默認是自動管理)

undo header 大要加大回滾段(手動管理方式,9I默認是自動管理)

db_cache 命中率 99% ,不是唯一因素,關係是不要出現等待。建議達 90% 以上。

內存使用建議:

系統可以設三個緩衝區,建表時可設定用那個緩衝區(默認在 db_cache_size )

db_cache_size    (默認區)

db_keep_cache_size (常訪問,小於 db_keep_cache_size 的 10% 的表可放於本區)

db_recycle_cache_size (一個事物完成後常時間不再使用,或兩倍大小於緩衝區)

3.6.2 排序的優化

9I 爲專用服務器時系統變量 workarea_size_policy 設定爲 auto, statistics_level 設定爲 TYPICAL 可獲取 v$pga_target_advice 中的優化建議。參數 pga_aggregate_target 值爲所有連接用戶可用排序內存。

9I 爲共享服務器時 workarea_size_policy 設定爲 menaul, sort_area_size 值爲每用戶排序內存。

如果內存不足將使用 TEMP 表空間進行排序 , 排序使用比率 disk/meme 應小於 5%

儘量少用排序 , 如果使用排序功能,儘量在字段上加索引進行優化。

SQL 分析模式 :RBO( 基於規則 ) 方案小表 ( 驅動表 ) 放在最後 , 優先使用索引 , 對 SQL 語句要求嚴格 (8I 以前的模式 );CBO (基於開銷)根據統計值進行選擇開銷最少 , 性能最優的最佳方式進行 , 但本方式 DBA( 使用 analyze table 語句 ) 要定期進行分析統計 . 系統設定通過 optimizer_mode 系統參數

說明 : 指定優化程序的行爲。如果設置爲 RULE, 就會使用基於規則的優化程序 , 除非查詢含有提示。如果設置爲 CHOOSE, 就會使用基於成本的優化程序 , 除非語句中的表不包含統計信息。 ALL_ROWS 或 FIRST_ROWS

始終使用基於成本的優化程序。

值範圍 : RULE | CHOOSE | FIRST_ROWS | ALL_ROWS

默認值 : CHOOSE

{ rule ( RBO ) |choose (自動選擇) |fist_rows| fist_rows_n|all_row }

3.6.3 統計信息

進行某表的統計分析

EXECUTE dbms_stats.gather_table_stats ('HR','EMPLOYEES');

查看結果

 



4 設計工具

統一使用 sybase power designer 設計工具,在該工具上完成物理模型的設計。所有的數據庫對象儘可能在物理模型上進行設計,而且每個物理模型都要有相應的文字描述。

所有的數據庫對象變更以數據庫物理模型爲基準。爲了避免字符敏感問題,產生的腳本以大寫字母爲標準。

 

發佈了48 篇原創文章 · 獲贊 1 · 訪問量 5065
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章