18.6 DBFSファイルシステムの縮小および再編成

DBFSでは、オンライン・ファイル・システム再編成を使用してそれ自体を縮小し、割り当てられた領域をそれを含む表領域に解放できます。

18.6.1 DBFSファイル・システムの変更について

DBFSファイル・システムは、他のデータベース・セグメントと同様に、ファイルおよびディレクトリの追加または拡張によって動的に増加します。

増加は、DBFSファイル・システムを保持する表領域から、ファイル・システムを構成する様々なセグメントへの領域の割当てによって発生します。

ただし、DBFSファイル・システム内のファイルおよびディレクトリが削除されたとしても、割り当てられた領域は、これが含まれる表領域には解放されずに存在し続け、他のDBFSエンティティで使用できます。オンライン・ファイルシステム再編成というプロセスは、DBFSファイルシステムを縮小することにより、この問題を解消します。

DBFSオンライン・ファイルシステム再編成ユーティリティの内部ではOracle Databaseオンライン再定義機能が使用されます。その際に、元のファイルシステム、およびオンライン再定義モデルの基本オブジェクトと暫定オブジェクトに対応する一時プレースホルダが使用されます。

関連項目:

オンライン再定義の詳細は、『Oracle Database管理者ガイド』を参照してください

18.6.2 オンライン・ファイルシステム再編成の利点

DBFSオンライン・ファイルシステム再編成は、次のような一定のメリットがある強力なデータ移動機能です。

それらは次のとおりです。

  • オンラインである: 再編成が行われても、ファイルシステムはすべてのアプリケーションに対する読取りおよび書込み操作が完全に使用可能なままです。

  • 構造を再編成できる: DBFSファイルシステムの基礎となる物理構造および組織を、次のような様々な方法で変更できます。

    • パーティション化されていないファイルシステムを、パーティション化されたファイルシステムに変換できます(この逆も可能)。

    • 圧縮、暗号化および重複除外プロパティを含む特定のSecureFiles LOBプロパティを選択して任意の組合せで有効化または無効化できます。

    • ファイルシステム内のデータを表領域間または同じ表領域内で移動できます。

  • 複数のファイルシステムを同時に再編成できる: 複数の異なるファイルシステムを同時に再編成できます。同じ名前を持つ一時ファイルシステムが存在せず、表領域に十分な空き領域がある場合は通常、再編成するファイルシステムごとに領域要件を2倍にします。

18.6.3 オンライン・ファイルシステム再編成の可用性の確認

Oracle Database 12c以降のDBFSは、オンライン・ファイルシステム再編成をサポートしています。以前のバージョンの一部もこの機能をサポートしています。

使用中のバージョンがサポートしているかどうかを確認するには、次に示すように、DBFS PL/SQLパッケージ内の特定の機能について問い合せます。

  • DBFS PL/SQLパッケージ内の特定の機能について問い合せます。

$ sqlplus / as sysdba
SELECT * FROM dba_procedures
WHERE   owner = 'SYS'
    and object_name = 'DBMS_DBFS_SFS'
    and procedure_name = 'REORGANIZEFS';

この問合せによってこの出力のような単一行が戻される場合、DBFSインストールはオンライン・ファイルシステム再編成をサポートしています。問合せによっていずれの行も戻されない場合、DBFSインストールは、アップグレードするか、バグ10051996用のパッチを適用する必要があります。

 
OWNER
----------------------------------------------------------------------------------
OBJECT_NAME
----------------------------------------------------------------------------------
PROCEDURE_NAME
----------------------------------------------------------------------------------
OBJECT_ID|SUBPROGRAM_ID|OVERLOAD                                |OBJECT_TYPE  |AGG|PIP
----------|-------------|-----------------------------------|-------------|---|---
IMPLTYPEOWNER
----------------------------------------------------------------------------------
IMPLTYPENAME
----------------------------------------------------------------------------------
PAR|INT|DET|AUTHID
---|---|---|------------
SYS
DBMS_DBFS_SFS
REORGANIZEFS
     11424|           52|(null)                                  |PACKAGE      |NO |NO
(null)
(null)
NO |NO |NO |CURRENT_USER

18.6.4 オンライン・ファイルシステム再編成に必要な権限

データベース・ユーザーは、オンライン・ファイルシステム再編成を実行するには、次の一連の権限が必要です。

ユーザーには、次の権限が必要です。

  • ALTER ANY TABLE
  • DROP ANY TABLE
  • LOCK ANY TABLE
  • CREATE ANY TABLE
  • SELECT ANY TABLE
  • REDEFINE ANY TABLE
  • CREATE ANY TRIGGER
  • CREATE ANY INDEX
  • CREATE TABLE
  • CREATE MATERIALIZED VIEW
  • CREATE TRIGGER

18.6.5 オンライン・ファイルシステム再編成の起動

一時DBFSファイルシステムを作成することにより、オンライン・ファイルシステム再編成を実行できます。

ノート:

SYSスキーマに一時DBFSファイルシステムを作成していないでください。SYSスキーマに一時DBFSファイルシステムを作成すると、DBFSオンライン・ファイルシステム再編成は機能しません。
  1. 目的の新規組織および構造を使用して一時DBFSファイルシステムを作成します。これには、目的のターゲット表領域(再編成するファイルシステムと同じ表領域である場合があります)、目的のターゲットSecureFiles LOB記憶域プロパティ(圧縮、暗号化または重複除外)などが含まれます。
  2. PL/SQLプロシージャを起動し、データ移動用として新しく作成した一時ファイルシステムを使用してDBFSファイルシステムを再編成します。
  3. 再編成プロシージャが完了したら、一時ファイルシステムを削除します。

次の例は、一時ファイルシステム名TMP_FSを使用して、表領域TS1のDBFSファイルシステムFS1を新しい表領域TS2に再編成します。ここでは、すべてのファイルシステムはデータベース・ユーザーdbfs_userに属します。

$ cd $ORACLE_HOME/rdbms/admin
$ sqlplus dbfs_user/***
 
@dbfs_create_filesystem TS2 TMP_FS
EXEC DBMS_DBFS_SFS.REORGANIZEFS('FS1', 'TMP_FS');
@dbfs_drop_filesystem TMP_FS
QUIT;

説明:

  • TMP_FSには、任意の有効な名前を使用できます。これは、一時プレースホルダとして使用することを目的としており、削除することも(前述の例のように)、完全に具体化された元のファイルシステムのpoint-in-timeスナップショットとして保持することもできます。

  • FS1は、元のファイルシステムであり、再編成試行の影響は受けません。これは、再編成時に、SQL、PL/SQL、およびdbfs_clientのマウントとコマンドラインを含むすべてのDBFS操作で使用可能なままです。再編成が終了すると、FS1は、TMP_FSを作成するために使用される新規構造および組織になります(またはこの逆。TMP_FSは、本来FS1に使用されていた構造および組織になります)。なんらかの理由により、再編成が失敗すると、DBFSはFS1の内部状態をクリーン・アップしようとします。

  • TS2には、FS1内のアクティブな(削除されていない)ファイルおよびディレクトリをすべて収容するために十分な領域が必要です。

  • 縮小の一環としてファイルシステムが同じ表領域内で移動する場合、TS1には、FS1によって使用される領域量の少なくとも2倍の量が必要です。