Oracle 数据库日常巡检
阅读目录
1. 检查数据库基本状况
2. 检查Oracle相关资源的使用情况
3. 检查Oracle数据库备份结果
4. 检查Oracle数据库性能
5. 检查数据库cpu、I/O、内存性能
6. 检查数据库安全性
7. 其他检查
回到顶部
1. 检查数据库基本状况
包含:检查Oracle实例状态,检查Oracle服务进程,检查Oracle监听进程,共三个部分。
1.1. 检查Oracle实例状态
select instance_name,host_name,startup_time,status,database_status from v$instance;
其中“STATUS”表示Oracle当前的实例状态,必须为“OPEN”;“DATABASE_STATUS”表示Oracle当前数据库的状态,必须为“ACTIVE”。
1.2. 检查Oracle在线日志状态
select group#,status,type,member from v$logfile;
输出结果应该有3条以上(包含3条)记录,“STATUS”应该为非“INVALID”,非“DELETED”。注:“STATUS”显示为空表示正常。
1.3. 检查Oracle表空间的状态
select tablespace_name,status from dba_tablespaces;
输出结果中STATUS应该都为ONLINE。
1.4. 检查Oracle所有数据文件状态
select name,status from v$datafile;
输出结果中“STATUS”应该都为“ONLINE”。或者:
select file_name,status from dba_data_files;
输出结果中“STATUS”应该都为“AVAILABLE”。
1.5. 检查无效对象
select owner,object_name,object_type from dba_objects where status!='VALID' and owner!='SYS' and owner!='SYSTEM';
如果有记录返回,则说明存在无效对象。若这些对象与应用相关,那么需要重新编译生成这个对象,或者:
SELECT owner, object_name, object_type FROM dba_objects WHERE status= 'INVALID';
1.6. 检查所有回滚段状态
select segment_name,status from dba_rollback_segs;
输出结果中所有回滚段的“STATUS”应该为“ONLINE”。
回到顶部
2. 检查Oracle相关资源的使用情况
包含:
a.检查Oracle初始化文件中相关的参数值
b.检查数据库连接情况,检查系统磁盘空间
c.检查Oracle各个表空间使用情况,检查一些扩展异常的对象,
d.检查system表空间内的内容,检查对象的下一扩展与表空间的最大扩展值,总共七个部分。
2.1. 检查Oracle初始化文件中相关参数值
select resource_name,
max_utilization,
initial_allocation,
limit_value
from v$resource_limit;
若LIMIT_VALU-MAX_UTILIZATION<=5,则表明与RESOURCE_NAME相关的Oracle初始化参数需要调整。可以通过修改Oracle初始化参数文件$ORACLE_BASE/admin/CKDB/a来修改。
2.2. 检查数据库连接情况
查看当前会话连接数,是否属于正常范围。
select count(*) from v$session;
select sid,serial#,username,program,machine,status from v$session;oracle数据库自动备份方法
其中:SID 会话(session)的ID号;
SERIAL# 会话的序列号,和SID一起用来唯一标识一个会话;
USERNAME 建立该会话的用户名;
PROGRAM 这个会话是用什么工具连接到数据库的;
STATUS 当前这个会话的状态,ACTIVE表示会话正在执行某些任务,INACTIVE表示当前会话没有执行任何操作;
如果建立了过多的连接,会消耗数据库的资源,同时,对一些“挂死”的连接可能需要手工进行清理。如果DBA要手工断开某个会话,则执行:
(一般不建议使用这种方式去杀掉数据库的连接,这样有时候session不会断开。容易引起死连接。建议通过sid查到操作系统的spid,使用ps –ef|grep spidno的方式确认spid不是ORACLE的后台进程。使用操作系统的kill -9命令杀掉连接)
alter system kill session 'SID,SERIAL#';
注意:上例中SID为1到10(USERNAME列为空)的会话,是Oracle的后台进程,不要对这些会话进行任何操作。
2.3. 检查系统磁盘空间
如果文件系统的剩余空间过小或增长较快,需对其进行确认并删除不用的文件以释放空间。
[oracle@AS14 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda5 9.7G 3.9G 5.4G 42% /
/dev/sda1 479M 16M 438M 4% /boot
/dev/sda2 49G 19G 28G 41% /data
none 1014M 0 1014M 0% /dev/shm
2.4. 检查表空间使用情况
复制代码
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";
复制代码
如果空闲率%Free小于10%以上(包含10%),则注意要增加数据文件来扩展表空间而不要是用数据文件的自动扩展功能。请不要对表空间增加过多的数据文件,增加数据文件的原则是每个数据文件大小为2G或者4G,自动扩展的最大限制在8G。
2.5. 检查一些扩展异常的对象
复制代码
select Segment_Name,
Segment_Type,
TableSpace_Name,
(Extents / Max_extents) * 100 Percent
From sys.DBA_Segments
Where Max_Extents != 0
and (Extents / Max_extents) * 100 >= 95
order By Percent;
复制代码
如果有记录返回,则这些对象的扩展已经快达到它定义时的最大扩展值。对于这些对象要修改它的存储结构参数。
2.6. 检查system表空间内的内容
复制代码
select distinct (owner)
from dba_tables
where tablespace_name = 'SYSTEM'
and owner != 'SYS'
and owner != 'SYSTEM'
union
select distinct (owner)
from dba_indexes
where tablespace_name = 'SYSTEM'
and owner != 'SYS'
and owner != 'SYSTEM';
复制代码
如果记录返回,则表明system表空间内存在一些非system和sys用户的对象。应该进一步检查这些对象是否与我们应用相关。如果相关请把这些对象移到非System表空间,同时应该检查这些对象属主的缺省表空间值。
2.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
_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
_extent > f.big_chunk;
复制代码
如果有记录返回,则表明这些对象的下一个扩展大于该对象所属表空间的最大扩展值,需调整相应表空间的存储参数。
回到顶部
3. 检查Oracle数据库备份结果
包含:
a.检查数据库备份日志信息;
b.检查backup卷中文件产生的时间;
c.检查oracle用户的email
3.1. 检查数据库备份日志信息
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论