首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 11g Linux 安裝常見故障:內核參數檢測偏差、Swap 空間不足臨時擴容實戰

     編輯:Oracle 資料庫相關知識

Oracle 11g Linux 安裝過程中,內核參數檢測值與實際設置不符、Swap 空間不足導致 ORA-27102 是兩大高頻阻礙。本文記錄根因分析、臨時擴容 Swap 方案、永久修復建議。

一、故障 1:內核參數檢測偏差

現象:安裝前按文檔設置 kernel.sem = 250 32000 100 128,但 OUI 檢測顯示 semmsl=250, semmns=32000, semopm=100, semmni=12800(最後一項多兩個 0)。
根因:OUI 讀取 /proc/sys/kernel/sem 顯示為 4 個值,但內部解析邏輯將第 4 值乘以 100 顯示,屬於**顯示 Bug**,實際運行值正確。
結論:**不影響安裝**,可忽略,繼續下一步。

二、故障 2:Swap 空間不足 → ORA-27102: out of memory

現象:軟件安裝正常,DBCA 創建數據庫階段報 ORA-27102: out of memory,Alert 日志顯示 Linux Error: 12: Cannot allocate memory。
根因:物理內存 + Swap 總量小於 Oracle 要求最小值(通常 4GB+),或 MEMORY_TARGET/SGA_TARGET 設置過大超過可用虛擬內存。

三、臨時擴容 Swap 方案(無需重啟、無需重新分區)

# 1. 切換 root
su - root

# 2. 創建 4GB Swap 文件(根據 OUI 提示缺口決定大小)
dd if=/dev/zero of=/swapfile_4g bs=1M count=4096
# 或 fallocate -l 4G /swapfile_4g (支持即時分配)

# 3. 設置權限並格式化為 Swap
chmod 600 /swapfile_4g
mkswap /swapfile_4g

# 4. 啟用 Swap
swapon /swapfile_4g

# 5. 驗證
swapon -s
# 或
free -h
# 顯示 Swap 總量已增加 4GB

# 6. 重新運行 DBCA,創建數據庫成功

四、永久生效配置

# /etc/fstab 添加一行(重啟後自動掛載)
/swapfile_4g none swap sw 0 0

# 或調整現有 Swap 分區大小(需 LVM/重新分區,風險較大)
# 建議:規劃階段預留足夠 Swap 分區(≥ 物理內存 1.5 倍或 16GB 取較大值)

五、記憶體參數調優建議

  • AMM (MEMORY_TARGET):11g+ 推薦啟用,自動管理 SGA+PGA,但需 /dev/shm 大小 ≥ MEMORY_TARGET。
    mount -o remount,size=8G /dev/shm 臨時擴大共享內存。
  • ASMM (SGA_TARGET + PGA_AGGREGATE_TARGET):手動控制,避免 AMM 在內存壓力下頻繁縮放導致性能抖動。
  • HugePages:生產環境強烈建議配置 HugePages 承載 SGA,減少頁表開銷、防止 Swap Out。
    vm.nr_hugepages = (SGA_Size_MB / 2) + 100。

六、安裝前檢查清單(納入自動化腳本)

#!/bin/bash
# preinstall_check.sh
echo "=== Swap ==="; free -h
echo "=== /dev/shm ==="; df -h /dev/shm
echo "=== Kernel Sem ==="; cat /proc/sys/kernel/sem
echo "=== Kernel Shmmax ==="; cat /proc/sys/kernel/shmmax
echo "=== Kernel Shmall ==="; cat /proc/sys/kernel/shmall
echo "=== File Limits ==="; cat /etc/security/limits.conf | grep -E 'nofile|nproc|memlock'
echo "=== User Groups ==="; id oracle
echo "=== DNS/Hosts ==="; ping -c 1 $(hostname); cat /etc/hosts

臨時 Swap 文件是「救急神器」,但**生產環境必須規劃專用 Swap 分區 + HugePages + 足夠 /dev/shm**,從源頭消除內存分配失敗風險。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved