Oracle ORAエラー

Restart (Grid) 環境で ORA-00845 が発生して DB が起動できなくなったときの対処法

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

この記事が役に立ったという方は
ボタンをポチッとしてくれたら喜びます

-Oracle, ORAエラー
-, , ,