当前位置:文档之家› Oracle 数据库日常巡检

Oracle 数据库日常巡检

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_valuefrom v$resource_limit;若LIMIT_VALU-MAX_UTILIZATION<=5,则表明与RESOURCE_NAME相关的Oracle初始化参数需要调整。

可以通过修改Oracle初始化参数文件$ORACLE_BASE/admin/CKDB/pfile/initORCL.ora来修改。

2.2. 检查数据库连接情况查看当前会话连接数,是否属于正常范围。

select count(*) from v$session;select sid,serial#,username,program,machine,status from v$session;其中: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 -hFilesystem 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% /datanone 1014M 0 1014M 0% /dev/shm2.4. 检查表空间使用情况select f.tablespace_name,a.total,f.free,round((f.free / a.total) *100) "% Free"from (select tablespace_name, sum(bytes / (1024*1024)) totalfrom dba_data_filesgroup by tablespace_name) a,(select tablespace_name, round(sum(bytes / (1024*1024))) freefrom dba_free_spacegroup by tablespace_name) fWHERE 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) *100PercentFrom sys.DBA_SegmentsWhere Max_Extents !=0and (Extents / Max_extents) *100>=95order By Percent;如果有记录返回,则这些对象的扩展已经快达到它定义时的最大扩展值。

对于这些对象要修改它的存储结构参数。

2.6. 检查system表空间内的内容select distinct (owner)from dba_tableswhere tablespace_name ='SYSTEM'and owner !='SYS'and owner !='SYSTEM'unionselect distinct (owner)from dba_indexeswhere tablespace_name ='SYSTEM'and owner !='SYS'and owner !='SYSTEM';如果记录返回,则表明system表空间内存在一些非system和sys用户的对象。

应该进一步检查这些对象是否与我们应用相关。

如果相关请把这些对象移到非System表空间,同时应该检查这些对象属主的缺省表空间值。

2.7. 检查对象的下一扩展与表空间的最大扩展值select a.table_name, a.next_extent, a.tablespace_namefrom all_tables a,(select tablespace_name, max(bytes) as big_chunkfrom dba_free_spacegroup by tablespace_name) fwhere f.tablespace_name = a.tablespace_nameand a.next_extent > f.big_chunkunionselect a.index_name, a.next_extent, a.tablespace_namefrom all_indexes a,(select tablespace_name, max(bytes) as big_chunkfrom dba_free_spacegroup by tablespace_name) fwhere f.tablespace_name = a.tablespace_nameand a.next_extent > f.big_chunk;如果有记录返回,则表明这些对象的下一个扩展大于该对象所属表空间的最大扩展值,需调整相应表空间的存储参数。

3. 检查Oracle数据库备份结果包含:a.检查数据库备份日志信息;b.检查backup卷中文件产生的时间;c.检查oracle用户的email3.1. 检查数据库备份日志信息假设:备份的临时目录为/backup/hotbakup,我们需要检查2009年7月22日的备份结果,则用下面的命令来检查:cat /backup/hotbackup/hotbackup-09-7-22.log|grep –i error备份脚本的日志文件为hotbackup-月份-日期-年份.log,在备份的临时目录下面。

如果文件中存在“ERROR:”,则表明备份没有成功,存在问题需要检查。

3.2. 检查backup卷中文件产生的时间#ls –lt /backup/hotbackupbackup卷是备份的临时目录,查看输出结果中文件的日期,都应当是在当天凌晨由热备份脚本产生的。

相关主题