tmpfsでつまずくオラクルDB

久しぶりにオラクル関係の備忘録。

ノーアーカイブログモードでコールドバックアップの実施を
手順を思い出す意味で行おうとしたら全然別のところが勉強になったというお話。

コールドバックアップの手順は
1:バックアップするデータファイル、制御ファイル(あとREDOなど)の場所を確認
2:インスタンスを停止(shutdown normal or immediate or transactional)
3:データファイル、制御ファイルをバックアップ先にOSコマンドでコピー
4:インスタンスの起動

であるが、手順を思い出すのが目的であったため、
これといってバックアップ先は容量以外考慮しなかった。
で、バックアップしたファイルを最近覚えたtmpfsに置いたら問題だった。
tmpfsはメモリであるためOSの再起動時にはその配下においたものはすべて消える。
なので、こういったテスト行為でファイルを作成したりコピーした場合などに
書生のようなだらしない人間はよく消し忘れることがあるので
tmpfsにおけば便利だなという感覚で使ってみた。

ら、それが原因でバックアップ取得後のインスタンス起動で次のエラーに遭遇した。

[oracle@localhost ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Tue Apr 14 01:17:04 2015

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

Connected to an idle instance.

idle> startup
ORA-00845: MEMORY_TARGET not supported on this system

調べてみるとマニュアルでは

このエラーは、/dev/shmへの割当てが不足しているために発生します。初期化パラメータMEMORY_TARGETまたはMEMORY_MAX_TARGETを設定するSGAとPGAの合計メモリー・サイズは、オペレーティング・システムの共有メモリー・ファイル・システム(/dev/shm)のサイズより大きくできません。

とのこと。そこでtmpfs以外の場所にバックアップしたファイルを移動した後に
再度インスタンスの起動をしたら無事に起動した。

tmpfs便利だと思っていたがやはりメモリだけあってこういった乱暴な使い方をすると色々と弊害が出るようだ。