




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库维护工作手册文档编号:编写:批准:文档名称:审核:批准日期:目录1 概述32 数据库监控32.1 数据库监控工作内容32.2 数据库监控工作步骤32.2.1 查看数据库日志32.2.2 检查是否有失效白数据库对象42.2.3 查看数据库剩余空间42.2.4 重点表检查42.2.5 查看数据库是否正常42.2.6 死锁检查52.2.7 监控SQL语句的执行52.2.8 操作系统级检查52.2.9 其他53 数据库维护53.1 数据库维护工作内容53.2 数据库维护工作事项53.2.1 页面修复53.2.2 数据库对象重建63.2.3 碎片回收(数据重组)63.2.4 删除不用的数据63.2
2、.5 备份恢复63.2.6 历史数据迁移63.2.7 定期修改密码73.2.8 删除掉不必要的用户73.2.9 其他74 数据库管理常用SQL脚本75 日常维护和问题管理165.1 目的165.2 例行工作建议165.3 相关填表说明161概述数据库的日常监控是使管理员及时了解系统异常的手段。大部分情况下,系统总是正常运行的。只有对正常情况的充分了解,才能通过对比正常情况发现异常情况。对于数据库的日常监控要有记录,文字记录或者电子文档保存。对于数据库异常进行分析,提出解决方案。日常工作包括监控和维护两个部分。此文档中关于数据库的运行命令示例主要针对于ORACL嗷据库,但对于SYBAS嗷据库同样
3、有参考价值,只要换用相对应的语句即可。数据库监控2数据库监控数据库监控工作内容制定和改进监控方案,编写监控脚本。对于数据库进行日常监测,提交记录。根据监测结果进行分析、预测,提交相应的系统改进建议方案。数据库监控工作步骤2.1.1 查看数据库日志数据库的日志上会有大量对于管理员有用的信息。ORACLE勺Alert日志纪录了数据库系统所报的系统级错误信息,以及数据块失效等严重错误信息。错误信息的产生,会产生相应的跟踪文件,通过查看警告日志和跟踪文件可查找错误原因,对于发现的问题应及时解决和汇报。如:1 .表空间是否满,是否需要进行添加或者扩展。Alert文件中会显示有表块无法扩展的提示。2 .表
4、的块或者页面是否损坏。(往往这时alert文件中会显示ora-600的错误。)3 .数据库是否进行了异常操作。(如:droptablespace等等)。实用命令: 报警日志文件(alert.log或alrt.ora)记录数据库启动,关闭和一些重要的出错信息。数据库管理员应该经常检查这个文件,并对出现的问题作出即使的反应。可以通过以下SQL找到他的路径selectvaluefromv$parameterwhereupper(name)=BACKGROUND_DUMP_DEST,或通过参数文件获得其路径,或者showparameterBACKGROUND_DUMP_DEST。 后台跟踪文件路径与报
5、警文件路径一致,记载了系统后台进程出错时写入的信息。 用户跟踪文件记载了用户进程出错时写入的信息,一般不可能读懂,可以通过ORACLE的TKPROF工具转化为可以读懂的格式。用户跟踪文件的路径,你可以通过以下SQL找到他的路径selectvaluefromv$parameterwhereupper(name)=USER_DUMP_DEST,或通过参数文件获得其路径,或者showparameterUSER_DUMP_DEST。可以通过设置用户跟踪或dump命令来产生用户跟踪文件,一般在调试、优化、系统分析中有很大的作用。可在参数文件种用SQL_TRACE=TRUE打开该文件(对所有用户),也可用
6、altersessionsetsql_trace=true打开当前会话,也可用executedbms_system.set_sql_trace_in_session(sid,serial#,true)打开指定会话。2.1.2 检查是否有失效的数据库对象主要关注索引,触发器,存储过程,函数等等。如:查找user_objects数据字典,看其中是否有状态为invalid的对象。判断失效原因(如:视图失效的原因有可能是由于创建视图的基表被删除等等),找出原因可进行对象重建或修复。实用命令:Selectobject_name,object_typeFromuser_objectsWhereobject
7、_type=INVALID2.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、频率,处理(杀掉、等待自然解锁等)。ORACL版本中的死锁会在alert文件中产生记录,oracle会自动解锁(其实是选择一个杀掉)。对于死锁的处理过程要进行记录。可以使用OEMLL具或者查找相关的V雌图来确认产生阻塞的语句。2.1.7 监控SQL语句的执行查找效率低下的SQL语句,联系协调开发人员,进行相关处理。可使用ORACL睫供的AWRS行,也可使用ORACL提供的OEM:具执行,或者自行编制的脚本等等。2.1.8 操作系统级检查运行vmstat,sar,topas(AIX系统),glance(HP系统)等命令检查CPU内存、虚拟内存等的使用情况。运行df,du,iostat检查磁盘使用
10、情况运行netstat检查网络情况运行手工编制的监控脚本检查。针对于操作系统的不同,使用的命令也会有不同,请参考相应的操作系统文档。建议使用man命令察看相应的帮助信息。2.1.9 其他每天查看晚间定时执行的数据库信息收集作业和备份作业的日志输出,确认都已正常完成。往往不能正常完成是由于如下的原因:请确认脚本是否变动(错误的修改造成等等),设备(主机,磁盘阵列,磁带库,网络等等)是否正常,空间是否足够等等。建议每天按业务峰值情况,对数据库性能数据进行定时采集及分析。3数据库维护数据库维护工作内容包括维护、故障诊断、错误修复、备份恢复、历史数据迁移等过程。数据库维护工作事项3.1.1 页面修复根
11、据日常监控的结果,进行页面(或者数据库坏块)修复,如将表数据导出后重建表,然后导入数据。提交修复记录。3.1.2 数据库对象重建根据数据库监控的结果,重建失效的对象。如:索引、存储过程、函数、视图、触发器等等。实用命令:Alterindexrebuildonline;3.1.3 碎片回收(数据重组)当某些数据库运行一段时间后,表会产生碎片,影响数据库的性能。可根据日常检查的ORACL嗷据库本身的原因,高水位线)降低,因此不会释EXP,然后进行IMP操作,以结果,运用工具或脚本对于数据库空间进行重组或回收。由于在进彳T了DELETEB作之后也不会使HWMHighWaterMark放所占用的空间,
12、所以建议在进行了数据迁移之后将全库进行释放占用的空间。3.1.4 删除不用的数据此项工作要得到开发方、设计人员、以及相关人员的确认后,方可执行。3.1.5 备份恢复需要定期对于数据库备份进行有效性检测,定期进行数据恢复的演练操作。以防止万一的数据库事故时准备不足。数据库需要采用在线的热备份,不需要关闭数据库进行,在备份的同时可以进行正常的数据库的各种操作,满足了7*24的系统的需要。数据库的备份不能影响用户对数据库的访问。目标需要在线热备份多级增量备份并行备份,恢复减小所需要备份量备份,恢复使用简单可参考如下的方案:1 .每月做一个数据库的全备份(包含只读表空间)2 .每星期做一次零级备份(不
13、包含只读表空间)3 .每个星期三做一次一级备份4 .每天做一个二级备份5 .任何表空间改成只读状态后做一个该表空间的备份。6 .当需要时(如四个小时归档文件系统就要接近满了)备份归档文件。3.1.6 历史数据迁移定期进行历史数据迁移,减少生产数据库的压力。3.1.7 定期修改密码包括SYS,SYSTEM等用户。3.1.8 删除掉不必要的用户对于系统安装时的,M示用户,如:hr,scott等。建议每周定期清理和备份一周所产生的Alert日志、跟踪文件和dump文件。分别位于$ORACLE_BASE/admin/$ORACLE_SID/bdump,$ORACLE_BASE/admin/$ORACL
14、E_SID/udump,$ORACLE_BASE/admin/$ORACLE_SID/cdump,等目录下。定期对表进行统计分析,(如可使用analyze等命令,8i以上有dbms_stats包来实现,使SQL优化器总是能找到最好的查询策略。制定和执行纪录保证生产库的安全:应绝对禁止在生产库上进行开发、测试。3.1.9 其他针对不同的数据库版本的不同特点进行相应的维护操作。具体情况请参见ORACL改档或者访问metalink。4数据库管理常用SQL脚本常用的SQL脚本,在实施时可供数据库管理员参考,在执行时,需要进行相应的修改。1 .剩余空间检查SELECTtablespace_name,su
15、m(blocks)asfree_blk,trunc(sum(bytes)/(1024*1024)asfree_m,max(bytes)/(1024)asbig_chunk_k,count(*)asnum_chunksFROMdba_free_spaceGROUPBYtablespace_name2 .表空间数据量情况显示SELECTtablespace_name,max_blocks,count_blocks,sum_free_blocks,to_char(100*sum_free_blocks/sum_alloc_blocks,99.99)|%ASpct_freeFROM(SELECTtab
16、lespace_name,sum(blocks)ASsum_alloc_blocksFROMdba_data_filesGROUPBYtablespace_name),(SELECTtablespace_nameASfs_ts_name,max(blocks)ASmax_blocks,count(blocks)AScount_blocks,sum(blocks)ASsum_free_blocksFROMdba_free_spaceGROUPBYtablespace_name)WHEREtablespace_name=fs_ts_name3 .表和索引分析BEGINdbms_utility.an
17、alyze_schema(&OWNER,ESTIMATE,NULL,5);END;4 .检查空间情况SELECTa.table_name,a.next_extent,a.tablespace_nameFROMall_tablesa,(SELECTtablespace_name,max(bytes)asbig_chunkFROMdba_free_spaceGROUPBYtablespace_name)fWHEREf.tablespace_name=a.tablespace_nameANDa.next_extentf.big_chunk5 .检查已经存在的空间扩展SELECTcount(*),se
18、gment_name,segment_type,dt.tablespace_nameFROMdba_tablespacesdt,dba_extentsdxWHEREdt.tablespace_name=dx.tablespace_nameANDdt.next_extent!=dx.bytesANDdx.owner=&OWNERGROUPBYsegment_name,segment_type,dt.tablespace_name6 .检查没有主键的表SELECTtable_nameFROMall_tablesWHEREowner=&OWNERMINUSSELECTtable_nameFROMal
19、l_constraintsWHEREowner=&OWNERANDconstraint_type=P7 .检查失效的主键SELECTowner,constraint_name,table_name,statusFROMall_constraintsWHEREowner=&OWNERANDstatus=DISABLEDANDconstraint_type=P8 .重建索引,具体参数请根据实际情况进行修改SELECTalterindex|index_name|rebuild,tablespaceINDEXESstorage(initial256Knext256K);FROMall_indexesW
20、HERE(tablespace_name!=INDEXESORnext_extent!=(256*1024)ANDowner=&OWNER9 .对比两个实例的不同SELECTobject_name,object_typeFROMuser_objectsMINUSSELECTobject_name,object_typeFROMuser_objects&my_db_link10 .查看动态性能视图Select*fromV$FIXED_TABLE11 .查看约束selecta.constraint_name,a.constraint_type,a.*fromuser_constraintsawhe
21、retable_name=table_name;selectconstraint_name,column_namefromuser_cons_columnswheretable_name=table_name;12 .查看索引user_indexes包含索引的名字,user_ind_columns包含索引的列.13 .查看数据库启动参数:showparameterpara,v$parameter提供当前会话信息,v$system_parameter提供当前系统信,官。其中isses_modifiable,issys_modifiable表示是否允许动态修改。14 .查看进程号:selectp.
22、spid,s.usernamefromv$processp,v$sessionswherep.addr=s.paddr;15 .查看数据文件:selectname,statusfromv$datafile;select*fromdba_data_files;16 .查看数据文件状态selectd.file#f#,,d.status,h.statusfromv$datafiled,v$datafile_headerhwhered.file#=h.file#;17 .查看控制文件selectnamefromv$controlfile;selecttype,record_size,rec
23、ords_total,records_usedfromv$controlfile_record_sectionwheretype=DATAFILE;18 .查看是否归档模式:archiveloglistselectname,log_modefromv$database;selectarchiverfromv$instance;19 .查看日志组:selectgroups,current_group#,sequence#fromv$thread;selectgroup#,sequence#,bytes,members,statusfromv$log;select*fromv$logfile;其中
24、status为空表示正常。20 .查看largepoolselect*fromv$sgastatwherepool=largepool;21 .查看归档位置showparameterarchiveselectdestination,binding,target,statusfromv$archive_dest;22 .查看归档进程select*fromv$archive_processes;23 .查看正在备份的数据文件select*fromv$backup;24 .查看需要恢复的文件select*fromv$recover_file;25 .查看所有归档日志文件select*fromv$ar
25、chived_log;26 .查看恢复时要用到的日志文件select*fromv$recovery_log;27 .查看SGA勺结构Showsga;select*fromv$sgastat;28 .提取librarycache的命中率selectgethitratiofromv$librarycachewherenamespace=;29 .查看正在运行的SQL语句selectsql_text,users_executing,executions,loadsfromv$sqlarea;select*fromv$sqltextwheresql_text=select*fromemp%;Misse
26、s30 .查看librarycachereload情况:selectsum(pins)aExecutions”,sum(reloads)“cachesum(reloads)/sum(pins)fromv$librarycache;31 .查看大匿名块selectsql_textfromv$sqlareawherecommand_type=47andlength(sql_text)500;32 .查看当前会话的UGAJxselectsum(value)|bytesTotalsessionmemory”fromv$mystat,v$statnamewherename-sessionugamemor
27、yandv$mystat.statistic#=v$statname.statistic#;33 .查看所有MTS用户的UGALselectsum(value)|bytesTotalsessionmemory”fromv$sesstat,v$statnamewherename=sessionugamemoryandv$sesstat.statistic#=v$statname.statistic#;34 .查看所有用户使用的最大的UGAX:selectsum(value)|bytesTotalsessionmemory”fromv$sesstat,v$statnamewherename=ses
28、sionugamemorymaxandv$sesstat.statistic#=v$statname.statistic#;35 .查看high-watermark以下的块数selecttable_name,blocksfromdba_tableswheretable_name=table_name;36 .查看会话的I/O:selectio.block_gets,io.consistent_gets,io.physical_readsfromv$sess_ioio,v$sessionswheres.audsid=USERENV(SESSIONID)andio.sid=s.sid;37 .查看
29、Bufferpool的命中率selectname,1-(physical_reads/(db_block_gets+consistent_gets)“HIT_RATIOfromsys.v$buffer_pool_statisticswheredb_block_gets+consistent_gets0;38 .查看freelist的竞争selectclass,count,timefromv$waitstatwhereclass=segmentheader;selectevent,total_waitsfromv$system_eventwhereevent=bufferbusywaits;bu
30、fferbusywaits可在两种情况发生:1dirtyqueue已满,2freelist竞争。39 .查看freelist竞争发生在哪个segment上selects.segment_name,s.segment_type,s.freelists,w.wait_time,w.seconds_in_wait,w.statefromdba_segmentss,v$session_waitwwherew.event=bufferbusywaitsandw.p1=s.header_fileandw.p2=s.header_block;40 .查看全表扫描发生的次数selectname,valuefr
31、omv$sysstatwherenamelike%tablescan%;41 .查看大操作的执行情况selectsid,serial#,opname,to_char(start_time,HH24:MI:SS(sofar/totalwork)*100aspercent_completefromv$session_longops;42 .查看数据文件的I/Oselectphyrds,phywrts,fromv$datafiled,v$filestatfwhered.file#=f.file#;43 .查看空闲块数少于10%勺segment(blocks上)s
32、electowner,table_name,blocks,empty_blocksfromdba_tableswhereempty_blocks/(blocks+empty_blocks)0.144 .查看migration和chaininganalyzetabletable_namecomputestatistics;selectnum_rows,chain_cntfromdba_tableswheretable_name=table_name;45 .查看表的统计信息analyzetabletable_namecomputestatistics;)asstart_t,在high-water
33、mark以下,empty_blocks其andblocks+empty_blocks!=0;selectnum_rows,blocks,empty_blocksasempty,avg_space,chain_cnt,avg_row_lenfromdba_tableswhereowner=HRandtable_name=table_name;46.查看索引的统计信息analyzeindexindex_namevalidatestructure;select(del_lf_rows_len/lf_rows_len)*100asindex_usagefromindex_stats;5日常维护和问题管理目的作为一名数据库管理员,数据库应用的正常稳定运行是保障我们
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 防潮贴纸施工方案
- 加装门斗施工方案
- 人教A版 (2019)必修 第二册第六章 平面向量及其应用6.2 平面向量的运算教学设计及反思
- 医疗服务提升与医院建设可行性研究(仅供参考)
- 楼板钻孔施工方案
- 亳州2024年安徽亳州市招聘政府专职消防员79人笔试历年参考题库附带答案详解
- 关于成立农业种植公司可行性研究报告
- 低空经济产业园运营模式可行性研究报告
- 二零二五厂房转租协议书
- 二零二五版工程技术咨询服务合同书的范文模板
- 2025届高考数学二轮总复习专题2三角函数与解三角形专项突破2三角函数与解三角形解答题课件
- 冶金过程优化-洞察分析
- 人教版四年级下册数学第三单元《运算律》(同步练习)
- 电力建设项目工程结算编制讲义
- 【MOOC】中国近现代史纲要-浙江大学 中国大学慕课MOOC答案
- GB/T 21477-2024船舶与海上技术非金属软管组件和非金属补偿器的耐火性能试验方法
- 设备运输包装方案
- 高中信息技术《走近人工智能》教学设计
- 第八章 坚持以促进国际安全为依托-国家安全教育大学生读本教案
- 建设工程施工合同纠纷起诉状范本6篇
- 中华人民共和国保守国家秘密法实施条例培训课件
评论
0/150
提交评论