什么是Oracle的目录( Directory)

简介: 什么是Oracle的目录( Directory)

Oracle Directory(目录)可以让用户在Oracle数据库中灵活地对文件进行读写操作,极大地提高了Oracle的易用性和可扩展性。其语法如下所示:

CREATE [OR REPLACE] DIRECTORY DIRECTORY AS 'PATHNAME';

创建和删除Directory的权限为:CREATE ANY DIRECTORY、DROP ANY DIRECTORY。赋予普通用户使用Directory的权限包括READ、WRITE、EXECUTE,也可以直接写ALL,如下所示:

GRANT READ,WRITE,EXECUTE ON DIRECTORY EXP_DIR_LHR TO LHR;
GRANT ALL ON DIRECTORY EXP_DIR_LHR TO LHR;

需要注意的是,在创建Directory数据库对象时对应的路径不存在也不会报错,Oracle数据库并不会到操作系统上检验路径的存在性,只有在使用时才会校验,因此在创建Directory时谨记对应的路径的真实存在性,否则可能会报ORA-29913或ORA-29400的错误。

下面给出一个创建Oracle Directory的例子:

SYS@lhrdb> CREATE OR REPLACE DIRECTORY EXP_DIR_LHR AS '/tmp';
Directory created.
SYS@lhrdb> GRANT READ,WRITE ON DIRECTORY EXP_DIR_LHR TO LHR;
Grant succeeded.
SYS@lhrdb> COL DIRECTORY_PATH FORMAT A20
SYS@lhrdb> SELECT DIRECTORY_NAME ,DIRECTORY_PATH FROM DBA_DIRECTORIES WHERE DIRECTORY_NAME='EXP_DIR_LHR';
DIRECTORY_NAME                 DIRECTORY_PATH
------------------------------ --------------------
EXP_DIR_LHR                    /tmp

查看用户的目录权限可以使用如下的SQL语句:


----查看用户的目录权限
column grantee format a10
column grantor format a10
column dir_name format a20
column dir_path format a50
column privilege format a10

break on dir_name
select
    d.directory_name dir_name,
    d.directory_path dir_path,
    p.privilege,
    p.grantee,
    p.grantor
from
    dba_tab_privs p,
    dba_directories d
where
    p.table_name = d.directory_name and
    p.grantee = upper('&user')
order by
    d.directory_name,
    p.privilege
/
目录
相关文章
|
Oracle 关系型数据库
Oracle归档目录修改的坑,请留意
Oracle归档目录修改的坑,请留意
144 0
Oracle归档目录修改的坑,请留意
|
存储 监控 关系型数据库
|
Oracle 关系型数据库 测试技术