首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 教學

32 位元 Windows 2008 上 Oracle 啟動報 ORA-00064:processes 參數設定過大導致

     編輯:Oracle 教學

錯誤現場

  • 作業系統:Windows Server 2008 32-bit
  • 資料庫:Oracle 10.2.0.1 32-bit 單機
  • 實體記憶體:32 GB
  • 錯誤訊息:
    ORA-00064: object is too large to allocate on this O/S (1,4004280)

問題追蹤

  1. 實例無法進入 NOMOUNT 狀態,推測初始化參數有誤。
  2. 檢視 alert log 發現曾執行:
    ALTER SYSTEM SET PROCESSES = 2000 SCOPE = SPFILE;
  3. 建立 PFILE 並調整 PROCESSES 為 1500:
    CREATE PFILE='H:\pfile20140525.ora' FROM SPFILE='H:\oracle\product\10.2.0\db_1\dbs\spfileorcl.ora';
    -- 編輯 PFILE,將 processes=1500
    STARTUP NOMOUNT PFILE='H:\pfile20140525.ora';
  4. 實例成功啟動,確認是 PROCESSES 設定過大導致。

根因分析

32 位元作業系統對單一行程的虛擬記憶體空間有限制 (通常 2 GB 用戶空間)。PROCESSES 參數決定資料庫可同時支援的作業程序數,每個程序需分配 PGA、堆疊等記憶體結構。當 PROCESSES 設定過高,啟動時嘗試預分配的記憶體總量超過 32 位元程序的位址空間上限,導致 ORA-00064。

解決步驟總結

  1. 以 SYS 登入,建立 PFILE 备份現有 SPFILE。
  2. 編輯 PFILE,將 PROCESSES 降至合理值 (如 1500,視實際併發需求而定)。
  3. 使用 PFILE 啟動資料庫至 MOUNT 或 OPEN 狀態。
  4. 更新 SPFILE:
    ALTER SYSTEM SET PROCESSES = 1500 SCOPE = SPFILE;
  5. 重新啟動驗證。

延伸知識點

  • 32 位元平台上 Oracle SGA 最大值同樣受限 (約 1.7 GB),PROCESSES 只是另一受限面向。
  • MOS 文件 Doc ID 1232463.1 提及可用 ulimit -a 查看限制,但 Windows 無此指令,需參考作業系統文件或實測調整。
  • 生產環境強烈建議遷移至 64 位元平台以解除記憶體限制。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved