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/

Oracle Database XEとMySQLのプロセスのメモリ使用量を比較しました。

Oracle Database XEとMySQLのプロセスのメモリ使用量を比較しました。

Oracle Database XEのプロセスを表示。

ps aux | grep oracle

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
oracle    2934  0.0  0.1  21516  5820 ?        Ss   18:59   0:00 /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/tnslsnr LISTENER -inherit
oracle    2939  0.0  0.2 869928 10152 ?        Ss   18:59   0:00 xe_pmon_XE
oracle    2941  0.0  0.2 869320  8732 ?        Ss   18:59   0:00 xe_psp0_XE
oracle    2943  0.0  0.6 869320 24768 ?        Ss   18:59   0:00 xe_mman_XE
oracle    2945  0.0  0.5 871388 21024 ?        Ss   18:59   0:00 xe_dbw0_XE
oracle    2947  0.0  0.6 884868 28432 ?        Ss   18:59   0:00 xe_lgwr_XE
oracle    2949  0.0  0.3 869328 14500 ?        Ss   18:59   0:00 xe_ckpt_XE
oracle    2951  0.0  1.2 870876 49932 ?        Ss   18:59   0:00 xe_smon_XE
oracle    2953  0.0  0.3 869320 14240 ?        Ss   18:59   0:00 xe_reco_XE
oracle    2955  0.0  0.5 870924 21032 ?        Ss   18:59   0:00 xe_cjq0_XE
oracle    2957  0.0  1.0 872120 43708 ?        Ss   18:59   0:00 xe_mmon_XE
oracle    2959  0.0  0.3 869316 13684 ?        Ss   18:59   0:00 xe_mmnl_XE
oracle    2961  0.0  0.2 869980 10264 ?        Ss   18:59   0:00 xe_d000_XE
oracle    2963  0.0  1.6 874636 66564 ?        Ss   18:59   0:01 xe_s000_XE
oracle    2965  0.0  0.3 869928 13192 ?        Ss   18:59   0:00 xe_s001_XE
oracle    2967  0.0  0.3 869928 12940 ?        Ss   18:59   0:00 xe_s002_XE
oracle    2969  0.0  0.2 869928  9924 ?        Ss   18:59   0:00 xe_s003_XE
oracle    2973  0.0  0.2 869316  9892 ?        Ss   18:59   0:00 xe_qmnc_XE
oracle    2982  0.0  0.2 869316 10976 ?        Ss   18:59   0:00 xe_q000_XE
oracle    2986  0.0  0.2 869316  9232 ?        Ss   19:00   0:00 xe_q001_XE

次にMySQLのプロセスを表示。

ps aux | grep mysql

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      4898  0.0  0.0   5420  1120 pts/1    S    22:18   0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid
mysql     4958  0.0  0.4 126048 19076 pts/1    Sl   22:18   0:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --socket=/var/lib/mysql/mysql.sock

物理メモリの占有率(%MEM)、プロセスが使用する仮想メモリ量(VSZ)、プロセスが使用する物理メモリ量(RSS)を合計するとMySQLの方がメモリ使用量が少ない事がわかりました。

しかし、Oracle Database XEには出来て、MySQLには出来ない事等が色々あると思うので、これはこれで良いのかなと思います。

http://www.tripodworks.co.jp/jp/doc/ITseminar20080609.pdf

Oracle Databaseはミッションクリティカルにはかなり強いデータベースなんですね。
結局は”適材適所”ですね!


参考サイト
http://at-aka.blogspot.com/2006/07/linux.html



[PR]Spreeの情報を集めています。

ECを持ちたい方、仕事でECを使いたい方向けのコミュニティサイトです。
このサイトでは世界で最も使用されているECの1つであるSpreeについての情報を提供しています。
http://spreecommerce.jp/

SEOツールを開発しようと思ったけど、既出でした。。。

キーワード毎に時系列で順位を見る事が出来るSEOツールが無いと思ってたので、作ろうと思いました。

まず初めに

まず初めにER図を書いてみました。



ER図作成後、http://seopro.jp/grc/の機能を見て、構築を止めてしまいました(笑)

MySQLWorkbenchを初めて使ってみたのですが、マニュアルを読まずにここまで綺麗に作ることが出来てびっくりしました。
Excelで作ったのとは大違いです。

テーブル名の命名等は、セオリーを知らないので変な命名だと思います。
おかしいところツッコミどうぞよろしくお願いします!

追記

投稿慣れしていないので、文章を組み立てるのが難しいです。。。



[PR]Spreeの情報を集めています。

ECを持ちたい方、仕事でECを使いたい方向けのコミュニティサイトです。
このサイトでは世界で最も使用されているECの1つであるSpreeについての情報を提供しています。
http://spreecommerce.jp/