Oracle监控之资源使用情况(四)

检查Oracle相关资源的使用情况,
  1. 检查Oracle初始化文件中相关的参数值,
  2. 检查数据库连接情况,
  3. 检查系统磁盘空间,
  4. 检查Oracle各个表空间使用情况,
  5. 检查一些扩展异常的对象,
  6. 检查system表空间内的内容,
  7. 检查对象的下一扩展与表空间的最大扩展值,
总共七个部分

1.检查Oracle初始化文件中相关的参数值

SQL>  select * from v$resource_limit;
 
RESOURCE_NAME CURRENT_UTILIZATION MAX_UTILIZATION INITIAL_ALLOCATION  LIMIT_VALUE
------------- ----------------- ----------------- ------------------   -------
processes    276             285        800                   800
sessions      74              96       1240                 1240
enqueue_locks 113             219      15760                15760
enqueue_resources 33             119       5676            UNLIMITED

INITIAL_ALLOCATION 初始配置
CURRENT_UTILIZATION:   表示当前使用大小
MAX_UTILIZATION :      系统曾经达到最大使用数
limit_value 如果max_utilization

2.检查数据库连接情况

SQL>  select sid,serial#,username,program,machine,status from v$session;

       SID    SERIAL# USERNAME   PROGRAM                        MACHINE    STATUS
---------- ---------- ---------- ------------------------------ ---------- --------
         1          3            oracle@TEST (RECO)             TEST       ACTIVE
         2          1            oracle@TEST (PMON)             TEST       ACTIVE
         3          1            oracle@TEST (VKTM)             TEST       ACTIVE
         4          1            oracle@TEST (DIAG)             TEST       ACTIVE
         5          1            oracle@TEST (DBRM)             TEST       ACTIVE
         6          1            oracle@TEST (PSP0)             TEST       ACTIVE
         7          1            oracle@TEST (MMAN)             TEST       ACTIVE
         8          1            oracle@TEST (DBW0)             TEST       ACTIVE
         9          1            oracle@TEST (DIA0)             TEST       ACTIVE
        10          1            oracle@TEST (CKPT)             TEST       ACTIVE
        11          1            oracle@TEST (SMON)             TEST       ACTIVE
        12          1            oracle@TEST (LGWR)             TEST       ACTIVE
        13          1            oracle@TEST (GEN0)             TEST       ACTIVE
        14          1            oracle@TEST (MMNL)             TEST       ACTIVE
        15          1            oracle@TEST (MMON)             TEST       ACTIVE
        18          3            oracle@TEST (ARC3)             TEST       ACTIVE
        20          3            oracle@TEST (ARC0)             TEST       ACTIVE
        21          2            oracle@TEST (ARC2)             TEST       ACTIVE
        22          1            oracle@TEST (ARC1)             TEST       ACTIVE
        25          1            oracle@TEST (QMNC)             TEST       ACTIVE
        29        317            oracle@TEST (W000)             TEST       ACTIVE
        30          3            oracle@TEST (Q002)             TEST       ACTIVE
        32          8            oracle@TEST (SMCO)             TEST       ACTIVE
        33          4            oracle@TEST (Q000)             TEST       ACTIVE
        37          1            oracle@TEST (CJQ0)             TEST       ACTIVE
        38        735 SYS        sqlplus@TEST (TNS V1-V3)       TEST       ACTIVE


26 rows selected.
26个连接会话
SID 为会话连接时分配的编号
serial# 会会话的序列号
sid和serial# 两个组合才能唯一标识一个会话
program  标识会话连接的方式 用什么工具连接的
status 会话的状态 active 活跃的 表示会话正在执行操作
inactive  表示会话没有任何操作

如果建立了过多的连接,会消耗数据库的资源,同时,对一些“挂死”的连接可能需要手工进行清理。
如果DBA要手工断开某个会话,则执行:
(一般不建议使用这种方式去杀掉数据库的连接,这样有时候session不会断开。容易引起死连接。
建议通过sid查到操作系统的spid,使用ps –ef|grep spidno 的方式
确认spid不是ORACLE的后台进程。
使用操作系统的kill -9命令杀掉连接) 
alter system kill session 'SID,SERIAL#'; 

注意:上例中SID为1到37(USERNAME列为空)的会话,是Oracle的后台进程,不要对这些会话进行任何操作。

查找spid 要用到session和process两个表关联
SQL>  select sid,spid from v$session a,v$process b where a.paddr=b.addr;
       SID SPID
---------- ------------------------
         2 2583
         3 2585
        13 2590
         4 2593
         5 2595
         6 2597
         9 2599
         7 2601
         8 2603
        12 2605
        10 2607

3.检查系统磁盘空间
[oracle@TEST ~]$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                       54G   15G   37G  29% /
/dev/sda1              99M   12M   82M  13% /boot
tmpfs                 2.0G  1.3G  714M  65% /dev/shm
/dev/hdc              3.9G  3.9G     0 100% /mnt

4.检查Oracle各个表空间使用情况
表空间的大小在dba_data_files表中,是以数据文件的存放,所以要分组查询总和
表空间的未用空间在dba_free_space中,也要分组查询

点击(此处)折叠或打开

  1. select f.tablespace_name,a.total,f.free,round((f.free/a.total)*100) "% Free"
  2. from
  3. (select tablespace_name, sum(bytes/(1024*1024)) total from dba_data_files group by tablespace_name) a,
  4. (select tablespace_name, round(sum(bytes/(1024*1024))) free from dba_free_space group by tablespace_name) f
  5. WHERE a.tablespace_name = f.tablespace_name(+)
  6. order by "% Free";
TABLESPACE_NAME                     TOTAL       FREE     % Free
------------------------------ ---------- ---------- ----------
SYSTEM                                790          9          1
SYSAUX                                650         43          7
HSCMP_TBL_SAL                          50          4          8
HSCMP_IDX                              50          4          8
USERS                                   5          4         80
HSCMP_TBL_STK                         100         89         89
UNDOTBS1                              315        287         91
HSCMP_TBL_LOG                         100         96         96
                                      100

9 rows selected.

如果空闲率%Free 小于 10%以上(包含 10%),则注意要增加数据文件来扩展表空间而不要是用数据文件的自动扩展功
能。请不要对表空间增加过多的数据文件,增加数据文件的原则是每个数据文件大小为2G或者4G,自动扩展的最大限制
在 8G。

5.检查一些扩展异常的对象


点击(此处)折叠或打开

  1. SQL> select segment_name,segment_type,tablespace_name,(extents/max_extents)*100 percent
  2.   2 from sys.dba_segments
  3.   3 where max_extents !=0 and (extents/max_extents)*100>=95 order by percent;
no rows selected

这里没有记录返回
如果有记录返回,这些对象的扩展 (段)的大小已经到最大扩展的95% 
需要对这些对象修改存储结构参数

6.检查system表空间内的内容

没有内容是正常的,system表空间不应该放其他用户的对象
如果记录返回,则表明system表空间内存在一些非system和sys用户的对象。应该进一步检查这些对象是否与我们应用相
关。如果相关则把这些对象移到非System表空间,同时应该检查这些对象属主的缺省表空间值。

查看表中信息

SQL> select distinct  owner  from dba_tables where tablespace_name='SYSTEM' and owner !='SYS' and owner  !='SYSTEM';
OWNER
------------------------------
OUTLN

查看索引信息
SQL> select distinct  owner  from  dba_indexes where tablespace_name='SYSTEM' and owner !='SYS' and owner  !='SYSTEM';

OWNER
------------------------------
MDSYS
OUTLN
OLAPSYS
ORDDATA

SQL> select *  from dba_indexes  where tablespace_name='SYSTEM' and owner !='SYS' and owner !='SYSTEM ;
ERROR:
ORA-01756: quoted string not properly terminated  
书写有问题 少了一个‘’

7.检查对象的下一扩展与表空间的最大扩展值

点击(此处)折叠或打开

  1. select a.table_name,a.next_extent,a.tablespace_name
  2. from all_tables a,
  3. (select tablespace_name,max(bytes) as big_chunk
  4. from dba_free_space
  5. group by tablespace_name) f
  6. where f.tablespace_name=a.tablespace_name
  7. and a.next_extent>f.big_chunk
  8. union
  9. select a.index_name,a.next_extent,a.tablespace_name
  10. from all_indexes a;
  11. (select tablespace_name,max(bytes) as big_chunk
  12. from dba_free_space
  13. group by tablespace_name) f
  14. where f.tablespace_name=a.tablespace_name
  15. and a.next_extent>f.big_chunk;
如果有记录返回,则表明这些对象的下一个扩展大于该对象所属表空间的最大扩展值,需调整相应表空间的存储参 数。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31419698/viewspace-2132352/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31419698/viewspace-2132352/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值