【Oracle Open World 2010レポート】
トム・カイト キーノート
オラクルデータベースアプリケーション開発 最新情報 第2回
先日開催されたOracle OpenWorld 2010のキーノートから、データベースエキスパートのトム・カイトによる、オラクルデータベース開発の最新情報をお届けしよう。今回は、.NETやPHP/Javaなどに対するサポート機能のほか、稼働中のアプリケーションのアップグレードを可能にする「Edition Based Redefinition」を紹介する。
■.NET環境との連係機能が強化された「ODP.NET」
「Oracle Data Provider for .NET(ODP.NET)」の新機能を簡単に紹介しよう。ODP.NETはVisual Studio 2010等のMicrosoft .NET環境からOracle Databaseにネイティブ接続するために無償提供されているミドルウェアで、Oracle Databaseに備わる高度な機能や能力をフルに引き出すのが特徴である。
最新のODP.NETは検索結果をクライアント側にキャッシュする「Client Result Cache」を備えており、データ内容に変更があると自動的にキャッシュが最新の内容に更新されるほか、LOBのプリフェッチ機能も追加された。「Advanced Queuing(AQ)」とのネイティブインタフェースも提供されており、Oracle Databaseに内蔵されたメッセージキューに.NETアプリケーションからアクセス可能になっている。

Oracle Performance Analyzer
またVisual Studio向けのパフォーマンス解析ツール「Oracle Performance Analyzer」が新たに提供されたことで、これまではOracle Enterprise Managerでしか利用できなかったSQL Tuning AdvisorやLoad Based Tuning等のパフォーマンスチューニングツールをVisual Studio上で直接呼び出せるようになった。
さらに最新のODP.NETでは、クライアント側のドライバコードでSQL文をモニタリングし、繰り返し実行されるSQL文を自動的にキャッシュする「Self-Tuning Performance」機能が搭載されている。
■PHP/Ruby/Python/Javaのサポートが充実
PHP、Ruby、Pythonといったオープンソースコミュニティに対しても、オラクルは積極的な貢献を行っている。Python 2.7、PHP 5.3、Ruby on Rails 3といった最新バージョン向けのOracle Database用ドライバソフトウェアを提供しており、たとえば PHP OCI8 1.4拡張では「Edition Based Redefinition」のネイティブサポートにも対応した。
またODP.NETに関連して説明した「Client Result Cache」については、PHP、Ruby、Python版の各ドライバでもサポートされており、Oracle Database側でのデータ更新時にもキャッシュの整合性が確保される仕組みだ。加えて、サーバー側でもキャッシングを行う「SQL Result Set Cache」もこれら3言語で利用することができる。
つまり、いずれかのクライアントが実行したクエリ結果があまり更新されない内容のものであれば、それがOracle DatabaseのSGA(システムグローバルエリア)上にキャッシュされるというわけだ。そのため、他のクライアントから同じクエリが実行されると、キャッシュ内容が返される。また同様のことをPL/SQL関数に対して行う「PL/SQL Function Cache」もサポートされた。
一方、Java向けの最新機能としては「Universal Connection Pool」が注目だ。これはあらゆるJDBCドライバに対して使える汎用のコネクションプールで、Fast Connection Failover等のOracle RAC(Oracle Real Application Clusters)の高可用性機能をサポートするほか、XAリソースのコネクションプーリングに対応する。さらに暗号化や圧縮をサポートするLOB「Secure File LOB」のアクセスでは、ネットワークやサーバー、クライアントの各所でのバッファリングの重複が解消されてパフォーマンスが大幅に改善している。

Universal Connection Pool
■オンラインアップグレードを可能にする「Edition Based Redefinition」
最後に、Oracle Databaseに追加されたPL/SQL関連の新機能「Edition Based Redefinition」について触れておこう。これはOracle Database 11g R2で追加された新機能の中でも目玉となるもの。要するに、アプリケーションに含まれるPL/SQLコードやビューなどのデータベースオブジェクトについて、複数のエディション(版)を同時にOracle Database上で保持できる機能だ。これを活用することで、アプリケーションを継続稼働させたままアップグレードする「Online Application Upgrade」が可能になる。
アプリケーションアップグレードの具体的な手順は次のとおり。まず、(1)新しいエディションのデータベースオブジェクトを事前にコンパイルしておく。続いて、(2)新しいエディションでアプリケーションのデプロイとテストを実施。(3)すでに接続済みのユーザーは旧エディションのアプリケーションに引き続きアクセスしたまま、(4)新規ユーザーは新しいエディションへ誘導する。こうした手順で、スムーズなアプリケーションアップグレードを実現できる仕組みだ。

Online Application Upgrade
- オラクルデータベースアプリケーション開発 最新情報 第1回
- オラクルデータベースアプリケーション開発 最新情報 第2回
- トム・カイトが選ぶ、「Oracle Database 11g Release 2に関する10の重要なこと」
(Top 10 things about Oracle Database 11g Release 2)
