Oracle数据库所在服务器swap严重

今天Nagios监控发现一台Oracle数据库服务器swap严重,导致部分Nagios监控项超时报警

查看该服务器,swap空间设置为32G,已使用19G,使用率非常高,并且,vmstat显示si严重

此服务器物理内存32G,SGA设置20G,连接数不高,即使设置不当,也不应该出现如此严重的swap

cat /proc/meminfo

发现此服务器设置了HugePage,但状态均为Free

我们知道HugePage设置后,即使不使用它,所占的内存空间也不能被其他进程使用,并且,HugePage是pin在物理内存空间的,不会被swap,也就意味着32G物理内存,其实只有12G可用,难怪这么高的swap

那么,为什么会出现这个问题呢?之前为什么没有出现这个问题?

原因在于,此服务器在2个月前曾被重启,之前工程师在启动Oracle之前运行了ulimit -l unlimited,而2个月前重启的工程师不知道开启了HugePage,直接用标准模式重启了Oracle。由于操作系统limit配置的问题,导致无法使用HugePage

解决方法很简单

1.启动Oracle前,执行ulimit -l unlimited

2.修改/etc/security/limits.conf

增加:

oracle soft memlock -1
oracle hard memlock -1

[@more @]

时间: 2024-11-05 18:50:51

Oracle数据库所在服务器swap严重的相关文章

Hibernate异常--数据库所在服务器关闭引起的异常

春节前要回家去的日子,一切准备就绪,项目初期版本也已经基本上完成.本来想着可以愉快的回家了,结果在给导师演示的时候报出一堆的异常,之前测试的时候很正常,关键时候就报了一堆bug,你能理解我当时的心情是多么的复杂吗?在此记录下这个异常,以便以后再次遇到的时候可以立刻意识到是哪里的问题. 异常的信息如下: 由于异常信息比较多,我在上面进行解释并阐述一下我找到问题根源的思路: 1. 看异常的开头部分显示的是struts异常,这时候不能说一定就是struts的问题,因为往往异常的抛出是这样的一个过程,比

C++操作oracle数据库

数据库操作方式:可以采用ADO方式,也可以采用oracle本身提供的Proc*C/C++或者是OCCI方式操作数据库. 连接方式:可以是客户端连接.也可以是服务器端连接. 数据库配置:无论是何种连接都需要进行数据库连接的配置,一般在ORACLE_HOME下面的network/admin/tnsnames.ora文件中进行配置,如果没有此目录或者是此文件,需要自己手工添加.内容格式大致如下: 点击(此处)折叠或打开 BM2D0 = (DESCRIPTION = (ADDRESS_LIST = (A

服务器断电,Oracle数据库无法启动解决方案

数据库没有备份的情况下,数据库所在服务器由于意外断电,导致服务器启动之后,Oracle数据库startup报错. 1. 数据库没开归档模式 2. 无备份 解决方案: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 SQL>startup mount SQL>recover database using backup controlfile until cancel; SQL>alter database open r

从远程服务器将Oracle数据库导出到本地Oracle数据库的方法

1.创建本地用户 SQL> create user test identified by 123456; 2.授权 SQL> grant connect,resource,dba to test; 3.远程数据库导出(远程用户具有dba权限) SQL> $exp userid=用户名/密码@远程IP地址:1521/数据库实例 file=d:/daochu.dmp; 4.导入到本地数据库 SQL> $imp test/[email protected] file=d:/daochu.

CentOS安装Oracle数据库详细介绍及常见问题汇总

一.安装前准备 1.软件硬件要求 操作系统:CentOS 6.4(32bit)Oracle数据库版本:Oracle 10g(10201_database_linux32.zip)最小内存:1G(检查命令:#grep MemTotal /proc/meminfo)最小Swap:2G(检查命令:#grep SwapTotal /proc/meminfo) 2.安装依赖包 # rpm -q binutils compat-libstdc++-33 compat-libstdc++-33.i686 el

Oracle数据库中文乱码问题

最近碰到Oracle乱码问题,刚开始甚是头疼,以前在合肥出差的时候,这种问题也碰到过,当时直接抛给了“乌压压一片”(一个搞数据的同事儿),这次没办法躲过,只好硬着头皮上.虽然我这次碰到的是Oracle乱码问题中的一个,但是我决定将这个乱码问题整理清楚(不整清楚,就觉得身边有个定时炸弹,怕下次整数据库的时候会突然又爆炸). 解决这个问题的关键在于理解字符集的概念,所以在正文开始之前,有必要先提一下字符集的相关知识!(这部分知识,对于解决j2ee中文参数传递过程中出现的乱码,也非常具有参考意义) 一

ORACLE数据库逐步解决ORA-12541、ORA-01034和ORA-27101、ORA-00119和ORA00132的过程

刚开始时,有一台服务器的ORACLE 11G数据库连接不上,报错:ORA-12541:TNS:无监听程序重启服务里面的两个Oracle服务,都没解决.在网上看到一篇文章说另一种可能是oracle目录目录下listener.log日志文件过大(达到4G,据说这是oracle在windows系统下的bug)导致的.搜索找到listener.log,果然文件已经是4GB. 于是停止服务里面的Oracle监听服务,重命名listener.log做备份,例如listener.log.bak.启动Oracl

ORACLE数据库异步IO介绍

异步IO概念 Linux 异步 I/O (AIO)是 Linux 内核中提供的一个增强的功能.它是Linux 2.6 版本内核的一个标准特性,当然我们在2.4 版本内核的补丁中也可以找到它.AIO 背后的基本思想是允许进程发起很多 I/O 操作,而不用阻塞或等待任何操作完成.稍后或在接收到 I/O 操作完成的通知时,进程就可以检索 I/O 操作的结果. Linux IO模型(I/O models)分同步IO模型(synchronous models)和异步IO模型(asynchronous mo

Oracle 数据库SQL性能查看

作为一个开发/测试人员,或多或少都得和数据库打交道,而对数据库的操作归根到底都是SQL语句,所有操作到最后都是操作数据,那么对sql性能的掌控又成了我们工作中一件非常重要的工作.下面简单介绍下一些查看oracle性能的一些实用方法: 1.查询每台机器的连接数 select t.MACHINE,count(*) from v$session t group by t.MACHINE 这里所说的每台机器是指每个连接oracle数据库的服务器,每个服务器都有配置连接数据库的连接数,以websphere