1,檢測復原段的爭用
select sum(gets),sum(waits),sum(waits)/sum(gets) from v$rollstat;
SUM(waits)值應小於SUM(gets)值的1%
回卷段的竟爭會降低系統的效能。
GETS代表回卷段被訪問的次數
WAITS代表進程等待回卷段中哪個進程的次數
如果GETS與WAITS的比大於2%表示存在竟爭問題
select rn.name,rs.gets 被訪問次數,rs.waits 等待回退段塊的次數,(rs.waits/rs.gets)*100 命中率 from v$rollstat rs,v$rollname rn
2,監控資料表空間的 I/O 比例
select df.tablespace_name name,df.file_name "file",f.phyrds pyr,f.phyblkrd pbr,f.phywrts pyw, f.phyblkwrt pbw
from v$filestat f, dba_data_files df where f.file# = df.file_id order by df.tablespace_name;
--監控資料表空間的 I/O讀總數
select sum(f.phyrds) pyr from v$filestat f, dba_data_files df where f.file# = df.file_id;
--監控資料表空間的 I/O塊讀總數
select sum(f.phyblkrd) pbr from v$filestat f, dba_data_files df where f.file# = df.file_id;
--監控資料表空間的 I/O寫總數
select sum(f.phywrts) pyw from v$filestat f, dba_data_files df where f.file# = df.file_id;
--監控資料表空間的 I/O塊寫總數
select sum(f.phyblkwrt) pbw from v$filestat f, dba_data_files df where f.file# = df.file_id;
物理讀數量(V$filestat.phyrds)
物理寫數量(V$filestat.phywrites)
PHYRDS : Number of physical reads done
PHYBLKRD: Number of physical blocks read
3,監控檔案系統的 I/O 比例
select substr(a.file#,1,2) "#", substr(a.name,1,30) "Name", a.status, a.bytes, b.phyrds, b.phywrts
from v$datafile a, v$filestat b where a.file# = b.file#;
=========================================================
為了加深理解,簡單的做了個測試
代碼:--------------------------------------------------------------------------------
SQL> create table toms (str varchar2(64));
表已建立。
SQL> insert into toms values('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
已建立 1 行。
SQL> commit;
提交完成。
SQL> select * from toms;
STR
----------------------------------------------------------------
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
SQL> insert into toms select * from toms;
已建立 1 行。
SQL> /
已建立2行。
SQL> /
已建立4行。
SQL> /
已建立8行。
SQL> /
已建立16行。
SQL> /
已建立32行。
SQL> /
.......
SQL> /
已建立8192行。
SQL> commit;
提交完成。
SQL> select count(*) from toms;
COUNT(*)
----------
16384
SQL> shutdown immediate;
資料庫已經關閉。
已經卸載資料庫。
ORACLE 常式已經關閉。
SQL> startup
ORACLE 常式已經啟動。
Total System Global Area 89201304 bytes
Fixed Size 453272 bytes
Variable Size 67108864 bytes
Database Buffers 20971520 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL> alter system set db_file_multiblock_read_count=16;
SQL> select phyrds,phyblkrd from v$filestat where file#=8;
PHYRDS PHYBLKRD
---------- ----------
4 4
SQL> select count(*) from toms;
COUNT(*)
----------
16384
SQL>
SQL> select phyrds,phyblkrd from v$filestat where file#=8;
PHYRDS PHYBLKRD
---------- ----------
17 191
SQL> select 17-4,191-4 from dual;
17-4 191-4
---------- ----------
13 187
SQL> select 187/13 from dual;
187/13
----------
14.3846153
SQL>
SQL> select phyrds,phyblkrd from v$filestat where file#=8;
PHYRDS PHYBLKRD
---------- ----------
17 191
SQL> alter system set db_file_multiblock_read_count=64;
系統已更改。
SQL> select count(*) from toms;
COUNT(*)
----------
16384
SQL>
SQL> select phyrds,phyblkrd from v$filestat where file#=8;
PHYRDS PHYBLKRD
---------- ----------
20 377
SQL> select phyrds,phyblkrd from v$filestat where file#=8;
PHYRDS PHYBLKRD
---------- ----------
20 377
SQL> select (377-191)/3 from dual;
(377-191)/3
-----------
62
SQL> alter system set db_file_multiblock_read_count=128;
系統已更改。
SQL> select count(*) from toms;
COUNT(*)
----------
16384
SQL> select phyrds,phyblkrd from v$filestat where file#=8;
PHYRDS PHYBLKRD
---------- ----------
22 561
SQL> select (561-377)/2 from dual;
(561-377)/2
-----------
92
SQL>