什么是Oracle的目录( Directory)
Tags: Oracle目录( Directory)目录权限
Oracle Directory(目录)可以让用户在Oracle数据库中灵活地对文件进行读写操作,极大地提高了Oracle的易用性和可扩展性。其语法如下所示:
1 | CREATE [OR REPLACE] DIRECTORY DIRECTORY AS 'PATHNAME'; |
创建和删除Directory的权限为:CREATE ANY DIRECTORY、DROP ANY DIRECTORY。赋予普通用户使用Directory的权限包括READ、WRITE、EXECUTE,也可以直接写ALL,如下所示:
1 2 | 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的例子:
1 2 3 4 5 6 7 8 9 | 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语句:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | ----查看用户的目录权限 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 / |