天萃荷净

分享一篇关于Oracle数据库运行在Linux系统中的案例,对ORACLE用户进程占用私有内存分析

本文是针对linux下面显示oracle用户进程占用大量内存的一个猜想性说明,希望各位专家和我一起继续探讨该问题

1.ORACLE用户进程占用私有内存分析

top命令结果

[oracle@ora02 31500]$ top -c

top - 12:13:16 up 254 days, 12:14, 2 users, load average: 1.53, 1.62, 1.33

Tasks: 293 total, 3 running, 290 sleeping, 0 stopped, 0 zombie

Cpu(s): 3.4% us, 0.8% sy, 0.0% ni, 94.7% id, 1.1% wa, 0.0% hi, 0.0% si

Mem: 4147172k total, 4129724k used, 17448k free, 20348k buffers

Swap: 4192956k total, 217772k used, 3975184k free, 2575320k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

12505 oracle 17 0 1561m 972m 970m R 100 24.0 3:45.89 oracletxzldb (LOCAL=NO)

12475 oracle 16 0 1561m 931m 929m S 4 23.0 4:08.65 oracletxzldb (LOCAL=NO)

12477 oracle 16 0 1561m 945m 942m S 2 23.3 3:36.92 oracletxzldb (LOCAL=NO)

12479 oracle 16 0 1561m 944m 941m S 2 23.3 4:27.29 oracletxzldb (LOCAL=NO)

12483 oracle 16 0 1561m 939m 937m R 2 23.2 3:49.00 oracletxzldb (LOCAL=NO)

12493 oracle 16 0 1561m 958m 955m S 2 23.7 3:35.35 oracletxzldb (LOCAL=NO)

补充说明:

VIRT进程使用的虚拟内存总量

RES进程使用的、未被换出的物理内存大小

SHR共享内存大小

通过这里可以得出几个信息

12505进程实际使用内存情况:972-970=2M

12505进程%MEM:972*1024/4147172=0.24000162

12505进程在数据库中占用内存

SQL> select PGA_ALLOC_MEM/1024/1024 MEM from v$process where spid=12505;

MEM

----------

1.90997028

通过这里可以看出12505进程实际上是占用了970M的共享内存,占用2M的PGA内存

2.ORACLE用户进程占用共享内存分析

分析12505进程的当前进程状态

[oracle@ora02 31500]$ cd /proc/12505

[oracle@ora02 12505]$ cat status

Name: oracle

State: S (sleeping)

SleepAVG: 92%

Tgid: 12505

Pid: 12505

PPid: 1

TracerPid: 0

Uid: 501 501 501 501

Gid: 502 502 502 502

FDSize: 32

Groups: 501 502

VmSize: 1599004 kB

VmLck: 0 kB

VmRSS: 996132 kB

VmData: 832 kB

VmStk: 120 kB

VmExe: 37307 kB

VmLib: 4641 kB

StaBrk: 0ad6e000 kB

Brk: 0adf2000 kB

StaStk: bffff850 kB

ExecLim: ffffffff

Threads: 1

SigPnd: 0000000000000000

ShdPnd: 0000000000000000

SigBlk: 0000000000000000

SigIgn: 0000000006005203

SigCgt: 00000001c9802cfc

CapInh: 0000000000000000

CapPrm: 0000000000000000

CapEff: 0000000000000000

pmap命令分析

[oracle@ora02 12505]$ pmap -d 12505

12505: oracletxzldb (LOCAL=NO)

Address Kbytes Mode Offset Device Mapping

0013f000 88 r-x-- 0000000000000000 008:00002 ld-2.3.4.so

00155000 4 r-x-- 0000000000015000 008:00002 ld-2.3.4.so

00156000 4 rwx-- 0000000000016000 008:00002 ld-2.3.4.so

00159000 1176 r-x-- 0000000000000000 008:00002 libc-2.3.4.so

0027f000 8 r-x-- 0000000000125000 008:00002 libc-2.3.4.so

00281000 8 rwx-- 0000000000127000 008:00002 libc-2.3.4.so

00283000 8 rwx-- 0000000000283000 000:00000 [ anon ]

00287000 132 r-x-- 0000000000000000 008:00002 libm-2.3.4.so

002a8000 4 r-x-- 0000000000020000 008:00002 libm-2.3.4.so

002a9000 4 rwx-- 0000000000021000 008:00002 libm-2.3.4.so

002ac000 8 r-x-- 0000000000000000 008:00002 libdl-2.3.4.so

002ae000 4 r-x-- 0000000000001000 008:00002 libdl-2.3.4.so

002af000 4 rwx-- 0000000000002000 008:00002 libdl-2.3.4.so

003b5000 56 r-x-- 0000000000000000 008:00002 libpthread-2.3.4.so

003c3000 4 r-x-- 000000000000d000 008:00002 libpthread-2.3.4.so

003c4000 4 rwx-- 000000000000e000 008:00002 libpthread-2.3.4.so

003c5000 8 rwx-- 00000000003c5000 000:00000 [ anon ]

00ba4000 72 r-x-- 0000000000000000 008:00002 libnsl-2.3.4.so

00bb6000 4 r-x-- 0000000000011000 008:00002 libnsl-2.3.4.so

00bb7000 4 rwx-- 0000000000012000 008:00002 libnsl-2.3.4.so

00bb8000 8 rwx-- 0000000000bb8000 000:00000 [ anon ]

08048000 37308 r-x-- 0000000000000000 0fd:00001 oracle

0a4b7000 8804 rwx-- 000000000246f000 0fd:00001 oracle

0ad50000 648 rwx-- 000000000ad50000 000:00000 [ anon ]

50000000 1540096 rwxs- 0000000000000000 000:00006 [ shmid=0x9000e ]

ae000000 4 r-xs- 000000005e000000 000:00006 [ shmid=0x9000e ]

ae001000 1156 rwxs- 000000005e001000 000:00006 [ shmid=0x9000e ]

ae122000 4 r-xs- 000000005e122000 000:00006 [ shmid=0x9000e ]

ae123000 2932 rwxs- 000000005e123000 000:00006 [ shmid=0x9000e ]

b79d4000 1024 rwx-- 00000000000f4000 000:0000d zero

b7ad4000 512 rwx-- 0000000000074000 000:0000d zero

b7b54000 512 rwx-- 0000000000000000 000:0000d zero

b7bd4000 36 r-x-- 0000000000000000 008:00002 libnss_files-2.3.4.so

b7bdd000 4 r-x-- 0000000000008000 008:00002 libnss_files-2.3.4.so

b7bde000 4 rwx-- 0000000000009000 008:00002 libnss_files-2.3.4.so

b7bdf000 148 rwx-- 00000000b7bdf000 000:00000 [ anon ]

b7c04000 2940 r-x-- 0000000000000000 0fd:00001 libjox9.so

b7ee3000 1088 rwx-- 00000000002de000 0fd:00001 libjox9.so

b7ff3000 8 rwx-- 00000000b7ff3000 000:00000 [ anon ]

b7ff5000 4 r-x-- 0000000000000000 0fd:00001 libskgxn9.so

b7ff6000 8 rwx-- 0000000000000000 0fd:00001 libskgxn9.so

b7ff8000 4 r-x-- 0000000000000000 0fd:00001 libskgxp9.so

b7ff9000 4 --x-- 0000000000001000 0fd:00001 libskgxp9.so

b7ffa000 4 rwx-- 0000000000001000 0fd:00001 libskgxp9.so

b7ffb000 4 r-x-- 0000000000000000 0fd:00001 libodmd9.so

b7ffc000 4 rwx-- 0000000000000000 0fd:00001 libodmd9.so

b7ffd000 4 r-x-- 0000000000000000 008:00002 libcwait.so

b7ffe000 4 rwx-- 0000000000000000 008:00002 libcwait.so

b7fff000 4 rwx-- 00000000b7fff000 000:00000 [ anon ]

bffe2000 120 rwx-- 00000000bffe2000 000:00000 [ stack ]

ffffe000 4 ----- 0000000000000000 000:00000 [ anon ]

mapped: 1599008K writeable/private: 12944K shared: 1544192K

补充说明:

mapped :映射到文件的内存数量

writable/private :进程所占用的私有地址空间数量

shared :与其它进程共享的地址空间数量

ipcs 命令

[oracle@ora02 12505]$ ipcs -m

------ Shared Memory Segments --------

key shmid owner perms bytes nattch status

0x0000cace 65536 root 666 2 0

0x4d4e5251 98305 root 644 330752 0

0x55315352 131074 root 666 4096 0

0x44525354 163843 root 644 632832 0

0x53494152 196612 root 644 1024 0

0x00005643 229381 root 666 1024 1

0x00005654 262150 root 666 1024 1

0x992ad3dc 589838 oracle 640 1581252608 595

结合pmap和ipcs分析(shmid=0x9000e)

SQL> select to_number('9000e','xxxxxxxx') from dual;

TO_NUMBER('9000E','XXXXXXXX')

-----------------------------

589838

SQL> select 1540096+4+1156+4+2932 from dual;

1540096+4+1156+4+2932

---------------------

1544192

SQL> select 1581252608/1024 from dual;

1581252608/1024

---------------

1544192

通过这里可以得出12505进程中的共享内存,主要是数据库SGA中的共享内存

补充猜测

SQL> show sga;

Total System Global Area 1561926292 bytes

Fixed Size 453268 bytes

Variable Size 603979776 bytes

Database Buffers 956301312 bytes

Redo Buffers 1191936 bytes

SQL> select 1561926292/1024 from dual;

1561926292/1024

---------------

1525318.64

这里显示数据库配置的sga比ipcs中配置共享内存段小,但是进程在分配总的共享内存时候,使用的是ipcs设定的内存段大小,实际使用的内存可能是sga设置大小(未得到权威资料)

--------------------------------------ORACLE-DBA----------------------------------------

最权威、专业的Oracle案例资源汇总之【学习笔记】Linux系统 ORACLE用户进程占用私有内存分析

linux分配oracle内存,【学习笔记】Linux系统 ORACLE用户进程占用私有内存分析相关推荐

  1. antimalware service executable占用内存过高_Win10系统svchost.exe进程占用内存和网速过高的解决方法...

    我们在使用Windows10系统的过程中,不少用户一旦发现电脑异常,例如异常卡顿,就会查看一下任务管理器,是否有进程过高占用了CPU.内存.网络等,而在任务管理器中发现了一个名称为"svch ...

  2. 《深入解析ORACLE》学习笔记(3)---ORACLE中的DB_NAME,SERVICE_NAME,INSTANCE_NAME,ORACLE_SID,GLOBAL_DBNAME介绍

    [声明:本文是学习著名ORACLE DBA盖国强先生的大作<深入解析ORACLE--DBA 入门 进阶与诊断案例>的学习笔记与心得体会.在此声明,文中摘录了书中部分内容,非是出于抄袭目的, ...

  3. biee mysql_【Oracle BIEE学习笔记一】Oracle BIEE简介 | 学步园

    一.Oracle BIEE架构 两大任务: 1.解释逻辑SQL查询和对适当的数据源写入相应的物理查询: 2.对物理结果集进行变换和组合,并执行最终计算. 二.Oracle BI资料库中的三层结构 1. ...

  4. oracle数据库的model,Oracle 11g学习笔记–model子句

    Oracle 11g学习笔记–model子句 oracle 10g中新增的model子句可以用来进行行间计算.model子句允许像访问数组中元素那样访问记录中的某个列,这就提供了诸如电子表格计算之类的 ...

  5. 读取当前linux进程内存_(笔记)Linux上的内存分配

    作者: LemonNan 原文: https://juejin.im/post/5ee3c34a518825430c3ad31d 前言 本篇是对Linux内存分配的一个学习笔记. 程序内存结构 下面是 ...

  6. 51CTO学习笔记--Linux运维故障排查思路与系统调优技巧视频课程(高俊峰)

    51CTO学习笔记--Linux运维故障排查思路与系统调优技巧视频课程 第一课 Linux运维经验分享与思路 1.一般把主机名,写到hosts下    127.0.0.1    hostname,因为 ...

  7. 九十分钟极速入门Linux——Linux Guide for Developments 学习笔记

    转载自: 九十分钟极速入门Linux--Linux Guide for Developments 学习笔记 http://mp.weixin.qq.com/s?__biz=MzAwNTMxMzg1MA ...

  8. Linux性能优化实战学习笔记:第四十六讲=====实战分析

    Linux性能优化实战学习笔记:第四十六讲 一.上节回顾 不知不觉,我们已经学完了整个专栏的四大基础模块,即 CPU.内存.文件系统和磁盘 I/O.以及网络的性能分析和优化.相信你已经掌握了这些基础模 ...

  9. 【嵌入式环境下linux内核及驱动学习笔记-(16)linux总线、设备、驱动模型之input框架】

    目录 1.Linux内核输入子系统概念导入 1.1 输入设备工作机制 1.2 运行框架 1.3 分层思想 2.驱动开发步骤 2.1 在init()或probe()函数中 2.2 在exit()或rem ...

  10. 多路径配置udev_学习笔记:Linux多路径配置 multipath实现设备用户组绑定详细设置...

    天萃荷净 Linux多路径软件配置,通过multipath实现设备用户组绑定详细设置 现在的Linux系统中,很多都会使用系统自带的multipath多路径软件,在以前的版本中,我们一般通过multi ...

最新文章

  1. C++ vector容器
  2. Linux系统的启动引导过程
  3. python 利用多进程实现文件的拷贝
  4. 关于电脑的几十个单词及其缩写
  5. 【转】Android子线程真的不能更新UI么
  6. 2018年第九届蓝桥杯 - 省赛 - C/C++大学A组 - F.航班时间
  7. shell中的大括号和小括号
  8. 02_03 JSP内置对象之page
  9. RDP协议详细解析(四)
  10. android 选择银行类型,『自定义View实战』—— 银行种类选择器
  11. WordPress更新提示无法创建目录的解决方案
  12. Linux命令 - vi命令
  13. 74LS138设计一位二进制全减器
  14. 栈这种数据结构,不就后进先出?
  15. 大数据的核心价值是什么,主要体现在哪几方面?
  16. Use of Deep Learning in Modern Recommendation System: A Summary of Recent Works(笔记)
  17. 微信服务器在哪里修改密码,微信怎么修改密码?微信在哪里修改密码?
  18. epub格式电子书剖析之二:OP…
  19. 5 款让开发效率倍增的 VS Code 插件
  20. CTime::GetCurrentTime();获取当前时间

热门文章

  1. 浅谈 Spring 中的设计模式
  2. word自带公式批量转成MythType格式的采坑小记
  3. 2012-7-05可樂词汇积累#9312;
  4. Swift 数组遍历 ForEach .enumerated() makeIterator() indices
  5. 公司电脑策略强制自动锁屏解决方案
  6. 看红帽巨佬解析⭐《二、G1垃圾回收配置解析》⭐
  7. angular 子父页面传值以及调用方法
  8. BZOJ3709 Bohater 贪心
  9. 简练网软考知识整理-风险应对措施之应急计划弹回计划权变措施
  10. 四元数与三维向量相乘运算