Oracle Databaseのスマートな開発/運用の鉄則
第4回 「知られざるアップグレードの真実 ~結局は最新版を使うのがイチバン得。今や先進ユーザーは機械的な更新体制に~」
Oracle Databaseを使うユーザーに必ず訪れるのが、新バージョンへのアップグレードだ。その事前準備の不足からトラブルに遭遇するケースや、アップグレードに役立つ新機能のことを知らずに、手間やコストの面で損をしているユーザーが少なくない。今回は、ユーザー・サポート部門のスペシャリストらが、アップグレードに際してよくあるトラブルや、先進ユーザーが取り入れるアップグレード体制などを紹介する(編集部)。
日本オラクル
カスタマーサービス統括
データベーステクノロジーサポート本部
ソリューションサポート部
性能技術グループ
シニアマネジャー
矢野将史
日本オラクル
カスタマーサービス統括
データベーステクノロジーサポート本部
テクノロジースタック部
データ統合グループ
プリンシパルテクニカルサポートエンジニア
山本義正
日本オラクル
カスタマーサービス統括
データベーステクノロジーサポート本部
ソリューションサポート部
性能技術グループ
シニアテクニカルサポートエンジニア
原野谷欣正
「今日では、旧バージョンから新バージョンにアップグレードする作業中に生じるトラブルは非常に少なくなった。我々への問い合わせで多いのは、事前準備の不足によってアップグレード後に生じたトラブルに関するもの」――日ごろアップグレードに関するユーザーからの問い合わせに対応している矢野氏はこう語る。
そうしたトラブルの典型例の1つが、新バージョンで既存アプリケーションを動かした際に起こる「共有メモリーの不足」だ。Oracle Databaseでは、新バージョンがリリースされる度に新機能が多数実装されており、これらの機能に伴って内部的なメモリーの利用のされ方も変化していることから、アップグレードした際、サイジングの問題から既存アプリケーションでメモリ不足が起きることがある。特にパラメータ設定を細かく調整してチューニングしていたケースでサイジングのミスマッチが起きることが多いので要注意だ。Oracle Database 11g では、新機能として自動メモリ管理機能が導入されているため、この機能を活用して十分なテストを事前に実施することをお勧めする。
■複数バージョンの混在環境では下位バージョンによる制約に注意
複数のOracle Databaseを連携させて使っている環境では、アップグレードに際してより一層の注意が必要になる。よくあるトラブルを2つ紹介しよう。
1つは「バージョンの不一致」に伴うトラブルだ。Oracle DatabaseのDatabase Link機能を使うと、SQL文を書くユーザーの側には意識させずに、複数のOracle Databaseを連携して動作させられる。異なるバージョン間の連携についても、パッチのレベルで連携可能な範囲の情報が公開されているが、どうしても下位のバージョンに引っ張られて不具合や制限が生じるケースが少なくない。
「よくお問い合わせをいただくのは、複数のOracle Databaseを使用している環境で、『一部だけアップグレードして、ほかは様子を見よう』という判断から、一部のみアップグレードしてトラブルに見舞われるケース。それによって生じる対応コストや時間のロス、さらに事象回避のため機能を一部制限した形でのご利用に至ることもあり、非常に悔しい思いを覚えることも少なくない」(山本氏)。
また、サーバ側だけでなく、サーバ側/クライアント側のバージョンの不一致でも問題が起きることがあるという。
【Oracle Client / Server Interoperability Support】オラクルサーバーの異なるバージョンの間の互換性サポートの情報
■システムごとの文字コードは早期に確認。コードの不一致が致命傷になることも
もう1つ、見過ごされがちであり、顕在化したときには非常に厄介なのが、「WindowsからSolarisへ」といったプラットフォーム移行を伴うアップグレードにおける「文字コードの不一致」にまつわるトラブルだ。
「例えば、WindowsはSJIS、SolarisはEUCや UTF8といった具合に、プラットフォームによってデフォルトの文字コード体系は異なる。この点を考慮せず、同じ文字コード体系のつもりで連携させると、例えばマルチバイト文字1文字当たりのバイト長が異なるため、文字列の比較に関連する問題や、クライアント側での文字列表示などで文字化けなどの事象が生じる」(山本氏)。
この問題はデータを取得した側で顕在化することが多いが、文字コード体系はデータベースを含むシステム全体にかかわる問題であるため、対処が難しい。しかも、プロジェクト終盤で顕在化すると、対処の時間がとれず、手の打ちようがなくなるケースがあるので厄介だ。先のバージョンの不一致の問題と併せて、複数のOracle Databaseを使用している環境では十分な調査/検証作業を行ってほしい。
【セミナー資料】Oracle文字化け対策 Windows 7もバッチリ!
Windows 7/Vista で扱われる文字コード「JIS2004」を含め、Oracle Database で扱える文字コードや文字コード変換の仕組み、文字化けが発生する原因と対処方法について易しく解説します。■新バージョンほどトラブル防止の機能が充実。それを知らずに損をすることも
せっかく新バージョンにアップグレードしたのに、その機能を活用していないがためにトラブル対処が遅れたり、無用の手間をかけている場合もある。その典型例が、稼働情報の自動収集機能を知らないケースだ。
「Oracle Database 10gから、稼働情報を自動収集して1週間分保持するようになった。この情報を使えば、後から稼働状況を調べて問題分析が行えるのだが、旧バージョンから移行したお客様の中には、この機能のことを知らず、1週間以上経過してから『ログを取得していなかったが、何とかならないか』とお問い合わせをいただくことがある」(原野谷氏)という。
自動収集された稼働情報の中には、個々のセッション情報まで含まれており、これに対してオプションの「Oracle Diagnostics Pack」を使うことで、より詳細かつスピーディに問題の原因調査を行える。
【Oracle DB 11g R2 新機能】ハードウェア資産の有効活用によりパフォーマンスが大幅に向上しました!
【Oracle DB 11g R2 新機能】柔軟なリソース管理により統合/共存環境を構築しやすくなりました!
【Oracle DB 11g R2 新機能】効率的な監査ログメンテナンスにより法令順守対応コストを削減できました!
■強化されたデータベース・リプレイ機能でより確実な事前検証が可能に
また、「パフォーマンス」に関する問い合わせで多いものの中に、「旧バージョンでは十分な性能が出ていたSQL文が、新バージョンで遅くなった」というのがある。その原因は、統計情報を適切に収集していなかったためなど、さまざまだが、事前に十分な検証作業を行うことで問題の発生は未然に抑えられる。そうした検証作業で有効なのが、バージョンアップを経るごとに強化されている「データベース・リプレイ」機能だ。
「データベース・リプレイ機能を使うと、旧バージョンで記録したSQLワークロードを、新バージョン上で"リプレイ(再現)"することができる。単なるシミュレーションではなく、文字どおり実際に再現するので、確実な検証作業が行える。この機能を使い、新バージョン上での既存アプリケーションの動作を事前に確認できる」(原野谷氏)。
データベース・リプレイ機能で取得したレポートは、「Oracle Real Appication Testing(RAT)」によって詳細に分析/検証する。「SQLパフォーマンス・アナライザ」を用いてSQL文のパフォーマンス分析を行い、新バージョンで性能が低下するおそれのあるSQL文を事前に見つけることが可能だ。また、Oracle DatabaseやOSのバージョンアップ、シングル・インスタンスからReal Application Cluster(RAC)によるクラスタ構成へといった構成変更、ハードウェア環境の変更まで含めたリプレイと検証まで行える。
Oracle Databaseは、新しいバージョンになればなるほど、何か問題が起きてもより迅速かつ低コストで原因究明や対処ができるように工夫されている。アップグレードの際には、新バージョンで追加された機能、強化された機能を事前に確認し、それらをうまく活用する準備も整えておきたい。
【技術資料】Oracle Database 11g Real Application Testing データ・シート(概要, 機能, メリット)
Real Application Testing には、Database Relay と SQL Performance Analyzer(SPA)という2つの重要な独自機能があります。この2つの機能の組合せによって、テスト・システム上で本番環境における実際のワークロードを使用して、変更の影響を評価できる包括的で柔軟性のあるソリューションが提供されます。■サポート情報は十分に活用すべし
新バージョンの機能を知らずに損をしているユーザーがいる一方で、すでに公開されているサポート情報を知らずにトラブルに見舞われるユーザーもいる。
「有償のサポート・サービスを契約しているユーザーは、My Oracle Support から英語の技術情報(Notes)および日本語の技術情報(Krown)を参照することが可能だが、そこで公開されている情報を知らずに問題に遭遇してしまうお客様も少なくない。アップグレードや新機能に関する技術情報も多数公開されているため、是非ともアップグレード時の準備の際に有効活用して欲しい。我々はサポート部門としてお客様のシステムで発生した問題の解決に取り組んでいるが、現在ではお客様のシステムで問題を発生させない(プリベンティブ)ための情報提供やサービスの充実にチャレンジしている。」(矢野氏)。
オラクルでは、グローバルのサポート情報を集約したサービスとして「My Oracle Support(MOS)」を用意し、サポート契約を締結したユーザーに提供している。同サービスには数十万の技術文書が用意されており、日々新しい文書が公開されていて、この中にはアップグレードに関するものも少なくない。
またオラクルでは、アップグレードをより円滑に行えるよう支援すべく、「Upgrade Companion」という技術資料の提供を行っている。さらに、My Oracle Supportの機能の1つである「Oracle Configuration Manager(OCM)」を使えば、各ユーザーのOracle Databaseの構成情報をオラクル(MOS)/ユーザー間で共有し、万が一のときのサポート対応に役立てられる。加えて今後は、OCMの情報を利用してアップグレードの計画やパッチの計画を的確にサポートするための機能もさらに充実していく予定だ。
なお、国内ユーザーに対しては、日本語によるサポート情報サービスとして「KROWN」が契約ユーザーに提供されている。KROWNでは、Upgrade Companionが日本語化されて公開されているほか、日本語での全文検索、テーマごとのディレクトリ検索(Krown Directory Service)などが利用できる。Krown Directory Serviceでは、アップグレードに関する情報が一つのディレクトリに整理されている。問題を未然に防ぐためにも、アップグレードの計画段階で確認することをお勧めしたい。
検索できる情報は一般公開文書のみで限定的です。サポート契約ユーザーはMy Oracle Supportからより多くの情報を参照することが可能です。【日本オラクル採用情報】
データベースサポート部門では、技術力を飛躍的に向上したい意志を持ち、ともにプリベンティブサポートの推進に取り組んでくれる方を募集しています。
http://recruiting.oracle.co.jp/HR/career/
https://career.saiyo-dr.jp/oracle-career/Entry/select_job.do?from=bunrui&to=job&bunruiId=27
■先進ユーザーは機械的なアップグレード体制に移行
ユーザーの側でも、アップグレード円滑化への意識は高まっている。
「お客様の中には、アップグレードの効率化も視野に入れ、管理を一元化しているケースもある。各バージョンのOracle Databaseに当てるバッチレベル、バージョンをすべて揃え、それらを一斉かつ計画的にアップグレードしていくよう管理している」(山本氏)。
さらに先進的なユーザーは、アップグレードのタイミングを自社の都合で決めるのではなく、オラクルがパッチを出すタイミングに合わせて機械的に上げていく体制を整えている。無論、これを実現する体制の構築は簡単なことではないが、一度体制が出来上がれば、あとはオラクルの計画に合わせてアップグレードしていくことで、トラブルを最小化し、新機能の利用による各種のコスト・メリットを早期に享受できる。結局は、それが一番得だという判断だ。
「今は問題が起きていないから」とアップグレードに消極的な向きもあるが、何か問題が起きたときには、取り返しの付かないことになるケースは少なくない。それに、システムを大幅にアップグレードしようとすれば、その分、大きな問題が起きる可能性が高まる。こまめで計画的なアップグレードこそが、システム安定運用の鍵なのだ。
オラクルエンジニア通信:「Oracle アップグレード カテゴリ」
Oracle Databaseのアップグレードに関する、技術資料があります。
(第5回に続く)
