我的pfile在文件系統下
SQL> startup pfile='/home/oracle/pfile.ora';
ORACLE instance started.
Total System Global Area 1.3522E+10 bytes
Fixed Size 8808080 bytes
Variable Size 2147486064 bytes
Database Buffers 1.1341E+10 bytes
Redo Buffers 24743936 bytes
Database mounted.
Database opened.
SQL> create spfile from pfile='/home/oracle/pfile.ora';
File created.
以默認路徑創建spfile,
單機在$ORACLE_HOME/dbs下,rac環境在+OCR/dbname/PARAMETERFILE下
ASMCMD> ls
spfile.280.1006512037
ASMCMD> pwd
+DATA/orcl/PARAMETERFILE
關庫startup失敗
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/oracle/app/oracle/product/12.2.0/dbhome_1/dbs/initorcl11.ora'
明顯是數據庫沒有找到我們對應的spfile的位置。
數據庫有一套自己的讀取spfile文件的規則,spfile.ora,spfiledbname.ora blablabla,但是我們不管那麼多
rac環境我們需要確認2個東西
數據庫資源配置:srvctl config database -d |grep pfile
文件系統pfileorcl.ora中spfile的位置:cat $ORACLE_HOME/dbs/pfileorcl.ora
[oracle@csdb1 dbs]$ srvctl config database -d orcl
Spfile: +DATA/ORCL/PARAMETERFILE/spfile.280.1003409207
[oracle@csdb1 dbs]$ ls -l $ORACLE_HOME/dbs/initorcl.ora
ls: cannot access /oracle/app/oracle/product/12.2.0/dbhome_1/dbs/initorcl.ora: No such file or directory
沒有initorcl.ora(注意不是init.ora)
我的spfile是spfile.280.1006512037不是spfile.280.1003409207,所以我改下db資源配置應該就可以了
[oracle@csdb1 dbs]$ srvctl modify database -d orcl -p +DATA/orcl/PARAMETERFILE/spfile.280.1006512037
[oracle@csdb1 dbs]$ sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Thu Apr 25 10:52:19 2019
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 1.3522E+10 bytes
Fixed Size 8808080 bytes
Variable Size 2147486064 bytes
Database Buffers 1.1341E+10 bytes
Redo Buffers 24743936 bytes
Database mounted.
Database opened.
參考文檔:
https://dbaclass.com/article/move-spfile-file-system-asm-rac/