Oracle ORA-27102:out of memory 错误解决办法(简单粗暴,100%能解决内存占用问题)

-前置:

当遇到这个问题,笔者也是一脸的茫然,然后就是查资料,在笔者查阅了很多相关资料后发现什么优化、配置sysctl.conf内存最大最小值后发现也都没啥太大的作用(笔者的/etc/sysctl.conf已经配置与内存同样大小),最终还是通过比较简单粗暴的方式将问题解决,直接结束现有进程。

-原因:

由于Linux下运行的进程占用物理内存过多虚拟内存过大虚拟内存不释放导致系统内存不足,这是问题的根本!

-那么,怎么解决?

解决方案:

一、Linux系统:
1.查看Linux进程内存占用情况:

  (1)使用top命令:$ top -u oracletop -10

2.筛选结果(如结果显示PID144524java进程占用了1.9G的物理内存):

PID

USER

PR

NI

VIRT

RES

SHR

S

%CPU

%MEM

TIME+

COMMAND

3440

root

20

0

132m

27m

1056

S

7.3

0.1

1511:06

phdaemon

102435

root

20

0

15428

1724

948

R

0.7

0.0

0:00.04

top

144524

root

20

0

15.2g

1.9g

7156

S

0.7

6.1

9:17.07

java

2277

root

20

0

15.2g

1.6g

13m

S

0.3

5.2

2:02.41

java

9312

root

20

0

102m

2168

992

S

0.3

0.0

2:52.20

oraysl













3.根据PID结束进程命令:
  (1)如果不想结束整个java进程,还可以使用ps命令:$ ps -ef|grep java   (2)找到可以结束的进程PID,在使用kill命令:$ kill -9 144524   (3)直到再次登录。
  
内容解释:
  PID:进程的ID

  USER:进程所有者

  PR:进程的优先级别,越小越优先被执行

  NInice:值

  VIRT:进程占用的虚拟内存

  RES:进程占用的物理内存

  SHR:进程使用的共享内存

  S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数

  %CPU:进程占用CPU的使用率

  %MEM:进程使用的物理内存和总内存的百分比

  TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。

  COMMAND:进程启动命令名称

常用命令:
  P:按%CPU使用率排行

  T:按MITE+排行

  M:按%MEM排行