故障背景:
爲服務器進行操作系統重啓,因硬件問題,服務器重啓後128GB內存丟失一半,導致應用進程處理數據緩慢。Oracle軟件版本爲10.2.0.5。特別之處在於,數據庫數據文件使用共享卷組裸設備,spfile是共享卷組上裸設備。
緊急決定,將此服務器上歷史數據庫SGA內存配置減少一般。
突發問題:
修改sga_max_size和sga_target後,重啓數據庫實例,報錯提示ORA-00821。
應急處置:
在shutdown狀態下,由spfile生產pfile。編輯pfile文件,調小sga_max_size和sga_target參數值。以pfile啓動數據庫,在將pfile內容寫入spfile
操作步驟:
(1)在open狀態下,修改sga內存配置,原配置減少至一般
alter system set sga_max_size=12240m scope=spfile;
alter system set sga_target=12240m scope=spfile;
(2)啓動數據庫報ORA-00821錯
SQL> shutdown immediate
SQL> startup
ORA-00821: Specified value of sga_target 3072M is too small, needs to be at least 12896M
(3)查看spfile爲裸設備文件
$ more /home/db/oracle/product/10.2.0/dbs/initwcmdb.ora
SPFILE='/home/db/oracle/oradata/wcmdb/rspfile_01_512M'
$ ls -l rspfileptdb_128m
lrwxrwxrwx 1 oracle dba 14 Jun 10 14:29 rspfileptdb_128m -> /dev/raw/raw10
(4)在shutdown狀態下,由spfile生產pfile
SQL> create pfile='/tmp/pfile.0919' from spfile='/home/db/oracle/oradata/wcmdb/rspfile_01_512M';
(5)編輯pfile
$ vi /tmp/pfile.0919
將修改sga_max_size和sga_target參數值調小
(6)在shutdown狀態下,以pfile啓動數據庫
SQL> startup pfile='/tmp/pfile.0919'
(7)在open狀態下,由pfile生產spfile
create spfile='/home/db/oracle/oradata/wcmdb/rspfile_01_512M' from pfile='/tmp/pfile.0919'
注意:spfile後必須寫全路徑