这是由于oracle在AIX上使用shmget()函数调用内存,在 lock_sga=true的情况下会指定 SHM_PIN 这个PIN 共享内存的flag,但是由于vmo 参数 v_pinshm=0,所以默认不启用SHM_PIN flag,这会导致oracle可能在aix仍有空闲内存的情况下使用Pgsp paging space:
如何诊断Oracle在AIX上是否使用Pgsp?
svmon -G
svmon -U oracle
关于 v_pinshm IBM官方有最权威的解释:
The v_pinshm parameter
When you set the v_pinshm parameter to 1, it causes pages in shared memory segments to be pinned by VMM, if the application, which does the shmget(), specifies SHM_PIN as part of the flags. The default value is 0.
Applications can choose to have a tunable which specifies whether the application should use the SHM_PIN flag (for example, the lock_sga parameter in Oracle 8.1.5 and later). Avoid pinning too much memory, because in that case no page replacement can occur. Pinning is useful because it saves overhead in async I/O from these shared memory segments (the async I/O kernel extension is not required to pin the buffers).