《最新oracle数据管理日常工作手册(DBA).doc》由会员分享,可在线阅读,更多相关《最新oracle数据管理日常工作手册(DBA).doc(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateoracle数据管理日常工作手册(DBA)Project Document (Generic)日常工作手册 文档控制修改记录审阅姓名职位目录背景概述1工作内容2每天的工作2每周的工作7每月的工作9每季度的工作10附录11-工作内容每天的工作检查数据库状态确认所有的INSTANCE状态以及listener状态正常,登陆到所有数据库或例程,检测ORACLE后台进程: $
2、ps ef|grep ora $ lsnrctl statusSQL select status from v$instance;检查文件系统如果文件系统的剩余空间过小或增长较快,需对其进行确认并删除不用的文件以释放空间。 $df k$df -h检查警告日志文件(alert_SID.log)Oracle在运行过程中,会在警告日志文件(alert_SID.log)中记录数据库的一些运行情况:数据库的启动、关闭,启动时的非缺省参数;数据库的重做日志切换情况,记录每次切换的时间,及如果因为检查点(checkpoint)操作没有执行完成造成不能切换,会记录不能切换的原因;对数据库进行的某些操作,如创建
3、或删除表空间、增加数据文件;数据库发生的错误,如表空间不够、出现坏块、数据库内部错误(ORA600)定期检查日志文件,根据日志中发现的问题及时进行处理问题处理启动参数不对检查初始化参数文件因为检查点操作或归档操作没有完成造成重做日志不能切换如果经常发生这样的情况,可以考虑增加重做日志文件组;想办法提高检查点或归档操作的效率;有人未经授权删除了表空间检查数据库的安全问题,是否密码太简单;如有必要,撤消某些用户的系统权限出现坏块检查是否是硬件问题(如磁盘本生有坏块),如果不是,检查是那个数据库对象出现了坏块,对这个对象进行重建表空间不够增加数据文件到相应的表空间出现ORA-600根据日志文件的内容
4、查看相应的TRC文件,如果是Oracle的bug,要及时打上相应的补丁alert_SID.log通常是在$ORACLE_BASE/admin/bdump目录下。使用 Unix tail或者more命令查看该日志信息(为了方便查询,每天查询后将查询的日志mv到与日志同一目录下的bak目录下);定期检查警告日志、TRC文件及listener日志如果这些日志量非常大,占用很大的资源空间,可考虑定期删除以便释放资源。一般情况下这些文件存在的相关目录:警告日志: $ORACLE_BASE/admin/bdump 或者通过 SQL show parameter background_dump_dest参数
5、查看其存放位置;Trc文件: $ORACLE_BASE/admin/udump或者通过 SQL show parameter user_dump_dest参数查看其存放位置;Listener日志: $ORACLE_HOME/network/log查看数据库连接信息定时对数据库的连接情况进行检查,看与数据库建立的会话数目是不是正常,如果建立了过多的连接,会消耗数据库的资源。同时,对一些“挂死”的连接,可能需要手工进行清理。以下的SQL语句列出当前数据库建立的会话情况:Select count(*) from v$session; 查看当前会话连接数select sid,serial#,usern
6、ame,program,machine,status from v$session;SID SERIAL# USERNAME PROGRAM MACHINE STATUS- - - - - - 1 3 oraclexz15saledb (PMON) xz15saledb ACTIVE 2 3 oraclexz15saledb (DBW0) xz15saledb ACTIVE 3 3 oraclexz15saledb (DBW1) xz15saledb ACTIVE 4 3 oraclexz15saledb (LGWR) xz15saledb ACTIVE 5 3 oraclexz15saled
7、b (CKPT) xz15saledb ACTIVE 6 3 oraclexz15saledb (SMON) xz15saledb ACTIVE 7 3 oraclexz15saledb (RECO) xz15saledb ACTIVE 8 1 oraclexz15saledb (CJQ0) xz15saledb ACTIVE 9 3 oraclexz15saledb (ARC0) xz15saledb ACTIVE 10 3 oraclexz15saledb (ARC1) xz15saledb ACTIVE 11 11319 ZK AccPrtInv_svrxz15tuxedo2 (TNS
8、V1-V3) xz15tuxedo2 INACTIVE 13 48876 ZG uploadxz15saleap (TNS V1-V3) xz15saleap INACTIVE 17 20405 ZK AccCreateRptxz15tuxedo1 (TNS V1-V3) xz15tuxedo1 INACTIVE 20 12895 ZK OweScanSvrxz15billdb (TNS V1-V3) xz15billdb INACTIVE其中,SID 会话(session)的ID号;SERIAL# 会话的序列号,和SID一起用来唯一标识一个会话;USERNAME 建立该会话的用户名;PROG
9、RAM 这个会话是用什么工具连接到数据库的;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列为空)的会话,
10、是Oracle的后台进程,不要对这些会话进行任何操作。检查数据库当日备份的有效性。对RMAN备份方式: 检查第三方备份工具的备份日志以确定备份是否成功 对EXPORT备份方式: 检查exp日志文件以确定备份是否成功 对其他备份方式: 检查相应的日志文件检查数据文件的状态SQLselect file_name,status from dba_data_files; SQLselect count(*) from dba_data_files;SQLselect count(*) from dba_data_files where status=AVAILABLE;如果数据文件的STATUS列不是
11、AVAILABLE,那么就要采取相应的措施,如对该数据文件进行恢复操作,或重建该数据文件所在的表空间。检查表空间的使用情况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 fr
12、om dba_free_space group by tablespace_name) fWHERE a.tablespace_name = f.tablespace_name(+)order by % Free检查数据库的等待事件set pages 80set lines 120col event for a40select sid,event,p1,p2,p3,WAIT_TIME,SECONDS_IN_WAIT from v$session_wait where event not like SQL% and event not like rdbms%如果数据库长时间持续出现大量像latc
13、h free,enqueue,buffer busy waits,db file sequential read,db file scattered read等等待事件时,需要对其进行分析,可能存在问题的语句。锁表问题的处理查询目前锁对象信息,更细节的锁处理方式请查看工作中长用脚本col sid for 999999col username for a10col schemaname for a10col osuser for a16col machine for a16col terminal for a20col owner for a10col object_name for a30co
14、l object_type for a10select sid,serial#,username,SCHEMANAME,osuser,MACHINE,terminal,PROGRAM,owner,object_name,object_type,o.object_id from dba_objects o,v$locked_object l,v$session s where o.object_id=l.object_id and s.sid=l.session_id;解锁处理:alter system kill session &sid,&serial#;检查数据库性能,记录数据库的cpu使用
15、、IO、buffer命中率等等使用vmstat,iostat,sar,top等命令进行信息收集并检查这些信息,判断资源使用情况。查看是否有僵死进程select spid from v$process where addr not in (select paddr from v$session);有些僵尸进程有阻塞其他业务的正常运行,定期杀掉僵尸进程每周的工作监控数据量的增长情况根据本周每天的检查情况找到空间扩展很快的数据库对象,并采取相应的措施 - 删除历史数据 规定数据库中至少保留6个月的历史数据,所以以前的历史数据可以考虑备份然后进行清除以便释放其所占的资源空间。- 扩表空间 alter
16、tablespace add datafile size autoextend off;注意:在数据库结构发生变化时,如增加了表空间,增加了数据文件或重做日志文件这些操作,都会造成Oracle数据库控制文件的变化,DBA应及进行控制文件的备份,备份方法是:执行SQL语句:alter database backup controlfile to /home/backup/control.bak;或:alter database backup controlfile to trace;这样,会在USER_DUMP_DEST(初始化参数文件中指定)目录下生成创建控制文件的SQL命令。检查无效的数据库
17、对象SELECT owner, object_name, object_type FROM dba_objects WHERE status= INVALID;检查不起作用的约束SELECT owner, constraint_name, table_name, constraint_type, status FROM dba_constraints WHERE status =DISABLE and constraint_type=P;检查无效的triggerSELECT owner, trigger_name, table_name, status FROM dba_triggers WHERE status = DISABLED;检查数据库定时作业的完成情况如果数据库使用了Oracle的JOB来完成一些定时作业,要对这些JOB的运行情况进行检查:select job,log_user,last_date,failuresfrom dba_jobs;如果FAILURES列是一个大于0的数的话,说明JOB运行失败,要进一步的检查。每月的工作寻找数据库性能调整的机会使用statspack收集统计数据,比较每天对数据库性能的监控报告,确定是否有必要对数据库性能进行调整 数据库性能调整如有必要,进行性能调整 提出下一步空间管理计划根据每周的监控,提出空间管理的改进方法每季度的工作附录
限制150内