知识大全 Oracle调优与深入之04031处理过程
Posted 知
篇首语:逆水行舟用力撑,一篙松劲退千寻。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle调优与深入之04031处理过程相关的知识,希望对你有一定的参考价值。
Oracle调优与深入之04031处理过程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
一 错误提示 > EXP : ORACLE error encountered > ORA : unable to allocate bytes of shared memory ( shared pool BEGIN :EXEC_STR := SYS DBMS PL/SQL MPCODE BAMIMA: Bam Buffe 二 错误原因 共享内存太小 存在一定碎片 没有有效的利用保留区 造成无法分配合适的共享区 三 解决步骤 查看当前环境 SQL> show sga Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes show parameter shared_pool NAME TYPE VALUE shared_pool_reserved_size string shared_pool_size string SQL> select sum(free_space) from v$shared_pool_reserved; SUM(FREE_SPACE) 我们可以看到没有合理利用保留区 SQL> SELECT SUM(RELOADS)/SUM(PINS) FROM V$LIBRARYCACHE; SUM(RELOADS)/SUM(PINS) 不算太严重 SQL> SELECT round((B Value/A Value)* ) hardpaseperc FROM V$SYSSTAT A V$SYSSTAT B WHERE A Statistic# = AND B Statistic# = AND ROWNUM = ; hardpaseperc 查看保留区使用情况 SQL> SELECT FREE_SPACE FREE_COUNT REQUEST_FAILURES REQUEST_MISSES LAST_FAILURE_SIZE FROM V$SHARED_POOL_RESERVED; FREE_SPACE FREE_COUNT REQUEST_FAILURES REQUEST_MISSES LAST_FAILURE_SIZE 最近一次申请共享区失败时该对象需要的共享区大小 select name from v$db_object_cache where sharable_mem = ; name dbms_lob dbms_lob正是exp时申请保留区的对象 查看导致换页的应用 SQL> select * from x$ksmlru where ksmlrsiz> ; ADDR INDX INST_ID KSMLR KSMLRSIZ KSMLRNUM KSMLRHON KSMLROHV KSMLRSES A BAMIMA: Bam Buffer DBMS_DDL DEB C ACC BAMIMA: Bam Buffer DBMS_SYS_SQL D B BAMIMA: Bam Buffer STANDARD D E B BAMIMA: Bam Buffer DBMS_LOB DA C B BAMIMA: Bam Buffer DBMS_UTILITY C FC BDC BAMIMA: Bam Buffer begin : := dbms_lob getLeng CFFCC C state objects C library cache EXU VEW C C CA state objects C B CEC state objects D 分析各共享池的使用情况 SQL> select KSPPINM KSPPSTVL from x$ksppi x$ksppcv where x$ksppi indx = x$ksppcv indx and KSPPINM = _shared_pool_reserved_min_alloc ; KSPPINM KSPPSTVL _shared_pool_reserved_min_alloc (门值) 我们看到INDX= DBMS_LOB造成换页(就是做exp涉及到lob对象处理造成的换页情况) 换出 最近未使用的内存 但是换出内存并合并碎片后在共享区仍然没有合适区来存放数据 说明共享 区小和碎片过多 然后根据_shared_pool_reserved_min_alloc的门值来申请保留区 而门值为 所以不符合申请保留区的条件 造成 错误 我们前面看到保留区全部为空闲状态 所以我们可以 减低门值 使更多申请共享内存比 小的的对象能申请到保留区 而不造成 错误 解决办法 ) 增大shared_pool (在不DOWN机的情况下不合适) ) 打patch (在不DOWN机的情况下不合适) ) 减小门值 (在不DOWN机的情况下不合适) 因为LAST_FAILURE_SIZE<_shared_pool_reserved_min_alloc所以表明没有有效的使用保留区 SQL> alter system set _shared_pool_reserved_min_alloc = ; alter system set _shared_pool_reserved_min_alloc = * ERROR at line : ORA : specified initialization parameter cannot be modified i的使用方法alter system set _shared_pool_reserved_min_alloc = scope=spfile; ) 使用alter system flush shared_pool; (不能根本性的解决问题) ) 使用dbms_shared_pool keep 由于数据库不能DOWN机 所以只能选择 )和 ) 运行dbmspool sql SQL> @/home/oracle/products/ /rdbms/admin/dbmspool sql 找出需要keep到共享内存的对象 SQL> select a OWNER a name a sharable_mem a kept a EXECUTIONS b address b hash_value from v$db_object_cache a v$sqlarea b where a kept = NO and (( a EXECUTIONS > and a SHARABLE_MEM > ) or a EXECUTIONS > ) and SUBSTR(b sql_text ) = SUBSTR(a name ); OWNER NAME SHARABLE_MEM KEP EXECUTIONS ADDRESS HASH_VALUE — SELECT COUNT(OBJECT_ID) NO BF FROM ALL_OBJECTS WHERE OBJECT_NAME = :b AND OWNER = :b STANDARD NO DBMS_LOB NO DBMS_LOB NO DBMS_LOB NO DBMS_PICKLER NO DBMS_PICKLER NO SQL> execute dbms_shared_pool keep( STANDARD ); SQL> execute dbms_shared_pool keep( BF C ); SQL> execute dbms_shared_pool keep( DBMS_LOB ); SQL> execute dbms_shared_pool keep( DBMS_PICKLER ); SQL> select OWNER name sharable_mem kept EXECUTIONS from v$db_object_cache where kept = YES ORDER BY sharable_mem; SQL> alter system flush shared_pool; System altered SQL> SELECT POOL BYTES FROM V$SGASTAT WHERE NAME = free memory ; POOL BYTES shared pool large pool java pool [oracle@ali solution oracle]$ sh /home/oracle/admin/dbexp sh [oracle@ali solution oracle]$ grep ORA /tmp/exp tmp 未发现错误 导出数据成功 四 建议 由于以上解决的方法是在不能DOWN机的情况下 所以没能动态修改初始化参数 但问题的本质是共享区内存过小 需要增加shared pool 使用绑定变量 才能根本 的解决问题 所以需要在适当的时候留出DOWN机时间 对内存进行合理的配置 cha138/Article/program/Oracle/201311/17486相关参考
Oracle]RAC之-负载均衡深入解析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!负载均衡是指
Oracle性能调优思路 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 问oracle进程内存占
Oracle专家调优秘密 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在过去的十年中Oracl
ORACLE性能调优原则下篇 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 用户SQL质量
Oracle内存参数调优技术详解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 目的 希望通过
ORACLE性能调优原则上篇(列表) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 任何事情都有
通过Oracle动态性能视图采集查询调优数 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 对于现
ORACLE性能调优遵循的基本原则 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 任何事情都有它
可预见的Oracle应用程序性能调优 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!这篇技巧性文章是
Oracle数据库索引优化技术关联查询性能调优 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 数