ディレクトリの管理

Autonomous Database on Dedicated Exadata Infrastructureでは、OSファイル・システムと同様に、ファイルを格納できるディレクトリをデータベース内に作成できます。このようにファイルを格納できることは、データをエクスポートおよびインポートする際に特に便利です。

ディレクトリの削除

ディレクトリ・オブジェクトを削除するには、データベースのDROP DIRECTORYコマンドを使用します。

たとえば、次のコマンドは、データベース・ディレクトリ・オブジェクトstagingを削除します:

DROP DIRECTORY staging;

DROP DIRECTORYコマンドは、ディレクトリ内のファイルを削除しません。ディレクトリおよびディレクトリ内のファイルを削除する場合は、まず、プロシージャDBMS_CLOUD.DELETE_FILEを使用してファイルを削除します。詳細は、DELETE_FILEプロシージャを参照してください。

ディレクトリを削除するには、DROP ANY DIRECTORYシステム権限が必要です。ADMINユーザーには、DROP ANY DIRECTORYシステム権限が付与されます。ADMINユーザーは、DROP ANY DIRECTORYシステム権限を他のユーザーに付与できます。

詳細は、DROP DIRECTORYを参照してください。

ノート

  • ディレクトリを削除するが、そのディレクトリ内のファイルを削除しない場合は、ディレクトリを削除した後で、次のように、削除したディレクトリにあったファイルを含むファイル・システム内のすべてのファイルを表示できます:

    CREATE OR REPLACE DIRECTORY ROOT_DIR AS '';

    その後、次のコマンドを使用してROOT_DIRの内容を一覧表示します:

    SELECT * FROM DBMS_CLOUD.LIST_FILES('ROOT_DIR');

    ADMIN以外のユーザーでDBMS_CLOUD.LIST_FILESを実行するには、そのユーザーにそのディレクトリに対する読取り権限を付与する必要があります。詳細は、LIST_FILESファンクションを参照してください。

  • DROP DIRECTORYコマンドは、基礎となるファイル・システム・ディレクトリを削除しません。Autonomous Databaseが基礎となるファイル・システム・ディレクトリを管理します。ユーザーがファイル・システム・ディレクトリを削除することはありません。

ディレクトリの内容の一覧表示

ディレクトリの内容を一覧表示するには、DBMS_CLOUD.LIST_FILESファンクションを使用します。

たとえば、stageディレクトリの内容を一覧表示するには、次の問合せを実行します:

SELECT * FROM DBMS_CLOUD.LIST_FILES('STAGE');

ADMIN以外のユーザーでDBMS_CLOUD.LIST_FILESを実行するには、そのユーザーにそのディレクトリに対する読取り権限を付与する必要があります。詳細は、LIST_FILESファンクションを参照してください。

クラウド・オブジェクト・ストレージとディレクトリ間でのファイルのコピー

ディレクトリからクラウド・オブジェクト・ストレージにファイルをコピーするには、プロシージャDBMS_CLOUD.PUT_OBJECTを使用します。クラウド・オブジェクト・ストレージからディレクトリにファイルをコピーするには、プロシージャDBMS_CLOUD.GET_OBJECTを使用します。

たとえば、クラウド・オブジェクト・ストレージからstageディレクトリにファイルをコピーするには、次のコマンドを実行します:

BEGIN
   DBMS_CLOUD.GET_OBJECT(
   credential_name => 'DEF_CRED_NAME',
   object_uri => 'https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/idthydc0kinr/mybucket/cwallet.sso',
   directory_name => 'STAGE');
END;
/

この例では、object_uriは、us-phoenix-1リージョンにあるmybucketバケット内のcwallet.ssoファイルを指定するOracle Cloud Infrastructure Swift URIです。(idthydc0kinrは、バケットが存在するオブジェクト・ストレージ・ネームスペースです。)サポートされているURIフォーマットの詳細は、クラウド・オブジェクト・ストレージのURIフォーマットを参照してください。

ADMIN以外のユーザーでDBMS_CLOUD.GET_OBJECTを実行するには、そのユーザーにディレクトリに対する書込み権限を付与する必要があります。

ADMIN以外のユーザーでDBMS_CLOUD.PUT_OBJECTを実行するには、そのユーザーにディレクトリに対する読取り権限を付与する必要があります。

詳細は、GET_OBJECTプロシージャおよびPUT_OBJECTプロシージャを参照してください。