1 Oracle Globally Distributed Databaseの概要

Oracle Globally Distributed Databaseの機能と利点について概要を説明します。

グローバルに分散したデータベースとは

グローバルに分散したデータベースは、計算ワークロードとストレージ・ワークロードを分散するためのデータをパーティション化する方法で、ハイパースケール・コンピューティングの実現に役立ちます。

ハイパースケール・コンピューティングは、システムに対する需要の増加にあわせて素早くスケール・アップまたはスケール・ダウンできるコンピューティング・アーキテクチャです。このアーキテクチャの革新は、分散サイトを運営しているインターネット巨大企業によって主導されたもので、大規模なクラウド・プロバイダに採用されています。

多くの場合、企業はデータベース・シャーディングと呼ばれるテクノロジを使用してハイパースケール・コンピューティングを実現します。このテクノロジでは、データ・セットのセグメントが分散され、シャードは多数の異なるコンピュータに多数のデータベースを分散します。

シャーディングには、何も共有しないアーキテクチャを使用します。このアーキテクチャでは、シャードはハードウェアもソフトウェアも共有しません。すべてのシャードが一体になって、シャード・データベースと呼ばれる単一の論理データベースを形成します。

アプリケーションの観点からは、シャード・データベースは単一のデータベースのように見えます。シャードの数とそれらのシャード間でのデータの分散は、データベース・アプリケーションに対して完全に透過的です。データベース管理者の立場では、シャード・データベースは、まとめて管理できる複数のデータベースで構成されています。

図1-1 データベース・シャード間の表の分散



Oracle Globally Distributed Databaseについて

Oracle Globally Distributed Databaseは、ハードウェアまたはソフトウェアを共有しないOracleデータベースのプール間でデータを自動的に配布およびレプリケートできる、Oracle Databaseの機能です。Oracle Globally Distributed Databaseは、ここで説明するように、成熟したRDBMSおよびNoSQLデータベースの最高の機能と性能を備えています。

  • オブジェクトの作成、厳格なデータ整合性、複雑な結合、ACIDトランザクションのプロパティ、分散トランザクション、リレーショナル・データ・ストア、セキュリティ、暗号化、堅牢なパフォーマンス・オプティマイザ、バックアップとリカバリ、およびOracle Databaseでのパッチ適用に使用されるSQL言語

  • Oracleのイノベーションとエンタープライズ・レベルの機能: Advanced Security、Automatic Storage Management (ASM)、Advanced Compression、パーティション化、高性能ストレージ・エンジン、SMPスケーラビリティ、Oracle RAC、Exadata、インメモリー列、オンライン再定義、JSONドキュメント・ストアなど

  • シャーディング対応のOracle Databaseツール: シャード・データベース・アプリケーションの開発と管理のためのSQL Developer、Enterprise Manager Cloud Control、Recovery Manager (RMAN)、およびData Pump

  • プログラム・インタフェース: シャード・アプリケーション開発用の拡張機能を含むJava Database Connectivity (JDBC)、Oracle Call Interface (OCI)、Universal Connection Pool (UCP)、Oracle Data Provider for .NET (ODP.NET)、PL/SQLなど

  • Oracle Data GuardおよびOracle Active Data Guardによるきわめて高い可用性。その他のレプリケーション・オプションには、Oracle Globally Distributed Databaseに組み込まれているRaftレプリケーションがあります。

  • 複数モデルのデータ(リレーショナル、テキスト、JSONなど)のサポート

  • 社内およびワールド・ワイドのOracleデータベース管理者スキル・セットの活用して、既存のライフサイクル管理および運用プロセスの維持が可能

  • エンタープライズ・レベルのサポート

  • NoSQLデータベースの最大限のスケーラビリティと可用性

分散パーティション化としてのOracle Globally Distributed Database

シャーディングは、データを複数の独立した物理データベース間に水平にパーティション化するデータベースのスケール・テクニックです。このような構成内の各物理データベースをシャードと呼びます。

アプリケーションの観点では、Oracle Globally Distributed Databaseのシャード・データベースは1つのデータベースのように見えます。シャードの数とそのシャード間でのデータ分散は、アプリケーションに対して完全に透過的です。

シャード・データベースはアプリケーションおよびアプリケーション開発者には単一のデータベースのように見えますが、データベース管理者の視点では、シャード・データベースは、それぞれが単一のシャードであり、一括して管理できる一連の別個のOracleデータベースで構成されています。

シャード表は、シャード・データベースのすべてのシャード間にパーティション化されます。各シャードの表のパーティションは、シャーディングされていないOracleデータベースで使用できるパーティションと同様です。

次の図は、単一の論理データベースのパーティション化と複数シャード間に分散されたパーティションの違いを示しています。

図1-2分散パーティション化としてのOracle Globally Distributed Database

図1-2の説明が続きます。
「図1-2分散パーティション化としてのOracle Globally Distributed Database」の説明

Oracle Globally Distributed Databaseは、CREATE SHARDED TABLE文を発行すると、シャード間にパーティションを自動的に分散します。パーティションの分散はアプリケーションに対して透過的です。前述の図は、シャード表の論理ビューとその物理的な実装を示しています。

Oracle Globally Distributed Databaseの利点

Oracle Globally Distributed Databaseは、最も要求の厳しいアプリケーションに対する線形スケーラビリティ、完全な障害分離およびグローバルなデータ分散を提供します。

Oracle Globally Distributed Databaseの主な利点は次のとおりです。

  • 線形のスケーラビリティ

    Oracle Globally Distributed Databaseの何も共有しないアーキテクチャにより、パフォーマンス・ボトルネックを排除し、無制限のスケーラビリティが得られます。Oracle Globally Distributed Databaseでは、1,000シャードまでスケーリングできます。

  • 最大限の可用性と障害の分離

    シャードはソフトウェア、CPU、メモリー、ストレージ・デバイスなどのリソースを共有しないため、単一障害点が排除されます。あるシャードの障害や処理速度の低下が別のシャードのパフォーマンスや可用性に影響しません。

    シャードは、Oracle Data GuardやOracle RACなどのOracle MAAベスト・プラクティス・ソリューションによって保護されます。

    シャードの計画外停止または計画メンテナンスはそのシャードのデータの可用性にしか影響しないため、フェイルオーバー・ブラウンアウト時などにそのごく一部のデータのユーザーのみが影響を受けます。

  • データの地理的分散

    Oracle Globally Distributed Databaseを使用すると、グローバル・データベースをデプロイできます。このグローバル・データベースでは、1つの論理データベースを複数の地理的位置に分散できます。これにより、データ・プライバシ規則の要件(データ主権)を満たせるようになり、特定のデータを利用者の近くに保存できるようにもなります(データ近接性)。

Oracle Globally Distributed Databaseを使用するアプリケーションの例

Oracle Globally Distributed Databaseは、様々なユースケースでメリットが得られます。

リアル・タイムOLTP

リアル・タイムOLTPアプリケーションは、非常に高いトランザクション処理スループット、大量のユーザー人口、膨大なデータ量を扱い、大規模に厳格なデータ整合性と管理を必要とします。たとえば、インターネットに接続する消費者アプリケーション、金融アプリケーション(モバイル決済など)、大規模SaaSアプリケーション(課金や診察アプリケーションなど)が挙げられます。このようなアプリケーションにOracle Globally Distributed Databaseを使用する利点は次のとおりです。

  • 1秒当たりのトランザクションの線形スケーラビリティ。増大したデータ量をサポートするために新しいシャードを追加したときにも応報時間が一定に保たれます
  • アプリケーションSLAの向上。特定のシャードに対する計画停止および計画外停止は、別のシャードに保存されたデータに影響することなく利用できます
  • トランザクション・アプリケーションに対応する厳格なデータ整合性
  • 複数のシャードに及ぶトランザクション
  • 複雑な結合、トリガー、およびストアド・プロシージャのサポート
  • 大規模な管理の簡易化

グローバル・アプリケーション

多くのエンタープライズ・アプリケーションは本質的にグローバルなもので、同じアプリケーションが複数の地理的位置にいる顧客に使用されます。一般に、こうしたアプリケーションは、複数の地域で共有される単一の論理グローバル・データベースを使用します。共有グローバル・データベースには、次のようなメリットがあります。

  • データ主権の厳格な施行。データ・プライバシ規制により、特定の地理的場所、地域、国、または地方にデータを保留することが必要になる場合があります。
  • 各場所に渡るデータ・レプリケーションの削減
  • アプリケーションSLAの向上。ある地域での計画停止および計画外停止は別の地域に影響しません

IoT (Internet of Things)とデータ・ストリーミング・アプリケーション

一般に、こうしたアプリケーションは、大量のデータを収集して、高速でストリーミングします。Oracle Globally Distributed Databaseには、最適化されたデータ・ストリーム・ライブラリが用意されています。このライブラリでは、Oracle Databaseダイレクト・パスI/Oテクノロジを使用して、シャード・データベースにデータを高速にロードします。このようなアプリケーションのデータ・ロードの要件は、1秒当たりのレコード数が数億になることもあります。データがデータベースに直接ロードされると、高度な問合せ処理と分析機能によってすぐに処理できるようになります。

機械学習

機械学習アプリケーションの多くは、リアルタイムでのモデルのトレーニングおよびスコアリングを必要とします。異常検出などのアルゴリズムを使用するアプリケーションに対応するモデルのトレーニングとスコアリングや、クラスタリングは、特定のエンティティに固有のものです(たとえば、一定の日数における特定のユーザーの金融取引パターンやデバイスのメトリックなど)。この種のデータは、ユーザーやデバイスに固有のシャーディング・キーを使用することで簡単に共有できます。さらに、Oracle Database Machine Learningのアルゴリズムは、データベースで直接適用できるため、個別のデータ・パイプラインや機械学習処理インフラストラクチャが不要になります。

ビッグ・データの分析

TB単位のデータがあるときには、シャーディングによって、分析のためにデータをウェアハウスに格納するが必要なくなります。Oracle Globally Distributed Databaseの容量は最大1000シャードで、リレーショナル・データベースをウェアハウス規模のデータ・ストアに変えることができます。フェデレーテッド・シャーディング・ソリューションを使用すると、同じアプリケーションを実行する様々な場所にある複数のデータベース・インストールをフェデレーテッド・シャード・データベースに変換できるため、データを移動せずにデータ分析を実行できます。

NoSQLの代替

NoSQLソリューションには、リレーショナル・スキーマ、SQL、複合データ型、オンラインのスキーマ変更、マルチコアのスケーラビリティ、セキュリティ、ACIDプロパティ、単一シャード操作のためのCRなど、主要なRDBMS機能がありません。Oracle Globally Distributed Databaseでは、NoSQLで得たほとんど無制限のスケーリングとシャーディングと、Oracle Databaseのすべての機能と利点も得られます。

柔軟なデプロイ・モデル

Oracle Globally Distributed Databaseの何も共有しないアーキテクチャにより、データはオンプレミス、クラウド、またはクラウドとオンプレミス・システムのハイブリッドに保持できます。データベース・シャードでは一切のリソースを共有しないため、シャードはオンプレミスおよびクラウドの様々なシステムのどこにでも存在できます。

すべてのシャードをオンプレミスにデプロイすることも、すべてをクラウドに配置することも、ニーズにあわせてクラウドとオンプレミスに分割することもできます。

シャードは、あらゆるデータベース・デプロイメント・モデル(単一インスタンス、Exadata、Oracle RACなど)にデプロイできます。

Oracle Globally Distributed Databaseの高可用性

Oracle Globally Distributed Databaseは、可用性のためにレプリケーションに依存します。レプリケーションはシャード・データベースが作成されると自動的に構成およびデプロイされます。Oracle Globally Distributed Databaseは、ニーズに応じて様々なレプリケーション手段を提供します。

Oracle Data Guardは、Oracle Globally Distributed Databaseと密接に統合されており、厳格なデータの一貫性とデータ損失ゼロで高可用性と障害時リカバリを提供します。Oracle Data Guardのレプリケーションは、高可用性およびデータ保護のために、シャード(プライマリ)の1つ以上の同期されたコピー(スタンバイ)を維持します。スタンバイはローカルまたはリモートにデプロイでき、Oracle Active Data Guardを使用する場合は、読取り専用アクセスでオープンすることもできます。

RaftレプリケーションOracle Globally Distributed Databaseに組み込まれており、コンセンサスベースの高パフォーマンスで低オーバーヘッドの可用性ソリューションを提供し、分散レプリカとデータ損失ゼロの高速フェイルオーバーを実現すると同時に、シャードが失敗した場合にはレプリケーション・ファクタを自動的に維持します。Raftレプリケーション管理のオーバーヘッドは、シャードの数で増加しません。NoSQLデータベースに慣れており、レプリケーションの仕組みについて知ろうとしていなくても、Oracle Globally Distributed Databaseのネイティブ・レプリケーションは機能します。

オプションで、Oracle RACを使用して、レプリケーションによって補完されたシャード・レベルの高可用性を維持し、クラスタが停止した場合にシャード・レベルのデータ可用性を維持することもできます。各シャードは、Oracle RACクラスタにデプロイすることで、すぐにノード障害からの保護が可能です。たとえば、各シャードを2ノードのOracle RACクラスタにすることができます。

データ配分方法

Oracle Globally Distributed Databaseは表のパーティション化に基づくため、Oracle Databaseで提供されるサブパーティション方法はすべてOracle Globally Distributed Databaseでもサポートされています。データ分散方法は、シャードへのデータの配置を制御します。Oracle Globally Distributed Databaseは、システム管理、ユーザー定義、ディレクトリベースまたはコンポジット・シャーディング方法をサポートしています。

  • システム管理では、データをシャードにマップする必要はありません。コンシステント・ハッシュによるパーティション化を使用して、データが自動的にシャード間に分散されます。パーティション化アルゴリズムにより、データがシャード全体に、均一かつランダムに分散されます。

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

  • コンポジットでは、2つのレベルのパーティション化を使用できます。最初にデータが範囲またはリストでパーティション化されてから、コンシステント・ハッシュによってさらにパーティション化されます。

    多くのユースケース(特に、データ主権とデータの近接性の要件)で、コンポジット・メソッドは、システム管理とユーザー定義の両方の方法の最良点を提供し、必要な自動化とデータ配置の制御を可能にします。

  • ディレクトリベースは、ユーザー定義方法の機能拡張です。これにより、シャーディング・キーに関連付けられたデータ・レコードの場所は、ユーザー・プリファレンスに基づいて実行時に動的に指定されます。キーの場所情報はディレクトリに格納され、ここで数十万の大量のキー値セットを保持できます。

    個々のキー値をある場所から別の場所に移動し、一括移動してスケール・アップまたはスケール・ダウンし、データおよびロード・バランシングのために自由に移動できます。場所情報には、シャード・データベース情報およびパーティション情報を含められます。

クライアント・リクエストのルーティング

Oracle Globally Distributed Databaseは、アプリケーションからシャードへの直接的なキーベースのルーティング、シャード・カタログを使用したプロキシによるルーティングおよびシャードでアフィニティ化された中間層(アプリケーション・コンテナ、Webコンテナなど)へのルーティングをサポートしています。Oracle Databaseクライアント・ドライバおよび接続プールはシャーディング対応です。

  • キー・ベースのルーティング。Oracleクライアント側ドライバ(JDBC、OCI、UCP、ODP.NET)は、高パフォーマンスのデータ依存ルーティングのために接続文字列に指定されたシャーディング・キーを認識できます。接続レイヤーのシャード・ルーティング・キャッシュは、データが常駐するシャードにデータベース・リクエストを直接ルーティングするために使用されます。

  • プロキシによるルーティング。Oracle Globally Distributed Databaseは、シャーディング・キーを指定していない問合せのルーティングをサポートしています。これにより、あらゆるデータベース・アプリケーションは、問合せを処理するシャードを指定することなく、SQL文を実行する柔軟性が得られます。プロキシ・ルーティングでは、単一シャードの問合せとマルチシャードの問合せを処理できます。

  • 中間層ルーティング。データ層のシャーディングに加えて、Web層とアプリケーション層のシャーディングも可能です。こうした中間層のシャードを分散することで、データベース・シャードの特定のセットを処理して、スイム・レーンというパターンを作成します。スマート・ルーターは、クライアントのリクエストを特定のシャーディング・キーに基づいて適切なスイム・レーンにルーティングできます。このスイム・レーンにより、シャードのサブセットに対する接続が確立されます。

問合せ処理

Oracle Globally Distributed Databaseをサポートするために、問合せおよびDML文を変更する必要はありません。ほとんどの既存のDDL文は、非シャードOracle Databaseと同じ構文およびセマンティクスを使用して、シャード・データベースで同様に機能します。

構成内のすべてのシャードでDDL文を処理するのと同じ方法で、特定のOracle提供のPL/SQLプロシージャも実行できます。

また、Oracle Globally Distributed Databaseには、シャード・データベースに対してのみ実行できるSQL DDL文の独自のキーワードがあります。

高速データ収集

SQL*Loaderにより、Oracle Globally Distributed Databaseシャードへのダイレクト・データ・ロードが可能になり、高速データ収集が可能になります。

SQL*Loaderは、外部ファイルからOracleデータベースにデータを移動する際に使用するバルク・ローダー・ユーティリティです。その構文はDB2ローダー・ユーティリティの構文と同様ですが、より多くのオプションを使用できます。SQL*Loaderは、様々なロード形式、選択的ロード、および複数表のロードをサポートしています。

SQL*Loaderクライアントは、データを個別のファイルに分割して複数のクライアントを起動しなくても、データのパラレル・ダイレクト・パス・ロードを自動的に開始できます。

その他の利点は、次のとおりです。

  • ストリーミング機能により、大規模なクライアントのグループからのデータをブロックなしで受信できます

  • ネイティブUCPを使用するOracle RACシャード・アフィニティに従ったレコードのグループ化

  • レコード処理をI/Oから切り離した上でのCPU割当ての最適化

  • ダイレクト・パス・インサート(SQLをバイパスしてデータベース・ファイルに直接書き込むこと)による、Oracle Databaseの挿入メソッドの高速化

デプロイの自動化

Oracle Globally Distributed Databaseのデプロイは、Terraform、Kubernetes、およびAnsibleスクリプトで高度に自動化されます。

このデプロイメント用スクリプトは、目的のデプロイメント・トポロジについて記述したシンプルな入力ファイルを受け取って、単一のホストから実行することですべてのシャード・データベース・ホストにシャードをデプロイします。スクリプトには、エラー発生時のための一時停止操作、再開操作、およびクリーン・アップ操作が含まれています。

データの移行

Oracle Globally Distributed Databaseシャーディング・アドバイザ・ツールは、非シャード・データベースからシャード・データベースに移行するためのシャード・データベース・スキーマ設計に役立ちます。Oracle Data Pumpはシャーディング対応で、非シャードOracleデータベースからシャードOracleデータベースにデータを移行するために使用します。

シャーディング・アドバイザ

シャーディング・アドバイザはOracle Globally Distributed Databaseに付属するツールで、現在のデータベース・スキーマおよびワークロードを分析して、トポロジ構成およびデータベース・スキーマ設計を推奨することで、最適なシャード・データベース構成を簡単に設計できるようにします。シャーディング・アドバイザは、並列処理(問合せの処理をシャード間に均等に分散する)、クロスシャード結合操作の最小化、重複データの最小化などの主要目標に基づいて推奨事項を作成します。

Oracle Data Pump

各シャードでOracle Data Pumpを実行することで、データをシャードに直接ロードできます。この方法は非常に高速です。これは、データ・ロード操作全体が、データ・セット全体の最大サブセットを使用してシャードをロードするために必要な時間内に完了できるためです。

ライフサイクル管理

Oracle Globally Distributed Databaseのコマンドライン・インタフェースとOracle Enterprise Managerは、シャード・データベースの管理に役立ちます。

この提供されたツールを使用すると、次の作業を実行できます。

  • スクリプトによる新しいシャード・データベースのプロビジョニング
  • オンラインでのシャードの追加と自動リバランスの活用による必要に応じたスケール・アウト
  • 負荷が低いときのデータの移動とハードウェアの集約によるスケール・イン
  • Enterprise Managerを使用したパフォーマンス統計情報の監視
  • Cloudバックアップ・サービス、RMAN、およびZero Data Loss Recovery Applianceを使用した障害回復のためのバックアップ作成
  • ローリング・モードのoPatchAutoによって自動化されるパッチ適用とアップグレード

フェデレーテッド・シャーディング

複数の既存のデータベースを1つのOracle Globally Distributed Databaseアーキテクチャに統合します。

グローバルな事業では、複数の地域にある複数の部署にデプロイした同じアプリケーションの複数のインスタンスを用意することがあります。フェデレーテッド・シャーディングにより、そうしたアプリケーションのデータベースを単一のフェデレーテッド・データベースにマッピングできるようなります。そうすることで、次のメリットが得られます。

  • 問合せは、マルチシャード問合せコーディネータを使用することで単一のフェデレーテッド・データベースに対してシームレスに処理できます
  • レポートや分析を目的としたデータのレプリケートが不要になります
  • スキーマおよびデータベース・バージョンの差異が許容されます

リリース23cの新機能

Raftレプリケーション

RaftレプリケーションはOracle Globally Distributed Databaseに直接組み込まれており、Oracle GoldenGateまたはOracle Data Guardの構成を必要とせずに、組込みのレプリケーションを提供します。Raftレプリケーションでは、コンセンサスベースのコミット・プロトコルを使用して論理レプリケーションを使用し、宣言的なレプリケーション構成と1秒未満のフェイルオーバーを可能にします。

Oracle Globally Distributed Databaseは、可用性のためにレプリケーションを使用しますが、Active Data GuardおよびGoldenGateを使用するには、基礎となるレプリケーション・テクノロジを理解、デプロイおよび保守する必要があります。これにより、特にハイパースケール・デプロイで運用オーバーヘッドが発生します。

Raftレプリケーションは、レプリケーションがOracle Globally Distributed Databaseに直接構築されているため、シンプルで透過的です。

詳細は、Oracle Globally Distributed Databaseでのレプリケーションを参照してください。

ディレクトリベースのシャーディング

現在、お客様はシステム管理、ユーザー定義およびコンポジット・シャーディングの3つのタイプのシャーディング方法を使用しています。ディレクトリベースのシャーディングは、ユーザー定義のデータ分散方法の拡張タイプであり、シャード上のデータの配置を制御できます。

ディレクトリベースのシャーディングを使用すると、個別キー値のセットが十分に大きくはない場合(つまり、ハッシュによるシステム管理のシャーディングを使用したデータの均等な分散を実現するには十分な大きさでない場合)、シャーディングをより効率的に使用できます。ディレクトリベースのシャーディングでは、シャードへのキー値のマッピングを完全に制御することもできます。

ディレクトリベースのシャーディングを使用すると、キー値をシャードに明示的に関連付けることができ、シャードへのキー値のマッピングを完全に制御できます。

詳細は、「ディレクトリベースのシャーディング」を参照してください。

同期重複表

この機能では、シャード・カタログでシャード「コミット時」に同期される新しい種類の重複表が導入されています。シャード・カタログ内の重複表でDMLを実行するアクティブなトランザクションがコミットされると、シャード上の重複表の行がシャード・カタログの重複表の行と同期されます。

この機能により、すべてのシャードにわたって、重複表の効率的で絶対的なデータ一貫性および同期が常に可能になります。

詳細は、重複表の作成を参照してください。

重複表のファイングレイン・リフレッシュ率制御

この機能により、個々の重複表に対するリフレッシュ率制御が可能となり、個々の重複表に対するリフレッシュ率のカスタマイズにより、リソースの使用を最適化できます。

CREATE DUPLICATED TABLEおよびALTER TABLEの新しいREFRESH句を使用すると、重複表のリフレッシュ間隔を指定できます。間隔を秒単位、分単位、時間単位で設定することも、表をオンデマンドでのみリフレッシュするように設定することもできます。たとえば:

CREATE DUPLICATED TABLE Products 
...
REFRESH INTERVAL 2 MINUTE;

ALTER TABLE Products MODIFY REFRESH ON DEMAND;

詳細は、重複表リフレッシュ率のカスタマイズを参照してください。

シャード・データベースの調整バックアップおよびリストアの拡張機能

調整されたバックアップおよびリストア機能には、このリリースではいくつかの主要な機能改善があります。

  • バックアップ・ジョブのエラー処理および診断が強化されました(自動バックアップ操作のエラー処理を参照)。

  • シャード・カタログ・データベースのリストアの自動化。以前は、RMANを使用してシャード・カタログを手動でリストアする必要がありました。このリリースでは、オプション-shard CATALOGを使用してシャード・カタログのリストアをサポートするようにGDSCTL RESTORE BACKUPが拡張されています(バックアップからのシャード・カタログのリストアを参照)。

  • 新しいGDSCTL RMANコマンドを使用すると、実行するシャードのリストにRMANコマンドを送信できます。RMAN文はコマンド本文で発行することも、RMANコマンド・ファイルを参照することもできます(GDSCTLからのRMANコマンドの実行を参照)。

  • 異なるシャードに異なるRMANリカバリ・カタログを使用するためのサポートは、GDSCTL CONFIG BACKUPを複数回実行して、特定のシャードおよびシャード・カタログに異なるリカバリ・カタログを指定することで提供されます(複数のリカバリ・カタログの指定を参照)。

  • 新しいGDSCTL CONFIG BACKUP -encryptionオプションを使用してバックアップ・セットを暗号化すると、バックアップ・セットの暗号化を有効または無効にして暗号化アルゴリズムを選択できます(バックアップ・セットの暗号化を参照)。

  • 追加のバックアップ保存先のサポート:

シャーディング・キー更新時の自動データ移動

シャーディング・キーの値の更新が必要になる場合があります。前の解決策は、古いキー値に関連付けられたデータを削除し、新しいキー値で再度挿入することでした。この拡張の目的は、シャード内とシャード間の両方で行の移動を許可することです。

シャード表の特定の行のシャーディング・キー値が更新されると、データを新しい場所に移動すると、Oracle Globally Distributed Databaseによって、同じシャード上の別のパーティションにあるか、別のシャード上にあるかにかかわらず処理されます。

この機能を使用すると、レコードの宛先を気にせずにシャーディング・キーを更新できます。これは、この機能を使用すると、異なるシャード上にある可能性がある行の宛先に関係なく、Oracle Globally Distributed Databaseで行移動を処理できるためです。

利点:

  • シャーディング・キー値を柔軟に更新できます。

  • シャード間の透過的なデータ移動が可能

詳細は、シャーディング・キー更新での自動データ移動の有効化を参照してください。

シャード領域間でのデータ・チャンクの移動

コンポジット・シャーディング方法では、データは、スーパー・シャード・キー列の値に基づいて異なるシャード領域に編成できます。この機能拡張により、スーパー・シャード・キー値に従って既存のデータ・チャンクを新しいシャード領域に分割する方法が作成されます。

Oracle 21cでは、コンポジット・シャーディングの場合、データはスーパー・シャード・キーに従って物理的に配置する必要があり、スーパー・シャード・キーが指定されると、場合によっては異なるシャード領域に配置されますが、このデータ移動は、ソース・シャード領域から大量のデータを選択し、一時表に挿入してから、ソース・シャード領域から削除し、一時表からターゲット・シャード領域に挿入することによって、手動で実行する必要があります。これは、データベース・リンク(DBLINK)の行ごとに実行され、かなりの時間がかかります。

これで、split partitionsetコマンドを実行して、シャード領域間のデータの一括移動がサポートされるようになりました。スーパー・シャード・キーに基づいてデータを再配置する必要がある場合は、スーパー・シャード・キー値に従って既存のデータ・チャンクを新しいシャード領域に分割して、一括データ移動をトリガーします。Oracle Globally Distributed Database 23cは、データを分割し、データの一括移動操作の進行中に、クライアント接続に対してデータへのアクセスを最長時間可能にします。

利点:

  • データの分割および移動を自動化します。

  • 分割および移動時にデータをオンラインのままにする

  • トランスポータブル表領域を使用したバルク・データ移動を許可します。

詳細は、スーパー・キーに基づくシャード領域へのチャンクの分割を参照してください。

サブパーティションでのグローバル・パーティション索引のサポート

この機能により、コンポジット・シャード・データベースと同様に、シャード表がサブパーティション化された場合に、シャーディング・キーでグローバル・パーティション索引を使用できます。サブパーティション・キーを含めなくても、コンポジット・パーティション化されたシャード表に主キー/一意索引を作成できます。

この機能により、コンポジット・シャーディングと同様に、シャード表がサブパーティション化された場合に主キー列の制限がなくなります。

詳細および例は、シャード表での索引の作成を参照してください。

PL/SQL関数クロスシャード問合せのサポート

PL/SQLファンクションはキーワードSHARD_ENABLEで拡張され、PL/SQLファンクションをクロスシャード問合せで参照できます。新しいキーワードを使用すると、問合せオプティマイザはPL/SQL関数の実行をシャードにプッシュするイニシアチブを取ります。

この機能により、シャード・データベース環境のPL/SQL関数のパフォーマンスが大幅に向上します。

詳細は、シャードへのPL/SQLファンクション問合せのプッシュを参照してください。

構文および使用方法の詳細は、SHARD_ENABLE句に関する項(『Oracle Database PL/SQL言語リファレンス』)を参照してください。

配置前ネットワークの検証

シャード・データベースの構成およびデプロイ中に複数のGDSCTLコマンドを処理する際に一連のチェックを実行するオプションは、潜在的な環境問題がないことを確認します。

この機能により、一般的な落とし穴が事前に回避され、シャード・データベース・デプロイの完了にかかる時間が短縮されます。

詳細は、デプロイ前のネットワークの検証を参照してください。

コンポジット・シャーディングの新しいパーティション・セット操作

コンポジット・シャーディング方法を使用するシャード・データベースの場合、2つの新しいALTER TABLE操作によってパーティション・セットのメンテナンスが強化されます。

以前は、パーティション・セット操作では、パーティション・セットの追加および分割操作によって影響を受ける子表および参照パーティション表の表領域セットの指定はサポートされませんでした。MOVE PARTITIONSETを使用すると、同じシャード領域内で、パーティション・セット全体をある表領域セットから別の表領域セットに移動できます。MODIFY PARTITIONSETを使用すると、特定のパーティション・セットの値リストに値を追加できます。

これらの新しい操作によって、再ハード機能が強化されます。MOVE PARTITIONSETを使用すると、特定の表のすべてのサブパーティションを特定のシャード領域内の別の表領域セットに移動できます。LOBおよびサブパーティションに個別の表領域セットを指定することもできます。MODIFY PARTITIONSETは、パーティションのリスト値の追加機能をパーティション・セットに拡張します。

詳細は、Oracle Database SQL言語リファレンスALTER TABLEを参照してください。

パラレル・クロスシャードDMLのサポート

Oracle Globally Distributed Databaseの問合せコーディネータは、複数のシャードでクロスシャード更新および挿入をパラレルに実行できます。

この機能により、更新および挿入をシリアルではなくパラレルで実行することで、シャード間のDMLパフォーマンスが向上します。

Oracle Data Pumpによるシャーディング・メタデータのサポートの追加

Oracle Data Pumpは、シャードされたDDLをサポートするOracle Globally Distributed Databaseへのデータ移行をサポートしています。ソース・データベース・シャード・オブジェクトに基づいてシャーディング・オブジェクトをターゲット・データベースに移行できます。

Oracle Data Pumpでは、API dbms_metadata.get_ddl()でのシャーディングDDLのサポートが追加されました。新しい変換パラメータINCLUDE_SHARDING_CLAUSESを使用すると、このサポートが容易になります。このパラメータがtrueに設定され、基礎となるオブジェクトにそれが含まれている場合、get_ddl() APIはcreate tablesequencetablespaceおよびtablespace setのシャーディングDDLを返します。

詳細、例および参照は、Oracle DatabaseユーティリティのトピックTRANSFORMおよび変換への条件の配置と、Oracle Database PL/SQLパッケージおよびタイプ・リファレンスのトピックSET_TRANSFORM_PARAMおよびSET_REMAP_PARAMプロシージャを参照してください。

SQL*Loaderを使用した自動パラレル・ダイレクト・パス・ロード

SQL*Loaderにより、高速データ収集の際にはデータをデータベース・シャードに直接ロードできます。SQL*Loaderは、自動パラレル化とより効率的なデータ・ストレージを使用して、Oracle Databaseにデータをより迅速かつ簡単にロードできます。

このリリースでは、SQL*Loaderクライアントは、データを個別のファイルに分割して複数のSQL*Loaderクライアントを起動しなくても、データのパラレル・ダイレクト・パス・ロードを自動的に開始できます。表をパラレル・ロード用に手動で準備し、PARALLELパラメータを設定するかわりに、1つのコマンドのみでSQL*Loaderを実行し、DEGREE_OF_PARALLELISMパラメータを使用して並列度を設定し、DIRECT=TRUEを設定することで、同じタスクを自動的に実行できます。

詳細は、Oracle DatabaseユーティリティのトピックSQL*Loaderのシャード自動パラレル・ロード・モードおよびSQL*Loaderを使用した表データの自動パラレル・ロードを参照してください。

この次の作業

要件に最適なOracle Globally Distributed Database構成を計画およびデプロイすることは、困難なタスクになることがあります。次のロードマップは、シャード・データベースの最初の計画からライフサイクル管理までのプロセスのガイドとして使用してください。