您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > Oracle数据库日常管理方案精
1.Oracle数据库日常管理方案Oracle数据库的运维处理,更主要的是做好数据库的管理工作,做好数据库的检查与备份工作,然后需要熟悉相关的逻辑结构故障处理方法、物理结构故障处理方法,应对数据库损坏的情况,在数据库发生损坏而无法修复的时候,能利用数据库管理工作中所做的数据备份及时恢复系统、数据,恢复正常生产工作。1.1.数据库管理Oracle数据库的管理主要是要做好日常的检查管理工作,并检查好数据库的备份情况,在发生紧急情况时能及时不仅切换到备用系统上进行工作,并要能在数据库数据出现异常的时候,能及时恢复数据。因此,做好日常的检查与管理工作尤其重要,主要工作包括:数据库的性能监控检查数据库状态巡检检查数据库备份情况与可恢复性检查1.1.1.数据库性能监控管理通过对数据库性能监控的管理工作,可以有效的防范风险事件的发生,并能从长时间的运行数据中,总结出数据库性能的状态,为系统性能优化、隐患事件排查提供更好的依据。1.1.1.1.查找前十条性能差的sqlSELECT*FROM(selectPARSING_USER_ID,EXECUTIONS,SORTS,COMMAND_TYPE,DISK_READS,sql_textFROMv$sqlareaorderBYdisk_readsDESC)whereROWNUM10;1.1.1.2.查询有enqueue等待的事件SELECTb.SID,b.serial#,b.username,machine,event,wait_time,CHR(BITAND(p1,-16777216)/16777215)||CHR(BITAND(p1,16711680)/65535)EnqueueTypeFROMv$session_waita,v$sessionbWHEREa.eventNOTLIKE'SQL*N%'ANDa.eventNOTLIKE'rdbms%'ANDa.SID=b.SIDANDb.SID8ANDa.event='enqueue'ORDERBYusername;1.1.1.3.如何确定哪个表空间读写频繁selectname,phyrds,phywrts,readtim,writetimfromv$filestata,v$dbfilebwherea.file#=b.file#orderbyreadtimdesc;SELECTs.sid,kglpnmod“Mode”,kglpnreq“Req”,SPID“OSProcess”FROMv$session_waitw,x$kglpnp,v$sessions,v$processoWHEREp.kglpnuse=s.saddrANDkglpnhdl=w.p1rawandw.eventlike‘%librarycachepin%’ands.paddr=o.addr;1.1.1.4.查询全表扫描的表SQLcolnamefora30SQLselectname,valuefromv$sysstatwherenamein('tablescans(shorttables)','tablescans(longtables)');NAMEVALUE----------------------------------------tablescans(shorttables)18602tablescans(longtables)111SQLselectcount(target),targetfromv$session_longopswhereopname='TableScan'groupbytarget;COUNT(TARGET)TARGET-------------------------------------------84ECM_APPL.RPTLOG159ECM_DCTM_OTHR.DMR_CONTENT_S9ECM_DCTM_OTHR.DM_SYSOBJECT_R2ECM_DCTM_OTHR.DM_SYSOBJECT_S1.1.1.5.查出全表扫描的表Selectsql_textfromv$sqltextt,v$sql_planpWheret.hash_value=p.hash_valueAndp.operation=’TABLEACCESS’Andp.option=’FULL’Orderbyp.hash-value,t.piece;1.1.1.6.查找FastFullindex扫描的Sql语句可以这样:Selectsql_textfromv$sqltextt,v$sql_planpWheret.hash_value=p.hash_valueAndp.operation=’INDEX’Andp.option=’FULLSCAN’Orderbyp.hash-value,t.piece;1.1.1.7.查询硬语法分析的次数SQLselectname,valuefromv$sysstatwherenamelike'parsecount%';NAMEVALUE----------------------------------------parsecount(total)16103parsecount(hard)343parsecount(failures)5该项显示buffercache大小是否合适。公式:1-((physicalreads-physicalreadsdirect-physicalreadsdirect(lob))/sessionlogicalreads)执行:select1-((a.value-b.value-c.value)/d.value)fromv$sysstata,v$sysstatb,v$sysstatc,v$sysstatdwherea.name=’physicalreads’andb.name=’physicalreadsdirect’andc.name=’physicalreadsdirect(lob)’andd.name=’sessionlogicalreads’;1.1.1.8.显示buffer命中率公式:1-(physicalreads/(dbblockgets+consistentgets))执行:select1-(sum(decode(name,'physicalreads',value,0)))/(sum(decode(name,'dbblockgets',value,0))+sum(decode(name,'consistentgets',value,0)))bufferhitratiofromv$sysstat;Softparseratio:这项将显示系统是否有太多硬解析。该值将会与原始统计数据对比以确保精确。例如,软解析率仅为0.2则表示硬解析率太高。不过,如果总解析量(parsecounttotal)偏低,这项值可以被忽略。公式:1-(parsecount(hard)/parsecount(total))执行:select1-(a.value/b.value)fromv$sysstata,v$sysstatbWherea.name='parsecount(hard)'andb.name='parsecount(total)';In-memorysortratio:该项显示内存中完成的排序所占比例。最理想状态下,在OLTP系统中,大部分排序不仅小并且能够完全在内存里完成排序。公式:sorts(memory)/(sorts(memory)+sorts(disk))执行:selecta.value/(b.value+c.value)fromv$sysstata,v$sysstatb,v$sysstatcwherea.name=’sorts(memory)’andb.name=’sorts(memory)’andc.name=’sorts(disk)’;Parsetoexecuteratio:在生产环境,最理想状态是一条sql语句一次解析多数运行。公式:1-(parsecount/executecount)执行:select1-(a.value/b.value)fromv$sysstata,v$sysstatbwherea.name=’parsecount(total)’andb.name=’executecount’;ParseCPUtototalCPUratio:该项显示总的CPU花费在执行及解析上的比率。如果这项比率较低,说明系统执行了太多的解析。公式:1-(parsetimecpu/CPUusedbythissession)执行:select1-(a.value/b.value)fromv$sysstata,v$sysstatbwherea.name=’parsetimecpu’andb.name=’CPUusedbythissession’;ParsetimeCPUtoparsetimeelapsed:通常,该项显示锁竞争比率。这项比率计算是否时间花费在解析分配给CPU进行周期运算(即生产工作)。解析时间花费不在CPU周期运算通常表示由于锁竞争导致了时间花费。公式:parsetimecpu/parsetimeelapsed执行:selecta.value/b.valuefromv$sysstata,v$sysstatbwherea.name=’parsetimecpu’andb.name=’parsetimeelapsed’;从V$SYSSTAT获取负载间档(LoadProfile)数据负载间档是监控系统吞吐量和负载变化的重要部分,该部分提供如下每秒和每个事务的统计信息:logonscumulative,parsecount(total),parsecount(hard),executes,physicalreads,physicalwrites,blockchanges,andredosize.被格式化的数据可检查’rates’是否过高,或用于对比其它基线数据设置为识别systemprofile在期间如何变化。例如,计算每个事务中blockchanges可用如下公式:dbblockchanges/(usercommits+userrollbacks)执行:selecta.value/(b.value+c.value)fromv$sysstata,v$sysstatb,v$sysstatcwherea.name=’dbblockchanges’andb.name=’usercommits’andc.name=’userrollbacks’;其它计算统计以衡量负载方式,如下:Blockschangedforeachread:这项显示出blockchanges在blockreads中的比例。它将指出是否系统主要用于只读访问或是主要进行诸多数据操作(如:inserts/updates/deletes)公式:dbblockchanges/sessionlogicalreads执行:selecta.value/b.valuefromv$sysstata,v$sysstatbwherea.name=’dbblockchanges’andb.name=’sessionlogicalreads’;Rowsforeachsort:数据排序情况公式:sorts(rows)/(sorts(memory)+sorts(disk))执行:selecta.value/(b.value+c.value)fromv$sysstata,v$sysstatb,v$sysstatcwherea.name=’sorts(rows)’andb.name=’sorts(memory)’andc.name=’sorts(disk)’;1.1.1.9.查看某表的约束条件selectconstraint_name,constraint_type,search_condition,r_constraint_namefromuser
本文标题:Oracle数据库日常管理方案精
链接地址:https://www.777doc.com/doc-12476 .html