コンテンツ
ORA-00845 とは
カーネル (/dev/shm) に割り当てられているメモリよりも大きい値を MEMORY_TARGET に設定してしまうと、nomount 状態にもできず DB が起動しなくなってしまう。
SQL> startup
ORA-00845: MEMORY_TARGET not supported on this system
シングル環境の場合は以下の記事を参考にしてね。
DB 起動までの対処法
spfile から pfile の作成
CREATE PFILE = '<パス>' FROM SPFILE='<パス>';
実行例
SQL> CREATE PFILE FROM SPFILE='+DATA/ORCL/PARAMETERFILE/spfile.457.20397549';
File created.
spfile のパスを指定しない場合、ORA-01565 が発生することがある。
これは spfile が ASM上に存在しているためなので、以下コマンドで spfile の場所を確認しよう。
srvctl config database -db <DB名>
pfile を直接編集
指定したパスに pfile が作成されているので、vim などで MEMORY_TARGET を小さな数字にする。
pfile のパスを前のステップで指定しない場合、デフォルトの $ORACLE_HOME/dbs 配下に作成されるよ
pfile から起動
startup pfile=<パス>
実行例
SQL> startup pfile=/u01/app/oracle/product/12.2.0/dbhome_1/dbs/initorcl.ora;
ORACLE instance started.
Total System Global Area 1795162112 bytes
pfile から spfile を作成する
create spfile from PFILE='<パス>';
実行例
SQL> create spfile from PFILE='/u01/app/oracle/product/12.2.0/dbhome_1/dbs/initorcl.ora';
File created.
新しく作成された spfile のパスを確認
asmcmd ls +DATA/ORCL/PARAMETERFILE/ -l
実行例
[grid@myhost ~]$ asmcmd ls +DATA/ORCL/PARAMETERFILE/ -l
Type Redund Striped Time Sys Name
PARAMETERFILE UNPROT COARSE NOV 15 06:00:00 Y spfile.457.20397549
PARAMETERFILE UNPROT COARSE NOV 15 06:00:00 Y spfile.465.94038456
確認したパスを指定する
srvctl modify database -db orcl -spfile '<パス>'
実行例
[oracle@myhost ~]$ srvctl modify database -db orcl -spfile '+DATA/ORCL/PARAMETERFILE/spfile.465.94038456'
DB を再起動
srvctl stop database -db <DB名>
srvctl start database -db <DB名>
spfile 起動できているか確認する SQL は以下
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string +DATA/ORCL/PARAMETERFILE/spfil
e.465.94038456