他の領域ならエラーが出るんですが、/dev/shmだとエラーもログも出ないようです。
なお、以下はtmpfsで/dev/shmにRAMディスクを作成してますが、ramfsでも同様です。
■/dev/shm以外の領域を多重マウントした場合
# mount /dev/mapper/VolGroup00-LogVol01 /
mount: /dev/mapper/VolGroup00-LogVol01 は マウント済か / が使用中です
mount: mtab によると、/dev/mapper/VolGroup00-LogVol01 は / にマウント済です
■/dev/shm領域を多重マウントした場合
# mount -t tmpfs tmpfs /dev/shm/ # # df -ma Filesystem 1M-ブロック 使用 使用可 使用% マウント位置 /dev/mapper/VolGroup00-LogVol01 25667 9343 15000 39% / proc 0 0 0 - /proc sysfs 0 0 0 - /sys devpts 0 0 0 - /dev/pts /dev/sda1 99 25 69 27% /boot tmpfs 0 0 0 - /dev/shm none 0 0 0 - /proc/sys/fs/binfmt_misc sunrpc 0 0 0 - /var/lib/nfs/rpc_pipefs tmpfs 0 0 0 - /dev/shm
message等にエラーログが出力されませんが、RAMディスクは使用できなくなりました。
以下はOracleが稼働しているサーバでshutdownを試みた時のです。
/dev/shm/領域にアクセスできないので、immediateが受け付けられませんでした。
なお、当たり前ですがabortは受け付けられました。
# su - oracle $ sqlplus /nolog SQL*Plus: Release 11.1.0.6.0 - Production on 日 1月 1 00:28:45 2013 Copyright (c) 1982, 2007, Oracle. All rights reserved. SQL> conn /as sysdba アイドル・インスタンスに接続しました。 SQL> shutdown immediate ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist Linux Error: 2: No such file or directory SQL> shutdown abort ORACLEインスタンスがシャットダウンされました。
下記は、上記でOracleをabortした後に/dev/shm/を多重マウントしたままに起動しようとした時のです。
当たり前ですが、起動しません。
# su - oracle $ sqlplus /nolog SQL*Plus: Release 11.1.0.6.0 - Production on 日 1月 1 01:40:06 2013 Copyright (c) 1982, 2007, Oracle. All rights reserved. SQL> conn /as sysdba アイドル・インスタンスに接続しました。 SQL> startup ORA-00845: MEMORY_TARGET not supported on this system
その際のalertログですが“/dev/shm/領域が小さすぎ(0バイト)て起動出来ない。最低851443712バイトは必要”てエラーが出てます
# cat /opt/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log
~~~省略~~~
Starting ORACLE instance (normal)
WARNING: You are trying to use the MEMORY_TARGET feature. This feature requires the /dev/shm file system to be mounted for at least 851443712 bytes. /dev/shm is either not mounted or is mounted with available space less than this size. Please fix this so that MEMORY_TARGET can work as expected. Current available is 0 and used is 0 bytes.
memory_target needs larger /dev/shm
解決策ですが、多重マウントしている/dev/shm/領域のアンマウントを1回するだけで
多重マウントが解除(/dev/shm領域が単マウントされている状態に)します。
# umount /dev/shm/ # df -ma Filesystem 1M-ブロック 使用 使用可 使用% マウント位置 /dev/mapper/VolGroup00-LogVol01 25667 9343 14999 39% / proc 0 0 0 - /proc sysfs 0 0 0 - /sys devpts 0 0 0 - /dev/pts /dev/sda1 99 25 69 27% /boot tmpfs 1014 0 1014 0% /dev/shm none 0 0 0 - /proc/sys/fs/binfmt_misc sunrpc 0 0 0 - /var/lib/nfs/rpc_pipefs
===========================================================================
なお、以下がORA-013034、ORA-27101の意味です。
Oracleユーザでoerrコマンドを実行すると、ORA-xxxxxエラーの意味を調べることができます。
$ oerr ora 01034
01034, 00000, "ORACLE not available"
// *Cause: Oracle was not started up. Possible causes include the following:
// - The SGA requires more space than was allocated for it.
// - The operating-system variable pointing to the instance is
// improperly defined.
// *Action: Refer to accompanying messages for possible causes and correct
// the problem mentioned in the other messages.
// If Oracle has been initialized, then on some operating systems,
// verify that Oracle was linked correctly. See the platform
// specific Oracle documentation.
$ oerr ora 27101
27101, 00000, "shared memory realm does not exist"
// *Cause: Unable to locate shared memory realm
// *Action: Verify that the realm is accessible
ramfsとtmpfsの違い
・ramfs
ramfs は Linux のディスクキャッシュ機構(ページキャッシュと dentry のキャッシュ)を動的にサイズが
変化する RAM ベースのファイルシステム
・tmpfs
tmpfs と呼ばれる ramfs の派生物は、{ファイルシステムに}サイズ制限を加える為とデータをスワップスペースに
出力可能にする為に作られました。一般ユーザに tmpfs マウントへの書き込みアクセスを許可できます。
参考:http://archive.linux.or.jp/JF/JFdocs/kernel-docs-2.6/filesystems/ramfs-rootfs-initramfs.txt.html