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

Oracle 關機狀態下修改 SPFILE 參數實戰:PFILE 轉換法

     編輯:Oracle 資料庫相關知識

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.

解決思路

  1. 以 PFILE 啟動資料庫
  2. 從 SPFILE 建立可編輯的 PFILE
  3. 修正 PFILE 參數
  4. 以修正後 PFILE 啟動
  5. 從 PFILE 重建 SPFILE
  6. 正常啟動驗證

實戰操作紀錄

[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 → PFILECREATE PFILE='path' FROM SPFILE='path';
PFILE 啟動STARTUP PFILE='path';
PFILE → SPFILECREATE SPFILE='path' FROM PFILE='path';

注意事項

  • 路徑需為伺服器端絕對路徑,非客戶端路徑
  • 修改 PFILE 時同步檢查 MEMORY_TARGET、MEMORY_MAX_TARGET、SGA_TARGET、SGA_MAX_SIZE 關係
  • 生產環境操作前務必備份原始 SPFILE
  • 12c 起支援 ALTER SYSTEM SET ... SCOPE=SPFILE SID='*' 直接修改,但關機狀態下仍需 PFILE 中轉

掌握 PFILE/SPFILE 雙向轉換,是 DBA 解決啟動參數錯誤的核心技能。

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