expdp/impdp及exp/imp的使用及區別
關於expdp和exp的使用方法,具體講下在使用者模式下的使用。
expdp在使用者模式下的使用:
expdp c##hr/hr directory=dumpdir dumpfile=dump.dmp logfile=dump_expdp.logschemas=c##hr;impdp system/oracle directory=dumpdir dumpfile=dump.dmp logfile=dump_impdp.log remap:schema=c##hr:scott
如果不新增schemas引數,則表示預設匯出當前匯出的使用者c##hr下的使用者資料
在使用expdp之前要確定dumpdir已經建立好:
sql>select * from dba_directories
OWNER DIRECTORY_NAME DIRECTORY_PATH
-------------------- ------------------------------ ------------------------------------------------------------
SYS ORACLE_HOME /
SYS ORACLE_BASE /
SYS OPATCH_LOG_DIR
/oracle/app/oracle/product/12.1.0/dbhome_1/QOpatch
SYS OPATCH_SCRIPT_DIR /oracle/app/oracle/product/12.1.0/dbhome_1/QOpatch
SYS OPATCH_INST_DIR
/oracle/app/oracle/product/12.1.0/dbhome_1/OPatch
SYS DATA_PUMP_DIR /oracle/dump_backup
SYS XSDDIR /oracle/app/oracle/product/12.1.0/dbhome_1/rdbms/xml/schema
SYS XMLDIR /oracle/app/oracle/product/12.1.0/dbhome_1/rdbms/xml
SYS ORACLE_OCM_CONFIG_DIR /oracle/app/oracle/product/12.1.0/dbhome_1/ccr/state
SYS ORACLE_OCM_CONFIG_DIR2 /oracle/app/oracle/product/12.1.0/dbhome_1/ccr/state
SYS DUMPDIR /oracle/dump_backup
data_pump_dir 就是系統自定義的dump資料夾。也可以自定義,在這裡我使用的是自定義的資料夾:
sql>create or replace directory dumpdir as '/oracle/dump_backup';
上述語句僅僅是在資料庫中建立,還需在作業系統中建立:
mkdir /oracle/dumpdir
dumpdir建立好後,還需要授權:
sql>grant read,write on directory dumpdir to c##hr;
exp在使用者模式下的使用:
四種模式,full,owner,table,tablespace,這裡僅介紹owner模式,即預設模式。
exp system/oracle/backup/hr_exp.dmp owner=c##hr
imp scott/tiger fromuser=c##hr touser=scott file=/oracle/backup/hr_exp.dmp log=/oracle/backup/hr_imp.log如果報ORA-01031: insufficient privileges,則可以使用具有較大許可權的使用者進行匯入(expdp也是如此),比如使用system使用者:
imp system/oracle fromuser=c##hr touser=scott file=/oracle/backup/hr_exp.dmp log=/oracle/backup/hr_imp.log