Comments
Description
Transcript
ODP.NET 11.1.0.7.20の新機能
Oracleホワイト・ペーパー 2009年9月 Oracle Data Provider for .NET 11.1.0.7.20の新機能 Oracleホワイト・ペーパー - Oracle Data Provider for .NET 11.1.0.7.20の新機能 はじめに.............................................................................................................................. 1 Oracle Streams Advanced Queuing ................................................................................... 2 ODP.NET Oracle Streams AQの機能 ............................................................................ 2 昇格可能なトランザクション ............................................................................................. 4 パフォーマンス ................................................................................................................... 5 アプリケーションのセルフチューニング ...................................................................... 5 データ取得の高速化とメモリ使用量の最適化 .............................................................. 6 コード・アクセス・セキュリティ ...................................................................................... 6 高可用性イベントの通知およびコールバック .................................................................... 7 プログラムによるデータベースの起動および停止 ............................................................ 7 まとめ ................................................................................................................................. 8 Oracleホワイト・ペーパー - Oracle Data Provider for .NET 11.1.0.7.20の新機能 はじめに Oracle Data Provider for .NET(ODP.NET)は、Oracleデータベース用のネイティブなADO.NETデー タ・アクセス・ドライバです。ODP.NET 11.1.0.7.20には、開発の容易性、アプリケーションのスケー ラビリティ、パフォーマンス、セキュリティ、管理性を向上させる新機能が導入されています。こ のリリースで公開されるOracleデータベースの独自機能は、.NETの開発者がより簡単に使用でき、 Oracleと.NET Frameworkの統合が向上します。導入された新機能は次のとおりです。 Oracle Streams Advanced Queuing(AQ) - AQはデータベース統合型のメッセージ・キュー イング機能です。ODP.NETでは、強固なメッセージング・アプリケーションの構築に必要な、 メッセージのエンキュー、デキュー、および通知などのAQ操作を、プログラムを介して使用で きます。データベース内のAQリソースは、Oracle Developer Tools for Visual Studioを使用して 管理できます。 昇格可能なトランザクション - 分散トランザクションの使用が避けられなくなるまでは使用を 行わないようにすることで、リソース使用量を最適化する機能です。ODP.NETトランザクショ ンは、1つ目のデータベース接続を使用してローカル・トランザクションとして開始されます。2 つ目のデータベース接続が加わると、ローカル・トランザクションが分散トランザクションに昇 格されます。 パフォーマンス:アプリケーションのセルフチューニング - 実行時の問合せ動作をサンプリン グした後、ステートメント・キャッシュ・サイズを動的にチューニングする機能です。この機能 拡張は、パフォーマンスの向上、ネットワーク使用量の低減、クライアントとサーバーのメモリ 使用量の節約を実現します。 パフォーマンス:データ取得の高速化とメモリ使用量の最適化 - OracleDataReaderによるデー タ取得とOracleDataAdapter.Fillのパフォーマンスが向上しました。また、フェッチ配列バッファ を再利用して、実行済みの文のデータが格納されるようになりました。この機能により代表的な アプリケーションで必要となるフェッチ配列バッファが減るため、クライアントのメモリ使用量 が減少します。 コード・アクセス・セキュリティ - このリリースのODP.NETにはOraclePermissionクラスと OraclePermissionAttributeクラスが加わったため、それぞれ強制コード・アクセス・セキュリティ と宣言コード・アクセス・セキュリティの適用が容易になりました。 1 Oracleホワイト・ペーパー - Oracle Data Provider for .NET 11.1.0.7.20の新機能 高可用性イベントの通知とコールバック - データベース、サービス、サービス・メンバー、ホ スト、またはインスタンスで障害が発生した場合や、これらが使用できなくなった場合は、 ODP.NETが通知を受信します。.NET開発者は、ODP.NETコールバックを登録して、これらのイ ベントのいずれかが発生したときにアプリケーションに通知してイベント・ハンドラを実行する ことができます。 プログラムによるデータベースの起動および停止 - データベース管理者権限を持つODP.NET ユーザーは、プログラムを使用してデータベース・インスタンスを起動または停止できます。 ODP.NET 11.1.0.7.20はOracle Database 9i Release 2(9.2)以降のデータベースに接続できます。 データベース・サーバーのプラットフォームは、Windows、Linux、UNIXなど、任意のものを使用で きます。ODP.NETは.NET Framework 2.0以降をサポートします。ODP.NETはOracle Technology Network(OTN)から無償でダウンロードできます。 http://www.oracle.com/technology/tech/windows/odpnet/ Oracle Streams Advanced Queuing Oracle Streams Advanced Queuingは、データベース統合型のメッセージ・キューイング機能です。AQ は通常、メッセージの管理とアプリケーション間の非同期通信に使用されます。たとえば、AQでは、 標準的な受注情報が検証アプリケーションにルーティングされた後、売上を記録するアプリケー ションにルーティングされます。その後、商品を発送するために、その受注情報は出荷部門に送信 されます。発送が完了したら、受注情報は経理部門にルーティングされ、請求処理が行われます。 AQと.NETを連携させて、この業務プロセス全体を処理できます。 キューは、送信者と受信者の間のメッセージ・リポジトリとして動作します。AQでは、メッセージ の保持、キュー間のメッセージの伝播、Oracle Net ServicesとHTTP(S)によるメッセージ転送に、 Oracleデータベースを活用しています。 AQにはデータベース・インフラストラクチャが使用されているため、永続性、高可用性、スケーラ ビリティ、スケジューリング機能、信頼性という操作上のあらゆるメリットが、キュー・データに 適用されます。AQは、データベースの標準機能であるリカバリ、再起動、セキュリティなどに対応 します。 ODP.NET Oracle Streams AQの機能 ODP.NET 11.1.0.7.20には、メッセージのエンキュー、メッセージのデキュー、キュー・メッセージ のリスニング、メッセージ通知をはじめとするAQの操作機能にアクセスできるAQアプリケーショ ン・プログラム・インタフェース(API)が導入されています。ODP.NET AQ APIを使用すると、Oracle データベースを使用する.NETメッセージング・アプリケーションの構築が容易になります。Oracle Developer Tools for Visual StudioでAQリソースを管理できるため、開発者はVisual Studioから離れなく てもAQを操作できます。 2 Oracleホワイト・ペーパー - Oracle Data Provider for .NET 11.1.0.7.20の新機能 ODP.NETのキューはOracleAQQueueオブジェクトで表現されます。通常のメッセ―ジ処理はユー ザー・キューで行われます。未処理または未取得のメッセージは例外キューで処理されます。単一 のメッセージまたはメッセージの配列をエンキューできます。 AQメッセージ自体を表現するのはOracleAQMessageオブジェクトです。このオブジェクトは、制御 情報とメッセージ・データで構成されます。メッセージには、XML、Raw(OracleBinaryまたはバイ ト配列)、ユーザー定義型のいずれかのデータ型を使用できます。 開発者は、多数のカスタマイズ可能なメッセージ・オプションを使用できます。メッセージの受信 者を指定して、キューのサブスクライバ・リストを上書きすることができます。メッセージに異な る優先順位を設定し、優先順位に基づいてデキュー処理をすることができます。開発者が定義した 設定時間が経過するまでメッセージをキュー上に保持してから期限切れにし、メッセージを例外 キューに移動させることができます。これらは、個々のキュー・メッセージの管理に使用できる多 数のオプションの一部です。 エンキュー・オプションは、OracleAQEnqueueOptionsクラスを介して設定します。たとえば、メッセー ジをディスク上に永続的にエンキューさせたり、メモリ内にバッファすることができます。ディス ク・ストレージには高可用性がありますが、メモリ・ストレージのほうがパフォーマンスが優れて います。 同様に、デキュー・オプションはOracleAQDequeueOptionsクラスを介して使用できます。このオブジェ クトを使用すると、一致条件を使用してメッセージを検索したり待機したりすることができます。 サブスクライバは、OracleAQQueueオブジェクトをリスニングして、関連のあるメッセージを検索し ます。または、OracleAQQueue.MessageAvailableイベントによる非同期通知を使用することもできま す。このイベントは、コンシューマの配列で構成されるOracleAQQueue.NotificationConsumersで使用 できるキュー・メッセージがあると、それを通知します。 3 Oracleホワイト・ペーパー - Oracle Data Provider for .NET 11.1.0.7.20の新機能 以下の表に、主要なODP.NET AQ APIの一部を示します。 表1:ODP.NET AQの機能と実装例 AQの機能 ODP.NETの例 メッセージの作成 OracleAQMessageオブジェクトを作成する。 単一メッセージのエンキュー OracleAQMessageメッセージ、OracleAQQueueキュー、OracleAQQueueのエ ンキュー・オプションを指定する。最後に、OracleAQQueue.Enqueueを呼び 出す。 複数メッセージのエンキュー OracleAQMessageメッセージ配列をOracleAQQueue.EnqueueArrayに指定する。 単一メッセージのデキュー OracleAQQueueのデキュー・オプションを指定し、OracleAQQueue.Dequeue を呼び出す。 複数メッセージのデキュー OracleAQQueue.DequeueArrayを呼び出す。 キュー上のメッセージの リスニング OracleAQQueue.Listenを呼び出す。複数のキューをリスニングするには、静 的なOracleAQQueue.Listenメソッドを使用する。 メッセージ通知 OracleAQQueue.MessageAvailableイベントとOracleAQQueue.Notification Consumersプロパティを使用する。 昇格可能なトランザクション 分散トランザクションの処理には、アプリケーション、トランザクション・コーディネータ、およ び複数のリソース・マネージャを連携させる必要があります。ローカル・トランザクションの場合 に必要なのは、1つのアプリケーションと1つのリソース・マネージャだけです。分散トランザクショ ンと比較すると、オーバーヘッドはローカル・トランザクションのほうがはるかに尐なく、アプリ ケーションのパフォーマンスとスケーラビリティを高めるには、ローカル・トランザクションのほ うが適しています。 設計時には、分散トランザクションが必要になる場合とローカル・トランザクションが必要になる 場合が明確でないことがあります。同じトランザクション・コードでも、実行時の状況によっては、 データベース接続を1つだけ必要とする場合(ローカル・トランザクション)があったり、複数のデー タベース接続を必要とする場合(分散トランザクション)があります。通常、開発者は、ローカル・ トランザクションを使用できることがあったとしても、すべての場合において分散トランザクショ ンを想定して設計する必要があります。 ODP.NETの昇格可能なトランザクションを使用すると、すべてのトランザクションをローカルに起 動することができます。トランザクションは、複数のリソース・マネージャが参加する場合にのみ、 分散トランザクションに昇格されます。昇格可能なトランザクションを使用すると、実行時のシス テム・リソースの最適化の程度が向上します。 この新機能では、最初にOracle Database 11g Release 1以降のデータベースに接続する必要がありま す。2つ目以降の接続では、他の任意のOracleリソースやバージョン、または他のベンダーのデータ ベースに接続できます。 昇格可能なトランザクションを有効化するために、ODP.NETのコードを変更する必要はありません。 Promotable Transaction属性の設定を"promotable"に設定する必要がありますが、デフォルトでこの値 に設定されます。中間層では、Oracle Services for Microsoft Transaction Server 11.1.0.7.20以降と.NET Framework 2.0以降を使用する必要があります。 4 Oracleホワイト・ペーパー - Oracle Data Provider for .NET 11.1.0.7.20の新機能 パフォーマンス ODP.NETには、データ・アクセス速度の大幅な向上とリソース使用量の大幅削減を実現するパフォー マンス拡張機能が導入されています。これらの拡張機能は、コードを変更しなくても使用できます。 つまり、プロバイダをアップグレードするだけで、ODP.NETのデータ・アクセスの高速化と効率化 を実現できます。拡張機能には、アプリケーションのセルフチューニング、データ取得の高速化、 およびメモリ使用量の最適化が含まれます。 アプリケーションのセルフチューニング ODP.NETでは、ステートメント・キャッシュをアプリケーションで動的にセルフチューニングする ことができます。ODP.NETが実行時の問合せ実行をサンプリングし、全体的なパフォーマンスが最 適化されるようにステートメント・キャッシュ・サイズを動的に変更します。頻繁に実行される文 がキャッシュされていない場合は、ステートメント・キャッシュ・サイズが動的に拡張されます。 メモリを使用しすぎているためにアプリケーションの全体的なパフォーマンスが低下している場合 は、ステートメント・キャッシュが動的に縮小されます。この機能により、パフォーマンスの向上、 ネットワーク使用量の低減、クライアントおよびサーバーのメモリ使用量の節約が実現される一方、 開発者の生産性は、これまでにステートメント・キャッシュ・サイズをチューニングしてこなかっ た場合は特に、向上します。 開発者は今後、ODP.NETのステートメント・キャッシュを手動で最適化する必要はありません。さ まざまなキャッシュ・サイズで実験し、キャッシュする文を決定し、時間が経過してアプリケーショ ンの動作が変化したらキャッシュ・サイズを変更する、というような作業は不要です。 ステートメント・キャッシュ操作自体によってODP.NETでは、頻繁に実行されるSQLおよびPL/SQL について、文の解析がキャッシュされます。解析された文はOracleの共有プールに保持されます。ク ライアント・カーソルはオープンしたままの状態であるため、サーバー・カーソルのルックアップ は必要ありません。また、文のメタデータはクライアント上に残ります。これらの改善により、SQL およびPL/SQLの実行速度が向上します。 ODP.NET 11.1.0.7.20より前のリリースでは、開発者が設計時にステートメント・キャッシュのサイ ズを設定していたため、もっとも最近に実行された文のうち、ユーザーが定義した数の文がキャッ シュされていました。時間が経過すると、もっとも過去に実行された文がキャッシュから削除され ました。 設計時にステートメント・キャッシュ・サイズを設定していたため、実行時のキャッシュ・サイズ を最適な状態に維持するのは困難でした。頻繁に実行される文の数は、時間の経過とともに変化す る可能性があり、1日の中で変化する場合もあれば、1年の間に変化することもあります。キャッ シュ・サイズが小さすぎると、不要な解析と検索が増えます。キャッシュ・サイズが大きすぎると、 メモリの使い過ぎになります。ODP.NETのアプリケーション・セルフチューニング機能により、こ れらの問題が解決され、ステートメント・キャッシュは自動的に管理されます。 アプリケーションのセルフチューニング機能は、Windowsレジストリでデフォルトで有効化されま す。セルフチューニングは、Self Tuning接続文字列属性、.NET構成ファイル(web.config、アプリケー ション構成ファイルなど)、Windowsレジストリを使用して設定できます。接続文字列属性を設定す ると、そのアプリケーション用の.NET構成ファイルの設定は無視されます。同様に、.NET構成ファ イルのセルフチューニング属性を設定すると、Windowsレジストリの設定は無視されます。 5 Oracleホワイト・ペーパー - Oracle Data Provider for .NET 11.1.0.7.20の新機能 データ取得の高速化とメモリ使用量の最適化 ODP.NETの実行時のパフォーマンスが内部的に最適化され、OracleDataReaderの使用によるデータ取 得、および、DataSetへの移入の速度が向上しました。この機能により、ODP.NETアプリケーション のパフォーマンスとスケーラビリティが向上します。 また、ODP.NETでは、連続して実行される1つ1つの文に新しいバッファを作成するのではなく、同 じフェッチ配列バッファを再利用します。このフェッチ配列バッファには、実行された文のデータ が格納されます。この機能により代表的なアプリケーションで必要となるフェッチ配列バッファが 減るため、クライアントのメモリ使用量が減尐します。 ODP.NETをアップグレードするだけで、データ取得パフォーマンスの向上とメモリ使用量の減尐を 確認できます。 コード・アクセス・セキュリティ 保護されたリソースや操作に.NETアセンブリがアクセスするのを制限するのがコード・アクセス・ セキュリティです。開発者はこの機能を使用して、システム・リソース権限およびコード・グルー プ・セキュリティ・ポリシーを管理できます。ODP.NETでは、OraclePermissionクラスとOracle PermissionAttributeクラスをそれぞれ使用して、強制セキュリティと宣言セキュリティの両方をクラ イアント・アプリケーションに設定できます。これらの新しいクラスを使用することにより、ODP. NETおよびOracleデータベースを使用したセキュアなコード・アクセス管理が容易になります。 ODP.NET 11.1.0.7.20では、コード・アクセス・セキュリティを使用することで、.NETアセンブリに よるOracleデータベースへのアクセスを十分に制限することができます。Oracleデータベースに接続 できるのは、OraclePermissionが付与されているアセンブリのみです。アセンブリにOraclePermission が付与されていない場合はセキュリティ例外が発生します。このルールは、コール・スタック内の すべてのアセンブリに適用されます。データベースにアクセスするには、それらすべてにOracle Permissionを付与しておく必要があります。 OraclePermissionを使用すると、データベース・アクセスを柔軟に制御できます。ODP.NETの開発者 は、特定の接続文字列属性と属性値に基づいてアクセス権を許可したり拒否することができます。 次の例を検討します。 OraclePermission.Add("Data Source=orcl;"," User Id=;Password=;", KeyRestrictionBehavior.AllowOnly); このコード例では、データソースが'orcl'に設定され、ユーザーIDとパスワードが任意の組み合わせ で、その他の接続文字列属性が設定されていない接続文字列に、接続権限を付与します。これ以外 の接続文字列の組合せで接続しようとすると、セキュリティ例外が発生します。 OraclePermissionクラスとOraclePermissionAttributeクラスはそれぞれSystem.Data.Common.DBData PermissionとDBDataPermissionAttrubuteから継承されるため、ODP.NETの開発者は標準の.NETコー ド・アクセス・セキュリティ機能をすべて使用できます。コード・アクセス・セキュリティを構成 するには、NET Framework Configurationツール(Mscorcfg.msc)を使用するか、アプリケーション構 成ファイル、web.config、security.config、またはWindowsレジストリ(または、これらすべて)を手 動で変更します。たとえば、DemandOraclePermission構成属性を変更して、OraclePermissionの要求 を有効化または無効化することができます。 6 Oracleホワイト・ペーパー - Oracle Data Provider for .NET 11.1.0.7.20の新機能 高可用性イベントの通知およびコールバック ODP.NET 10.2以降、.NETアプリケーションでFast Application Notification(FAN)イベントを使用で きるようになったため、ODP.NET接続をクラスタ内でロードバランシングしたり、データベース・ リソースに障害が発生した場合に高速接続フェイルオーバー(FCF)を起動することができます。FAN イベントは、サーバー・ホスト、サービス、サービス・メンバー、インスタンスおよびデータベー スのステータス変更に関する情報をODP.NETに提供します。この情報は、Oracle Real Application Clusters(RAC)を使用してリアルタイムに接続をロードバランシングする場合や、RACまたはOracle Data Guardに対する不正な接続を接続プールから削除するのに不可欠です。 FANイベントはODP.NETで内部的に管理されていたため、FANイベントに応答する独自のアプリ ケーション・ロジックを.NETの開発者が設計することはできませんでした。ODP.NET 11.1.0.7.20で は、FANイベントに対する独自の.NETコールバックを登録し、そのイベントに基づくイベント・ハ ンドラを実行することができます。この機能を使用すると、アプリケーション開発者は、データベー ス・コンポーネントの障害や追加に応じて.NETアプリケーションをより適切に管理できます。 高可用性イベントが発生すると、イベント・ハンドラでクライアントに返されたデータベース・イ ベント・データのコンシューム、および、操作が行われます。イベント・データには、イベント・ ソース、インスタンス名、サービス名、ホスト名、ソース・ステータスなどの情報が含まれます。 サーバー・リソースに障害が発生したり、サーバー・リソースが使用できなくなると、イベントが トリガーされます。サーバー・リソースには、ホスト、サービス・メンバー、インスタンス、デー タベースなどがあります。 この機能をプログラムで使用する手順は次のとおりです。 1. ODP.NET接続文字列のHA Events属性をtrueに設定します。 2. イベント・ハンドラ(HAEventHandler)をアプリケーションに定義します。 3. OracleConnection.HAEvent += new OracleHAEventHandler(HAEventHandler) によりコールバックをアプリケーションに登録します。 プログラムによるデータベースの起動および停止 データベース管理者権限を持つODP.NETユーザーは、プログラムを使用してデータベースを起動ま たは停止できるようになりました。この機能は、Oracleデータベースを管理するアプリケーションに 有効です。 データベースの起動または停止には、データベース管理者権限(SYSDBAまたはSYSOPER)が必要 です。この権限は、接続文字列属性DBA Privilegeに設定できます。OracleDatabaseクラスでは、デー タベース・インスタンスの起動または停止のみを目的とした特殊用途の接続が使用されます。この クラスには、データベースの起動または停止に使用するモードを制御できるメソッドが含まれてい ます。 7 Oracleホワイト・ペーパー - Oracle Data Provider for .NET 11.1.0.7.20の新機能 まとめ ODP.NET 11.1.0.7.20には、開発者の生産性、アプリケーションのパフォーマンス、スケーラビリティ、 およびセキュリティを向上させる多数の新機能が含まれています。.NETの開発者は、Oracleデータ ベースの独自機能であるOracle Streams Advanced Queuing、アプリケーションのセルフチューニング、 データ取得の高速化とメモリ管理の向上、高可用性イベントの通知とコールバック、プログラムに よるデータベースの起動および停止などの機能を使用できるようになりました。同時に、使用でき る.NET Frameworkの機能が増え、昇格可能なトランザクションと.NETコード・アクセス・セキュリ ティが使えるようになりました。.NETの開発者は、Oracle Databaseと.NET Frameworkの両方の優れた 機能を活用できます。 8 Oracle Data Provider for .NETの新機能 2009年9月 著者:Alex Keh Oracle Corporation World Headquarters 500 Oracle Parkway Redwood Shores,CA 94065 U.S.A. 海外からのお問い合わせ窓口: 電話:+1.650.506.7000 Copyright © 2009, Oracle and/or its affiliates.All rights reserved. 本文書は情報提供のみを目的として提供されており、ここに記載される内容は予告なく変更されることがあります。本文書は一 切間違いがないことを保証するものではなく、さらに、口述による明示または法律による黙示を問わず、特定の目的に対する商 品性もしくは適合性についての黙示的な保証を含み、いかなる他の保証や条件も提供するものではありません。オラクルは本文 書に関するいかなる法的責任も明確に否認し、本文書によって直接的または間接的に確立される契約義務はないものとします。 本文書はオラクルの書面による許可を前もって得ることなく、いかなる目的のためにも、電子または印刷を含むいかなる形式や 手段によっても再作成または送信することはできません。 Fax:+1.650.506.7200 oracle.com Oracleは米国Oracle Corporationおよびその子会社、関連会社の登録商標です。その他の名称はそれぞれの会社の商標です。