とはDbms_Redefinition
? Oracle docs は、オブジェクトの再定義のためのインターフェースを提供するパッケージであると述べています。
この「再定義」が正確に何を意味するのかを理解したいですか?この再定義は、DDL および DML コマンドとどう違うのですか? そして、「オンライン」とは何を意味するのでしょうか?
とはDbms_Redefinition
? Oracle docs は、オブジェクトの再定義のためのインターフェースを提供するパッケージであると述べています。
この「再定義」が正確に何を意味するのかを理解したいですか?この再定義は、DDL および DML コマンドとどう違うのですか? そして、「オンライン」とは何を意味するのでしょうか?
定義は、データ定義言語 (DDL) のように、データベース オブジェクトを定義することを意味します。
このコンテキストでの再定義は、データベース オブジェクトを再定義することを意味します。
DBMS_REDEFINITION が使用可能になる前は、データベース オブジェクトの再定義は、DDL スクリプトでさまざまな方法を使用して実行できました。DDL スクリプトを使用すると、一般に、再定義されているデータベース オブジェクトが一定期間ユーザーに利用できない (オフラインとも呼ばれる) ことがわかります。データベース オブジェクトがオフラインである時間が長ければ長いほど、ユーザー コミュニティの「満足度」は低くなります。
解決策は、ダウンタイムなしでデータベース オブジェクトの再定義を実行できる DBMS_REDEFINITION を使用することです。
このパッケージの典型的な使用例は、「通常の」テーブルをパーティション化されたテーブルまたはインデックス構成テーブルに変更することです。「オンライン」とは、アプリケーションを中断することなくこの変更を行うことができることを意味します (特定の状況下で)。
通常、このような変更を行う場合は、新しいテーブルを作成し、古いテーブルから新しいテーブルにデータをコピーする必要があります。次に、古いテーブルを削除して (アプリケーションを停止させます)、新しいテーブルの名前を変更する必要があります。この手順中に、アプリケーションが古いテーブルにデータを挿入し続けると、データが失われる可能性があります。