
数据库日常巡检报告.docx
5页日常巡检手册 监控所有关键业务系统的数据库系统,以0RACLE数据库为例主要的监控指标应包括配置 信息、故障监控和性能监控主要工作包括:1、 配置信息管理:数据库配置信息包括数据库名,数据库实例名,版本信息,数据库位数, 归档方式,文件目录,表空间信息,内存信息,其他SID.ORA的相关参数信息2、 故障监控:监控数据库关键的运行状态和进程等进行有效的管理,具体的管理功能应包 含:(1)服务器实例的可用性,监控数据库实例的状态;(2)空间监控:监控表空间.Redo 日志、Archive日志的使用情况;(3)显示和过滤Alert Log中的报警等;(4)数据库空间、 表空间、数据文件占用或空闲的空间;磁盘的使用;表和索引的使用;重做日志Redo logs; 内存的使用Memory usage;交换区的使用Swap usage3、 性能监控:监控数据库的性能,鉴别和消除瓶颈以提高数据库系统的整体性能,包括:(1) 由内存容量引起的数据库响应缓慢;(2) 由于请求Redo日志空间引起的延迟;(3) 锁资源监控,对阻塞了其它会话的锁进行告警,以及可用的锁;(4) 等待某回滚段完成的事务百分比;(5) 监控SGA、Buffer Cache、I/O等相关的性能数据;(6)监控数据库会话的状况。
应及时变更配置信息并定期(每月)编制数据库监控报告并提交相关部门和人员 检查实例1.常规检查编号 参数名称 描述 参数说明1 文件自动扩展 正确 数据文件使用裸设备时,文件不可自动扩展(使用文件系统的数据文件也建议不设成自动扩展):Sql>select file_name,tablespace_name,status,autoextensible fromdba_data_files where autoextensible<>'NO';Sql>alter database datafile '****' autoextend off;;2 默认表空间 正确 不要使用system表空间作为应用用户的默认表空间:Sql>Select username,account_status,default_tablespace,temporary_tablespace from dba_Users;Sql>alter user ctais2bb default tablespace ctais2_dat;3 历史错误信息 没有错误 搜索oracle各实例的alert文件是否有错误代码出现,如:ORA-OO6OO,ORA-OO6O3等错误:通过以下sql找到他的路径Sql>select value from v$parameter where name ='background_dump_dest';4 剩余表空间 没有空间压力 Sql>Selecta.Tablespace_Name,a.Total||'M'Total_Space,(a.Total-b.Free)||'M'Used_Space, To_Char((a.Total - b.Free) / a.Total * 100, '99.99') || '%' Pct_FreeFrom(Select Tablespace_Name, Sum(Bytes) / 1024 / 1024 Total From Dba_Data_Files Group By tablespace_Name) a,(Select Tablespace_Name, Sum(Bytes) / 1024 / 1024 Free From Dba_Free_Space Group By Tablespace_Name) b where a.Tablespace_Name = b.Tablespace_Name;归档模式 已归档查看数据是否启用归档模式,归档目录是否均已挂接,提醒管理员注意归档文件的备份,以防治归档目录空间不足,以sysdba登陆sqlplus:SQL> archive log list; (sqlplus 下执行)6 备份策略 注 是否备份spfile文件,控制文件,归档日志文件,备份归档日志文件后是否删除7 失效对象 有(已处理) Sql>Selectobject_name,object_type,status From Dba_Objects Where status<>'VALID';如有则编译失效对象,在非业务处理时间,以sysdba登陆sqlplus:SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql8 行链接/迁移 没有行迁移 是否有行链接/行迁移的情况出现:Sql>select table_name,num_rows,chain_cnt From dba_tables Where owner='CTAIS2'And chain_cnt<>0;注:含有long raw列的表有行链接是正常的,找到迁移行保存到chained_rows表中,如没有 该表执行../rdbms/admin/utlchain.sqlSql>analyze table tablename list chained rows;可通过表chained_rows中table_name,head_rowid看出哪些行是迁移行 如:Sql>create table aa as select a.* from sb_zsxx a,chained_rows b where a.rowid=b.head_rowid and b.table_name ='SB_ZSXX';sql>delete from sb_zsxx where rowid in (select head_rowid from chained_rows where table_name = 'SB_ZSXX');sql>insert into sb_zsxx select * from chained_row where table_name = 'SB_ZSXX';9 job 没有失败的任务 查看 job 是否broken,是否有 failureSql>select job,what,last_date,next_date,failures,broken from dba_jobs Where schema_user='CTAIS2';如有问题建议重建job,如:exec sys.dbms_job.remove(1);commit;execsys.dbms_job.isubmit(1,'REFRESH_ALL_SNAPSHOT;',SYSDATE+1/1440,'SYSDATE+4/1440'); commit;10 统计分析 管理员定期做 对于采用OracleCost-Based-0ptimizer的系统,需要定期对数据对象的统计信息进行采集更新,使优化器 可以根据准备的信息作出正确的explain plan。
在以下情况更需要进行统计信息的更新:1、 应用发生变化2、 大规模数据迁移、历史数据迁出、其他数据的导入等3、 数据量发生变化 查看表或索引的统计信息是否需更新,如:Sql>Select table_name,num_rows,last_analyzed From user_tables where table_name ='DJ_NSRXX'sql〉select count(*) from DJ_NSRXX如 num_rows和 count(*) 如果行数相差很多,则该表需要更新统计信息,建议一周做一次统计信息收集,如: Sql〉exec sys.dbms_stats.gather_schema_stats(ownname=〉'CTAIS2',cascade =〉 TRUE,degree =〉 4);11 死锁现象 没有发生过死锁 检查数据库在 运行过程中是否有死锁现象,找出被锁住的对象及session IDSql〉select object_name,s.sid,s.serial# From v$locked_object o,v$session s ,dba_objects c Where o.session_id=s.sid And o.object_id=c.object_id;oracle 级 kill 掉该 session:sql〉alter system kill session 'sid,serial#';操作系统级kill掉session:#〉kill -9 pid12 失效的索引 没有失效的索引 检查是否有失效的索引:注:分区表上的索引stat us为N/A是正常的Sql〉select index_name,table_name,tablespace_name,status From dba_indexes Where owner='CTAIS2' And status<〉'VALID';如有失效索引则对该索引做rebuild,如:Sql〉alter index INDEX_NAME rebuild tablespace TABLESPACE_NAME;13 失效的约束 没有失效的约束 检查是否有失效的约束:Sq〉Select constraint_type,constraint_name,table_name,r_owner,r_constraint_name, status From dba_constraints Where owner='CTAIS2' And status<〉'ENABLED'; 如有失效约束则启用,如:Sql〉alter Table TABLE_NAME Enable Constraints CONSTRAINT_NAME;14 失效的触发器 没有失效的触发器 检查是否有失效的触发器:Sql〉select trigger_name,table_name,status From dba_triggers Where owner='CTAIS2' And status<〉'ENABLED';如有失效触发器则启用,如:Sql〉alter Trigger TRIGGER_NAME Enable;15 索引空间浪费 管理员定期管理 索引的空间浪费:只有完全空的索引块才进入空闲列表,找到浪费空间的索引,首先分析索引: Sql〉analyze index indexname validate structure;然后查询index_stats视图:Sql〉select name,lf_rows,lf_rows_len,del_lf_rows,del_lf_rows_lenFrom index_stats; lf_rows --当前索引值的数量lf_rows_len —当前索引值的大小(by te) del_lf_rows --从索引中删除的值的数量 del_lf_rows_len —从索引中删除的值的大小(by te) 如果 del_lf_rows_len 达到 lf_rows_len 的 20%则需要 rebuild 索引了16 定期修改密码 暂时未使用 在综合征管系统系统的数据库上往往存在很多的用户,如:第三方数据库监控系统,申报系统等等,初始安装数据库时的演示用户,管理员用户等等。
这些用户的密码往往是写定的,被很多 人知道,会被别有用心的人利用来攻击系统甚至进行修改数据需要修改密码的用户包括:数据库管理员用户INTERNAL(0RACLE91版本中已经废弃了),SYS, SYSTEM,综合征管系统系统的超级用户CT。
