收藏 分销(赏)

数据库维护工作手册.doc

上传人:可**** 文档编号:4708015 上传时间:2024-10-10 格式:DOC 页数:21 大小:131.54KB
下载 相关 举报
数据库维护工作手册.doc_第1页
第1页 / 共21页
数据库维护工作手册.doc_第2页
第2页 / 共21页
数据库维护工作手册.doc_第3页
第3页 / 共21页
数据库维护工作手册.doc_第4页
第4页 / 共21页
数据库维护工作手册.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、数据库维护工作手册文档编号:文档名称:编 写:审 核:批 准:批准日期:目 录1概述42数据库监控42.1数据库监控工作内容42.2数据库监控工作步骤42.2。1查看数据库日志42。2。2检查是否有失效的数据库对象52。2.3查看数据库剩余空间52。2。4重点表检查52。2.5查看数据库是否正常62。2。6死锁检查62.2。7监控SQL语句的执行62.2。8操作系统级检查62.2。9其他63数据库维护73.1数据库维护工作内容73。2数据库维护工作事项73。2.1页面修复73。2。2数据库对象重建73。2。3碎片回收(数据重组)73.2.4删除不用的数据73.2。5备份恢复73。2。6历史数据

2、迁移83。2。7定期修改密码83.2。8删除掉不必要的用户83。2.9其他84数据库管理常用SQL脚本95日常维护和问题管理175。1目的175。2例行工作建议175.3相关填表说明171 概述数据库的日常监控是使管理员及时了解系统异常的手段.大部分情况下,系统总是正常运行的。只有对正常情况的充分了解,才能通过对比正常情况发现异常情况。对于数据库的日常监控要有记录,文字记录或者电子文档保存.对于数据库异常进行分析,提出解决方案。日常工作包括监控和维护两个部分。此文档中关于数据库的运行命令示例主要针对于ORACLE数据库,但对于SYBASE数据库同样有参考价值,只要换用相对应的语句即可。数据库监

3、控2 数据库监控数据库监控工作内容制定和改进监控方案,编写监控脚本。对于数据库进行日常监测,提交记录。根据监测结果进行分析、预测,提交相应的系统改进建议方案。数据库监控工作步骤2.1.1 查看数据库日志数据库的日志上会有大量对于管理员有用的信息.ORACLE的Alert日志纪录了数据库系统所报的系统级错误信息,以及数据块失效等严重错误信息。错误信息的产生,会产生相应的跟踪文件,通过查看警告日志和跟踪文件可查找错误原因,对于发现的问题应及时解决和汇报.如:1. 表空间是否满,是否需要进行添加或者扩展。Alert文件中会显示有表块无法扩展的提示。2. 表的块或者页面是否损坏。(往往这时alert文

4、件中会显示ora-600的错误.)3. 数据库是否进行了异常操作。(如:drop tablespace等等)。实用命令:报警日志文件(alert。log或alrtSID。ora)记录数据库启动,关闭和一些重要的出错信息。数据库管理员应该经常检查这个文件,并对出现的问题作出即使的反应。可以通过以下SQL 找到他的路径select value from vparameter where upper(name) =BACKGROUND_DUMP_DEST,或通过参数文件获得其路径,或者show parameter BACKGROUND_DUMP_DEST。后台跟踪文件路径与报警文件路径一致,记载了系

5、统后台进程出错时写入的信息。用户跟踪文件记载了用户进程出错时写入的信息,一般不可能读懂,可以通过ORACLE的TKPROF工具转化为可以读懂的格式。用户跟踪文件的路径,你可以通过以下SQL找到他的路径select value from v$parameter where upper(name) =USER_DUMP_DEST,或通过参数文件获得其路径,或者show parameter USER_DUMP_DEST。可以通过设置用户跟踪或dump命令来产生用户跟踪文件,一般在调试、优化、系统分析中有很大的作用。可在参数文件种用SQL_TRACE=TRUE打开该文件(对所有用户),也可用alter

6、 session set sql_trace=true打开当前会话,也可用execute dbms_system.set_sql_trace_in_session(sid,serial,true)打开指定会话。2.1.2 检查是否有失效的数据库对象主要关注索引,触发器,存储过程,函数等等.如:查找user_objects数据字典,看其中是否有状态为invalid的对象。判断失效原因(如:视图失效的原因有可能是由于创建视图的基表被删除等等),找出原因可进行对象重建或修复。实用命令:Select object_name,object_type From user_objects Where obj

7、ect_type=INVALID;2.1.3 查看数据库剩余空间1. 剩余空间不足时要扩展空间,一般的,当剩余空间小于10%时,要进行空间扩展。对于ORACLE数据库,通过查找tablespaces相关的数据字典可以看到有用的信息。2. 检查数据快速增长的表,通过对于dba_segments数据字典的监视可以找到,当过快增长时,协调开发人员,确定解决方案。2.1.4 重点表检查1. 检查系统核心业务表.因为这些表健康与否与日常业务的正常运行密切相关.重点检查这些表的索引是否失效,表的统计信息是否及时更新,如:当这些表进行了大的数据装载或者删除操作之后.原则上需要检查所有的表,只是由于上面这些表

8、更关键,建议管理员给以更多的关注。2. 重点检查数据量超过百万行的表,各地的情况可能不一样,当数据超过百万行之后,如果索引失效会导致表扫描,占用大量系统IO,严重影响系统性能。2.1.5 查看数据库是否正常包括数据库实例是否正常工作、listener是否工作正常,确保数据库系统环境正常。数据库连接是否正常、检查是否有超出正常水平的连接数。如:平常500个,某天下午忽然达到600个。应记录这种异常情况。分析产生这种情况的原因,如:在低版本的ORACLE中,很可能是一些其他异常的应用出错后产生的死连接。2.1.6 死锁检查监控数据库运行过程中,出现的阻塞,记录现象,记录产生阻塞的SQL语句,执行的

9、用户,发生时间,频率,处理(杀掉、等待自然解锁等)。ORACLE版本中的死锁会在alert文件中产生记录,oracle会自动解锁(其实是选择一个杀掉)。对于死锁的处理过程要进行记录。可以使用OEM工具或者查找相关的V$视图来确认产生阻塞的语句。2.1.7 监控SQL语句的执行查找效率低下的SQL语句,联系协调开发人员,进行相关处理。可使用ORACLE提供的AWR进行,也可使用ORACLE提供的OEM工具执行,或者自行编制的脚本等等.2.1.8 操作系统级检查运行vmstat,sar,topas(AIX系统),glance(HP系统)等命令检查CPU、内存、虚拟内存等的使用情况。运行df,du,

10、iostat检查磁盘使用情况运行netstat检查网络情况运行手工编制的监控脚本检查。针对于操作系统的不同,使用的命令也会有不同,请参考相应的操作系统文档。建议使用man命令察看相应的帮助信息.2.1.9 其他每天查看晚间定时执行的数据库信息收集作业和备份作业的日志输出,确认都已正常完成。往往不能正常完成是由于如下的原因:请确认脚本是否变动(错误的修改造成等等),设备(主机,磁盘阵列,磁带库,网络等等)是否正常,空间是否足够等等.建议每天按业务峰值情况,对数据库性能数据进行定时采集及分析。3 数据库维护数据库维护工作内容包括维护、故障诊断、错误修复、备份恢复、历史数据迁移等过程.数据库维护工作

11、事项3.1.1 页面修复根据日常监控的结果,进行页面(或者数据库坏块)修复,如将表数据导出后重建表,然后导入数据。提交修复记录.3.1.2 数据库对象重建根据数据库监控的结果,重建失效的对象.如:索引、存储过程、函数、视图、触发器等等。实用命令:Alter index f.big_chunk5. 检查已经存在的空间扩展SELECT count(), segment_name, segment_type, dt。tablespace_nameFROM dba_tablespaces dt, dba_extents dxWHERE dt.tablespace_name = dx.tablespac

12、e_nameAND dt.next_extent != dx.bytes AND dx.owner = &OWNERGROUP BY segment_name, segment_type, dt.tablespace_name6. 检查没有主键的表SELECT table_nameFROM all_tablesWHERE owner = &OWNERMINUSSELECT table_nameFROM all_constraintsWHERE owner = OWNERAND constraint_type = P7. 检查失效的主键SELECT owner, constraint_name,

13、 table_name, statusFROM all_constraintsWHERE owner = OWNER AND status = DISABLED AND constraint_type = P8. 重建索引,具体参数请根据实际情况进行修改SELECT alter index | index_name | rebuild , tablespace INDEXES storage ( initial 256 K next 256 K ) ; FROM all_indexesWHERE ( tablespace_name != INDEXESOR next_extent != ( 2

14、56 * 1024 )AND owner = &OWNER9. 对比两个实例的不同SELECT object_name, object_typeFROM user_objectsMINUSSELECT object_name, object_typeFROM user_objectsmy_db_link10. 查看动态性能视图Select * from VFIXED_TABLE11. 查看约束select a。constraint_name, a.constraint_type,a.*from user_constraints awhere table_name=table_name;sele

15、ct constraint_name, column_name from user_cons_columns where table_name=table_name;12. 查看索引 user_indexes包含索引的名字,user_ind_columns包含索引的列。13. 查看数据库启动参数:show parameter para,v$parameter提供当前会话信息,v$system_parameter提供当前系统信息。其中isses_modifiable,issys_modifiable表示是否允许动态修改。14. 查看进程号:select p.spid, s。username fr

16、om vprocess p , v$session s where p。addr=s。paddr;15. 查看数据文件:select name, status from vdatafile;select from dba_data_files;16. 查看数据文件状态select d.file# f, d.name, d。status, h。status from v$datafile d, v$datafile_header h where d.file#=h。file;17. 查看控制文件select name from vcontrolfile;select type, record_s

17、ize, records_total, records_used from v$controlfile_record_section where type=DATAFILE;18. 查看是否归档模式:archive log listselect name, log_mode from vdatabase;select archiver from vinstance;19. 查看日志组:select groups, current_group, sequence# from vthread;select group, sequence#, bytes , members, status from

18、 v$log;select * from v$logfile; 其中status为空表示正常。20. 查看large poolselect * from vsgastat where pool=large pool;21. 查看归档位置show parameter archive select destination, binding, target, status from varchive_dest;22. 查看归档进程select * from v$archive_processes;23. 查看正在备份的数据文件select from v$backup;24. 查看需要恢复的文件sel

19、ect from v$recover_file;25. 查看所有归档日志文件select from v$archived_log;26. 查看恢复时要用到的日志文件select from v$recovery_log;27. 查看SGA的结构Show sga;select * from vsgastat;28. 提取library cache的命中率select gethitratio from vlibrarycache where namespace=;29. 查看正在运行的SQL语句select sql_text, users_executing, executions, loads f

20、rom vsqlarea;select from vsqltext where sql_text=select from emp;30. 查看library cache reload情况:select sum(pins) “Executions”, sum(reloads) “cache Misses”, sum(reloads)/sum(pins)from v$librarycache;31. 查看大匿名块select sql_text from vsqlarea where command_type=47 and length(sql_text)500;32. 查看当前会话的UGA区sel

21、ect sum(value)|bytes “Total session memory from v$mystat, v$statname where name=session uga memory and vmystat。statistic#=vstatname.statistic;33. 查看所有MTS用户的UGA区:select sum(value)bytes “Total session memory from vsesstat, vstatname where name=session uga memory and vsesstat.statistic=vstatname.statis

22、tic#;34. 查看所有用户使用的最大的UGA区:select sum(value)bytes “Total session memory from vsesstat, vstatname where name=session uga memory max and vsesstat。statistic#=v$statname.statistic#;35. 查看highwater mark以下的块数select table_name, blocks from dba_tables where table_name=table_name;36. 查看会话的I/O:select io。block_

23、gets, io.consistent_gets, io。physical_reads from v$sess_io io, vsession s where s.audsid=USERENV(SESSIONID) and io.sid=s.sid;37. 查看Buffer pool的命中率select name, 1(physical_reads/(db_block_gets+consistent_gets)) “HIT_RATIO” from sys.vbuffer_pool_statistics where db_block_gets+consistent_gets0;38. 查看fre

24、e list的竞争select class, count, time from v$waitstat where class=segment header;select event, total_waits from v$system_event where event=buffer busy waits;buffer busy waits可在两种情况发生:1dirty queue已满,2free list竞争.39. 查看free list竞争发生在哪个segment上select s.segment_name, s。segment_type, s。freelists, w。wait_tim

25、e, w.seconds_in_wait, w。statefrom dba_segments s, vsession_wait wwhere w.event=buffer busy waits and w.p1=s.header_file and w。p2=s。header_block;40. 查看全表扫描发生的次数select name, value from v$sysstat where name like %table scan%;41. 查看大操作的执行情况select sid, serial, opname, to_char(start_time, HH24:MI:SS) as s

26、tart_t, (sofar/totalwork)*100 as percent_complete from v$session_longops;42. 查看数据文件的I/Oselect phyrds, phywrts, d.name from vdatafile d, vfilestat f where d.file#=f.file# order by d。name;43. 查看空闲块数少于10的segment(blocks在highwater mark以下,empty_blocks其上)select owner, table_name, blocks, empty_blocks from

27、dba_tables where empty_blocks/(blocks+empty_blocks)0.1 and blocks+empty_blocks!=0;44. 查看migration和chaininganalyze table table_name compute statistics;select num_rows, chain_cntfrom dba_tables where table_name=table_name;45. 查看表的统计信息analyze table table_name compute statistics;select num_rows, blocks,

28、 empty_blocks as empty, avg_space, chain_cnt, avg_row_len from dba_tableswhere owner=HR and table_name=table_name;46. 查看索引的统计信息analyze index index_name validate structure;select (del_lf_rows_len/lf_rows_len)*100 as index_usage from index_stats;5 日常维护和问题管理目的作为一名数据库管理员,数据库应用的正常稳定运行是保障我们应用系统的重要保证,而数据库的

29、日常监控和维护工作至关重要。做好它的检查工作的文档管理也是数据库管理的必不可少的工作之一,这有利于我们追踪问题和对数据库的版本控制非常重要.例行工作建议每天例行工作:1 确定数据库实例处于运行状态2 检查ALERT 日志3 确定数据库成功备份4 确定数据库归档到磁带5 确定有足够的资源使数据库能运行在良好状态6 抽时间阅读DBA管理手册每周例行工作:1 检查是否有对象处于非正常状态2 检查安全策略3 检查SQLNET 日志中是否有错误4 归档所有ALERT 日志每月例行工作:1 检查潜在的危害2 检查是否需要性能调优及调优时机3 检查I/O竞争4 检查数据库碎片5 制定将来的性能计划6 进行数

30、据库调优和维护相关填表说明日常维护检查表:是数据库管理员在平时的日常监控维护工作后做的工作记录。只填写检查的结果。详细的问题管理记录和解决过程就填写问题管理记录表。如果在检查过程中正常在相应栏目打,如果有异常状况打X,同时在后面写上相对应的问题管理记录的编号。问题编号的命名格式是12位,就是当时填写记录表的日期和时间,例如数据库管理员在2010年04月11日14:00在做例行检查时发现了问题,那么在填写日常维护检查表时就应在相对应的栏目写上问题编号201004111400。问题管理记录表是在填写日常维护检查表的基础上发现了问题再填写详细的问题发生和解决过程.其中问题编号就是日常维护检查表中的问

31、题编号。 变更记录表是我们对数据库做操作前后的一个记录表.日常检查维护表日常维护检查表日期检查人检查内容检查结果数据库监控v 查看数据库日志v 检测失效对象v 查看数据库剩余空间v 查看数据库状态v 死锁(阻塞)检查v 作业检查v 监控数据性能采集v 监控SQL语句执行v 其他环节的监控1v 其他环节的监控2操作系统v Vmstat命令v df命令v uptime命令v bdf命令v root mail命令v cmviewcl命令v /var/adm/syslog/syslog.logv 其他命令1v 其他命令2应用v 应用的日志v 应用的进程1v 应用的进程2v 应用的进程3备份备份是否完成备份过程是否正常注释:检查过程是否碰到问题?问题管理记录记录日期记录人问题编号问题简要描述问题分类q硬件q操作系统q数据库问题详细描述:问题产生环境问题诊断原因问题解决步骤变更管理记录变更流水号:1变更提出变更提出人变更提出日期变更原因简要描述:2变更评估变更评估人变更评估日期变更是否实施q是q否变更紧急程度q紧急q一般q不紧急变更实施期限3变更实施变更实施人变更实施日期变更实施步骤简要描述:是否有应急方案q是q否应急方案简要描述:21/21

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 管理财经 > 人员管理/培训管理

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服