Oracle 11g 引入 MEMORY_TARGET 參數,導致 SGA_MAX_SIZE 不得大於它。若在關機狀態下誤設 SGA_MAX_SIZE > MEMORY_TARGET,資料庫無法啟動,SPFILE 為二進位無法直接編輯。本文演示「PFILE 中轉法」完整修復流程。
SQL> ALTER SYSTEM SET sga_max_size=960M SCOPE=SPFILE; SQL> SHUTDOWN IMMEDIATE; SQL> STARTUP; ORA-00844: Parameter not taking MEMORY_TARGET into account ORA-00851: SGA_MAX_SIZE 985661440 cannot be set to more than MEMORY_TARGET 784334848.
[oracle@wing ~]$ sqlplus / as sysdba SQL> CREATE PFILE='/home/oracle/pfile.new' FROM SPFILE='/u01/app/oracle/product/11.2.0/db_1/dbs/spfilewingdb.ora'; File created. SQL> EXIT # vi 編輯 pfile.new,調整 memory_target 參數 [oracle@wing ~]$ sqlplus / as sysdba SQL> STARTUP PFILE='/home/oracle/pfile.new' ORACLE instance started. Database mounted. Database opened. SQL> CREATE SPFILE='/u01/app/oracle/product/11.2.0/db_1/dbs/spfilewingdb.ora' FROM PFILE='/home/oracle/pfile.new'; File created. SQL> SHUTDOWN IMMEDIATE; SQL> EXIT [oracle@wing ~]$ sqlplus / as sysdba SQL> STARTUP ORACLE instance started. Database mounted. Database opened. SQL> SHOW PARAMETER memory NAME TYPE VALUE memory_max_target big integer 800M memory_target big integer 800M SQL> SHOW PARAMETER sga NAME TYPE VALUE sga_max_size big integer 776M sga_target big integer 740M
| 操作 | 指令 |
|---|---|
| SPFILE → PFILE | CREATE PFILE='path' FROM SPFILE='path'; |
| PFILE 啟動 | STARTUP PFILE='path'; |
| PFILE → SPFILE | CREATE SPFILE='path' FROM PFILE='path'; |
MEMORY_TARGET、MEMORY_MAX_TARGET、SGA_TARGET、SGA_MAX_SIZE 關係ALTER SYSTEM SET ... SCOPE=SPFILE SID='*' 直接修改,但關機狀態下仍需 PFILE 中轉掌握 PFILE/SPFILE 雙向轉換,是 DBA 解決啟動參數錯誤的核心技能。