19.2 DBFS SecureFilesストア・ファイル・システムの使用

DBFSコンテンツAPIには、SecureFilesストア・ファイル・システムにアクセスして管理するためのメソッドが用意されています。

19.2.1 DBFSコンテンツAPIの操作の例

SecureFilesストア・ファイルシステムに移入するための新しいファイルおよびディレクトリ要素を作成できます。

SecureFilesストアの設定のステップを実行して、DBFSコンテンツAPI権限を設定し、少なくとも1つのSecureFilesストア参照ファイル・システムを作成し、マウント・ポイント/mnt1の下にマウントした場合、例19-1のようにして新しいファイルおよびディレクトリ要素を作成できます。

例19-1 DBFSコンテンツAPIの操作

CONNECT tjones
Enter password: <password>

DECLARE
   ret INTEGER;
   b   BLOB;
   str VARCHAR2(1000)  := '' || chr(10) ||
    '#include <stdio.h>' || chr(10) ||
    '' || chr(10) ||
    'int main(int argc, char** argv)' || chr(10) ||
    '{' || chr(10) ||
    '    (void) printf("hello world\n");' || chr(10) ||
    '    RETURN 0;' || chr(10) ||
    '}' || chr(10) ||
    '';
   properties      DBMS_DBFS_CONTENT.PROPERTIES_T;

BEGIN
   properties('posix:mode') := DBMS_DBFS_CONTENT.propNumber(16777);
                                           --  drwxr-xr-x  --
   properties('posix:uid')  := DBMS_DBFS_CONTENT.propNumber(0);
   properties('posix:gid')  := DBMS_DBFS_CONTENT.propNumber(0);
   DBMS_DBFS_CONTENT.createDirectory(
            '/mnt1/FS1',
            properties); 

   properties('posix:mode') := DBMS_DBFS_CONTENT.propNumber(33188);
                                            --  -rw-r--r--  --
   DBMS_DBFS_CONTENT.createFile(
            '/mnt1/FS1/hello.c',
            properties,
            b);

    DBMS_LOB.writeappend(b, length(str), utl_raw.cast_to_raw(str));
    COMMIT;
END;
/
SHOW ERRORS;

-- verify newly created directory and file

SELECT pathname, pathtype, length(filedata),
      utl_raw.cast_to_varchar2(filedata)
      FROM dbfs_content
         WHERE pathname LIKE '/mnt1/FS1%'
         ORDER BY pathname;

ファイル・システムは、DBMS_DBFS_CONTENTを使用してPL/SQLから移入およびアクセスできます。ファイル・システムは、dbfs_contentおよびdbfs_content_propertiesビューを使用してSQLから読取り専用でアクセスできます。

また、ファイル・システムは、FUSEを使用してマウントされているときは通常のファイル・システムAPIおよびUNIXユーティリティで、またはスタンドアロンのdbfs_clientツール(FUSEが使用不可または設定されていない環境)によって、移入およびアクセスできます。

19.2.2 SecureFilesストア・ファイル・システムの削除

unmountStoreメソッドを使用して、SecureFilesストア・ファイル・システムを削除できます。

このメソッドにより、ファイル・システムを参照するすべてのストアがメタデータ表から削除され、基礎となるファイル・システム表が削除されます。プロシージャの実行は、DDLに類似しています(実行の前後に自動コミット)。

  1. ストアをアンマウントします。
    CONNECT sfs_demo/<password>
    
    DECLARE
      BEGIN
        DBMS_DBFS_CONTENT.UNMOUNTSTORE(
          store_name    => 'FS1',
          store_mount   => 'mntl';
        );
        COMMIT;
    END;
    /
    

    説明:

    • store_nameFS1で、大/小文字を区別する一意のユーザー名です。

    • store_mountはマウント・ポイントです。

  2. ストアを登録解除します。
    CONNECT sfs_demo/<password>
    EXEC DBMS_DBFS_CONTENT.UNREGISTERSTORE(store_name => 'FS1');
    COMMIT;
    

    store_nameは、表SFS_DEMO.T1を使用するSecureFilesストアFS1です。

  3. ストアを削除します。
    CONNECT sfs_demo/<password>;
    EXEC DBMS_DBFS_SFS.DROPFILESYSTEM(store_name => 'FS1');
    COMMIT;
    

    store_nameは、表SFS_DEMO.T1を使用するSecureFilesストアFS1です。