检查Oracle相关资源的使用情况,
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中,也要分组查询
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.检查一些扩展异常的对象
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.检查对象的下一扩展与表空间的最大扩展值
如果有记录返回,则表明这些对象的下一个扩展大于该对象所属表空间的最大扩展值,需调整相应表空间的存储参
数。
- 检查Oracle初始化文件中相关的参数值,
- 检查数据库连接情况,
- 检查系统磁盘空间,
- 检查Oracle各个表空间使用情况,
- 检查一些扩展异常的对象,
- 检查system表空间内的内容,
- 检查对象的下一扩展与表空间的最大扩展值,
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中,也要分组查询
点击(此处)折叠或打开
- select f.tablespace_name,a.total,f.free,round((f.free/a.total)*100) "% Free"
- from
- (select tablespace_name, sum(bytes/(1024*1024)) total from dba_data_files group by tablespace_name) a,
- (select tablespace_name, round(sum(bytes/(1024*1024))) free from dba_free_space group by tablespace_name) f
- WHERE a.tablespace_name = f.tablespace_name(+)
- order by "% 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.检查一些扩展异常的对象
点击(此处)折叠或打开
- SQL> select segment_name,segment_type,tablespace_name,(extents/max_extents)*100 percent
- 2 from sys.dba_segments
- 3 where max_extents !=0 and (extents/max_extents)*100>=95 order by percent;
这里没有记录返回
如果有记录返回,这些对象的扩展 (段)的大小已经到最大扩展的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.检查对象的下一扩展与表空间的最大扩展值
点击(此处)折叠或打开
- select a.table_name,a.next_extent,a.tablespace_name
- from all_tables a,
- (select tablespace_name,max(bytes) as big_chunk
- from dba_free_space
- group by tablespace_name) f
- where f.tablespace_name=a.tablespace_name
- and a.next_extent>f.big_chunk
- union
- select a.index_name,a.next_extent,a.tablespace_name
- from all_indexes a;
- (select tablespace_name,max(bytes) as big_chunk
- from dba_free_space
- group by tablespace_name) f
- where f.tablespace_name=a.tablespace_name
- and a.next_extent>f.big_chunk;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31419698/viewspace-2132352/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31419698/viewspace-2132352/