关于 x$ksmsp 视图中KSMCHDUR 字段代表什么意思

请教关于 x$ksmsp视图字段含义

957918 Newbie
ML 您好:

关于 x$ksmsp 视图:

desc x$ksmsp
Name Null? Type
------------------------ -------- ----------------
ADDR RAW(8)
INDX NUMBER
INST_ID NUMBER
KSMCHIDX NUMBER
KSMCHDUR NUMBER
KSMCHCOM VARCHAR2(16)
KSMCHPTR RAW(8)
KSMCHSIZ NUMBER
KSMCHCLS VARCHAR2(8)
KSMCHTYP NUMBER
KSMCHPAR RAW(8)

其中 KSMCHIDX ,KSMCHDUR 字段代表什么意思?
谢谢!
  • 1. Re: 请教关于 x$ksmsp视图字段含义
    LiuMaclean(刘相兵) Expert
    KSMCHIDX 只是一个索引 基本没有用处


    KSMCHDUR 指定了chunk的duration, 这个特性是10g以后加入的,见

    Know more about shared pool subpool
    http://www.askmaclean.com/archives/know-more-about-shared-pool-subpool.html



    10g共有4种duration 如引文:
    SQL> select distinct KSMCHDUR from x$ksmsp;
    
      KSMCHDUR
    ----------
             1
             2
             3
             4
    @@
    @@

    *<font color="red" size="2" face="courier">如果觉得本回复有意义,请点击本条回复右手边的Correct按钮,谢谢!</font>*

    @@
    @@

    如何在OTN中文技术论坛提一个问题?
    论坛礼仪需知及学习oracle的方法论

    @@
    @@
    Maclean Liu
    Oracle Database Administrator
    Oracle Certified 10g/11g Master     
    www.askmaclean.com
  • 2. Re: 请教关于 x$ksmsp视图字段含义
    LiuMaclean(刘相兵) Expert
    补充一下 可以用_enable_shared_pool_durations 禁用10g duration 这一特性
    SQL> select distinct KSMCHDUR from x$ksmsp;
    
      KSMCHDUR
    ----------
             1
             2
             3
             4
    
    SQL> alter system set "_enable_shared_pool_durations"=false scope=spfile;
    
    System altered.
    
    SQL> startup force;
    ORACLE instance started.
    
    Total System Global Area 1252663296 bytes
    Fixed Size                  2254784 bytes
    Variable Size             872417344 bytes
    Database Buffers          369098752 bytes
    Redo Buffers                8892416 bytes
    Database mounted.
    Database opened.
    SQL>
    SQL>
    SQL> select distinct KSMCHDUR from x$ksmsp;
    
      KSMCHDUR
    ----------
             1
  • 3. Re: 请教关于 x$ksmsp视图字段含义
    957918 Newbie
    引用 ML sub_pool 文章:



    duration 分成4类:

    Session duration
    Instance duration (never freed)
    Execution duration (freed fastest)
    Free memory
    引入了 shared pool duration的目的是

    在10gR1中Shared Pool的shrink收缩操作存在一些缺陷,造成缺陷的原因是在该版本中Buffer Cache还没有能力共享使用一个granule,这是因为Buffer Cache的granule的尾部由granule header和Metadata(可能是buffer header或者RAC中的Lock Elements)拼接组成,在其尾部不容许存在空洞。另一个原因是当时的shared pool允许不同生命周期duration(以后会介绍)的chunk存放在同一个granule中,这造成共享池无法完全释放granule。到10gR2中通过对Buffer Cache Granule结构的修改允许在granule header和buffer及Metadata(buffer header或LE)存在缝隙,同时shared pool中不同duration的chunk将不在共享同一个granule,通过以上改进buffer cache与shared pool间的内存交换变得可行。此外在10gr2中streams pool也开始支持内存交换(实际根据不同的streams pool duration存在限制)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle 性能调整 (真正由ORACLE甲骨文出品)<br><br>如何开始调整? <br> – 解决性能问题的步骤 <br> 分析症状 <br> 确定问题范围 <br> 参数调整or <br> 结构调整or <br><br> 应用调整 <br> 性能监控 <br><br>Shared Pool <br> – SHARED_POOL_SIZE 控制共享SQL缓冲存储区和数据字 <br> 典缓冲存储区的大小 <br> – 字典缓冲存储区存储关于数据对象的信息 <br> – 监控V$ROWCACHE,若命率< 95%,考虑增加 <br> SHARED_POOL_SIZE <br> – 监控V$LIBRARYCACHE 来确定多重加载的数量 <br> – 若命率< 75%,确定需要多重加载的对象 <br> – V$SQLAREA, 检索可能的候选共享SQL <br> – 建议使用存储过程和变量 <br> – 使用DBMS_SHARED_POOL把大的或常用的PL/SQL, <br> cursors, sequences, triggers, packages and procedures <br> 预装入SGA <br><br> 如果在应用SQL编程不使用捆绑变量,很容易引起 <br> shared_pool 和library cache 的latch 竞争. <br> 这种latch等待时间可以通过优化SQL来减少. <br> Oracle 8i Release 2 (8.1.6)可以做直接常量和捆绑变量的 <br> 自动转换,Oracle9i又进一步扩充了该功能… <br><br> CURSOR_SHARING=FORCE <br> (Default is EXACT; 8iR2) <br><br> 如果通过监测v$sqlarea发现有因为没有使用捆绑变量所引起 <br> 的性能问题: <br> 50M的shared pool可以工作正常 <br> 50M的shared pool,当x$ksmsp的记录数超过200,000条 <br> 时就可能会引起性能问题. <br> 200M的shared pool,当x$ksmsp的记录数超过580,000条 <br> 时,性能会无法忍受. <br> – 每个查询会耗用2%CPU <br> – 大量的I/O <br><br> 所以: <br> – 170 meg = 5038 SQL Areas = 131319 x$ksmsp records <br> Keep the Shared_pool_size at 100M or lower (50M if possible). <br><br> If v$sqlarea looks like this: <br> select empno from rich778 where empno =451572 <br> select empno from rich778 where empno =451573 <br> select empno from rich778 where empno =451574 <br> select empno from rich778 where empno =451575 <br> select empno from rich778 where empno =451576 <br><br>Use cursor_sharing=force (sqlarea goes to this): <br> select empno from rich778 where empno =:SYS_B_0 <br><br>Oracle9i Enterprise Edition Release 9.0.1.0.0 - Production <br>(SIMILAR takes into account the statistics as well…) <br><br>SQL> alter session set cursor_sharing=SIMILAR; <br><br>System altered. <br><br>Oracle8i Enterprise Edition Release 8.1.7.0.0 – Production <br>SQL> alter session set cursor_sharing=SIMILAR; <br><br>ERROR: ORA-00096: invalid value SIMILAR for parameter <br> cursor_sharing, must be from among EXACT, FORCE <br>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值