天天看點

Oracle運維筆記之ORA-27102錯誤處理

資料庫當機,在啟動執行個體時報錯ORA-27102:

Oracle運維筆記之ORA-27102錯誤處理

第一感覺就是記憶體不夠,用top指令檢視記憶體,使用率不高,是以也不是記憶體不足問題。

接下來去檢視下作業系統記憶體參數shmmax和shmall,發現數值不知按照實際記憶體大小配置的。

簡單介紹下這2個參數的作用:

shmmax:是核心參數中最重要的參數之一,用于定義單個共享記憶體段的最大值。設定應該足夠大,能在一個共享記憶體段下容納下整個的 SGA , 設定的過低可能會導緻需要建立多個共享記憶體段,這樣可能導緻系統性能的下降

shmall:該參數控制可以使用的共享記憶體的總頁數。 Linux 共享記憶體頁大小為 4KB, 共享記憶體段的大小都是共享記憶體頁大小的整數倍。

這兩個可以設定為記憶體的 90%,計算方法

shmmax = 實體記憶體(bytes) / 2 * 90%

shmall = 實體記憶體(bytes) / pagesize(通常是4096) * 90%

例如,實體記憶體為64G

shmmax=64 x 1024 x 1024 x 1024 / 2 x 90%=30923764531

shmall= 64 x 1024 x 1024 x 1024 / 4096 x 90%=15099494

根據實際記憶體大小來配置shmmax和shmall後,資料庫就正常啟動了。