Oracle 11gR2 RAC ORA-00845 MEMORY_TARGET not supported on this system 解决方法

 

公司刚上线一套Oracle 11gR2 RAC MEMORY_TARGET内存设置为12G后,启动的时候报了错误:

       ORA-00845: MEMORY_TARGET not supported on this system

 

 

00845, 00000, "MEMORY_TARGET not supported on this system"

// *Cause: The MEMORY_TARGET parameter was not supported on this operating system or /dev/shm was not sized correctly on Linux.

// *Action: Refer to documentation for a list of supported operating systems. Or, size /dev/shm to be at least the SGA_MAX_SIZE on each Oracle instance running on the system.

 

 

Oracle 11g里,通过MEMORY_TARGET参数自动管理SGAPGA 但是在Oracle 11gR2 里如果MEMORY_TARGET参数值设定的过大,可能就会出现这个错误。

 

 

解决方法:增加/dev/shm, /dev/shm通常用做共享内存。

 

 /dev/shm是一个临时文件系统(tmpfs) 。 从/etc/fstab中mount支持标准的参数"size",可以用size来增加或者减少在/dev/shm上的tmpfs大小.如果没有设置size,它的大小大于MEMORY_TARGET。

 

如果想立即生效,方法如下:

# umount tmpfs

# mount -t tmpfs shmfs -o size=14G /dev/shm

 

让以后每次重启OS 都自动mount,修改文件 /etc/fstab 将tmpfs 修改成以下值:

 tmpfs            /dev/shm        tmpfs  defaults,size=14G        0 0

 

如果直接修改/etc/fstab,通过重启OS 也可以让参数生效。

 

注意:这个size 的大小需要设置为整数。

 

df -h 在查查修改后的/dev/shm的大小

 

文件系统              容量  已用 可用 已用% 挂载点

/dev/mapper/vg00-lv_root

                       20G   11G  7.7G  59% /

/dev/mapper/vg00-lv_home

                       97G  6.8G   86G   8% /home

/dev/sda1              97M   13M   80M  14% /boot

tmpfs                  14G     0   14G   0% /dev/shm

 

 

 

 

 

Oracle 官网的说明:

 

 

ORA-00845 When Starting Up An 11g Instance With AMM Configured. [ID 460506.1]


 

Modified 18-FEB-2010     Type PROBLEM     Status PUBLISHED

 

In this Document
  Symptoms
  Changes
  Cause
  Solution
  References


Applies to:

Oracle Server - Enterprise Edition - Version: 11.1.0.6 to 11.2.0.2.0 - Release: 11.1 to 11.2
Linux x86
Linux x86-64

Symptoms


On a Linux system, trying to start up an 11g instance could fail with the following error:

ORA-845: MEMORY_TARGET not supported on this system

In the alert log, you could or could not see the below messages:

ORA-04031 errors

OR

Starting ORACLE instance (normal)
WARNING: You are trying to use the MEMORY_TARGET feature.
This feature requires the /dev/shm file system to be mounted for at
Least <size> bytes.The /dev/shm is either not mounted or is mounted
With available space less than this size.
Please fix this so that MEMORY_TARGET can work as expected.
Current available is <size> and used is <size> bytes.memory_target needs larger /dev/shm

If ORA-04031 is seen in the alert log, sometimes you can not establish new connections due to this problem.

Changes

Installed 11g, or created a new database on 11g and is starting to use the AMM (Automatic Memory Management) feature.

Cause

This feature requires the /dev/shm file system to be mounted for at least %llu bytes.
/dev/shm is either not mounted or is mounted with available space less than this size.

Explanation:

AMM (Automatic Memory Management) is a new feature in 11 which manages both SGA and PGA.

MEMORY_TARGET is used instead of SGA_TARGET and MEMORY_MAX_TARGET is used instead of SGA_MAX_SIZE (defaults to MEMORY_TARGET ).

It uses /dev/shm on Linux. If max_target set over /dev/shm size, you get the error messages.

Solution

1. If you are installing Oracle 11g on a Linux system, note that Memory Size (SGA and PGA), which sets
the initialization parameter MEMORY_TARGET or MEMORY_MAX_TARGET, cannot be greater than the shared memory filesystem (/dev/shm) on your operating system. To resolve the current error, increase the /dev/shm file size. For example:

# mount -t tmpfs shmfs -o size=7g /dev/shm

Also, to make this change persistent across system restarts, add an entry in /etc/fstab similar to the following:

shmfs /dev/shm tmpfs size=7g 0

2. This error may also occur if /dev/shm is not properly mounted. Make sure your df output is similar to the following:

$ df -k
Filesystem 1K-blocks Used Available Use% Mounted on
...
shmfs 6291456 832356 5459100 14% /dev/shm

3. If configuring AMM is not possible due to lack of space on /dev/shm mount point, you can configure ASMM instead of AMM, i.e. set SGA_TARGET, SGA_MAX_SIZE and PGA_AGGREGATE_TARGET instead of MEMORY_TARGET.

 

 

 

 

HugePages and Oracle Database 11g Automatic Memory Management (AMM) on Linux [ID 749851.1]


 

Modified 05-NOV-2010     Type BULLETIN     Status PUBLISHED

 

In this Document
  Purpose
  Scope and Application
  HugePages and Oracle Database 11g Automatic Memory Management (AMM) on Linux
  References


Applies to:

Oracle Server - Enterprise Edition - Version: 11.1.0.6 and later   [Release: 11.1 and later ]
Linux OS - Version: 2.6 and later ]
Linux x86
IBM: Linux on System z
IBM: Linux on POWER Systems
IBM S/390 Based Linux (31-bit)
Linux x86-64
Linux Itanium

Purpose

This document discusses the interoperability of the Automatic Memory Management (AMM) feature introduced by Oracle DB 11g and the HugePages (HugeTLB) feature of the Linux OS kernel.

Scope and Application

This document is to be used by Linux system administrators and Oracle database administrators that work with Oracle Database Server 11g on Linux Operating System.

HugePages and Oracle Database 11g Automatic Memory Management (AMM) on Linux

The 11g AMM feature is enabled by the MEMORY_TARGET / MEMORY_MAX_TARGET instance initialization parameters (see Note 460506.1 for further information). That is also the case with a default database instance created using Database Configuration Assistant (DBCA).

With AMM all SGA memory is allocated by creating files under /dev/shm. When Oracle DB does SGA allocations that way HugePages are not reserved/used. The use of AMM is absolutely incompatible with HugePages.

Please also note that ramfs (instead of tmpfs mount over /dev/shm) is not supported for AMM at all. With AMM the Oracle database needs to grow and reduce the size of SGA dynamically. This is not possible with ramfs where it possible and supported with tmpfs (which is the default for the OS installation).

If you want to use HugePages make sure that both MEMORY_TARGET / MEMORY_MAX_TARGET initialization parameters are disabled (set to 0) for the database instance.(See also Oracle
Database Administrator's Guide 11g)

References

NOTE:460506.1 - ORA-00845 When Starting Up An 11g Instance With AMM Configured.

Related


Products


  • Oracle Database Products > Oracle Database > Oracle Database > Oracle Server - Enterprise Edition
  • Unbreakable Linux and Virtualization > Unbreakable Linux > Operating System > Linux OS

Keywords


HUGETLB; HUGEPAGES; DATABASE CONFIGURATION ASSISTANT; DBCA

 

 

 

 

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

QQ:492913789

Email:ahdba@qq.com

Blog: http://www.cndba.cn/dave 


网上资源: http://tianlesoftware.download.csdn.net

相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx

DBA1 群:62697716(); DBA2 群:62697977()

DBA3 群:62697850   DBA 超级群:63306533;    

聊天 群:40132017

--加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请

你遇到的错误: ``` ORA-00845: MEMORY_TARGET not supported on this system ``` 是一个在 Oracle 11g 及以上版本中常见的错误,尤其是在 Linux 系统上。这个错误通常发生在使用 `MEMORY_TARGET` 或 `SGA_TARGET` 初始化参数时,而系统的 `/dev/shm` 临时文件系统(tmpfs)大小不足或未正确挂载。 --- ### 🔍 错误原因分析 Oracle 11g 引入了 `MEMORY_TARGET` 和 `MEMORY_MAX_TARGET` 参数,用于自动管理 SGA 和 PGA 内存。这些功能依赖于 **共享内存文件系统(tmpfs)**,即 Linux 下的 `/dev/shm`。 如果 `/dev/shm` 的大小小于 `MEMORY_TARGET` 指定的值,或者根本没有挂载,就会报 `ORA-00845` 错误。 --- ### ✅ 解决方案 #### 方法一:调整 `/dev/shm` 大小(推荐) 1. **检查当前 `/dev/shm` 挂载情况** ```bash df -h | grep tmpfs ``` 输出示例: ``` tmpfs 2G 0 2G 0% /dev/shm ``` 如果看到 `/dev/shm` 太小(比如 2G),而你的 `MEMORY_TARGET` 设置为 3G,就会出错。 2. **重新挂载 `/dev/shm`,增大其大小** 以 root 用户执行以下命令(假设你想设置为 4G): ```bash sudo mount -o remount,size=4G /dev/shm ``` > 注意:`size=4G` 中的 G 是大写,否则可能被解释为字节。 3. **永久生效:修改 `/etc/fstab`** 编辑 `/etc/fstab` 文件: ```bash sudo vi /etc/fstab ``` 找到包含 `/dev/shm` 的行,修改为: ``` tmpfs /dev/shm tmpfs defaults,size=4G 0 0 ``` 如果没有这行,可以添加它。 保存并重启系统或重新挂载即可: ```bash sudo mount -o remount /dev/shm ``` --- #### 方法二:禁用 `MEMORY_TARGET`(不推荐,仅用于测试) 如果你不想使用自动内存管理,可以改用传统的手动 SGA/PGA 管理方式。 修改你的 pfile (`$ORACLE_HOME/initdup.ora`),替换如下参数: ```ini # 注释或删除这两项 # MEMORY_TARGET=... # MEMORY_MAX_TARGET=... # 改为手动设置 SGA 和 PGA SGA_TARGET = 2G SGA_MAX_SIZE = 2G PGA_AGGREGATE_TARGET = 512M ``` 然后再次启动: ```sql SQL> startup nomount pfile='$ORACLE_HOME/initdup.ora'; ``` 这样就不会触发 `ORA-00845`,因为不再使用基于 `/dev/shm` 的自动内存管理。 --- ### 📌 示例:修改后的 pfile 片段 ```ini dup.__db_cache_size=128M dup.__java_pool_size=16M dup.__large_pool_size=16M dup.__pga_aggregate_target=512M dup.__sga_target=2G dup.__shared_io_pool_size=0 dup.__shared_pool_size=72M dup.__streams_pool_size=0 # 禁用自动内存管理 # MEMORY_TARGET=0 # MEMORY_MAX_TARGET=0 # 手动设置 SGA_TARGET = 2G SGA_MAX_SIZE = 2G PGA_AGGREGATE_TARGET = 512M # 其他必要参数 processes = 300 shared_pool_size = 72M db_name = dup control_files = (/u01/app/oracle/oradata/dup/control01.ctl) ``` --- ### ✅ 验证是否解决 重启实例后运行: ```sql SQL> show parameter memory_target; SQL> show parameter sga_target; SQL> startup nomount pfile='$ORACLE_HOME/initdup.ora'; ``` 应不再出现 ORA-00845--- ### ⚠️ 注意事项 - `/dev/shm` 必须是 tmpfs 类型。 - `MEMORY_TARGET` 要求内核支持 hugetlb 和 tmpfs,并且 `shmmax`、`shmall` 设置合理。 -RAC 环境中更需注意共享内存配置。 - 使用 `mount -o remount` 临时修改后,重启会失效,务必修改 `/etc/fstab` 永久化。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值