Oracle Database XEがミッションクリティカルに強いのかMySQLと比較して検証してみました。
Oracle Database XEがミッションクリティカルに強いのかMySQLと比較して検証してみました。
色々なブログや記事で、oracleのデータベースはミッションクリティカルに強いというのを良く目にしますが、実際のところどうなのか、oracleユーザーで動作しているプロセスを殺してどのように動くのか検証してみました。
oracleのプロセスの検証
下記がoracleのプロセス群です。
- xe_pmon_XE
- xe_psp0_XE
- xe_mman_XE
- xe_dbw0_XE
- xe_lgwr_XE
- xe_ckpt_XE
- xe_smon_XE
- xe_reco_XE
- xe_cjq0_XE
- xe_mmon_XE
- xe_mmnl_XE
- xe_d000_XE
- xe_s000_XE
- xe_s001_XE
- xe_s002_XE
- xe_s003_XE
- xe_qmnc_XE
- xe_q001_XE
- xe_q000_XE
xe_pmon_XEプロセスの検証
ps ax | grep xe_pmon_XE kill -9 5626
killコマンドでプロセスが終了。
その他のoracle権限で動作していたプロセスも数秒後終了しました。
PMONプロセスはユーザープロセスに障害が発生したときに、回復処理を行うプロセスのようです。
心強いプロセスです。
/etc/init.d/oracle-xe restartで動作し直しました。
xe_psp0_XEプロセスの検証
ps ax | grep xe_psp0_XE kill -9 6042
killコマンドでプロセスが終了。
その他のoracle権限で動作していたプロセスも終了しました。
/etc/init.d/oracle-xe restartで動作し直しました。
xe_mman_XEプロセスの検証
ps ax | grep xe_mman_XE kill -9 6046
killコマンドでプロセスが終了。
その他のoracle権限で動作していたプロセスも終了しました。
/etc/init.d/oracle-xe restartで動作し直しました。
xe_dbw0_XEプロセスの検証
ps ax | grep xe_dbw0_XE kill -9 6210
killコマンドでプロセスが終了。
その他のoracle権限で動作していたプロセスも終了しました。
/etc/init.d/oracle-xe restartで動作し直しました。
xe_lgwr_XEプロセスの検証
ps ax | grep xe_lgwr_XE kill -9 6220
killコマンドでプロセスが終了。
その他のoracle権限で動作していたプロセスも終了しました。
REDOログバッファで変更された内容を、REDOログファイルへ書き込むプロセスです。
/etc/init.d/oracle-xe restartで動作し直しました。
xe_ckpt_XEプロセスの検証
ps ax | grep xe_ckpt_XE kill -9 6461
killコマンドでプロセスが終了。
その他のoracle権限で動作していたプロセスも終了しました。
特定のタイミングで、データベースライターと制御ファイルを更新し、データベースの整合性を維持するプロセスです。
/etc/init.d/oracle-xe restartで動作し直しました。
xe_smon_XEプロセスの検証
ps ax | grep xe_smon_XE kill -9 6538
killコマンドでプロセスが終了。
その他のoracle権限で動作していたプロセスも終了しました。
SMONプロセスはデータベースの異常終了を検知し、データベースが起動したときに、回復処理を行うプロセスです。これも又心強いプロセスです。
/etc/init.d/oracle-xe restartで動作し直しました。
xe_reco_XEプロセスの検証
ps ax | grep xe_reco_XE kill -9 6626
killコマンドでプロセスが終了。
その他のoracle権限で動作していたプロセスも終了しました。
/etc/init.d/oracle-xe restartで動作し直しました。
xe_cjq0_XEプロセスの検証
ps ax | grep xe_cjq0_XE kill -9 6703
killコマンドでプロセスが終了。
数秒後違うPIDで復活!
xe_mmon_XEプロセスの検証
ps ax | grep xe_mmon_XE kill -9 6784
killコマンドでプロセスが終了。
数秒後違うPIDで復活!
xe_mmnl_XEプロセスの検証
ps ax | grep xe_mmnl_XE kill -9 6876
killコマンドでプロセスが終了。
数秒後違うPIDで復活!
xe_qmnc_XEプロセスの検証
ps ax | grep xe_qmnc_XE kill -9 6876
killコマンドでプロセスが終了。
様子が変わらず。
/etc/init.d/oracle-xe restartで動作し直しました。
xe_d000_XEプロセスの検証
ps ax | grep xe_d000_XE ps ax | grep xe_s000_XE ps ax | grep xe_s001_XE ps ax | grep xe_s002_XE ps ax | grep xe_s003_XE ps ax | grep xe_q000_XE ps ax | grep xe_q001_XE kill -9 6966 kill -9 6968 kill -9 6970 kill -9 6972 kill -9 6974
killコマンドでプロセスが終了。
数秒後違うPIDで復活!おお!
プロセスが万が一強制終了しても、強制終了したプロセスを復活させる機能があるなんて!凄い!
MySQLのプロセスの検証
mysql - 5.0.45-7の場合下記2つのプロセスが起動している。
- /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --log-err…
- /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysql…
/usr/libexec/mysqldのプロセスを終了させると、先程のoracleのプロセスのようにすぐ復活した。
しかし、/bin/sh /usr/bin/mysqld_safeのプロセスを先に終了させてから、
/usr/libexec/mysqldのプロセスを終了させると、MySQLのプロセスは完全に終了してしまいました。
おそらく、/bin/sh /usr/bin/mysqld_safeのプロセスが/usr/libexec/mysqldのプロセスを監視しているのでしょう。
まとめ
上記のような結果になりましたが、oracleのプロセスは複数のプロセス同士が監視をし合うという安全な作りになっているが、MySQLは2つしかプロセスが存在しないのでoracleに比べると脆いような印象を受けました!
[PR]Spreeの情報を集めています。
ECを持ちたい方、仕事でECを使いたい方向けのコミュニティサイトです。
このサイトでは世界で最も使用されているECの1つであるSpreeについての情報を提供しています。
http://spreecommerce.jp/