Oracle 数据库日常巡检之检查数据库基本状况
原创
©著作权归作者所有:来自51CTO博客作者chenzm0592的原创作品,请联系作者获取转载授权,否则将追究法律责任
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 查看控制文件的个数,文件个数建议至少2个以上,如果可以放不同路径,不同分区
show parameter control_files;
1.4 查看当前连接数,活动连接数
select count(*) from v$session; //当前的连接数
select count(*) from v$session where status='ACTIVE'; //活动连接数
1.5 检查Oracle所有数据文件状态
select name,status from v$datafile; //输出结果中“STATUS”应该都为“ONLINE”
select file_name,status from dba_data_files;
说明:输出结果中“STATUS”应该都为“AVAILABLE”。
1.6 检查Oracle表空间的状态
select tablespace_name,status from dba_tablespaces;
说明:输出结果中STATUS应该都为ONLINE。
1.7 检查所有回滚段状态
select segment_name,status from dba_rollback_segs;
说明:输出结果中所有回滚段的“STATUS”应该为“ONLINE”。
1.8 检查无效对象
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.9 检查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';
2.0 检查表空间使用情况
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%以上,则注意要增加数据文件来扩展表空间而不要是用数据文件的自动扩展功能。