管理目录
通过基于专用 Exadata 基础结构的自治 AI 数据库,您可以在数据库中创建目录,并在其中存储文件,就像在操作系统文件系统中所做的那样。在导出和导入数据时,存储文件的这种功能尤其有用。
删除目录
使用数据库 DROP DIRECTORY 命令删除目录对象。
例如,以下命令将删除数据库目录对象 staging:
DROP DIRECTORY staging;
DROP DIRECTORY 命令不会删除目录中的文件。如果要删除目录和目录中的文件,请首先使用过程 DBMS_CLOUD.DELETE_FILE 删除这些文件。有关更多信息,请参见 DELETE_FILE Procedure 。
要删除目录,必须具有 DROP ANY DIRECTORY 系统权限。将向 ADMIN 用户授予 DROP ANY DIRECTORY 系统权限。ADMIN 用户可以将 DROP ANY DIRECTORY 系统权限授予其他用户。
有关详细信息,请参阅 Oracle Database 19c SQL Language Reference 中的 DROP DIRECTORY 或 Oracle Database 26ai SQL Language Reference 。
注:
- 如果只想删除该目录而不删除该目录中的文件,则在删除该目录后,您可以查看文件系统中的所有文件,包括所删除目录中的任何文件,如下所示:
CREATE OR REPLACE DIRECTORY ROOT_DIR AS '';
然后使用以下命令列出 ROOT_DIR 的内容:
SELECT * FROM DBMS_CLOUD.LIST_FILES('ROOT_DIR');
要与 ADMIN 以外的用户一起运行 DBMS_CLOUD.LIST_FILES,您需要向该用户授予对该目录的读取权限。有关更多信息,请参见 LIST_FILES Function 。
DROP DIRECTORY命令不会删除底层文件系统目录。自治 AI 数据库管理底层文件系统目录;用户不会删除文件系统目录。
列出目录的内容
使用函数 DBMS_CLOUD.LIST_FILES 列出目录的内容。
例如,要列出 stage 目录的内容,请运行以下查询:
SELECT * FROM DBMS_CLOUD.LIST_FILES('STAGE');
要与 ADMIN 以外的用户一起运行 DBMS_CLOUD.LIST_FILES,您需要向该用户授予对该目录的读取权限。有关更多信息,请参见 LIST_FILES Function 。
在云对象存储和目录之间复制文件
使用过程 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 是 Oracle Cloud Infrastructure Swift URI,用于指定 us-phoenix-1 区域中 mybucket 存储桶中的 cwallet.sso 文件。(idthydc0kinr 是存储桶所在的对象存储名称空间。)有关支持的 URI 格式的信息,请参见 Cloud Object Storage URI Formats 。
要与 ADMIN 以外的用户一起运行 DBMS_CLOUD.GET_OBJECT,您需要向该用户授予对该目录的写入权限。
要与 ADMIN 以外的用户一起运行 DBMS_CLOUD.PUT_OBJECT,您需要向该用户授予对该目录的读取权限。
有关更多信息,请参见 GET_OBJECT Procedure 和 PUT_OBJECT Procedure 。
相关主题