Oracle数据库日常维护方案书.docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《Oracle数据库日常维护方案书.docx》由会员分享,可在线阅读,更多相关《Oracle数据库日常维护方案书.docx(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、ORACLE数据库日常运行维护年度服务项目方案书TIME_REMAINING 0 AND SQL_ADDRESS=ADDRESS AND SQL_HASH_VALUE = HASH_VALUE;3.1.1.6 检查消耗CPU最高的进程SET LINE 240SET VERIFY OFFCOLUMN SID FORMAT 999COLUMN PID FORMAT 999COLUMN S_# FORMAT 999COLUMN USERNAME FORMAT A9 HEADING ORA USERCOLUMN PROGRAM FORMAT A29COLUMN SQLFORMAT A60COLUMN
2、OSNAME FORMAT A9 HEADING OS USERSELECT P.PID PID,S.SID SID,P.SPID SPID,S.USERNAME USERNAME,S.OSUSER OSNAME,P.SERIAL# S_#,P.TERMINAL,P.PROGRAM PROGRAM,P.BACKGROUND,S.STATUS,RTRIM(SUBSTR(A.SQL_TEXT, 1, 80) SQLFROM V$PROCESS P, V$SESSION S,V$SQLAREA A WHERE P.ADDR = S.PADDR AND S.SQL_ADDRESS = A.ADDRES
3、S (+) AND P.SPID LIKE %&1%;3.1.1.7 检查碎片程度高的表SQL SELECT segment_name table_name,COUNT(*) extents FROM dba_segments WHERE owner NOT IN (SYS; SYSTEM) GROUP BY segment_name HAVING COUNT(*)=(SELECT MAX(COUNT(*) FROM dba_segments GROUP BY segment_name);3.1.1.8 检查表空间的I/O比例SQLSELECT DF.TABLESPACE_NAME NAME,
4、DF.FILE_NAME FILE,F.PHYRDS PYR, F.PHYBLKRD PBR,F.PHYWRTS PYW, F.PHYBLKWRT PBW FROM V$FILESTAT F, DBA_DATA_FILES DF WHERE F.FILE# = DF.FILEJD ORDER BY DF.TABLESPACE_NAME;3.1.1.9 检查文件系统的I/O比例SQLSELECT SUBSTR(A.FILE#,1,2)SUBSTR(A.NAME,l,30) NAME,A.STATUS,A.BYTES,B.PHYRDS,B.PHYWRTS FROM V$DATAFILE A, V$
5、FILESTAT B WHERE A.FILE# = B.FILE#;3.1.1.10 检查死锁及处理查询目前锁对象信息:col sid for 999999col username for a 10col schemaname for a 10col osuser for al6col machine for al6col terminal for a20col owner for alOcol object_name for a30col object_type for a 10select sid,serial#,username,SCHEMANAME,osuser,MACHINE, t
6、erminal,PROGRAM,owner, object_name,object_type,o.objectjd from dba_objects o,v$locked_object lzv$session swhere o.object_id=l.object_id and s.sid=l.session_id;oracle 级 kill 掉该 session:alter system kill session &sid,&serial#;操作系统级kill掉session:#kill -9 pid3.1.1.11 检查数据库cpu、I/O、内存性能记录数据库的cpu使用、10、内存等使用
7、情况,使用vmstat,iostat,sar,lop 等命令进行信息收集并检查这些信息,判断资源使用情况。 CPU使用情况:rootsale8 toptop - 10:29:35 up 73 days, 19:54, 1 user, load average: 0.37, 0.38,0.29Tasks: 353 total, 2 running, 351 sleeping, 0 stopped, 0 zombieCpu(s): 1.2% us, 0.1% sy, 0.0% ni, 98.8% id, 0.0% wa, 0.0% hi, 0.0% siMem: 16404472k total,
8、12887428k used, 3517044k free, 60796k buffersSwap: 8385920k total, 665576k used, 7720344k free, 10358384k cachedPID USERPRNl VIRT RES SHR S %CPU %MEMTIME+ COMMAND30495 oracle150 8329m 866m 861m R10 5.417:53.90 oracle32501 oracle150 8328m 1.7g 1.7g S2 10.61:58.38 oracle32503 oracle150 8329m 1.6g 1.6g
9、 S2 10.22:06.62 oracle注意上面的蓝色字体部分,此部分内容表示系统剩余的cpu,当其平均值下 降至10%以下的时视为CPU使用率异常,需记录下该数值,并将状态记为异常。 内存使用情况:# free -mtotalusedsharedbufferscachedMem:202619580761556-/+ buffers/cache:3261700Swap:5992925900如上所示,蓝色部分表示系统总内存,红色部分表示系统使用的内存,黄色 部分表示系统剩余内存,当剩余内存低于总内存的10%时视为异常。 系统I/O情况:# iostat -k 1 3Linux 2.6.9-2
10、2.ELsmp (ASM)07/29/2012avg-cpu:%user0.16%nice %sys %iowait0.000.050.36%idle99.43Device: sdatps3.33kB_read/s kB_wrtn/s13.1650.25kB_read94483478kB_wrtn360665804avg-cpu:%user0.00%nice %sys %iowait %idle0.000.000.00100.00Device: sdatps0.00kB_read/s kB_wrtn/s0.000.00kB_read0kB_wrtn0如上所示,蓝色字体部分表示磁盘读写情况,红色
11、字体部分为cpuio等待 情况。 系统负载情况:uptime12:08:37 up 162 days, 23:33,15 users, load average: 0.01, 0.15, 0.10如上所/蓝体季部分表示系统负载,后面的3个数值如果看高N 2.5的时候就表明系统在超负荷运转了,并将此值记录到巡检表,视为异常。3.1.1.12 查看是否有僵死进程select spid from v$process where addr not in (select paddr from v$session);有些僵厂进程有阻塞其他业务的正常运行,定期杀掉僵厂进程。3.1.1.13 检查行链接/迁移
12、Sqlselect table_name,num_rows,chain_cnt From dba_tables Where owner=CTAIS2 And chain_cnt0;一注:含有long raw司的表有行链接是正常的我到迁移行保存到 chained_rows 表中,如没有该表执行./rdbms/admin/utlchain.sql Sqlanalyze table tablename list chained rows;可通过表 chained_rows 中 table_name,head_rowid看出哪些行是迁移行如:Sqlcreate table aa as select a
13、.* from sb_zsxx a,chained_rows b where a.rowid=b.head_rowid and b.table_name - SB_ZSXX; sqldclete from sb_zsxx where rowid in (select head_rowid from chained_rows where table_name = SB_ZSXX); sqlinsert into sb_zsxx select * from chained_row where table_name = SB_ZSXX;3.1.1.14 定期做统计分析对于采用Oracle Cost-
14、Based-Optimizer的系统,需要定期对数据对象的统 计信息进行采集更新,使优化器可以根据准备的信息作出正确的explain plane 在以下情况更需要进行统计信息的更新: 应用发生变化; 大规模数据迁移、历史数据迁出、其他数据的导入等; 数据量发生变化。查看表或索引的统计信息是否需更新,如:SqlSelect table_name,num_rows,last_analyzed From user_tables where table.name =DJ_NSRXXsqlselect count(*) from DJ_NSRXX 如 num_rows 和 count(*)如果行数相 差
15、很多,则该表需要更新统计信息,建议一周做一次统计信息收集,如:Sqlexec sys.dbms_stats.gather_schema_stats(ownname=CTAIS2,cascade= TRUE,degree = 4);3.1,1.15检查缓冲区命中率SQL SELECT a.VALUE + b.VALUE logical_reads, c.VALUE phys_reads, round(100*(l-c.value/(a.value+b.value),4) hit_ratioFROM v$sysstat a,v$sysstat b,v$sysstat cWHERE a.NAME=d
16、b block getsAND b.NAME=consistent gets AND c.NAME=physical reads;LOGICAL_READS PHYS_READS HIT_RATIO检查共享池命中率SQL select sum(pinhits)/sum(pins)*100 from v$librarycache;SUM(PINHITS)/SUM(PINS)*10099.5294474716798如低于95%,则需要调整应用程序使用绑定变量,或者调整数据库参数shared pool的大小。检查排序区SQL select name,value from v$sysstat wher
17、e name like %sort%;NAMEVALUEsorts (memory) sorts (disk) sorts (rows)61355342264742084如 果 disk/(memoty+row)的 比例 过高,则需 要调整sort_area_size(workarea_size_policy=false 或pga_aggregate_target(workarea_size_policy=true)o3.1,1.18检查日志缓冲区SQL select name,value from v$sysstat where name in (redo entries,redo buff
18、er allocation27663705redo entries redo buffer allocation retries如果 redo buffer allocation retries/rcdo entries 超过 1% ,则需要增大 log_buffer性能调优及方法性能调优主要有主动调优和被动调优,主动调优在前面我们已经进行了阐述, 被动调优主要有以下方法进行。 确定合理的性能优化目标 测试并记录当前的性能指标确定当前存在的Oracle性能瓶颈(Oracle中何处存在等待,哪个SQL 语句与此有关) 确定当前的操作系统瓶颈 优化相关的组件(应用、数据库、I/O、连接OS及其它)
19、 跟踪并实施变化管理制度 测试并记录目前的性能指标 重复第3到第7步直至达到既定的优化目标不要对并非性能瓶颈的部分进行优化,否则可能引起额外的问题。正如任何 聪明的人会告诉你的:“如果还未坏,千万不要修”。更重要的是,一旦既定的优 化目标已经达到,就务必停止所有的优化。获取Oracle的性能指标(测试前及测试后)必须在峰值处理时测试并获取系 统在优化前和优化后的性能指标。数据采集不应在数据库instance刚刚起动后 进行。同时,测试数据应在峰值期间每过15分钟进行一次。初始化参数TIMED-STATISTICS 应该被设为 TRUE。通过运行以卜脚本开始快照:$ORACLE_HOME/rdb
20、ms/admin/utlbslat.sqL通过运行以下脚本结束快照:$ORACLE_HOME/rdbms/admin/utlestat.sqL完成utlestat.sql操作后,会在当前目录中生成名为“report.txt”的文件, 包含系统的性能数据。该报告包括每15分钟捕获的所有与Oracle例程相关的 参数。3.1.2.1 寻找问题根源如上所述,通过查看v$system_event事件开始系统事件的问题诊断。下一 步是查看v$session_evcnt,找出引起或经历等待事件的进程。最后一步是通过 v$session_wait获得事件的细节。同时,应该进一步通过OS进行深入分析,了 解核
21、心的CPU、内存和10状态参数。最后,结合两种不同的诊断的结论,找出 系统瓶颈所在。3.1.2.2 System_Event事件v$system_event可以从全局的角度查看Oracle系统中的所有事件。尽管它 并不包括任何进程级的信息(当前或历史),但却可以显示上次例程弹出后总的等 待时间。这种动态性能视图中的数据,会在下次例程起动时清零。出于这种原因, 这种视力中的数据应该在不同时段进行抽样。3.1.2.3 Session_Event事件v$scssion_cvcnt视图在进程级提供与v$systcm_cvcnt相同的信息(即, SID等)。这种视图可以从“system-wide eve
22、nts”级进一步钻取,到达进程级, 以确哪个进程引起或经历了等待事件。3.1.2.4 Session_Waitv$session_wait视图在特定事件的进程级提供低层次的信息挖掘。不同于 其它一些视图,这种方式可以“实时”获取进程级的等待信息。这是真正有用的 信息。切记,每次查看这一视图得到的结果可能不一样。这可能与数据库中当前 的活动有关。3.1.2.5 应用优化从统计(和现实)的角度看,80%的Oracle系统性能问题可以通过SQL代码 优化来解决。任何应用优化的过程,不外乎是索引优化、全表扫描、并行机制改 进和选择正确数据组合方法的过程。这正是要达到最佳应用性能所必须考虑的因 素。没有
23、SQL的优化,就无法实现高性能的应用。良好的SQL语句可以减少CPU 资源的消耗,提高响应速度。同时,优化后的SQL语句还可以提高应用的可扩 展性,这是除增加大量内存外,任何其它硬件手段也无法实现的。31例程调优需要配置的主要初始化参数以下是一些已知与例程优化关系最密切的一些核心Oracle初始化参数。它 们都会影响Oracle及SGA区的活动。任何对这些参数的改动,在实施到生产环 境之前,都必须进行测试。一旦改变了生产环境的参数,就必须对相关的Oracle 动态性能指标和操作系统的性能进行监测,寻找可能由此产生的异常现象。1) DB_BLOCK_SIZE该参数在数据库建立前设定,决定了数据库
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 数据库 日常 维护 方案
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内