如何在沒有特殊權限的情況下使用 expdp 導出自己的對象?
根據Oracle 論壇上的這篇文章,expdp 可用於導出您自己的模式,而無需任何特殊權限:
這完全取決於您希望該使用者能夠導出/導入什麼。如果所有的用途是導出/導入它們自己的對象,那麼它們不需要任何提升的權限。如果您希望該使用者能夠導出其他模式擁有的對象,那麼他們將需要 exp_full_database 並且為了導入,他們將需要 imp_full_database。
但是我就是無法讓它工作。需要指定目錄對象,否則 expdp 顯示錯誤:
ORA-39145: directory object parameter must be specified and non-null
但創建目錄需要CREATE ANY DIRECTORY
係統權限。那麼如何以普通使用者的身份導出自己的架構?
指定目錄對象的要求只存在於新
expdp
實用程序中。較舊的exp
工具允許指定絕對路徑。我能夠在
exp
沒有任何特殊權限且不創建任何目錄對象的情況下使用我的使用者名和密碼進行備份。儘管 , 已成功
expdp
,exp
但仍包含在最新版本的 Oracle 中。例如,
expdp
轉儲看起來像:expdp kshitiz/password@SID directory=DIR01 dumpfile=file.dmp
使用者需要創建
DIR01
的目錄對像在哪裡:CREATE ANY DIRECTORY
CREATE OR REPLACE DIRECTORY dbm01 AS '/tmp';
exp
將直接接受路徑:exp kshitiz/password@SID file=/tmp/file.dmp
創建目錄對象和導出/導入是兩個不同的操作。目錄對象歸 SYS 所有。
目錄對象將名稱映射到文件系統上的目錄路徑。DBA 必須確保只有經過批准的使用者才能訪問與目錄路徑關聯的目錄對象。
如果您不是特權使用者,那麼在執行 Data Pump Export 或 Data Pump Import 之前,必須由數據庫管理員 (DBA) 或任何具有
CREATE ANY DIRECTORY
特權的使用者創建目錄對象。計劃時尚
使用
SCHEMAS
參數指定模式導出。這是預設的導出模式。如果你有這個DATAPUMP_EXP_FULL_DATABASE
角色,那麼你可以指定一個模式列表,可選地包括模式定義本身以及對這些模式的系統權限授予。如果您沒有該DATAPUMP_EXP_FULL_ DATABASE
角色,則只能導出您自己的架構。