zoukankan      html  css  js  c++  java
  • oracle对/dev/shm的使用

    查看共享内存打开的文件数

    1. [root@db2 ~]# lsof -n | grep /dev/shm | wc -l
    2. 34693

    共享内存中总共文件数

    [root@db2 ~]# ls -l /dev/shm | wc -l
    495

    Why is Oracle keeping hundreds of thousands Open File descriptors in /dev/shm while there are just hundreds of files ?

    解释:

    查看每个进程打开的文件数:

    1. [root@db2 ~]# ps -ef | grep ora_smon | grep -v grep
    2. oracle 13984 1 0 Dec07 ? 00:17:30 ora_smon_db2
    3. [root@db2 ~]# lsof | grep 13984 | grep -v grep | wc -l
    4. 456

    每个进程打开的文件数大约等于/dev/shm中的文件数

    查看数据库的进程数:

    1. [root@db2 ~]# ps -ef | grep -v grep | grep -i ora_ | wc -l

    2. 76

    计算:进程数*每个进程打开的文件数 约= 共享内存打开的文件数(76*456 = 34656) 约等于lsof -n | grep /dev/shm 得出的数


    下列文章来自(MOS:1321306.1

    1) Let's use a test database (11.1.0.7) to demonstrate how Automatic Memory Management uses file descriptors and why there are so many Open File descriptors. 

    A) Before starting the 11.1.0.7 database, /dev/shm is empty and there are no open files 

    $ ls -l /dev/shm
    total 0
    $ lsof -n | grep /dev/shm


    B)  Let's start the database, then check /dev/shm

    UNIX> sqlplus " / as sysdba"
           SQL*Plus: Release 11.1.0.7.0 - Production on Fri May 6 14:57:28 2011
           Copyright (c) 1982, 2008, Oracle. All rights reserved.
           Connected to an idle instance.

     SQL> startup
           ORACLE instance started.
           Total System Global Area 845348864 bytes
           Fixed Size 1316656 bytes
           Variable Size 578816208 bytes
           Database Buffers 260046848 bytes
           Redo Buffers 5169152 bytes
           Database mounted.
           Database opened.

     

    SQL> show parameter memory_target
    NAME           TYPE        VALUE
    -------------- ----------- ------
    memory_target  big integer 808M



    SQL> show parameter memory_max_target
      NAME              TYPE          VALUE
     ----------------- ------------- ------ 
     memory_max_target  big integer  808M



    C) let's check /dev/shm again

    UNIX> ls -l /dev/shm/* | wc -l
               203
    UNIX> lsof -n | grep /dev/shm | wc -l
                4872



    Number of files in /dev/shm

    There are 203 files  ( 4 MB size, which is the granule size)   (内存粒度的说明见oracle内存粒度的说明
    This is approximately MEMORY_TARGET/4MB 
    Since MEMORY_TARGET < 1 GB,  203 x 4 MB files are created

    For a larger MEMORY_TARGET,  the number of files in /dev/shm = MEMORY_TARGET/granule size

    See Note 947152.1 How to determine granule size.

    Number of open files descriptors

    There are 4872 open files handles why ?

    After starting the 11.1.0.7 database, 24 background processes were created
    UNIX> ps -ef | grep -i <database name> | wc -l
    24


    Each background process open 203 files x 24 = 4872
    UNIX> lsof -n | grep /dev/shm | wc -l
    4872



    总结:


    ls -l /dev/shm | wc -l              open files = MEMORY_TARGET/granule size

    lsof -n | grep /dev/shm | wc -l   open file descriptos = open files*进程数






















  • 相关阅读:
    jquery 总体架构
    字符串字典排序
    浏览器渲染原理
    TCP/IP协议网络模型
    web
    js 继承
    js 模块化
    动画 球
    css z-index
    验证用户是否已经登录和自动登录
  • 原文地址:https://www.cnblogs.com/haoxiaoyu/p/f53e68d2d09ba861dbdc1fa521f1a54d.html
Copyright © 2011-2022 走看看