關於目錄物件

pingley發表於2012-05-31
關於目錄物件
oracle 目錄是一個資料庫物件,指向一個作業系統目錄。該目錄被oracle 用於讀寫。
如果你為某個作業系統目錄建立了一個目錄物件,那麼如果該作業系統目錄下還有
子目錄,子目錄是不能夠透過你所建立的目錄物件訪問的,你的為每個需要訪問的
作業系統目錄建立目錄物件。
建立的語法格式:
SQL> create or replace directory temp_dir as '/tmp';
Directory created.
注意:as 子句指定的目錄在作業系統上面不存在,目錄物件也是可以建立成功的。
所以在建立目錄物件前,確保你已經建立也相應的作業系統目錄或者選擇了已經
存在的作業系統目錄,並確保安裝資料庫軟體的OS使用者在該目錄下有read,write 的許可權。
當目錄物件建立成功以後,你就可以把對目錄物件的相應許可權授予給其他需要使用的使用者。
SQL> grant read on directory temp_dir to hr;
Grant succeeded.
SQL> revoke read on directory temp_dir from hr;
Revoke succeeded.
建立目錄物件需要create any directory 系統許可權。刪除directory object 目錄物件需要
drop any directory 系統許可權。這兩項許可權最好不好授權給其他非DBA使用者。因為很可能
導致使用者覆蓋掉已經存在的作業系統檔案,或者因為刪除了某個目錄物件導致不可用。
資料庫中已經存在的目錄物件可以檢視dba_directories 。
SQL> select * from dba_directories;
OWNER      DIRECTORY_NAME             DIRECTORY_PATH
---------- -------------------------- ----------------------------------------
SYS        TEMP_DIR                   /tmp
SYS        ADMIN_BAD_DIR              c:\sqlloader\bad
SYS        ADMIN_LOG_DIR              c:\sqlloader\log
SYS        EXT_TAB_DATA               c:\sqlloader\external
SYS        ADMIN_DAT_DIR              c:\sqlloader\ext
SYS        XMLDIR                     E:\oracle\zeng\product\11.2.0\dbhome_1\r
                                      dbms\xml
SYS        DATA_DIR                   c:\sqlloader\external
SYS        DATA_PUMP_DIR              E:\oracle\zeng\admin\oracle\dpdump\
SYS        ORACLE_OCM_CONFIG_DIR      E:\oracle\zeng\product\11.2.0\dbhome_1\c
OWNER      DIRECTORY_NAME             DIRECTORY_PATH
---------- -------------------------- ----------------------------------------
                                      cr\state
某個使用者可用的目錄物件可以檢視all_directories
SQL> select * from all_directories;
OWNER      DIRECTORY_NAME             DIRECTORY_PATH
---------- -------------------------- -----------------------
SYS        ADMIN_BAD_DIR              c:\sqlloader\bad
SYS        ADMIN_LOG_DIR              c:\sqlloader\log
SYS        EXT_TAB_DATA               c:\sqlloader\external
SYS        ADMIN_DAT_DIR              c:\sqlloader\ext
SYS        DATA_DIR                   c:\sqlloader\external
SQL> select * from user_directories;
select * from user_directories
              *
ERROR at line 1:
ORA-00942: 表或檢視不存在
不存在 user_directories 資料字典。
小結:目錄物件對於外部表,資料的匯入匯出都需要用到。所以對他做一個全面的瞭解是由必要的。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26110315/viewspace-731519/,如需轉載,請註明出處,否則將追究法律責任。

相關文章