solaris上的Oracle DB在可用RAM时使用交换内存

solaris上的Oracle DB在可用RAM时使用交换内存,oracle,memory,solaris,swap,Oracle,Memory,Solaris,Swap,我们有一个奇怪的例子,我们注意到oracle数据库服务器交换利用率为100%,并惊讶地发现系统在这段时间内有可用的空闲内存。据我所知,一旦系统耗尽可用RAM,交换内存利用率就会启动(如果我错了,请纠正我)。不确定是什么导致了这种不寻常的活动。还有其他人经历过这种行为吗 Regs,您应该提供有关如何获得指标的详细信息,但交换和RAM利用率之间没有直接关系。您当然可以在空闲RAM仍然可用的情况下使用交换空间 必须为所有(虚拟)内存保留提供足够的交换空间才能满足要求。内存保留(即malloc)不使用R

我们有一个奇怪的例子,我们注意到oracle数据库服务器交换利用率为100%,并惊讶地发现系统在这段时间内有可用的空闲内存。据我所知,一旦系统耗尽可用RAM,交换内存利用率就会启动(如果我错了,请纠正我)。不确定是什么导致了这种不寻常的活动。还有其他人经历过这种行为吗


Regs,

您应该提供有关如何获得指标的详细信息,但交换和RAM利用率之间没有直接关系。您当然可以在空闲RAM仍然可用的情况下使用交换空间


必须为所有(虚拟)内存保留提供足够的交换空间才能满足要求。内存保留(即malloc)不使用RAM。只有在访问虚拟内存时才需要RAM。

如果您使用的是solaris 10或更高版本,则系统参数不再位于/etc/system中。相反,您可以通过区域、任务或用户级别的“项目”来配置动态管理的资源

例如,下面是我们其中一个区域中的一个项目配置文件

system:0::::
user.root:1::::
noproject:2::::
default:3::::
group.staff:10::::
user.oracle:100:Oracle:::process.max-sem-nsems=(privileged,256,deny);project.ma-shm-ids=(privileged,256,deny);project.max-shm-memory=(privileged,42949672960,dny)
此处的设置意味着用户名为oracle的用户将受益于特定的资源设置

要设置将此类行添加到项目文件,请使用
projadd
命令。要修改它,请使用
projmod
命令,如果要列出oracle当前可用的所有资源,请

  • 苏轼与甲骨文
  • 类型:

    prctl-i project user.oracle


  • 这将列出该“项目”可用的所有资源。

    在Solaris上运行的Oracle DB有一个“错误”。 它是在操作系统上“保留”交换,其中“交换”和“ram”组合到一个虚拟内存池中。 保留交换只是无缘无故地耗尽基于磁盘的交换区域,根本不应该这样做。 ram和交换之间的所有转换都由Solaris操作系统本身处理。 我花了将近5年的时间才让Sun/Oracle了解Java的完全相同的问题

    最新的Java7和Java8不再“二次浸入”内存池

    我发现,在操作系统遇到“交换”限制的情况下,需要相应地调整内存大小,并完全删除交换


    零交换可用时,所有内存交互都在物理ram中,您不会看到二次探底问题,也不会看到交换耗尽的错误,只要您有足够的ram来运行一切。

    感谢您提供的这些信息,我们正在根据您的输入进一步调查。“据我所知,一旦系统耗尽可用RAM,交换内存利用率就会启动(如果我错了,请纠正我)。”->我恐怕你错了,并且对你接受的答案没有关注问题的根本原因感到有些失望。