深入解析Oracle数据库在Unix和Linux系统中的内存与性能监控
1. 亲密共享内存(ISM)与LOCK_SGA参数
在较新的Solaris(2.6 及更高版本)和Oracle(8i 及更高版本)中,亲密共享内存(ISM)默认是启用的。在数据库中,init.ora参数USE_ISM默认将该参数设置为TRUE。不过,你可以在操作系统层面的/etc/system文件中禁用它。要使用 ISM,必须在数据库和操作系统层面都启用它。此外,系统全局区(SGA)必须分配在一个连续的共享内存段中,而不是之前讨论的多个段。如果不满足这些条件,虽然不会有任何消息提示,但可能会出现 SGA 的部分内容被分页的情况。早期使用 ISM 时,需要操作系统补丁来防止因某个 bug 导致的数据损坏,所以要与系统管理员(SA)确认操作系统是否已针对此 bug 进行了补丁修复。
如果你使用的不是 Sun Solaris 系统,无法使用 ISM,也不用担心 SGA 一定会被分页。可以通过将init.ora参数LOCK_SGA设置为TRUE,来防止 SGA 被移出物理内存。但要注意,和 ISM 一样,将 SGA 锁定在物理内存中可能会导致其他进程的分页和交换,从而影响其他应用程序。
2. 清理共享内存和信号量
虽然这种情况不常发生,但有时数据库实例崩溃后,该实例的共享内存和信号量仍然存在。实际上,服务器和后台进程已经终止,文件也无法访问,但内存仍然被分配着