操作系统: AIX 5.3.9
Oracle: Oracle 10gR2
SAR可用于监控Unix系统性能,帮助我们分析性能瓶颈。sar工具的使用方式为”sar [选项] intervar [count]”,其中interval为统计信息采样时间,count为采样次数。
下文将说明如何使用sar获取以下性能分析数据:
整体CPU使用统计
各个CPU使用统计
内存使用情况统计
整体I/O情况
各个I/O设备情况
网络统计
常用的选项包括:
-b:报告I/O使用情况以及传输速率。(只适用于2.5及之前的内核,所以新内核有可能不支持这个选项)
-B:报告“页”使用情况
-c:报告进程创建情况
-d:报告每一个块设备的使用情况
(当你使用时,你会发现在DEV列有类似dev1-7格式的字符串,
其中1代表设备的主序号,n代表设备的从序号,
而且rd_sec/s列和wr_sec/s列的单位都是512bytes,也就是512B,也就是0.5KB)
-I:汇报中断情况
-n:汇报网络情况
-P:设定CPU
-q:汇报队列长度和负载信息
-r:汇报内存和交换区使用情况
-R:汇报内存情况
-u:汇报CPU使用情况
-v:汇报i节点、文件和其他内核表信息
-w:汇报系统上下文切换情况
-x:可以针对某个特定PID给出统计信息,
可以直接指定进程ID号;
也可以指定为SELF,这样就是检测sar进程本身;
如果设定为ALL,则表示汇报所有系统进程信息。
-X:汇报特定PID的子进程的信息
-y:设定TTY设备的信息。
案例分析:
1、系统环境
[root@aix211 /]#lspv
hdisk0 00040f8aaa29d28e rootvg active
hdisk1 000e1a6ce663b4af asmvg active
[root@aix211 /]#lsvg -l asmvg
asmvg:
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
lv_asm1 jfs 64 64 1 open/syncd N/A
lv_asm2 jfs 64 64 1 open/syncd N/A
lv_asm3 jfs 64 64 1 open/syncd N/A
lv_asm4 jfs 64 64 1 open/syncd N/A
SQL> set linesize 120
SQL> select group_number,name,state from v$asm_diskgroup;
GROUP_NUMBER NAME STATE
------------ ------------------------------ -----------
1 DG1 MOUNTED
2 RCY1 MOUNTED
SQL> select GROUP_NUMBER,DISK_NUMBER,STATE,NAME,PATH from v$asm_disk;
GROUP_NUMBER DISK_NUMBER STATE NAME PATH
------------ ----------- -------- ------------------------------ ------------------------
1 0 NORMAL DG1_0000 /dev/rlv_asm1
1 1 NORMAL DG1_0001 /dev/rlv_asm2
2 0 NORMAL RCY1_0000 /dev/rlv_asm3
2 1 NORMAL RCY1_0001 /dev/rlv_asm4
在hdisk1磁盘上建立ASMVG磁盘组,并建立逻辑卷;在逻辑卷的基础上,建立ASM disk;
2、数据库环境
SQL> set linesize 120
SQL> select file_id,file_name,tablespace_name from dba_data_files
FILE_ID FILE_NAME TABLESPACE_NAME
---------- -------------------------------------------------- ---------------------------
6 +DG1/prod/datafile/tbs2.265.853498689 TBS2
4 +DG1/prod/datafile/users.261.848857443 USERS
3 +DG1/prod/datafile/sysaux.258.848857287 SYSAUX
2 +DG1/prod/datafile/undotbs1.260.848857407 UNDOTBS1
1 +DG1/prod/datafile/system.257.848857161 SYSTEM
5 +DG1/prod/datafile/example.259.848857363 EXAMPLE
SQL> select file_id,file_name,tablespace_name from dba_temp_files;
FILE_ID FILE_NAME TABLESPACE_NAME
---------- -------------------------------------------------- ---------------------------
2 +DG1/prod/tempfile/temp.262.848858041 TEMP
SQL> col member for a50
SQL> select group#,member from v$logfile order by 1;
GROUP# MEMBER
---------- --------------------------------------------------
5 +DG1/prod/onlinelog/group_5.263.848858213
5 +RCY1/prod/onlinelog/group_5.256.848858217
6 +DG1/prod/onlinelog/group_6.264.848858253
6 +RCY1/prod/onlinelog/group_6.257.848858259
SQL> show parameter log
123
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_1 string location=/arch/arch_prod
2、案例(执行数据插入)
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
DEPT TABLE
EMP TABLE
BONUS TABLE
SALGRADE TABLE
EMP1 TABLE
DEPT1 TABLE
6 rows selected.
SQL> create table t1 (id int);
Table created.
SQL> begin
2 for i in 1..100000 loop
3 execute immediate 'insert into t1 values ('||i||')';
4 end loop;
5 end;
6 /
PL/SQL procedure successfully completed.