avg-cpu: %user %nice %sys%iowait %idle
?
0.16 0.00 0.05 0.36 99.43
?
?
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
?
sda 3.33 13.16 50.25 94483478 360665804
?
?
avg-cpu: %user %nice %sys%iowait %idle
?
0.00 0.00 0.00 0.00 100.00
?
?
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
?
sda 0.00 0.00 0.00 0 0
?
如上所示,蓝色字体部分表示磁盘读写情况,红色字体部分为cpu IO等待情况。
?
5.4 系统负载情况:
?
#uptime
?
12:08:37 up 162 days, 23:33, 15 users, load average: 0.01, 0.15, 0.10
?
如上所示,蓝体字部分表示系统负载,后面的3个数值如果有高于2.5的时候就表明系统在超负荷运转了,并将此值记录到巡检表,视为异常。
?
5.5.查看是否有僵死进程
?
select spid from v$process where addr not in (select paddr from v$session);?
有些僵尸进程有阻塞其他业务的正常运行,定期杀掉僵尸进程。
?
5.6.检查行链接/迁移
?
select table_name, num_rows, chain_cnt
? From dba_tables
?Where owner = 'CTAIS2'
? ?And chain_cnt <> 0;?
注:含有long raw列的表有行链接是正常的,找到迁移行保存到chained_rows表中,如没有该表执行../rdbms/admin/utlchain.sql
?
analyze table tablename list chained rows;
可通过表chained_rows中table_name,head_rowid看出哪些行是迁移行
?
create table aa as select a.* from sb_zsxx a,chained_rows b where a.rowid=b.head_rowid and b.table_name ='SB_ZSXX';
delete from sb_zsxx where rowid in (select head_rowid from chained_rows where table_name = 'SB_ZSXX');
insert into sb_zsxx select * from chained_row where table_name = 'SB_ZSXX';
5.7 定期做统计分析
对于采用Oracle Cost-Based-Optimizer的系统,需要定期对数据对象的统计信息进行采集更新,使优化器可以根据准备的信息作出正确的explain plan。在以下情况更需要进行统计信息的更新:
a. 应用发生变化
b. 大规模数据迁移、历史数据迁出、其他数据的导入等
c .数据量发生变化
查看表或索引的统计信息是否需更新,如:
?
Select table_name,num_rows,last_analyzed From user_tables where table_name ='DJ_NSRXX'
select count(*) from DJ_NSRXX如num_rows和count(*)
如果行数相差很多,则该表需要更新统计信息,建议一周做一次统计信息收集,如:
?
exec sys.dbms_stats.gather_schema_stats(ownname=>'CTAIS2',cascade => TRUE,degree => 4);
5.8 检查缓冲区命中率
?
?
SELECT a.VALUE + b.VALUE logical_reads,
? ? ? ?c.VALUE phys_reads,
? ? ? ?round(100 * (1 - c.value / (a.value + b.value)), 4) hit_ratio
? FROM v$sysstat a, v$sysstat b, v$sysstat c
?WHERE a.NAME = 'db block gets'
? ?AND b.NAME = 'consistent gets'
? ?AND c.NAME = 'physical reads';
?
如果命中率低于90%则需加大
数据库参数db_cache_size。
?
5.9 检查共享池命中率
?
select sum(pinhits) / sum(pins) * 100 from v$librarycache;?
如低于95%,则需要调整应用程序使用绑定变量,或者调整
数据库参数shared pool的大小。
?
5.10 检查排序区
?
?select name,value from v$sysstat where name like '%sort%';?
如果disk/(memoty+row)的比例过高,则需要调整sort_area_size(workarea_size_policy=false)或pga_aggregate_target(workarea_size_policy=true)。
?
5.11 检查日志缓冲区
?
select name,value from v$sysstat where name in ('redo entries','redo buffer allocation retries');
如果redo buffer allocation retries/redo entries超过1%,则需要增大log_buffer。
?
?
?
回到顶部
6. 检查数据库安全性
在本节主要检查Oracle数据库的安全性,包含:检查
系统安全信息,定期修改密码,总共两个部分。
?
6.1. 检查系统安全日志信息
?
系统安全日志文件的目录在/var/log下,主要检查登录成功或失败的用户日志信息。
?
检查登录成功的日志:
?
[root@rac2 ~]# grep -i accepted /var/log/secure
?
Jan 8 08:44:43 rac2 sshd[29559]: Accepted password for root from ::ffff:10.10.10.6 port 1119 ssh2……
?
检查登录失败的日志:
?
[root@rac2 ~]# grep -i inval /var/log/secure &&grep -i failed /var/log/secure
?
Jan 9 10:30:44 rac2 sshd[3071]: Invalid user ydbuser from ::ffff:192.168.3.5
?
Jan 9 10:30:56 rac2 sshd[3071]: Failed pa