资源描述
Oracle巡检手册专业资料
Oracle巡检手册专业资料
蓝色互动
2015-5-27
作者:张伟
巡检内容
一、检查数据库基本状况
重要对数据库基本状况进行检查,其中包括:检查Oracle实例状态,检查Oracle服务进程,检查Oracle监听进程,总共三个某些。
1.1 检查Oracle实例
其中“STATUS”表达Oracle当前实例状态,必要为“OPEN”;“DATABASE_STATUS”表达Oracle当前数据库状态,必要为“ACTIVE”。
其中,“LOG_MODE”表达Oracle当前归档方式。“ARCHIVELOG”表达数据库运营在归档模式下,“NOARCHIVELOG”表达数据库运营在非归档模式下。为了数据库安全性,强烈建议数据库运营在归档模式下。
1.2 检查Oracle服务进程
在运营Oracle进程命令输出后,输出显示至少应包括一下某些进程:
Oracle写数据文献进程,输出显示为:“ora_dbw0_ORCL”;
Oracle写日记文献进程,输出显示为:“ora_lgwr_ORCL”;
Oracle监听实例状态进程,输出显示为:“ora_smon_ORCL”;
Oracle监听客户端连接进程状态进程,输出显示为:“ora_pmon_ORCL”;
Oracle进行归档进程,输出显示为:“ora_arc0_ORCL”;
Oracle进行检查点进程,输出显示为:“ora_ckpt_ORCL”;
Oracle进行恢复进程,输出显示为:“ora_reco_ORCL”;
1.3 检查Oracle监听状态
“Services Summary”项标记Oracle监听进程正在监听哪些数据库实例,输出显示中至少应当有“ORCL”这一项。
检查监听进程与否存在:
二、检查系统和Oracle日记文献
检查有关日记文献,包括:检查操作系统日记文献,检查Oracle日记文献,检查Oracle核心转储目录,检查root顾客和oracle顾客email,检查数据库字符集,总共五个某些。
2.1 检查操作系统日记文献
查看与否有与Oracle顾客有关出错信息。
2.2 检查Oracle日记文献
Oracle在运营过程中,会在警告日记文献(alert_SID.log)中记录数据库某些运营状况:数据库启动、关闭,启动时非缺省参数;数据库重做日记切换状况,记录每次切换时间,及如果由于检查点(checkpoint)操作没有执行完毕导致不能切换,会记录不能切换因素;对数据库进行某些操作,如创立或删除表空间、增长数据文献;数据库发生错误,如表空间不够、浮现坏块、数据库内部错误(ORA-600)等。定期检查日记文献,依照日记中发现问题及时进行解决:
问题
解决
启动参数不对
检查初始化参数文献
由于检查点操作或归档操作没有完毕导致重做日记不能切换
如果经常发生这样状况,可以考虑增长重做日记文献组;想办法提高检查点或归档操作效率;
有人未经授权删除了表空间
检查数据库安全问题,与否密码太简朴;如有必要,撤除某些顾客系统权限
浮现坏块
检查与否是硬件问题(如磁盘本生有坏块),如果不是,检查是那个数据库对象浮现了坏块,对这个对象进行重建
表空间不够
增长数据文献到相应表空间
浮现ORA-600
依照日记文献内容查看相应TRC文献,如果是Oraclebug,要及时打上相应补丁
Listener日记:$ORACLE_HOME/network/log/sqlnet.log
2.3 检查Oracle核心转储目录
如果上面命令成果每天都在增长,则阐明Oracle进程经常发生核心转储。这阐明某些顾客进程或者数据库后台进程由于无法解决因素而异常退出。频繁核心转储特别是数据库后台进程核心转储会导致数据库异常终结。
2.4 检查root顾客和Oracle顾客email
查看有误与Oracle顾客有关出错信息。
2.5 检查当前数据库字符集
设定适合字符集可以解决乱码问题。
三、检查Oracle对象状况
重要检查有关Oracle对象状况,包括:检查Oracle控制文献状况,检查Oracle在线日记状况,检查Oracle表空间状况,检查Oracle所有数据文献状况,检查Oracle所有表、索引、存储过程、触发器、包等对象状况,检查Oracle所有回滚段状况,总共六个某些。
3.1 检查Oracle控制文献状态
输出成果应当有2条以上(包括2条)记录,“STATUS”应当为空。状态为空表达控制文献状态正常。
3.2 检查Oracle在线日记状况
输出成果应当有3条以上(包括3条)记录,“STATUS”应当为非“INVALID”,非“DELETED”。 注:“STATUS”显示为空表达正常。
3.3 检查Oracle表空间状况
输出成果中STATUS应当都为ONLINE。
3.4 检查Oracle所有数据文献状况
输出成果中“STATUS”应当都为“ONLINE”。
或者:
输出成果中“STATUS”应当都为“AVAILABLE”。
3.5 检核对象状况
3.5.1 检核对象类别和大小
合理分派资源,将冗余以及暂时表定期进行清理,释放资源空间。
3.5.2 检查无效对象
如果有记录返回,则阐明存在无效对象。若这些对象与应用有关,那么需要重新编译生成这个对象。
3.6 检查回滚段状况
3.6.1 检查回滚段状态
输出成果中所有回滚段“STATUS”应当为“ONLINE”。
3.6.2 检查与否有回滚段争用
发生回滚段争用时,需要审视争用状况,即哪些顾客正在使用回滚段资源
如果有顾客正在使用,依照业务实际状况采用办法。
四、检查Oracle有关资源使用状况
重要检查Oracle有关资源使用状况,包括:检查Oracle初始化文献中有关参数值,检查数据库连接状况,检查系统磁盘空间,检查Oracle各个表空间使用状况,检查某些扩展异常对象,检查system表空间内内容,检核对象下一扩展与表空间最大扩展值,总共七个某些。
4.1 检查Oracle初始化文献中有关参数值
若LIMIT_VALU-MAX_UTILIZATION<=5,则表白与RESOURCE_NAME有关Oracle初始化参数需要调节。可以通过修改Oracle初始化参数文献$ORACLE_BASE/dbs/spfileORCL.ora来修改。
4.2 检查数据库连接状况
查看当前会话连接数与否属于正常范畴。
其中:SID,即会话(session)ID号;
SERIAL#,即会话序列号,和SID一起用来唯一标记一种会话;
USERNAME,即建立该会话顾客名;
PROGRAM,即这个会话是用什么工具连接到数据库;
STATUS,即当前这个会话状态,ACTIVE表达会话正在执行某些任务,INACTIVE表达当前会话没有执行任何操作;
如果建立了过多连接,会消耗数据库资源,同步,对某些“挂死”连接也许需要手工进行清理。如果要手工断开某个会话,则执行:(普通不建议使用这种方式去杀掉数据库连接,这样有时候session不会断开。容易引起死连接。建议通过sid查到操作系统spid,使用ps –ef|grep spidno方式确认spid不是ORACLE后台进程。使用操作系统kill -9命令杀掉连接 )。
【注】USERNAME列为空)会话,是Oracle后台进程,不要对这些会话进行任何操作。
4.3 检查系统磁盘空间
如果文献系统剩余空间过小或增长较快,需对其进行确认并删除不用文献以释放空间。
4.4 检查表空间使用状况
如果空闲表空间比率不大于10%以上(包括10%),则注意要增长数据文献来扩展表空间而不要是用数据文献自动扩展功能。请不要对表空间增长过多数据文献,增长数据文献原则是每个数据文献大小为2G或者4G,自动扩展最大限制在8G。
4.5 检查某些扩展异常对象
如果有记录返回,则这些对象扩展已经快达到它定义时最大扩展值。对于这些对象要修改它存储构造参数。
4.6 检查system表空间内内容
如果记录返回,则表白system表空间内存在某些非system和sys顾客对象。应当进一步检查这些对象与否与咱们应用有关。如果有关请把这些对象移到非System表空间,同步应当检查这些对象属主缺省表空间值。
4.7 检核对象下一扩展与表空间最大扩展值
如果有记录返回,则表白这些对象下一种扩展不不大于该对象所属表空间最大扩展值,需调节相应表空间存储参数。
五、检查Oracle数据库备份成果
重要检查Oracle数据库备份成果,包括:检查数据库备份日记信息,检查backup卷中文献产生时间,检查oracle顾客email,总共三个某些。
5.1 检查数据库备份日记信息
假设:备份暂时目录为/backup/hotbakup,咱们需要检查05月06日备份成果,则用下面命令来检查:
如果文献中存在“ERROR:”,则表白备份没有成功,存在问题需要检查。
5.2 检查backup卷中文献产生时间
backup卷是备份暂时目录,查看输出成果中文献日期,观测与否是在所设定期间范畴内完毕备份。如果时间不对则表白热备份脚本没执行成功。
5.3 检查oracle顾客email
热备份脚本是通过Oracle顾客cron去执行。cron执行完后操作系统就会发一条Email告知Oracle顾客任务已经完毕。查看Oracle email中在备份筹划时间内有无ORA-,Error,Failed等出错信息,如果有则表白备份不正常。
六、检查Oracle数据库性能
重要检查Oracle数据库性能状况,包括:检查数据库等待事件,检查死锁及解决,检查cpu、I/O、内存性能,查看与否有僵死进程,检查行链接/迁移,定期做记录分析,检查缓冲区命中率,检查共享池命中率,检查排序区,检查日记缓冲区,总共十个某些。
6.1 检查数据库等待事件
如果数据库长时间持续浮现大量像latch free,enqueue,buffer busy waits,db file sequential read,db file scattered read等等待事件时,需要对其进行分析,也许存在问题语句。
6.2 Disk Read最高SQL语句获取
6.3 查找前十条性能差SQL语句
6.4 等待时间最多5个系统等待事件获取
6.5 检查运营好久SQL
6.6 检查消耗CPU最高进程
6.7 检查碎片限度高表
6.8 检查表空间I/O比例
6.9 检查文献系统I/O比例
6.10 检查死锁及解决
查看死锁
若有成果,则oracle级kill掉该session
操作系统kill掉session
6.11 检查数据库CPU、I/O、内存性能
记录数据库cpu使用、IO、内存等使用状况,使用vmstat,iostat,sar,top等命令进行信息收集并检查这些信息,判断资源使用状况。
CPU使用状况
内存使用状况
系统I/O状况
系统负载状况
6.12 查看与否有僵死进程
有些僵死进程有阻塞其她业务正常运营,定期杀掉僵尸进程。
6.13 检查行链接/迁移
注:具有long raw列表有行链接是正常,找到迁移行保存到chained_rows表中,如没有该表执行../rdbms/admin/utlchain.sql
Sql>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';
6.14 定期做记录分析
对于采用Oracle Cost-Based-Optimizer系统,需要定期对数据对象记录信息进行采集更新,使优化器可以依照准备信息作出对的explain plan。在如下状况更需要进行记录信息更新:
1、应用发生变化
2、大规模数据迁移、历史数据迁出、其她数据导入等
3、数据量发生变化
查看表或索引记录信息与否需更新,如:
若num_rows与count(*)行数相差诸多,则该表需要更新记录信息。
exec dbms_stats.gather_table_stats(ownname => 'SYS',tabname => 'UTIL_RECOMP_SORTED',granularity => 'AUTO',cascade => TRUE);
6.15 检查缓冲区命中率
如果命中率低于90% 则需加大数据库参数db_cache_size。
6.16 检查共享池命中率
如低于95%,则需要调节应用程序使用绑定变量,或者调节数据库参数shared pool大小。
6.17 检查排序区
如果disk/(memoty+row)比例过高,则需要调节sort_area_size(workarea_size_policy=false)或pga_aggregate_target(workarea_size_policy=true)。
6.18 检查日记缓冲区
如果redo buffer allocation retries/redo entries 超过1% ,则需要增大log_buffer。
七、检查数据库安全性
重要检查Oracle数据库安全性,包括:检查系统安全信息,定期修改密码,总共两个某些。
7.1 检查系统安全日记信息
系统安全日记文献目录在/var/log 下,重要检查登录成功或失败顾客日记信息。
检查登录成功日记
检查登录失败日记
在浮现日记信息中没有错误(Invalid、refused)提示,如果没有(Invalid、refused)视为系统正常,浮现错误提示,应作出系统告警告知。
7.2 检查顾客修改密码
在数据库系统上往往存在诸多顾客,如:第三方数据库监控系统,初始安装数据库时演示顾客,管理员顾客等等,这些顾客密码往往是写定,被诸多人懂得,会被别有专心人运用来袭击系统甚至进行修改数据。需要修改密码顾客涉及:
数据库管理员顾客SYS,SYSTEM;其她顾客。
登陆系统后,提示符下输入cat /etc/passwd,在列出来顾客中查看与否存在已经不再使用或是陌生帐号。若存在,则记录为异常。
修改密码办法
八、其她检查
重要检查当前crontab任务与否正常,检查Oracle Job与否有失败等共六个某些。
8.1 检查当前crontab任务与否正常
8.2 Oracle Job与否有失败
如有问题建议重建job,如:
exec sys.dbms_job.remove(1);
commit;
exec sys.dbms_job.isubmit(1,'REFRESH_ALL_SNAPSHOT;',SYSDATE+1/1440,'SYSDATE+4/1440');
commit;
8.3 监控数据量增长状况
依照本周每天检查状况找到空间扩展不久数据库对象,并采用相应办法:
--- 删除历史数据
移动规定数据库中至少保存6个月历史数据,因此此前历史数据可以考虑备份然后进行清除以便释放其所占资源空间。
--- 扩表空间
注意:在数据库构造发生变化时,如增长了表空间,增长了数据文献或重做日记文献这些操作,都会导致Oracle数据库控制文献变化,应及时进行控制文献备份,备份办法是:
执行SQL语句:
或
这样,会在USER_DUMP_DEST(初始化参数文献中指定)目录下生成创立控制文献SQL命令。
8.4 检查失效索引
注:分区表上索引status为N/A是正常,如有失效索引则对该索引做rebuild
8.5 检查不起作用约束
如有失效约束则启用
展开阅读全文