---
title: github-fill
description: 管理目录 OceanBase 数据库的 Oracle 模式支持将一个共享文件系统（NFS）上的文件夹映射成为一个数据库目录对象。目录对象主要在 UTL_FILE 系统包中使用。 创建目录 您可以使用 CREATE DIRECTORY 语句从数据库中创建目录对象。创建目录对象主要用于为共享文件系统上的文件夹指定别名。 …
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.5.0

# 管理目录

更新时间：2026-03-25 08:48:59

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.5.0/zh-CN/700.reference/300.database-object-management/200.manage-object-of-oracle-mode/900.manage-directories-of-oracle-mode.md)  

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

## 创建目录

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

### 注意事项

创建目录对象时，需要注意以下事项：

- OceanBase 数据库不会自动为用户在指定的文件系统路径（例如，`/usr/sqldump`）下创建文件夹，各级文件夹必须由用户手动创建，例如，用户需要手动执行 `mkdir`。
 - OceanBase 数据库不会检查或判断指定的文件系统路径是否存在以及是否有相应的读写权限。
 - 由于 OceanBase 数据库是分布式数据库，在创建目录对象时，需要保证所有 OBServer 节点都能访问一致的绝对路径，故文件系统路径通常是共享文件系统（例如，NFS）上的一个路径。
 - 创建目录时，当前用户需要拥有 `CREATE ANY DIRECTORY` 权限。
 - 创建目录时，需要通过全局变量 `secure_file_priv` 设置待访问的文件系统路径。

  全局变量 `secure_file_priv` 用于控制数据导入或导出时可以访问的路径。关于全局变量 `secure_file_priv` 的详细设置及说明请参见 [secure_file_priv](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004478743)。

  设置方法如下：

     1. 在 OBServer 节点上，租户管理员通过本地 Unix Socket 连接集群的 Oracle 租户。

       连接示例如下：

       ```shell
       obclient -S /home/admin/oceanbase/run/sql.sock -uroot@sys -p********

       ```

       通过本地 Unix Socket 连接 OceanBase 数据库的具体操作及说明，请参见 [secure_file_priv](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004478743)。
     2. 配置用户可以访问的文件系统路径 `/usr/sqldump`。

       ```sql
       SET GLOBAL secure_file_priv = "/usr/sqldump";

       ```

  命令执行成功后，需要重启会话，修改才能生效。

### 语句及示例

创建目录的语法如下：

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

```

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

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

```sql
CREATE OR REPLACE DIRECTORY sql_file_dir AS '/usr/sqldump';

```

## 删除目录

您可以使用 `DROP DIRECTORY` 语句从数据库中删除目录对象。创建目录时，当前用户需要拥有 `DROP ANY DIRECTORY` 权限。

### 注意事项

删除目录对象时，需要注意以下事项：

- 删除目录对象不会删除共享文件系统上关联的文件夹。
 - 删除目录对象必须具有 `DROP ANY DIRECTORY` 系统权限。
 - 当 PL 正在访问相关文件系统中的文件时，不要删除目录。

### 语句及示例

删除目录的语法如下：

```sql
DROP DIRECTORY <目录对象名>;

```

删除目录 `sql_file_dir` 的示例如下：

```sql
DROP DIRECTORY sql_file_dir;

```

## 目录相关视图

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

- `DBA_DIRECTORIES`

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

  | **字段名称** | **类型** | **描述** |
  | --- | --- | --- |
  | OWNER | VARCHAR2(128) | 目录所属的 Owner |
  | DIRECTORY_NAME | VARCHAR2(128) | 目录名称 |
  | DIRECTORY_PATH | VARCHAR2(4000) | 目录路径 |
  | ORIGIN_CON_ID | NUMBER(38) | 租户 ID |
 - `ALL_DIRECTORIES`

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

  | **字段名称** | **类型** | **描述** |
  | --- | --- | --- |
  | OWNER | VARCHAR2(128) | 目录所属的 Owner |
  | DIRECTORY_NAME | VARCHAR2(128) | 目录名称 |
  | DIRECTORY_PATH | VARCHAR2(4000) | 目录路径 |
  | ORIGIN_CON_ID | NUMBER(38) | 租户 ID |

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
