Oracle Shardingのこのリリースの変更点

「はじめに」の内容は次のとおりです。

Oracle Database 18cでの変更点

次に、Oracle Database 18cのOracle Shardingの変更点を示します。

新機能

このリリースの新機能は次のとおりです。

ユーザー定義のシャーディング方法

ユーザー定義のシャーディングでは、個々のシャードへのデータのマッピングをユーザーが明示的に指定できます。これは、パフォーマンスや規制などの理由で、特定のデータを特定のシャードに格納する必要があり、シャード間のデータの移動を完全に制御する必要がある場合に使用します。この方法を使用して、LISTまたはRANGEベースのシャーディングを定義できます。

関連項目

シャードとしてのPDBのサポート

CDB内のPDBをシャードまたはシャード・カタログ・データベースのために使用します。Oracle Shardingのこのリリースでは、シャードまたはシャード・カタログがCDB内の1つのPDBとしてサポートされています。Oracle Shardingでマルチテナント・アーキテクチャをサポートできるように、GDSCTLコマンドADD SHARDが拡張され、新しいコマンドADD CDB、MODIFY CDB、CONFIG CDBおよびREMOVE CDBが実装されています。

関連項目

Oracle GoldenGateレプリケーションのサポート

Oracle GoldenGateは、すべてのシャードが書込み可能で、各シャードをシャードグループ内の別のシャードに部分的にレプリケートできるファイングレイン・アクティブ-アクティブ・レプリケーションのために使用されます。アクティブ-アクティブ・レプリケーションによる競合の処理には、Oracle 12.2に追加された自動競合検出および解決機能が使用されます。

シャード・レベルの高可用性を参照してください。

集中診断

SQLのSHARDS()句は、すべてのシャード間でV$、DBA/USER/ALLビュー、ディクショナリ表などのOracle提供オブジェクトを問い合せることができます。

シャード間のシステム・オブジェクトの問合せを参照してください。

マルチシャード問合せの一貫性レベル

マルチシャード問合せを実行するときに、初期化パラメータMULTISHARD_QUERY_DATA_CONSISTENCYを使用して様々な一貫性レベルを設定できます。

マルチシャード問合せでの一貫性レベルの指定を参照してください。

JSON、LOBおよび空間オブジェクトのシャーディングのサポート

このリリースでは、一時LOB、大規模なJSONドキュメント(LOB記憶域を必要とするもの)、空間オブジェクト、索引と演算子および永続LOBを生成するJSON演算子をシャード環境で使用できます。

この機能の一部として、次のインタフェースが新規作成または変更されました。

  • 問合せおよびDML文

    LOBに関連するシャード間の問合せがサポートされています。

    複数のシャードを使用するDMLはサポートされていません。この動作は、スカラー列に似ています。

    1つのシャードを使用するDMLは、コーディネータでサポートされています。

    シャードから選択したロケータは、同じシャードにバインド値として渡すことができます。

  • OCILob

    シャーディング環境では、BFILE関連を除くすべてのOCILob APIがサポートされていますが、いくつかの制限事項があります。

    コーディネータでは、LOBがシャード表から取得された場合にLOBディスクリプタのOCI_ATTR_LOB_REMOTE属性がTRUEを返します。

    制限事項: 入力として2つのロケータを取るAPI (OCILobAppendやOCILobCompareなど)では、両方のロケータを同じシャードから取得する必要があります。ロケータを異なるシャードから取得すると、エラーが発生します。

  • DBMS_LOB

    シャーディング環境では、BFILE関連を除くすべてのDBMS_LOB APIがサポートされていますが、いくつかの制限事項があります。コーディネータでは、LOBがシャード表から取得された場合にDBMS_LOB.isremoteがTRUEを返します。

    制限事項: 入力として2つのロケータを取るAPI (DBMS_LOB.appendやDBMS_LOB.compareなど)では、両方のロケータを同じシャードから取得する必要があります。ロケータを異なるシャードから取得すると、エラーが発生します。

シャード・データベース・デプロイメントでのLOBの使用例は、システム管理のシャード・データベースのスキーマの作成ユーザー定義のSDB用のスキーマの作成およびコンポジットSDB用のスキーマの作成を参照してください。

マルチシャード問合せに関するオプティマイザの機能強化

シャード問合せの堅牢性とフォルト・トレランスを向上させるため、様々な機能強化が行われました。問合せの実行計画が拡張され、問合せに含まれるすべてのシャードの情報が表示されるようになりました。

これらのトピックの最新情報は、プロキシ・ルーティングでサポートされる問合せの形態およびプロキシ・ルーティング用の実行計画を参照してください。

シャードの置換

シャードで障害が発生してリカバリ不能になった場合は、GDSCTLでADD SHARD -REPLACEコマンドを使用してシャードを置き換えることができます。また、なんらかの理由で、-replaceコマンド・オプションを使用して新しい装置にシャードを移動することもできます。

シャードの置換を参照してください。

Oracle RAC Sharding

Oracle RAC Shardingは、特定のOracle RACインスタンスに対する表パーティションのアフィニティを作成し、対応するパーティションを論理的に保持するインスタンスにパーティション化キーを指定するデータベース・リクエストをルーティングします。これにより、キャッシュをより適切に利用できるようになり、インスタンス間のブロックpingを大幅に削減できます。パーティション化キーは、最もパフォーマンスを重視するリクエストにのみ追加できます。キーを指定しないリクエストは透過的に機能し、任意のインスタンスにルーティングできます。この機能を有効にするためにデータベース・スキーマを変更する必要はありません。

詳細は、Oracle Real Application Clusters管理およびデプロイメント・ガイドを参照してください

UCPによるOracle Sharding中間層へのデータ依存型ルーティングのサポート

中間層ルーティングと呼ばれるOracle Universal Connection Pool (UCP)機能により、スマート・ルーター(F5 BigIPなど)がシャーディング・キーに関連付けられた中間層にルーティングできます。

中間層接続プールとシャード間のアフィニティの作成を参照してください。

その他の変更

このリリースでの追加変更は次のとおりです。

  • シャーディングのコンテンツを新しいマニュアルに移動

    Oracle Database 12cリリース2 (12.2.0.2)では、Oracle Shardingのコンテンツは『Oracle Database管理者ガイド』に含まれていました。Oracle Database 18c以降では、Oracle Shardingのコンテンツは独自のマニュアルであるOracle Shardingの使用に含まれています。