您好,登錄后才能下訂單哦!
EXP和IMP是客戶端工具程序,它們既可以在客戶端使用,也可以在服務(wù)端使用。
EXPDP和IMPDP是服務(wù)端的工具程序,他們只能在ORACLE服務(wù)端使用,不能在客戶端使用。
IMP只適用于EXP導(dǎo)出的文件,不適用于EXPDP導(dǎo)出文件;IMPDP只適用于EXPDP導(dǎo)出的文件,而不適用于EXP導(dǎo)出文件。
expdp或impdp命令時(shí),可暫不指出用戶名/密碼@實(shí)例名 as 身份,然后根據(jù)提示再輸入,如:
expdp schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;
一、創(chuàng)建邏輯目錄,該命令不會(huì)在操作系統(tǒng)創(chuàng)建真正的目錄,最好以system等管理員創(chuàng)建。
create directory dpdata1 as 'd:\test\dump';
二、查看管理理員目錄(同時(shí)查看操作系統(tǒng)是否存在,因?yàn)镺racle并不關(guān)心該目錄是否存在,如果不存在,則出錯(cuò))
select * from dba_directories;
三、給scott用戶賦予在指定目錄的操作權(quán)限,最好以system等管理員賦予。
grant read,write on directory dpdata1 to scott;
四、導(dǎo)出數(shù)據(jù)
1)按用戶導(dǎo)
expdp scott/tiger@orcl schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;
2)并行進(jìn)程parallel
expdp scott/tiger@orcl directory=dpdata1 dumpfile=scott3.dmp parallel=40 job_name=scott3
3)按表名導(dǎo)
expdp scott/tiger@orcl TABLES=emp,dept dumpfile=expdp.dmp DIRECTORY=dpdata1;
4)按查詢條件導(dǎo)
expdp scott/tiger@orcl directory=dpdata1 dumpfile=expdp.dmp Tables=emp query='WHERE deptno=20';
5)按表空間導(dǎo)
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=temp,example;
6)導(dǎo)整個(gè)數(shù)據(jù)庫(kù)
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=full.dmp FULL=y;
五、還原數(shù)據(jù)
1)導(dǎo)到指定用戶下
impdp scott/tiger DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=scott;
2)改變表的owner
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp TABLES=scott.dept REMAP_SCHEMA=scott:system;
3)導(dǎo)入表空間
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=example;
4)導(dǎo)入數(shù)據(jù)庫(kù)
impdb system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y;
5)追加數(shù)據(jù)
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=system TABLE_EXISTS_ACTION
1、Oracle11g默認(rèn)對(duì)空表不分配segment,故使用exp導(dǎo)出Oracle11g數(shù)據(jù)庫(kù)時(shí),空表不會(huì)導(dǎo)出。
2、設(shè)置deferred_segment_creation 參數(shù)為FALSE后,無(wú)論是空表還是非空表,都分配segment。
在sqlplus中,執(zhí)行如下命令:
SQL>alter system set deferred_segment_creation=false;
查看:
SQL>show parameter deferred_segment_creation;
該值設(shè)置后只對(duì)后面新增的表產(chǎn)生作用,對(duì)之前建立的空表不起作用。
3、可以使用手工為空表分配Extent的方式,來(lái)解決導(dǎo)出之前建立的空表的問(wèn)題。說(shuō)明如下:
3.1 使用ALLOCATE EXTENT的說(shuō)明
使用ALLOCATE EXTENT可以為數(shù)據(jù)庫(kù)對(duì)象分配Extent。其語(yǔ)法如下:
-----------
ALLOCATE EXTENT { SIZE integer [K | M] | DATAFILE 'filename' | INSTANCE integer }
-----------
可以針對(duì)數(shù)據(jù)表、索引、物化視圖等手工分配Extent。
ALLOCATE EXTENT使用樣例:
ALLOCATE EXTENT
ALLOCATE EXTENT(SIZE integer [K | M])
ALLOCATE EXTENT(DATAFILE 'filename')
ALLOCATE EXTENT(INSTANCE integer)
ALLOCATE EXTENT(SIZE integer [K | M] DATAFILE 'filename')
ALLOCATE EXTENT(SIZE integer [K | M] INSTANCE integer)
針對(duì)數(shù)據(jù)表操作的完整語(yǔ)法如下:
-----------
ALTER TABLE [schema.]table_name ALLOCATE EXTENT [({ SIZE integer [K | M] | DATAFILE 'filename' | INSTANCE integer})]
-----------
故,需要構(gòu)建如下樣子簡(jiǎn)單的SQL命令:
-----------
alter table aTabelName allocate extent
-----------
3.2 構(gòu)建對(duì)空表分配空間的SQL命令,
查詢當(dāng)前用戶下的所有空表(一個(gè)用戶最好對(duì)應(yīng)一個(gè)默認(rèn)表空間)。命令如下:
-----------
SQL>select table_name from user_tables where NUM_ROWS=0;
-----------
根據(jù)上述查詢,可以構(gòu)建針對(duì)空表分配空間的命令語(yǔ)句,如下:
-----------
SQL>Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0
-----------
批量輸出上述生成的SQL語(yǔ)句,建立C:\createsql.sql,其內(nèi)容如下:
-----------
set heading off;
set echo off;
set feedback off;
set termout on;
spool C:\allocate.sql;
Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;
spool off;
-----------
執(zhí)行C:\createsql.sql,命令如下:
-----------
SQL>@ C:\createsql.sql;
-----------
執(zhí)行完畢后,得到C:\allocate.sql文件。
打開(kāi)該文件會(huì)看到,已經(jīng)得到對(duì)所有空表分配空間的命令SQL語(yǔ)句。
3.4 執(zhí)行SQL命令,對(duì)空表分配空間:
執(zhí)行C:\allocate.sql,命令如下:
-----------
SQL>@ C:\allocate.sql;
-----------
執(zhí)行完畢,表已更改。
3.4 此時(shí)執(zhí)行exp命令,即可把包括空表在內(nèi)的所有表,正常導(dǎo)出。
另外:Oracle11g中,對(duì)密碼是大小寫(xiě)敏感的,即密碼中的字母是區(qū)分大小寫(xiě)的。
在Oracle10g中及以前,密碼中的字母大小寫(xiě)無(wú)所謂
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。