Terkadang perlu memeriksa semua direktori yang telah di-mount hugetlbfs. Jadi,
-
temukan direktori yang terpasang dengan perintah
mount | grep huge
. -
periksa setiap direktori kecuali terutama
/dev/hugepages
. -
hapus semua file berukuran 2M. (2M adalah ukuran halaman besar)
Gunakan ipcs -m
untuk membuat daftar segmen memori bersama. Gunakan ipcrm
untuk menghapus segmen memori bersama yang tersisa.
Sunting pada 06/24/2019:Oke, jadi, jawaban di atas, meskipun benar, agak singkat. Secara khusus, jika Anda memiliki host dengan beberapa instans DB, dan hanya satu yang mogok, bagaimana Anda dapat menentukan segmen memori mana (jika ada) yang harus dibersihkan?
Nah, ini juga bisa dilakukan. Untuk setiap instance yang berjalan, hubungkan dengan / as sysdba
, lalu lakukan oradebug setmypid
(setiap pid akan dilakukan, karena semua PID Oracle terhubung ke SGA). Kemudian lakukan oradebug ipc
. Itu (mudah-mudahan) akan mengembalikan IPC information written to the trace file
. Jadi, buka direktori udump (atau diag_dest), dan cari file jejak Anda. Ini akan berisi semua informasi IPC untuk instance. Ini akan mencakup ShmId
. Lihat file untuk ShmId(s) yang digunakan instance ini. Sekarang lihat output dari ipcs -m
.
Ketika Anda telah melakukannya untuk semua instans yang berjalan, setiap segmen memori dihasilkan oleh ipcs -m
yang menunjukkan alokasi memori bukan nol, dan yang tidak dapat Anda perhitungkan dalam oradebug ipc
informasi dari instans yang sedang berjalan, harus berupa segmen memori yang tersisa dari instans yang mogok. Gunakan ipcrm
untuk menghapusnya/mereka.
Saat melakukan ini pada host dengan beberapa instance yang sedang berjalan, ini bisa sedikit rumit. Lanjutkan dengan hati-hati. Anda tidak ingin menghapus SGA dari instance yang sedang berjalan!
Semoga membantu....