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
MOS上對DIRECTORY的解釋(266875.1):
(1)、基于服務端 vs 基于客戶端
DIRECTORY變量指出了expdp導出數據泵或impdp導入數據泵將dump文件、log文件以及SQL文件(僅適用于impdp)寫到什么路徑。
因為導出數據泵和導入數據泵都是基于服務端的,不是基于客戶端的,因此輸出文件的路徑都是相對于服務端目錄的路徑。數據泵要求將目錄路徑作為一個目錄對象。一個目錄對象將文件系統的一個目錄路徑映射為一個名稱。
(2)、如何創建一個目錄對象?
為了創建目錄,必須具有DBA角色或者賦予了CREATE ANY DIRECTORY權限。
示例:
Window平臺
CONNECT?system/manager??
CREATE?OR?REPLACE?DIRECTORY?my_dir?as?'D:\DataPump';??
CREATE?OR?REPLACE?DIRECTORY?my_logdir?as?'E:\logs';??
GRANT?read, write?ON?DIRECTORY?my_dir?TO?scott;??
GRANT?read, write?ON?DIRECTORY?my_logdir?TO?scott;
Unix平臺
CONNECT?system/manager??
GRANT?CREATE?ANY?DIRECTORY?TO?scott;??
CONNECT?scott/tiger??
CREATE?OR?REPLACE?DIRECTORY?my_dir?as?'/usr/DataPump';??
CREATE?OR?REPLACE?DIRECTORY?my_logdir?as?'/usr/logs';?
如果普通用戶被賦予了CREATE ANY DIRECTORY權限,那么用戶就自動具備目錄的READ和WRITE權限。
注意:CREATE DIRECTORY語句不會創建磁盤的真實目錄,如果目錄是無效的,數據泵作業會報錯:
ORA-39002: invalid operation?
ORA-39070: Unable to open the log file.?
ORA-29283: invalid file operation?
ORA-06512: at "SYS.UTL_FILE", line 475?
ORA-29283: invalid file operation
(3)、如何查詢可用的目錄?
可以使用如下SQL查詢具有READ和WRITE權限的目錄:
SET?lines?80?
COL?grantee?FORMAT?a20?
COL?privilege?FORMAT?a10?
SELECT?directory_name,?grantee,?privilege?
??FROM?user_tab_privs?t,?all_directories?d???
?WHERE?t.table_name(+)=d.directory_name???
?ORDER?BY?1,2,3;
DIRECTORY_NAME?????????????????GRANTEE??????????????PRIVILEGE?
------------------------------?--------------------?----------?
DATA_PUMP_DIR??????????????????EXP_FULL_DATABASE????READ?
DATA_PUMP_DIR??????????????????EXP_FULL_DATABASE????WRITE?
DATA_PUMP_DIR??????????????????IMP_FULL_DATABASE????READ?
DATA_PUMP_DIR??????????????????IMP_FULL_DATABASE????WRITE?
MY_DIR?????????????????????????SCOTT????????????????READ?
MY_DIR?????????????????????????SCOTT????????????????WRITE?
MY_DIR?????????????????????????SYSTEM???????????????READ?
MY_DIR?????????????????????????SYSTEM???????????????WRITE?
MY_LOGDIR??????????????????????SCOTT????????????????READ??
MY_LOGDIR??????????????????????SCOTT????????????????WRITE??
MY_LOGDIR??????????????????????SYSTEM???????????????READ??
MY_LOGDIR??????????????????????SYSTEM???????????????WRITE??
...
(4)、需要的操作系統權限。
對目錄對象的READ或WRITE權限僅僅表示Oracle將會替你讀或寫這個文件。你并沒有訪問Oracle以外文件的權限,除非你具備合適的操作系統權限。
(5)、數據泵如何決定文件的路徑
5.1 如果目錄對象是文件標示符的一部分,那么目錄對象指定的路徑就需要使用。在目錄MY_DIR創建dump文件的示例:
> expdp?scott/tiger?DUMPFILE=my_dir:expdp_s.dmp?NOLOGFILE=Y
5.2 如果目錄對象不代表一個文件,那么就需要使用DIRECTORY變量命名的目錄對象。目錄MY_DIR中創建dump文件,目錄MY_DIR_LOG中創建日志文件的示例:
> expdp?scott/tiger?DIRECTORY=my_dir?DUMPFILE=expdp_s.dmp?\?
LOGFILE=my_logdir:expdp_s.log
5.3 如果沒有明確目錄對象,也沒有以DIRECTORY變量命名的目錄對象,那么環境變量DATA_PUMP_DIR將會使用。環境變量是在在運行導出和導入數據泵應用的客戶端系統中使用操作系統命令定義的,分配給基于客戶端環境變量的取值必須和基于服務端的目錄對象一致,且必須首先在服務器端建立。
目錄MY_DIR中創建dump文件和MY_DIR_LOG中創建日志文件的示例:
在使用expdp的客戶端機器上,設定環境變量:
-- On windows, place all expdp parameters on one single line:
C:\>?set?DATA_PUMP_DIR=MY_DIR??
C:\>?expdp?scott/tiger@my_db_alias?DUMPFILE=expdp_s.dmp?
LOGFILE=my_logdir:expdp_s.log
注意環境變量DATA_DUMP_DIR對應的目錄名稱是大小寫敏感的。設定錯誤的DATA_PUMP_DIR環境變量會報錯,例如:DATA_PUMP_DIR=My_Dir:
ORA-39002: invalid operation?
ORA-39070: Unable to open the log file.?
ORA-39087: directory name My_Dir is invalid
5.4 如果之前三種情況都沒有創建目錄對象,作為一個具有權限的用戶(例如具有EXP_FULL_DATABASE或IMP_FULL_DATABASE角色),那么數據泵試圖使用默認的基于服務器端的目錄對象,DATA_PUMP_DIR。理解數據泵不會創建DATA_PUMP_DIR目錄對象是非常重要的。僅當授權用戶未使用任何之前提到的機制創建的目錄對象時,才會嘗試使用DATA_PUMP_DIR。這個默認的目錄對象必須首先由DBA創建。不要將這個和同名的基于客戶端的環境變量相混淆。
首先,清空DATA_PUMP_DIR環境變量:
C:\>?set?DATA_PUMP_DIR=
創建DATA_PUMP_DIR的目錄:
CONNECT?SYSTEM/MANAGER???
CREATE?OR?REPLACE?DIRECTORY?data_pump_dir?AS?'D:\DataPump';???
GRANT?read,?write?ON?DIRECTORY?data_pump_dir?TO?scott;
--?On?windows,?place?all?expdp?parameters?on?one?single?line:?
C:\>?expdp?system/manager@my_db_alias?DUMPFILE=expdp_s.dmp??
LOGFILE=expdp_s.log?SCHEMAS=scott
如果SCOTT用戶不是授權用戶,不能使用默認的DATA_PUMP_DIR。
ORA-39002: invalid operation?
ORA-39070: Unable to open the log file.?
ORA-39145: directory object parameter must be specified and non-null
用戶SCOTT的解決方法:如上面5.3,SCOTT可以設置環境變量DATA_PUMP_DIR為MY_DIR:
--?On?windows,?place?all?expdp?parameters?on?one?single?line:
C:\>?set?DATA_PUMP_DIR=MY_DIR
C:\>?expdp?scott/tiger@my_db_alias?DUMPFILE=expdp_s.dmp?
LOGFILE=expdp_s.log?SCHEMAS=scott
或者這種特定場景下,用戶SCOTT也可以有目錄DATA_PUMP_DIR的讀和寫權限:
--?On?windows,?place?all?expdp?parameters?on?one?single?line:?
C:\>?set?DATA_PUMP_DIR=DATA_PUMP_DIR
C:\>?expdp?scott/tiger@my_db_alias?DUMPFILE=expdp_s.dmp?
LOGFILE=expdp_s.log?SCHEMAS=scott
實驗:
創建目錄:CREATE DIRECTORY UTL_FILE_DIR AS '/oracle/backup';
向用目錄對象標識的文件寫內容:
SQL> declare
? 2? fhandle utl_file.file_type;
? 3? begin
? 4? fhandle := utl_file.fopen('UTL_FILE_DIR', 'example.txt', 'w');
? 5? utl_file.put_line(fhandle, 'test write one');
? 6? utl_file.put_line(fhandle, 'test write two');
? 7? utl_file.fclose(fhandle);
? 8? end;
? 9? /
PL/SQL procedure successfully completed.
SQL> !
ora10g@vm-vmw4131-t$ more /oracle/backup/example.txt
test write one
test write two
讀取使用目錄對象DIRECTORY標識的文件內容: SQL> declare
? 2? fhandle utl_file.file_type;
? 3? fp_buffer varchar2(4000);
? 4? begin
? 5? fhandle := utl_file.fopen('UTL_FILE_DIR', 'example.txt', 'R');
? 6? utl_file.get_line(fhandle, fp_buffer);
? 7? dbms_output.put_line(fp_buffer);
? 8? utl_file.get_line(fhandle, fp_buffer);
? 9? dbms_output.put_line(fp_buffer);
10? utl_file.fclose(fhandle);
11? end;
12? /
PL/SQL procedure successfully completed.
SQL> /
PL/SQL procedure successfully completed.
此時沒有任何輸出,設置serveroutput: SQL>?set serveroutput on
SQL> /
test write one
test write two
PL/SQL procedure successfully completed.
打印文件內容。
DIRECTORY的目就在于可以讓我們在Oracle中靈活地對文件系統中的文件進行操作。
ORACLE DIRECTORY目錄
Create DIRECTORY讓我們可以在Oracle數據庫中靈活的對文件進行讀寫操作,極大的提高了Oracle的易用性和可擴展性。
?
其語法為:
CREATE [OR REPLACE] DIRECTORY?directory?AS 'pathname';
?
本案例具體創建如下:
create or replace directory exp_dir as '/tmp';
?
目錄創建以后,就可以把讀寫權限授予特定用戶,具體語法如下:
GRANT READ[,WRITE] ON DIRECTORY?directory?TO?username;
?
例如:
grant read, write on directory exp_dir to eygle;
?
此時用戶eygle就擁有了對該目錄的讀寫權限。
讓我們看一個簡單的測試:
| ? SQL> create or replace directory UTL_FILE_DIR as '/opt/oracle/utl_file'; Directory created. SQL> declare ??2????fhandle utl_file.file_type; ??3??begin ??4????fhandle := utl_file.fopen('UTL_FILE_DIR', 'example.txt', 'w'); ??5????utl_file.put_line(fhandle , 'eygle test write one'); ??6????utl_file.put_line(fhandle , 'eygle test write two'); ??7????utl_file.fclose(fhandle); ??8??end; ??9??/ ? PL/SQL procedure successfully completed. ? SQL> ! [oracle@jumper 9.2.0]$ more /opt/oracle/utl_file/example.txt eygle test write one eygle test write two [oracle@jumper 9.2.0]$ |
?
類似的我們可以通過utl_file來讀取文件:
| ? SQL> declare ??2????fhandle???utl_file.file_type; ??3????fp_buffer varchar2(4000); ??4??begin ??5????fhandle := utl_file.fopen ('UTL_FILE_DIR','example.txt', 'R'); ??6? ??7????utl_file.get_line (fhandle , fp_buffer ); ??8????dbms_output.put_line(fp_buffer ); ??9????utl_file.get_line (fhandle , fp_buffer ); ?10????dbms_output.put_line(fp_buffer ); ?11????utl_file.fclose(fhandle); ?12??end; ?13??/ eygle test write one eygle test write two ? PL/SQL procedure successfully completed. |
?
可以查詢dba_directories查看所有directory.
| ? SQL> select * from dba_directories; OWNER??????????????????????????DIRECTORY_NAME?????????????????DIRECTORY_PATH ------------------------------ ------------------------------ ------------------------------ SYS????????????????????????????UTL_FILE_DIR???????????????????/opt/oracle/utl_file SYS????????????????????????????BDUMP_DIR??????????????????????/opt/oracle/admin/conner/bdump SYS????????????????????????????EXP_DIR????????????????????????/opt/oracle/utl_file |
?
可以使用drop directory刪除這些路徑.
| ? SQL> drop directory exp_dir; Directory dropped SQL> select * from dba_directories; OWNER??????????????????????????DIRECTORY_NAME?????????????????DIRECTORY_PATH ------------------------------ ------------------------------ ------------------------------ SYS????????????????????????????UTL_FILE_DIR???????????????????/opt/oracle/utl_file SYS????????????????????????????BDUMP_DIR??????????????????????/opt/oracle/admin/conner/bdump |
?
?
【DIRECTORY】普通用戶創建Oracle DIRECTORY數據庫對象的權限需求及探索?
本文以普通用戶創建Oracle DIRECTORY數據庫對象所需的權限入手,給大家展示一下自我提示的方法,進而探索一下DIRECTORY數據庫對象的“小秘密”。
1.授予普通用戶創建DIRECTORY的權限
為保證普通用戶具有創建Oracle數據庫的directory對象,需要確切知道需要授予用戶的權限是什么,我們這里需要的權限是“CREATE ANY DIRECTORY”權限。
如果一時忘記需要的具體權限,可以使用如下參考類SQL語句獲得提示。
sys@ora10g> select distinct privilege from dba_sys_privs where privilege like '%DIRECTORY%';
PRIVILEGE
----------------------------------------
DROP ANY DIRECTORY
CREATE ANY DIRECTORY
對普通用戶sec用戶的授權語句如下。
sys@ora10g> grant CREATE ANY DIRECTORY to sec;
Grant succeeded.
2.嘗試在普通用戶下創建DIRECTORY數據庫對象
sec@ora10g> create directory dir_test as '/home/oracle/secooler';
Directory created.
OK,此時在sec用戶下創建DIRECTORY對象成功!
3.創建DIRECTORY可能遇到的報錯信息
如若在創建DIRECTORY之前普通用戶sec未獲得相應權限,將會收到最為常見的“ORA-01031: insufficient privileges”錯誤。
模擬再現一下,供大家參考。
sec@ora10g> conn / as sysdba
Connected.
sys@ora10g> revoke CREATE ANY DIRECTORY from sec;
Revoke succeeded.
sys@ora10g> conn sec/sec
Connected.
sec@ora10g> create directory dir_test as '/home/oracle/secooler';
create directory dir_test as '/home/oracle/secooler'
*
ERROR at line 1:
ORA-01031: insufficient privileges
4.獲得DIRECTORY創建結果信息
用于查詢獲得DIRECTORY信息的數據庫視圖“僅有”兩個,如下所示。
sys@ora10g> select TABLE_NAME from dict where table_name like '%DIRECTORIES';
TABLE_NAME
------------------------------
ALL_DIRECTORIES
DBA_DIRECTORIES
這里之所以強調“僅有”,是與其他數據庫對象視圖相比較而言的。
例如,用于獲得同名的數據庫視圖一般都會有三類,如下所示。
sys@ora10g> select TABLE_NAME from dict where table_name like '%SYNONYMS';
TABLE_NAME
------------------------------
DBA_SYNONYMS
USER_SYNONYMS
ALL_SYNONYMS
用于查看DIRECTORY數據庫對象的視圖之所以沒有以USER開頭的是有其具體緣由的。
請繼續跟隨我進行探索。
我們使用ALL_DIRECTORIES視圖查看剛剛創建成功的DIRECTORY對象。
sec@ora10g> col owner for a6
sec@ora10g> col DIRECTORY_NAME for a15
sec@ora10g> col DIRECTORY_PATH for a30
sec@ora10g> select * from all_directories where DIRECTORY_NAME = 'DIR_TEST';
OWNER? DIRECTORY_NAME? DIRECTORY_PATH
------ --------------- ------------------------------
SYS??? DIR_TEST??????? /home/oracle/secooler
重點關注一下OWNER字段的返回結果,這里顯示的內容是“SYS”,并不是我們所期待的那個創建DIRECTORY的當前用戶“SEC”!
這樣便可以順理成章的給出不存在以USER開頭的“USER_DIRECTORIES”視圖的合理解釋,因為DIRECTORY數據庫對象并不屬于某個具體用戶,都歸SYS用戶所有!
5.小結
在對Oracle數據庫世界的探索過程中,不要放過任何蛛絲馬跡,每一個細節問題都充滿了樂趣,值得思考和總結。
在踐行的征程中我們追求的是一種甚解的態度!
?【DIRECTORY】確保DIRECTORY對應路徑書寫正確以避免遭遇ORA-29913和ORA-29400錯誤?
?這里,提醒大家在創建DIRECTORY對象時,目錄路徑一定要書寫正確,不要出現不必要的空格或者回車,否則將會遭遇ORA-29913和ORA-29400錯誤。
1.故障再現及分析過程
1)調整為英文顯示環境
$ export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
2)創建測試用戶SECOOLER并授權
$ sqlplus / as sysdba
SQL*Plus: Release 11.1.0.6.0 - Production on Mon Mar 12 20:07:16 2012
Copyright (c) 1982, 2007, Oracle.? All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SYS@ora11g> drop user secooler cascade;
User dropped.
SYS@ora11g> create user secooler identified by secooler;
User created.
SYS@ora11g> grant dba to secooler;
Grant succeeded.
2)創建DIRECTORY對象
? 注意這里創建的是一個錯誤路徑,因為這里在路徑的結尾處出現了一個多余的回車換行。但是在查詢DIR_DUMP執行路徑是顯示的內容并沒有顯示出結尾處的回車。
SECOOLER@ora11g> create directory dir_dump as 'c:\
? 2? ';
Directory created.
SECOOLER@ora11g> col OWNER for a5
SECOOLER@ora11g> col DIRECTORY_NAME for a15
SECOOLER@ora11g> col DIRECTORY_PATH for a15
SECOOLER@ora11g> select * from dba_directories where directory_name = 'DIR_DUMP';
OWNER DIRECTORY_NAME? DIRECTORY_PATH
----- --------------- ---------------
SYS?? DIR_DUMP??????? c:\
3)以外部表卸載數據方式測試DIRECTORY是否可用
SECOOLER@ora11g> create table t1
? 2? organization external
? 3? ( type oracle_datapump
? 4? default directory dir_dump
? 5? location ('t1_part1.dat','t1_part2.dat')
? 6? )
? 7? PARALLEL 2
? 8? as
? 9? select owner,table_name,tablespace_name from all_tables where wner='SYSTEM';
create table t1
*
ERROR at line 1:
ORA-29913: error in executing ODCIEXTTABLEOPEN callout
ORA-29400: data cartridge error
error opening file c:\
\T1_6648_11956.log
? 可見,這里的報錯與DIRECTORY創建時出現的那個回車換行有直接的關系(重點關注最后兩行提示信息)。
4)與之對應的中文報錯內容如下
$ export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
$ sqlplus / as sysdba
SQL*Plus: Release 11.1.0.6.0 - Production on 星期一 3月 12 20:20:44 2012
Copyright (c) 1982, 2007, Oracle.? All rights reserved.
連接到:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SYS@ora11g> create table t1
? 2? organization external
? 3? ( type oracle_datapump
? 4? default directory dir_dump
? 5? location ('t1_part1.dat','t1_part2.dat')
? 6? )
? 7? PARALLEL 2
? 8? as
? 9? select owner,table_name,tablespace_name from all_tables where wner='SYSTEM';
create table t1
*
第 1 行出現錯誤:
ORA-29913: 執行 ODCIEXTTABLEOPEN 調出時出錯
ORA-29400: 數據插件錯誤error opening file c:\
\T1_6648_4104.log
5)測試由于多余空格導致報錯過程
(1)重建DIRECTORY
SECOOLER@ora11g> drop directory dir_dump;
目錄已刪除。
SECOOLER@ora11g> create directory dir_dump as 'c :\';
目錄已創建。
(2)使用DIRECTORY卸載數據
SECOOLER@ora11g> create table t1
? 2? organization external
? 3? ( type oracle_datapump
? 4? default directory dir_dump
? 5? location ('t1_part1.dat','t1_part2.dat')
? 6? )
? 7? PARALLEL 2
? 8? as
? 9? select owner,table_name,tablespace_name from all_tables where wner='SYSTEM';
create table t1
*
第 1 行出現錯誤:
ORA-29913: 執行 ODCIEXTTABLEOPEN 調出時出錯
ORA-29400: 數據插件錯誤error opening file c :\T1_6648_6560.log
? 報錯內容很顯然,c與后面的冒號之間的空格是導致錯誤的根本原因。
2.故障處理方法
? 問題的原因是由于創建DIRECTORY時指定的路徑中出現多余的空格或者回車導致的,換一種說法便是,當我們指定的路徑不存在時就會報錯。
? 我們的處理方法便是給出DIRECTORY正確的路徑。
1)重建directory執行正確的路徑
SECOOLER@ora11g> drop directory dir_dump;
目錄已刪除。
SECOOLER@ora11g> create directory dir_dump as 'c:\';
目錄已創建。
2)重新測試數據卸載
SECOOLER@ora11g> create table t1
? 2? organization external
? 3? ( type oracle_datapump
? 4? default directory dir_dump
? 5? location ('t1_part1.dat','t1_part2.dat')
? 6? )
? 7? PARALLEL 2
? 8? as
? 9? select owner,table_name,tablespace_name from all_tables where wner='SYSTEM';
表已創建。
? 創建成功,表明DIRECTORY此時已經正確可用。
3.小結
? ORA-29913和ORA-29400錯誤背后的根本原因是在創建DIRECTORY數據庫對象時對應的路徑不存在。在創建DIRECTORY時Oracle數據庫并不會到操作系統上檢驗路徑的存在性,只有在使用時才會校驗,因此在創建DIRECTORY時謹記對應的路徑的真實存在性。
查看用戶的目錄操作權限?
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
/
About Me
| ............................................................................................................................................. ● 本文作者:小麥苗,部分內容整理自網絡,若有侵權請聯系小麥苗刪除 ● 本文在itpub(http://blog.itpub.net/26736162/abstract/1/)、博客園(http://www.cnblogs.com/lhrbest)和個人微信公眾號(xiaomaimiaolhr)上有同步更新 ● 本文itpub地址:http://blog.itpub.net/26736162/abstract/1/ ● 本文博客園地址:http://www.cnblogs.com/lhrbest ● 本文pdf版、個人簡介及小麥苗云盤地址:http://blog.itpub.net/26736162/viewspace-1624453/ ● 數據庫筆試面試題庫及解答:http://blog.itpub.net/26736162/viewspace-2134706/ ● DBA寶典今日頭條號地址:http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826 ............................................................................................................................................. ● QQ群號:230161599(滿)、618766405 ● 微信群:可加我微信,我拉大家進群,非誠勿擾 ● 聯系我請加QQ好友(646634621),注明添加緣由 ● 于 2017-12-01 09:00 ~ 2017-12-30 22:00 在魔都完成 ● 文章內容來源于小麥苗的學習筆記,部分整理自網絡,若有侵權或不當之處還請諒解 ● 版權所有,歡迎分享本文,轉載請保留出處 ............................................................................................................................................. ● 小麥苗的微店:https://weidian.com/s/793741433?wfr=c&ifr=shopdetail ● 小麥苗出版的數據庫類叢書:http://blog.itpub.net/26736162/viewspace-2142121/ ............................................................................................................................................. 使用微信客戶端掃描下面的二維碼來關注小麥苗的微信公眾號(xiaomaimiaolhr)及QQ群(DBA寶典),學習最實用的數據庫技術。
? ?小麥苗的微信公眾號 ? ? ?小麥苗的DBA寶典QQ群2 ? ? 《DBA筆試面寶典》讀者群 ? ? ? 小麥苗的微店 ............................................................................................................................................. |
| | |
來自 “ ITPUB博客 ” ,鏈接:http://blog.itpub.net/26736162/viewspace-2148694/,如需轉載,請注明出處,否則將追究法律責任。
轉載于:http://blog.itpub.net/26736162/viewspace-2148694/
總結
以上是生活随笔為你收集整理的Oracle Directory(目录)介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 企业WiFi解决方案,解决所有后顾之忧
- 下一篇: POE供电标准解析