Oracle 无法启动 - ORA-00845: 此系统不支持 MEMORY_TARGET - 但内存大小似乎没问题

问题描述 投票:0回答:8

启动时我们会看到

ORA-00845: MEMORY_TARGET not supported on this system

然而,

df -h
显示

tmpfs                 7,9G  4,0K  7,9G   1% /dev/shm. 

这表明有足够的可用内存。有什么想法可能是什么原因吗?

oracle memory-management shared-memory
8个回答
23
投票

您可能正在使用自动内存管理(AMM)

AMM 使用两个初始化参数:

  • 内存_目标
  • MEMORY_MAX_TARGET

共享内存文件系统应该有足够的空间来容纳 MEMORY_TARGET 和 MEMORY_MAX_TARGET 值。

验证:

SQL> show parameter memory

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
hi_shared_memory_address             integer     0
memory_max_target                    big integer 6096M
memory_target                        big integer 6096M
shared_memory_address                integer     0

UNIX/Linux 中,您必须相应地设置 共享内存文件系统

验证:

df -h /dev/shm

套装:

mount -t tmpfs shmfs -o size=<some_value_in_number_with_size> /dev/shm

例如

mount -t tmpfs shmfs -o size=4096m /dev/shm

4
投票

错误原因: 新的自动内存管理功能在 Linux 上使用 /dev/shm 进行 SGA 和 PGA 管理。如果 MEMORY_TARGET 或 MEMORY_MAX_TARGET 配置大于配置的 /dev/shm 大小,或者 /dev/shm 挂载不正确,则会发生错误。

解决方案: 请确认 ORACLE_HOME 设置正确。当设置不正确时,有时会出现此错误。

确保 /dev/shm 大小配置得足够大,如下所示: mount -t tmpfs shmfs -o size=7g /dev/shm

注意: 您应该根据警报文件中报告的内容,向系统管理员咨询 /dev/shm 的“最佳”大小。

此外,许多最佳实践现在建议禁用 AMM,尤其是在具有更大内存容量并可以使用巨大/大页面的 Exa* 工程机箱中。 这是因为 AMM 和 Huge/Large page 是互斥的,使用 Huge page 整体性能会更好

在系统上使用 Oracle 时,确保 df 输出显示正确的 /dev/shm 配置:

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

3
投票

一个简单的解决方案就是在

/dev/shm fs
中添加空格。

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

有关更多概念和详细信息,请参阅博客文章 ORA-00845:此系统不支持 MEMORY_TARGET。


0
投票
启动数据库时我也遇到了同样的错误。我在我的 pfile 中#out了 memory_target 参数,然后再次尝试,它成功了。 现在,我可以启动数据库了。


0
投票
当 oracle tmpfs 区域的内存设置较高时,会出现此错误 例如

如果内存参数是这样的:

*.memory_max_target=20G *.memory_target=0 *.sga_max_size=20G *.sga_target=15G *.pga_aggregate_target=5G
tmpfs大小为15G

当您启动时,您会收到错误 ora-00845 您应该将 tmpfs 大小设置为超过最大内存值 在这种情况下最大内存参数设置为20G 所以你在 /etc/fstab 文件中设置 tmpfs 大小,例如 25G

... ... tmpfs /dev/shm tmpfs defaults,size25G 0 0 ... ...
然后重新挂载tmpfs文件系统

#mount -o remount /dev/shm
然后你的数据库就可以启动了 


0
投票
  • 减小 memory_target 参数的值

  • 增加服务器上的临时内存分配。

例如

卸载 tmpfs

mount -t tmpfs shmfs -o size=1500m /dev/shm


0
投票
如果您正在使用虚拟机,您是否更改了 RAM?如果你这样做了,那一定是问题所在。将 RAM 增加到与之前相同或更高的值,然后重试。


0
投票
**

    解决方案:
**

在 UNIX/Linux 中,您必须相应地设置共享内存文件系统。

验证:

df -h /dev/shm

套装:

mount -t tmpfs shmfs -o size=<some_value_in_number_with_size> /dev/shm
--示例:

mount -t tmpfs shmfs -o size=12G /dev/shm
希望它有效! :)

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.