このリリースの『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』の変更内容
ここでは、次の内容について説明します。
Oracle Database Advanced Queuingリリース20cの変更内容
新機能
このリリースの新機能は次のとおりです。
-
Advanced Queuing: Transactional Event Queues対応のKafka Javaクライアント
Transactional Event Queues (TEQ)対応のKafka Javaクライアントにより、KafkaアプリケーションとOracle Databaseの互換性が有効になります。これにより、KafkaアプリケーションのTEQへの移行が簡単になります。
Oracle Database 20c以降、Kafka Java APIはOracle Databaseサーバーに接続して、メッセージング・プラットフォームとしてTransactional Event Queues (TEQ)を使用できます。開発者は、Kafkaを使用する既存のJavaアプリケーションをOracle Databaseに移行できます。クライアント側ライブラリを使用すると、KafkaアプリケーションはKafkaクラスタのかわりにOracle Databaseデータベースに接続して、透過的にTEQのメッセージング・プラットフォームを使用できるようになります。Kafkaの相互運用性は、2つのメッセージング・システムの間でメッセージを移動するようにKafka JMSコネクタを構成することでサポートされます。
詳細は、次の章を参照してください。
-
Advanced Queuing: Transactional Event QueuesのJMSペイロードに対するPL/SQLエンキューおよびデキューのサポート
PL/SQL APIでは、Transactional Event QueuesのJava Message Service (JMS)ペイロードに対してエンキュー操作とデキュー操作を実行できるようになりました。同様に、PL/SQL配列APIがTransactional Event QueuesのJMSユーザーに公開されています。JMSでの異種メッセージのサポート以降、デキューでは、5つのJMSメッセージ・タイプのうち1つを取得しますが、次に受信されるメッセージがどのタイプかを予測することはできません。そのため、PL/SQLの型の不一致でアプリケーション・エラーが発生することがあります。アプリケーションでは、常に汎用型のAQ$_JMS_MESSAGEを使用してTransactional Event Queuesからデキューするとをお薦めします。PL/SQL管理もサポートされています。
詳細は、「Transactional Event Queuesとメッセージのエンキュー/デキュー」を参照してください。
-
Advanced Queuing: Transactional Event QueuesのJMS以外のペイロードに対するPL/SQLエンキューおよびデキューのサポート
スループットを向上させ、オーバーヘッドおよび待ち時間を削減するために、エンキューおよびデキューは、メッセージ・キャッシュ、ルール・エンジン、および可能な場合はバックグラウンド処理を使用するように最適化されています。
詳細は、「Transactional Event Queuesとメッセージのエンキュー/デキュー」を参照してください。
-
Advanced Queuing: パフォーマンスとスケーラビリティのためのTransactional Event Queues
Oracle Database 20cには、パーティション化されたメッセージ・キューのTransactional Event Queues (TEQ)が導入されています。これは、メッセージング、ストリーミング、ダイレクト・メッセージ、および発行/サブスクライブの利点を組み合せたものです。TEQは、それぞれがキュー表を保持します。この表は複数のイベント・ストリームにパーティション化されていて、イベントのメッセージングとストリーミングのスループットを向上するために複数のRACノードに分散されています。
詳細については、「Oracle Transactional Event QueuesおよびAdvanced Queuingのパフォーマンスとスケーラビリティ」を参照してください。
-
Advanced Queuing: Transactional Event Queuesのメタデータとスキーマの単純化
Oracle Database 20cには、パーティション化されたメッセージ・キューのTransactional Event Queues (TEQ)が導入されています。これは、メッセージング、ストリーミング、ダイレクト・メッセージ、および発行/サブスクライブの利点を組み合せたものです。TEQは、Oracle Databaseの規模で動作します。TEQは、トランザクション・イベント・ストリーミングを提供し、オンプレミスとクラウドの両方のOracle RACデータベース(2ノードから8ノード)で1日当たり数十億から数千億のメッセージ規模のデータベースで実行します。TEQにはKafkaクライアントの互換性があるため、KafkaプロデューサとコンシューマはKafkaブローカのかわりにOracle DatabaseのTEQを使用できます。
-
メッセージ保存とシーク可能なサブスクライバのサポート
Oracle Database 20c以降、AQにはシャード・キューのメッセージ保存に関するサポートが追加されました。ユーザーは、サブスクライバがメッセージを使用した後でも、メッセージを保存できる期間を指定できます。保存時間は、ユーザーによって秒単位で指定されます。これは、
0
からINIFINITE
まで可能です。保存しないと、メッセージは、シャード・キューにおいてすべてのサブスクライバによってデキューされた場合には、キューイング・システムから完全に削除されます。サブスクライバがキューから使用するための一般的な方法は、デキュー操作の使用です。この操作では、メッセージ・キューへのオフセットのシークがサポートされるようになりました。多くのキューイング・アプリケーションでは、サブスクライバは、その作成前にエンキューされたメッセージを使用する必要があります。サブスクライバのこのシーク機能を使用すると、アプリケーションで、サブスクライバ作成の前にエンキューされたメッセージに対して、デキュー・ポイントを再配置できます。これにより、アプリケーションに柔軟性がもたらされ、メッセージのプロデューサとコンシューマとの間の通信が真に非同期になります。
詳細は、「Transactional Event Queuesとメッセージ保存」および「Transactional Event Queuesとシーク可能なサブスクライバ」を参照してください。
-
アドバンスト・キューイングでのJSONデータ型のサポート
Oracle Database 20c以降では、Advanced QueuingもJSONデータ型をサポートしています。クラシック・キューのキュー表作成の間、およびシャード・キューのキュー作成の間に、RAW/ADTペイロード型に加えて、JSONペイロード型も指定できます。ユーザーは、埋込み要素JSONを単純なADTとともに指定することもできます。
DBMS_AQ
、create_queue_table
/create_sharded_queue
/enqueue
/dequeue
などのDBMS_AQADM
プロシージャ、およびOGG/DGレプリケーションのプロシージャでも、JSONデータ型を使用できます。
非推奨の機能
このリリースの非推奨機能は次のとおりです。
-
シャード・キューAPI
-
CREATE_SHARDED_QUEUE
-
DROP_SHARDED_QUEUE
-
ALTER_SHARDED_QUEUE
-
ISSHARDEDQUEUE
-
VERIFY_SHARDED_QUEUE
-
-
シャード・キュー・ビュー
-
ALL_QUEUE_SHARDS
-
DBA_QUEUE_SHARDS
-
USER_QUEUE_SHARDS
-
GV$AQ_CACHED_SUBSHARDS
-
GV$AQ_CROSS_INSTANCE_JOBS
-
GV$AQ_DEQUEUE_SESSIONS
-
GV$AQ_INACTIVE_SUBSHARDS
-
GV$AQ_MESSAGE_CACHE
-
GV$AQ_MESSAGE_CACHE_ADVICE
-
GV$AQ_MESSAGE_CACHE_STAT
-
GV$AQ_NONDUR_SUBSCRIBER_LWM
-
GV$AQ_REMOTE_DEQUEUE_AFFINITY
-
GV$AQ_SHARDED_SUBSCRIBER_STAT
-
GV$AQ_SUBSCRIBER_LOAD
-
GV$AQ_UNCACHED_SUBSHARDS
-
GV$AQ_NONDUR_SUBSCRIBER
-
GV$AQ_PARTITION_STATS
-
GV$AQ_MESSAGE_CACHE_STAT
-
詳細は、非推奨のシャード・キューを参照してください。
Oracle Database Advanced Queuingリリース19c, バージョン19.2の変更内容
Oracle Databaseリリース19c, バージョン19.2の『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』における変更点は次のとおりです。
新機能
このリリースの新機能は次のとおりです。
-
拡張キーベースのメッセージング
AQシャード・キューのパフォーマンスはAQクラシック(非シャード)キューと比較して大幅に向上しています。これは、データベースの特定のインスタンスが各シャードを所有するように、キューがシャーディングされているためです。デフォルトでは、エンキュー操作とデキュー操作に関して、シャーディングはユーザーに対して完全に透過的です。AQでは、適切なシャードにメッセージを内部的に配置して、最大のパフォーマンスおよびJMS仕様で求められるセッション・レベルの順序付けを実現しています。セッション・レベルの順序付けでは、同じセッションでメッセージがエンキューされ、優先度と配信モードが同じである場合、2つのメッセージがエンキュー順序の逆順でデキューされることはありません。
場合によっては、ユーザー・アプリケーションでシャーディングを制御する場合があります。メッセージがエンキューされるシャードをユーザー・アプリケーションで選択できます。アプリケーション・ロジックをサポートするために、シャード・キュー内のメッセージをシャードする方法を必要に応じてユーザーが決定できます。AQシャード・キューのパフォーマンスおよび順序付けの利点は、シャーディングをユーザーが制御する場合でもそのまま維持されます。アプリケーションでは、次のことを制御できます。
-
キューのシャード数
-
キー・ベースのエンキュー: エンキュー・セッションでエンキューするときにメッセージとともにキーを指定して、メッセージがエンキューされるキューのシャードを選択できます。AQサーバーにより、キーのすべてのメッセージが同じシャードにエンキューされます。1つのシャードは、異なるキーのメッセージを処理できます。
-
スティッキー・デキュー: シャードは、シングル・コンシューマ・キューまたはJMSキューのためのアクティブなデキュー・セッションを1つのみ持つことができます。同様に、シャードは、マルチ・コンシューマ・キューまたはJMSトピックのためのデキュー・セッションをサブスクライバごとに1つのみ持つことができます。そのデキュー・セッションは、セッションの存続期間中はキューのそのシャードに固定されたままになります。そのような機能は、JMSリスナーにも使用できます。
-
関連項目:
Oracle Database Advanced Queuing 12cリリース2 (12.2)の変更内容
Oracle Database 12cリリース2 (12.2)の『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』における変更点は次のとおりです。
新機能
このリリースの新機能は次のとおりです。
-
シャード・キューのJMSペイロードおよびJMS以外(ADTまたはRAW)のペイロードに対するPL/SQLエンキューおよびデキューのサポート
Oracle Database 12cリリース2 (12.2)は、シャード・キューでJMS、ADTおよびRAWペイロードに対してエンキューおよびデキュー操作を実行するように、PL/SQL APIを拡張およびサポートします。PL/SQL配列APIもシャード・キューをサポートします。既存のJMS以外の多くのアプリケーションで、ほとんど変更することなくシャード・キューを使用できるようになりました。
Oracle Database 12cリリース2 (12.2)以降では、シャード・キューを使用するJMSユーザーは、PL/SQL通知を使用してPL/SQLプロシージャを登録し、正常なエンキューでAQサーバーによって自動的に呼び出されるようにできます。PL/SQL通知を使用すると、サーバーでメッセージを自動的にデキューおよび処理できるため、クライアントがキューでメッセージをポーリングする必要がなくなります。
詳細は、「シャード・キューの管理」を参照してください。
-
シャード・キューの診断性および管理性
12cリリース2 (12.2)以降では、AQシャード・キューは
STREAMS_POOL
のメモリー割当ておよびスループットを最適化するためのメッセージ・キャッシュのアドバイザ、ビューおよび自動管理を提供しています。詳細は、「Transactional Event Queuesのチューニング」を参照してください。
-
Oracle Database Advanced Queuingのより長い識別子
12cリリース2 (12.2)以降では、AQキュー名の最大長が122バイトに増加しています。サブスクライバ名および受信者名の最大長が128文字に増加しています。AQルール・エンジンの場合、ルール名およびルール・セット名の最大長が128バイトになりました。
Oracle Database Advanced Queuing 12cリリース1 (12.1.0.2)の変更内容
Oracle Database 12c リリース1 (12.1.0.2)の『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』における変更点は次のとおりです。
新機能
このリリースの新機能は次のとおりです。
-
JMSストリーミング
Oracle Database 12c リリース1 (12.1.0.2)では、Advanced Queuingは、大量のメッセージ・データまたはペイロードを送受信するアプリケーション用に、
AQjmsBytesMessage
およびAQjmsStreamMessage
を介した共有キューのエンキューおよびデキューでのJMSストリーミングを導入しました。詳細は、「JMSストリーミング」を参照してください。
Oracle Database Advanced Queuing 12cリリース1 (12.1)の変更内容
Oracle Database 12c リリース1 (12.1)の『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』における変更点は次のとおりです。
新機能
このリリースの新機能は次のとおりです。
-
Oracle Database 12cリリース1 (12.1)のAdvanced Queuingは、高いパフォーマンスと可用性を持つシャードJMSキューを導入しています。シャード・キューとは、システムで管理されているパーティション化を使用して、独立した複数の物理キューに分割される1つの論理キューです。シャード・キューにより、異なるキュー・シャードにある2つのメッセージ間の順序付けがベスト・エフォートで実行されるため、エンキューおよびデキューのスループットが、特にOracle RACインスタンスで向上します。各シャードは、セッション内のエンキュー時刻に基づいて順序付けされます。シャード・キューは、エンキュー元およびデキュー元がそれら同士で競合しないように、表のパーティションを自動的に管理します。また、シャード・キューは、インメモリーのメッセージ・キャッシュを使用して、パフォーマンスを最適化し、AQ-JMSのエンキューおよびデキューのディスクおよびCPUのオーバーヘッドを削減します。シャード・キューは、Oracle RACインスタンス全体で使用されるキュー、エンキュー率またはデキュー率の高いキュー、またはサブスクライバの多いキューについて推奨されるJMSキューです。
12.2では、JMS以上をサポートするようにシャード・キューが拡張されました。詳細は、「シャード・キュー」を参照してください。
-
結果キャッシュ拡張
Oracle Database 12cリリース1 (12.1)では、ルール・エンジンに、共通で使用される多数のルールのパフォーマンスを向上させる結果キャッシュが導入されました。結果キャッシュでは、属性が同一の式が以前に評価されている場合は、評価フェーズが省略されます。ルールの結果が確定的でない可能性がある場合や、評価されないルールがある場合、または属性に非スカラー・データ型が含まれる場合などには、すべてのルールがキャッシュされるわけではありません。アドバンスト・キューでは、サブスクリプションやそのデキュー・セッションの存続期間が長い場合に、キャッシュが非常に便利です。
-
LONG VARCHAR
のサポートOracle Database 12cリリース1 (12.1)のOracle Database Advanced Queuingでは、
LONG VARCHAR
データ型がサポートされています。 -
3層バックグラウンド・アーキテクチャ
Oracle Database 12cリリース1 (12.1)には、新しい3層設計のAQバックグラウンド・プロセス・アーキテクチャが導入されています。
詳細は、「AQバックグラウンド・アーキテクチャ」を参照してください。
-
Data Guardデータベースのローリング・アップグレードのサポート
Oracle Database Advanced Queuingを使用するデータベースを、Data Guardデータベースのローリング・アップグレードを使用して、新しいOracleデータベースのリリースおよびパッチ・セットにアップグレードできるようになりました(一時ロジカル・スタンバイ・データベースのみ)。ローリング・アップグレードは、Oracle Database 12cリリース1 (12.1)からサポートされるようになりました。
Data Guardデータベース・ローリング・アップグレードにより、ローリング方式で新しいデータベース・リリースまたはパッチ・セットへのアップグレードを行うことができ計画停止時間が短縮されます。このようなアップグレードでのデータベースの合計停止時間は、Data Guardスイッチオーバーを実行するために必要な短い時間に制限されます。
次のパッケージを使用すると、ロジカル・スタンバイを使用したローリング・アップグレードがサポートされます。
-
DBMS_AQ
-
DBMS_AQJMS
-
DBMS_AQADM
(次のプロシージャを除く):-
SCHECULE_PROPAGATION
-
UNSCHEDULE_PROPAGATION
-
ALTER_PROPAGATION_SCHEDULE
-
ENABLE_PROPAGATION_SCHEDULE
-
DISABLE_PROPAGATION_SCHEDULE
-
関連項目:
-
Oracle Database AQパッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください
-