©作者: 釋出在昨天在火車站,一個朋友打電話過來,說他将SPFILE修改錯了,資料庫無法啟動,問我怎麼辦。
我說你建立一個PFILE,改一下用PFILE啟動,而他說資料庫無法連接配接,是Windows的環境。
Ok,這類問題很多很多,我描述一下解決辦法供參考。
加入我們修改了以下參數:
SQL> alter system set sga_max_size=5G scope=spfile;
System altered.
那麼下次啟動,如果記憶體不足,資料庫是無法啟動的:
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORA-27102: out of memory在Unix、Linux上可以連接配接到資料庫,建立pfile:
SQL> create pfile from spfile;
File created.如果在Window上,你手上還沒有任何可供參考的參數檔案,那麼很簡單,用記事本(Notepad)編輯一個檔案,包含如下兩行:
[[email protected] dbs]$ cat initeygle.ora
SPFILE='/opt/oracle/product/10.2.0/dbs/spfileeygle.ora'
sga_max_size=1073741824
第一行指向SPFILE,第二行寫上出錯的參數,給一個正确的值。這個值在執行個體啟動時會覆寫之前錯誤的設定。
然後就可以使用這個檔案啟動資料庫執行個體了:
SQL> startup pfile=$ORACLE_HOME/dbs/initeygle.ora
ORACLE instance started.
Total System Global Area 1073741824 bytes
Fixed Size 1223540 bytes
Variable Size 918553740 bytes
Database Buffers 146800640 bytes
Redo Buffers 7163904 bytes
Database mounted.
Database opened.
如果在Windows上,你隻能通過服務起停資料庫,那麼Oracle預設的還是會尋找SPFILE,一個辦法是将SPFILE改名。
比如将spfileeygle.ora更改為spfileeygle2.ora,然後再pfile裡引用這個參數檔案,下次startup就不用指定pfile。
資料庫可以自動找到這個參數檔案,啟動資料庫。
[[email protected] dbs]$ mv spfileeygle.ora spfileeygle2.ora
[[email protected] dbs]$ cat initeygle.ora
SPFILE='/opt/oracle/product/10.2.0/dbs/spfileeygle2.ora'
sga_max_size=1073741824資料庫可以自動使用PFILE啟動:
SQL> startup
ORACLE instance started.
Total System Global Area 1073741824 bytes
Fixed Size 1223540 bytes
Variable Size 918553740 bytes
Database Buffers 146800640 bytes
Redo Buffers 7163904 bytes
Database mounted.
Database opened.
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /opt/oracle/product/10.2.0/dbs
/spfileeygle2.ora
-The End-