欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    宁夏电信帐务结算系统数据库日常维护文档v2[1].0.doc

    • 资源ID:2395290       资源大小:457.50KB        全文页数:27页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    宁夏电信帐务结算系统数据库日常维护文档v2[1].0.doc

    宁夏电信帐务结算系统数据库日常维护文档(v2.0) 宏智科技股份有限公司2003年4月资料版本:V2.0日 期:2003年4月密 级:¨公开资料 ¨内部资料 þ保密资料 ¨机密资料状 态:¨初稿 ¨讨论稿 þ发布版权声明宏智科技股份有限公司©20022002年版权所有,保留一切权利非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文的部分或全部,并不得以任何形式传播。Copyright©2002 by Wholewise Sci.&Tech. Co.,Ltd.All Right Reserved.No part of this document may be reproduced or transmitted in any form or by any means without prior written consent of Wholewise Sci.&Tech. Co.,Ltd. 文档控制记录修改记录日期作者版本修改记录2002-11-13刘高智1.0初稿2003/04/30程国谦1.1修订错误2003/05/05程国谦2.0增加DBA所必须掌握的UNIX命令审阅姓名时间职位程国谦2003/04/25技术资源部经理分发拷贝No.姓名分发时间单位1张建雷2003/05/10宁夏电信公司2崔鹏2003/05/10宏智科技宁夏电信计费系统项目经理目录1系统监控41.1CPU使用情况监控41.2内存使用情况监控41.3系统空间使用情况42oracle存储监控52.1检查oracle日志52.2检查数据库数据表空间的使用情况62.3检查表和索引的扩展72.3.1检查扩展数多于100的表和索引72.3.2检查不能扩展的数据库对象72.4检查回滚段使用情况72.4.1检查回滚段配置情况72.4.2检查回滚段争夺82.4.3检查回滚段的扩展83数据库性能监控83.1收集数据库运行信息83.2跟踪应用运行情况93.3定期对数据库对象进行分析93.4定期更新OPS视图103.5检查数据库排序和临时段103.5.1检查内存排序的比例103.5.2检查临时表空间的设置103.6检查重做日志文件使用情况113.6.1检查logswitch113.6.2检查重做日志文件空间请求113.6.3检查重做日志文件的latch113.7检查数据库的命中率113.7.1检查Library Cache命中率113.7.2检查Data Dictionary Cache命中率113.7.3检查buffer cache命中率123.8v$resource_limit124数据库备份125附录A 脚本126附录B. 其它的一些常用脚本167附录C 常用的数据字典198附录D DBA常用unix命令及配置文件221 系统监控1.1 CPU使用情况监控用vmstat命令监控系统,命令输出如下;# vmstat procs memory page faults cpur b w avm free re at pi po fr de sr in sy cs us sy id0 0 0 32243 1091988 7 0 0 0 0 0 2 2040 3341 1387 10 1 89 注意:cpu选项的id值。该值太小表示cpu繁忙。可能存在cpu瓶颈或有不正常进程存在。可用top命令近一步监控占用资源大的进程。1.2 内存使用情况监控用vmstat 命令监控# vmstat procs memory page faults cpur b w avm free re at pi po fr de sr in sy cs us sy id0 0 0 32243 1091988 7 0 0 0 0 0 2 2040 3341 1387 10 1 89注意:如果memory的free list(free项)持续增大,可能程序存在内存泄漏。Page in(pi)和page out(po)持续为非零值时,表示存在内存瓶颈。1.3 系统空间使用情况用df -k命令检查系统使用空间:注意:检查每个文件系统的使用空间百分比(used),特别是根文件系统(/)、oracle文件系统(/oracle)和归档日志文件系统(/global/arch1,/global/arch2)。不要让使用空间超过80%。当oracle文件系统没有空余空间时,数据库会出现中断的情况。应定期用df(或df k)命令察看oracle文件系统的使用情况,保证使用率在80%以下。不要将数据库备份文件长期存放在oracle文件系统中。注意定期清除oracle的日志文件。若使用ORACLE并行数据库(OPS),禁止在oracle文件系统中创建数据文件。如果是归档日志文件系统满,需要检查备份系统。如果数据库启动在archive log(归档)模式下,应定期察看archive log的文件系统(在计费周期里,建议每隔12个小时察看一次,根据我们的经验,象宁夏电信这样的集中计费系统,每小时生成的日志文件估计在5GB左右,若不及时将归档日志文件备份出去,将导致数据库系统hang住),保证有足够的空间存放archive log文件。及时的备份archive log文件,并做及时的清理。数据库管理员应定期清理log文件、trc文件、和core文件。Oracle的日志文件有:² /oracle/app/oracle/admin/bill/budmp目录下的alert_bill.log文件(数据库日志文件)² /oracle/app/oracle/admin/bill/budmp目录下的*.trc 文件(oracle后台进程产生的trace文件)² /oracle/app/oracle/admin/bill/udump目录下的*.trc 文件 (oracle错误时产生的trace文件)² /oracle/app/oracle/admin/bill/cdump目录下的core_* (oracle core dump 文件)² /oracle/app/oracle/product/8.1.7/dbs 目录下的core_* (oracle core dump 文件)² /oracle/app/oracle/proudct/8.1.7/network/log目录下的listener.log (监听进程日志)² /oracle/app/oracle/proudct/8.1.7/network/log目录下的sqlnet.log (sqlnet日志)应特别注意的是listener.log文件,该文件存放在$ORACLE_HOME/network/log目录下。在监听进程配置不正确或监听进程出现错误时,log文件会增长得很快,应定期察看log文件的大小,并清空该文件,但该文件只能采用> $ORACLE_HOME/network/log/listener.log命令清空该文件而不能删除该文件。2 oracle存储监控2.1 检查oracle日志用vi命令查看数据库日志(/oracle/app/oracle/admin/bill/bdump/alert_bill.log文件)检查数据库的报错信息,尤其注意ORA-600错误、ORA-07445错误、ORA-01578错误等对系统影响较大的错误。对数据库的报错,应首先使用oerr命令查看该错误的解释和基本的应对手段。如:对错误ORA-1562oerr ora 165201652, 00000, "unable to extend temp segment by %s in tablespace %s"/ *Cause: Failed to allocate an extent for temp segment in tablespace./ *Action: Use ALTER TABLESPACE ADD DATAFILE statement to add one or more/ files to the tablespace indicated我们可以很轻易的了解到由于磁盘空间不足导致该错误,可以通过增加数据文件或其他方式解决该故障。对于不能处理的报错,请将错误日志和trace文件mail给系统集成事业部、拨打宏智科技服务热线、通过ORACLE metalink网站()开tar或拨打ORACLE 800服务热线 8008100366解决故障。错误的trace文件存放在/oracle/app/oracle/admin/bill/cdump或/oracle/app/oracle/admin/bill/bdump目录下。如:Mon Apr 15 20:01:44 2002Errors in file /oracle/app/oracle/admin/bill/bdump/smon_11866_bill.trc:ORA-00600: internal error code, arguments: 16224, , , , , , , 2.2 检查数据库数据表空间的使用情况使用如下的脚本检查表空间使用情况,相关脚本参见附录A。FREE_SPACE.SQL 检查表空间剩余空间。FREE_PER_TP.SQL 检查表空间剩余空间百分比。当表空间使用空间超过80%,建议进行垃圾表的清理或增加数据库文件扩大表空间大小。l OPS环境下,不要使用一般文件做数据库的数据文件,日志文件,控制文件。一定要用裸设备,裸设备的设备名是/dev/r<lv_name>,同时一定要注意数据文件大小一定要略小于裸设备大小。l 在增加或删除数据文件后,注意及时维护安装配置文档中的数据文件分配表。2.3 检查表和索引的扩展2.3.1 检查扩展数多于100的表和索引使用LAGRE_EXTENT.SQL检查扩展数多于100的表和索引。对于扩展数多的表和索引,建议:修改数据库对象的存储参数并重建该数据对象。2.3.2 检查不能扩展的数据库对象使用MAX_EXTENT.SQL检查因达到maxextent参数引起的表或索引不能扩展。使用NO_SPACE.SQL检查因表空间的最大空闲块小于表的扩展块引起的表或索引不能扩展。对于第一种情况,可暂时将maxextent设为unlimited或通过重建数据库对象的方式彻底解决该问题。对于第二种情况,应将next调小,将pctincrease设为0。以上两种错误,均应考虑对对象的存储策略进行修订,避免再次出现类似故障。2.4 检查回滚段使用情况2.4.1 检查回滚段配置情况使用ROLL_SEGS.SQL脚本查看回滚段配置。回滚段配置及使用注意以下几点:² 数据库有足够的回滚段。(见6.2)² 回滚段使用独立的表空间。² 每个回滚段的initial_extent和next_extent一样大,pct_increase为0。² 每个回滚段使用相同的存储策略² system回滚段例外² 大事务使用少量大的回滚段,小事务使用大量小的回滚段2.4.2 检查回滚段争夺使用ROLL_CONT.SQL检查回滚段竞争。当结果大于1%时,需增加回滚段的数量。2.4.3 检查回滚段的扩展使用ROLL_EXTENT.SQL检查回滚段的扩展。如果大部分回滚段扩展次数较大。则:² 在回滚段的存储参数中设置optimal值。Optimal值必须大于minextent值。² 增加回滚段的initial和next值。² 增加回滚段表空间的大小。如果是某个回滚段扩展较大。则表明数据库中有较大的事务。建议建一个大的回滚段,用于大的事务。平时大的回滚段处于offline状态,在大事务执行时,online大的回滚段。在sql语句中指明事务使用大的回滚段。3 数据库性能监控在日常维护过程中,应定时对数据库系统运行情况进行检查。例如定时检查数据库表空间使用情况;定时对数据库性能进行分析(使用utlbstat/utlestat脚本对数据库的数据库缓冲区命中率等进行监控);定时对数据库的表和索引进行分析;定时对占用系统资源最多的数据库进程进行跟踪并反馈给应用开发人员等以保证数据库系统的运行正常与高效。3.1 收集数据库运行信息ORACLE提供了两个脚本utlbstat.sql和utlestat.sql用于收集数据库运行信息(包括数据库缓冲区命中率、磁盘读写分布等),在数据库最忙的时候执行如下脚本收集信息:Svrmgrl > alter system set timed_statistics=true;Svrmgrl > ?/rdbms/admin/utlbstat.sql执行该语句2030分钟svrmgrl > ?/rdbms/admin/utlestat.sql(?$ORACLE_HOME)svrmgrl > alter system set timed_statistics=false;在当前目录下将生成一个report.txt文件,可以与在系统空闲或其他时间生成的文件进行比较,判断是否需要修改数据库初始化参数。3.2 跟踪应用运行情况数据库运行过程中可能由于应用sql语句不规范、索引失效或其他问题导致性能下降,响应速度变慢,可以通过如下方式对应用进行跟踪:svrmgrl > ?/utlxplansvrmgrl > select sid,serial# from v$session where username=&username;svrmgrl > execute dbms_system.set_sql_trace_in_session(sid,serial#,true);执行该语句2030分钟左右svrmgrl > execute dbms_system.set_sql_trace_in_session(sid,serial#,false);在$ORACLE_BASE/admin/$ORACLE_SID/udump目录下将生成一个trc文件,可以使用如下命令将其转换为文本文件:$ tkprof out.trc out.txt explain=username/password sys=no3.3 定期对数据库对象进行分析定期对表进行分析有几点需要注意:u 系统表不能进行分析,一旦对系统表进行分析将导致数据库性能缓慢甚至产生其他问题,这是由于ORACLE对系统表的查询的优化方式和一般情况下的SQL优化方式不同。u 需要对所有非系统的表全部进行分析。如果只分析部分表则可能导致数据库执行时选择错误的执行策略,导致数据库性能缓慢。u 由于目前计费帐务系统的应用方式,建议每旬下帐后对所有的应用的表进行分析;但由于部分表记录数可能达到几千万条,这样一个晚上可能无法完成所有表的分析,因此建议采用采样分析。建议在应用部门的配合下,编写一个适合当地的分析脚本(大表采用采样分析10万条,小表则全部分析)并定期进行分析并记录分析时间及执行人以提高系统的运行效率。3.4 定期更新OPS视图在OPS环境下,建议每隔3/4周运行catparr.sql以刷新ops依赖的底层数据字典ext_to_obj视图。由于在OPS的环境下,v$ping和v$cache是依据内部表ext_to_object的信息产生的。而表ext_to_obj是从ext_to_obj_view(由脚本catparr.sql产生的)视图产生的静态表。由此可知,ext_to_obj是静态的,它随时间而老化,这就引起为什么在v$ping和v$cache视图中某些对象的丢失,解决这个问题只有定期地运行catparr.sql,以刷新ext_to_obj内部表。3.5 检查数据库排序和临时段3.5.1 检查内存排序的比例用DISK_SORT.SQL检查在磁盘排序的百分比。当比例大于5时,需增加sort_area_size值。3.5.2 检查临时表空间的设置临时表空间的设置应注意以下事项:² 数据库中使用一个或多个临时表空间² 在每个用户定义时指定临时表空间,不允许使用system表空间作为用户的临时表空间² 将临时表空间的类型设为temporary。² 临时表空间的存储参数设置。使用相同的initial和next值。设置pctincease为0,initial及next应为sort_area_size的整数倍3.6 检查重做日志文件使用情况3.6.1 检查logswitch查看alert_<sid>.log文件,看重做日志文件切换的间隔。如果间隔时间经常性的小于10分钟或经常出现诸如“checkpoint not complete”之类的提示则建议增大重做日志文件的大小。ORACLE建议重做日志文件切换的间隔时间应为2040分钟。3.6.2 检查重做日志文件空间请求用REDO_SPACE.SQL查看。百分比应小于1%,否则应增加log_buffers设置。3.6.3 检查重做日志文件的latch用REDO_LATCH1.SQL检查redolog的allocation latch。用REDO_LATCH2.SQL检查redolog的copy latch。如果百分比大于1%,则应增加db_block_lru_latches和log_buffers。3.7 检查数据库的命中率3.7.1 检查Library Cache命中率用LIB_CACHE.SQL查看library cache命中率。如果命中率miss大于1%,增大shared_pool_size。3.7.2 检查Data Dictionary Cache命中率用DICT_CACHE.SQL查看Data Dictionary Cache命中率。如果命中率miss大于15,增大shared_pool_size。3.7.3 检查buffer cache命中率用BUFFER_CACHE.SQL查看buffer cache命中率。如果命中率小于95%,增大db_block_buffers。分析non_sys用户的表和索引经常分析非sys用户的表和索引,有利于数据库性能。3.8 v$resource_limit在ORACLE8版本中,双机之间的参数应该经常进行观察并做及时调整,否则可能导致客户端无法正常登录数据库服务器:svrmgrl > select * from v$resource_limit;一旦发现参数max_allocate超过或接近initial_allocate设置,应及时调整相应参数4 数据库备份对于数据库备份来说,最佳的方式是使用自动备份系统(例如Legato或Veritas备份软件ORACLE RMAN磁带库)对数据库进行定时自动备份,但自动备份系统不能解决所有的问题,应使用exp命令对系统中的配置表等进行定期备份,以便于系统故障时的快速恢复:常用备份脚本如下:exp user/passwd file=exp.dmp log=exp.log buffer=1048576 compress=y 注意:² 使用exp备份前一定要检查数据库环境变量尤其是语言集设置是否有误(zhs16cgb231280或zhs16gbk);² 备份时一定要输出log文件以利于检查备份工作是否正常完成;² 使用compressy选项有利于在导入时对数据块扩展进行优化。5 附录A 脚本² FREE_SPACE.SQL select tablespace_name,sum(blocks) as free_blk,trunc(sum(bytes)/(1024*1024) as free_m,max(bytes)/(1024) as big_chunk_k,count(*) as num_chunksfrom dba_free_spacegroup by tablespace_name² FREE_PER_TP.SQSELECT tablespace_name, largest_free_chunk, nr_free_chunks, sum_alloc_blocks, sum_free_blocks, to_char(100*sum_free_blocks/sum_alloc_blocks, '09.99') | '%' AS pct_freeFROM ( SELECT tablespace_name, sum(blocks) AS sum_alloc_blocksFROM dba_data_filesGROUP BY tablespace_name),( SELECT tablespace_name AS fs_ts_name,max(blocks) AS largest_free_chunk,count(blocks) AS nr_free_chunks,sum(blocks) AS sum_free_blocksFROM dba_free_spaceGROUP BY tablespace_name )WHERE tablespace_name = fs_ts_name² LAGRE_EXTENT.SQLselect owner,segment_name,extents,bytes , max_extents,next_extent from dba_segments where segment_type in ('TABLE','INDEX') and extents>200 order by owner,segment_name;² MAX_EXTENT.SQLSelect a.owner,a.segment_type,a.segment_name,a.tablespace_name From dba_segments a,dba_semgments bWhere a.extnets+1>b.max_extents And a.owner=b.owner And a.segment_name=b.segment² NO_SPACE.SQLselect a.owner, a.segment_name, b.tablespace_name, decode(ext.extents,1,b.next_extent, a.bytes*(1+b.pct_increase/100) nextext, freesp.largest from dba_extents a, dba_segments b, (select owner, segment_name, max(extent_id) extent_id, count(*) extents from dba_extents group by owner, segment_name ) ext, (select tablespace_name, max(bytes) largest from dba_free_space group by tablespace_name ) freesp where a.owner=b.owner and a.segment_name=b.segment_name and a.owner=ext.owner and a.segment_name=ext.segment_name and a.extent_id=ext.extent_id and b.tablespace_name = freesp.tablespace_name and decode(ext.extents,1,b.next_extent, bytes*(1+b.pct_increase/100) > freesp.largest² ROLL_SEGS.SQLSelect segment_name,tablespace_name,initial_extent,next_extent,pct_increase From dba_rollback_segs² ROLL_CONT.SQLselect w.class, (sum(w.count)/sum(s.value) * 100from v$waitstat w , v$sysstat swhere w.class in ('system undo header','system undo block', 'undo header', 'undo block') and s.name in ('db block gets','consistent gets') group by w.class² ROLL_EXTENT.SQLselect a.name,b.extentsfrom v$rollname a,v$rollstat bwhere a.usn=b.usn² DISK_SORT.SQLSELECT DISK.VALUE "DISK", MEM.VALUE "MEM",(DISK.VALUE/MEM.VALUE)*100 "RATIO" FROM V$SYSSTAT MEM, V$SYSSTAT DISK WHERE MEM.NAME = 'sorts (memory)' AND DISK.NAME = 'sorts (disk)'² REDO_SPACE.SQLselect (a.value/b.value)*100from v$sysstat a,v$sysstat bwhere a.name='redo buffer allocation retries'and b.name='redo entries'² REDO_LATCH1.SQLselect (misses/decode(gets,0,1,gets)*100 Ratio1,(immediate_misses/decode(immediate_misses+ immediate_gets,0,1, immediate_misses+immediate_gets)*100) Ratio2from v$latch lwhere l.name = 'redo allocation'² REDO_LATCH2.SQLselect (misses/decode(gets,0,1,gets)*100 Ratio1, (immediate_misses/decode(immediate_misses+ immediate_gets,0,1, immediate_misses+immediate_gets)*100) Ratio2from v$latch lwhere l.name = 'redo copy'² LIB_CACHE.SQLselect sum(pins), sum(reloads),sum(reloads)/sum(pins)*100from v$librarycache² DICT_CACHE.SQLselect sum(gets), sum(getmisses),sum(getmisses)/sum(gets)*100from v$rowcache² BUFFER_CACHE.SQLselectsum(decode(name, 'consistent gets',value, 0) "Consis Gets",sum(decode(name, 'db block gets',value, 0) "DB Blk Gets",sum(decode(name, 'physical reads',value, 0) "Phys Reads",(sum(decode(name, 'consistent gets',value, 0) +sum(decode(name, 'db block gets',value, 0) -sum(decode(name, 'physical reads',value, 0)/(sum(decode(name, 'consistent gets',value, 0) + sum(decode(name, 'db block gets',value, 0) ) * 100 "Hit Ratio"from v$sysstatwhere name in ('db block gets','consistent gets','physical reads')6 附录B. 其它的一些常用脚本² 监控实例的等待select event,sum(decode(wait_Time,0,0,1) "Prev", sum(decode(wait_Time,0,1,0) "Curr",count(*) "Tot" from v$session_Wait group by event order by 4² 监控当前数据库谁在运行什么SQL语句SELECT osuser, username, sql_text from v$session a, v$sqltext b where a.sql_address =b.address order by address, piece² 查找使用CPU最多的用户Sessionselect a.sid,spid,status,substr(a.program,1,40) prog,terminal,osuser,value/60/100 value from v$session a,v$process b,v$sesstat c where c.statistic#=12 and c.sid=a.sid and a.paddr=b.addr order by value desc² 查看锁信息SELECT sn.username, m.sid, m.type, DECODE(m.lmode, 0, 'None', 1, 'Null', 2, 'Row Share', 3, 'Row Excl.', 4, 'Share', 5, 'S/Row Excl.',6, 'Exclusive', lmode, ltrim(to_char(lmode,'990') lmode, DECODE(m.request,0, 'None', 1, 'Null', 2, 'Row Share', 3, 'Row Excl.', 4, 'Share', 5, 'S/Row Excl.', 6, 'Exclusive', request, ltrim(to_char(m.request, '990') request, m.id1, m.id2 FROM v$session sn, v$lock m WHERE (sn.sid = m.sid AND m.request != 0) OR (sn.sid = m.sid AND m.request = 0 AND lmode != 4 AND (id1, id2) IN (SELECT s.id1, s.id2 FROM v$lock s WHERE request != 0 AND s.id1 = m.id1 AND s.id2 = m.id2) ) ORDER BY id1, id2, m.request² 检查哪个用户锁住了表column username format a13 column object_name format a20 column MACHINE format a10 select a.sid,a.type,a.id1,c.object_name,b.username,a.lmode,B.MACHINE,D.SPIDfrom v$lock a,v$session b,all_objects c,V$PROCESS D where a.sid=b.sid and a.type in ('TM','TX') and c.object_id=a.id1 AND B.PADDR=D.ADDR order by username² 查看前台正在发出的SQL语句select user_name,sql_text from v$open_cursor where sid in (select sid from (select sid,seria

    注意事项

    本文(宁夏电信帐务结算系统数据库日常维护文档v2[1].0.doc)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开