目 的 : 老朽化して負荷対応のきびしくなったOracle8DBをOracle10iへ移行しレスポンスの改善を図る。
納入先 : 株式会社アイデム 武蔵野MDセンター
移行先 : HP Integrityサーバー, RedhatEnterpriseLinux4, Oracle10g
概 要 :
1997年から開発を開始し1998年秋から運用テスト、1999年に稼働したかなり大がかりなシステムでした。
求人広告チラシの受注管理と掲載情報の制作システム引き渡しを行う為のシステムで、フロントエンドはOracleFormsを使用して開発、DBにOracle8.0.3を使用しました。
運用当初は端末台数も約120台程度で関東、関西の拠点2カ所にサーバーを設置して各エリアの40~60営業所からの入力をダイヤルアップで処理していました。当初はISDNの回線速度の問題もあり、サーバー負荷もほとんどなく、DBのメンテナンスを定期的に行っていれば特に問題ありませんでした。
時は移り端末台数も300を超え、各拠点が固定回線を使用するようになって負荷もどんどん上がり、当初デュアルCPUで動かしていたサーバーもクァッドに増設、メモリも倍にしたのですが、2005年頃にはほぼパンク状態となり、最大負荷時には4つのCPUが100%をふってしまうような状態になりました。
最大負荷時のトランザクションは1時間に約40,000も発生し、サーバー能力の根本的な改善が必要となりました。
すでにOralceのバージョンも10gになっており、Linuxもかなり成熟した状況だったため、思い切ってハードウエア、OS両方のリニューアルを提案しました。当初OSプラットフォームの変更ということで、Windowsしか操作経験のない管理者の方達からは難色が示されましたが、日本HP様と相談して約1ヶ月のテスト環境貸し出しをしていただき、管理者の方達と動作検証を行いました。
東京市ヶ谷にある日本HPのショールームには、開発者やこういったユーザー向けのサーバー貸し出しと作業スペースを貸し出すサービスを行っている場所があります。
HPのIntegrityサーバーはCPUにItaniumを使用した超ハイエンドなサーバーです。当時クァッドで動かしていたProliantサーバーがPentiumProだったことを考えると処理能力は60倍以上と見積もられました。このサーバーにRHLinuxとOracle 10gをインストールして1ヶ月の稼働テストを市ヶ谷に通って行いました。
インストールや初期設定などはLinuxの為CUIで行う必要があった為、全て私一人で行い、ブラウザによる管理画面起ち上げ以降は操作に慣れていただくため管理者の方と一緒に作業を行いました。ストアドプロシージャーなどサーバーサイドに置くプログラムが少なかったこともあり、動作には何の問題もなくパフォーマンスにもかなり期待できることが解り、本導入が決定しました。
ハード、ソフトの総入れ替えであり、業務の要となるシステムだった為、システムが休止する盆休みの5日間をいただきリニューアル作業を行いました。設置インストールに2日間、設定調整に2日間、テストに1日という日程で新システム運用開始から1週間は立ち会いというスケジュール。
なによりも驚いたのは期待以上のパフォーマンスを見せてくれたことでした。Itaniumのデュアルプロセッサでメモリ8GBだったのですが、最大負荷時のCPU負荷がわずか16%、体感的には今まで入力から確認画面に移るトランザクション処理に2秒かかっていたところが一瞬で終わってしまったことです。デバッグ用に作ったトランザクション処理1件ごとにダイアログを表示させるモジュールを使ってみたところ、ダイアログを確認できないくらいの早さで処理が終了していました。
Oracle8から10gというのは全く別物というくらい中身も変わっていましたし、OSプラットフォーム変更ということもあって私自身かなり勉強させてもらいました。逆に、10gに変更してインデックスの不具合やプログラム上の潜在バグなども発見することができました。
Oracleは確かに高価な製品ですが、その価格に値する機能を提供してくれます。
オープンソースでDB設計をする際にもOracleアーキテクチャーの考え方はいろいろと参考になります。Oracleの宣伝をするつもりは毛頭ありませんが、オープンソースで開発される方も勉強しておいて損のないDBエンジンであることは間違いないでしょう。