ディレクトリの管理
Autonomous Database on Dedicated Exadata Infrastructureでは、OSファイル・システムと同様に、ファイルを格納できるディレクトリをデータベース内に作成できます。このようにファイルを格納できることは、データをエクスポートおよびインポートする際に特に便利です。
- ディレクトリの削除
ディレクトリ・オブジェクトを削除するには、データベースのDROP DIRECTORY
コマンドを使用します。 - ディレクトリの内容の一覧表示
ディレクトリの内容を一覧表示するには、DBMS_CLOUD.LIST_FILES
ファンクションを使用します。 - クラウド・オブジェクト・ストレージとディレクトリ間でのファイルのコピー
ディレクトリからクラウド・オブジェクト・ストレージにファイルをコピーするには、プロシージャDBMS_CLOUD.PUT_OBJECT
を使用します。クラウド・オブジェクト・ストレージからディレクトリにファイルをコピーするには、プロシージャDBMS_CLOUD.GET_OBJECT
を使用します。
親トピック: 開発ワークフロー
ディレクトリの削除
ディレクトリ・オブジェクトを削除するには、データベースの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プロシージャを参照してください。
親トピック: ディレクトリの管理