暂无图片
暂无图片
5
暂无图片
暂无图片
暂无图片

数据库对象管理Oracle模式管理目录

2023-04-12
517

OceanBase 数据库的 Oracle 模式支持将一个共享文件系统(NFS)上的文件夹映射成为一个数据库目录对象。目录对象主要在 UTL_FILE 系统包中使用。

创建目录

您可以使用 CREATE DIRECTORY 语句从数据库中创建目录对象。创建目录对象主要用于为共享文件系统上的文件夹指定别名。

创建目录的语法如下:

CREATE [OR REPLACE] DIRECTORY <目录对象名> AS <文件系统路径>;

其中:

  • OR REPLACE 表示如果对应的目录对象名已存在,则使用新的文件系统路径替代原有的目录定义。

创建一个目录 sql_file_dir 的示例如下:

obclient> CREATE OR REPLACE DIRECTORY sql_file_dir AS '/usr/sqldump';

删除目录

您可以使用 DROP DIRECTORY 语句从数据库中删除目录对象。

注意

当 PL 正在访问相关文件系统中的文件时,不要删除目录。

删除目录的语法如下:

obclient> DROP DIRECTORY <目录对象名>;

删除目录 sql_file_dir 的示例如下:

obclient> DROP DIRECTORY sql_file_dir;

注意事项

创建目录对象时,需要注意以下事项:

  • OceanBase 数据库不会自动为用户在指定的文件系统路径(例如,/usr/sqldump)下创建文件夹,各级文件夹必须由用户手动创建,例如,用户需要手动执行 mkdir

  • OceanBase 数据库不会检查或判断指定的文件系统路径是否存在以及是否有相应的读写权限。

  • 由于 OceanBase 数据库是分布式数据库,在创建目录对象时,需要保证 OBServer 所有节点都能访问一致的绝对路径,故文件系统路径通常是共享文件系统(例如,NFS)上的一个路径。

  • 创建目录对象必须具有 CREATE ANY DIRECTORY 系统权限。

删除目录对象时,需要注意以下事项:

  • 删除目录对象不会删除共享文件系统上关联的文件夹。

  • 删除目录对象必须具有 DROP ANY DIRECTORY 系统权限。

目录相关视图

目录对象创建成功后,您可以通过以下视图查看目录对象的状态:

  • DBA_DIRECTORIES

    DBA_DIRECTORIES 视图用于展示租户中所有目录对象的定义,只有 sys 用户或者对该视图有查询权限的用户可以查看。

    字段名称类型是否可以为 NULL描述
    OWNERVARCHAR2(128)NO目录所属的 Owner
    DIRECTORY_NAMEVARCHAR2(128)NO目录名称
    DIRECTORY_PATHVARCHAR2(4000)NO目录路径
    ORIGIN_CON_IDNUMBER(38)NO租户 ID
  • ALL_DIRECTORIES

    ALL_DIRECTORIES 视图用于展示当前用户可访问的目录对象的定义。

    字段名称类型是否可以为 NULL描述
    OWNERVARCHAR2(128)NO目录所属的 Owner
    DIRECTORY_NAMEVARCHAR2(128)NO目录名称
    DIRECTORY_PATHVARCHAR2(4000)NO目录路径
    ORIGIN_CON_IDNUMBER(38)NO租户 ID
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

杨磊
关注
暂无图片
获得了706次点赞
暂无图片
内容获得191次评论
暂无图片
获得了910次收藏