expdp腳本
❶ linux杈撳嚭鏂囦歡鎸囧畾琛宭inux杈撳嚭鏂囦歡
linuxprint鎬庝箞杈撳嚭鏁扮粍錛
linuxprint鍙浠ラ氳繃for寰鐜鏉ヨ緭鍑烘暟緇勩
濡備綍鐢╨inux鑴氭湰鑾峰彇鍒扮浜岃岃緭鍑猴紵
絎涓涓鍛戒護|head-n2|tail-n1
絎涓涓鍛戒護鏄浠諱綍鏈夎緭鍑虹殑鍛戒護,姣斿俢atmyfile|head-n2|tail-n1
linux鎬庝箞鎶婃爣鍑嗚緭鍑洪噸瀹氬悜鍏朵粬鏂囦歡錛
command>filename鎶婃妸鏍囧噯杈撳嚭閲嶅畾鍚戝埌涓涓鏂版枃浠朵腑command>>filename鎶婃妸鏍囧噯杈撳嚭閲嶅畾鍚戝埌涓涓鏂囦歡涓(榪藉姞)command
1>fielname鎶婃妸鏍囧噯杈撳嚭閲嶅畾鍚戝埌涓涓鏂囦歡涓璫ommand>filename2>1鎶婃妸鏍囧噯杈撳嚭鍜屾爣鍑嗛敊璇涓璧烽噸瀹氬悜鍒頒竴涓鏂囦歡涓璫ommand
2>filename鎶婃妸鏍囧噯閿欒閲嶅畾鍚戝埌涓涓鏂囦歡涓璫ommand2>>filename鎶婃妸鏍囧噯杈撳嚭閲嶅畾鍚戝埌涓涓鏂囦歡涓(榪藉姞)command>>filename2>1鎶婃妸鏍囧噯杈撳嚭鍜屾爣鍑嗛敊璇涓璧烽噸瀹氬悜鍒頒竴涓鏂囦歡涓(榪藉姞)commandfilename>filename2鎶奵ommand鍛戒護浠filename鏂囦歡浣滀負鏍囧噯杈撳叆錛屼互filename2鏂囦歡浣滀負鏍囧噯杈撳嚭commandfilename鎶奵ommand鍛戒護浠filename鏂囦歡浣滀負鏍囧噯杈撳叆commanddelimiter鎶婁粠鏍囧噯杈撳叆涓璇誨叆錛岀洿鑷抽亣鍒癲elimiter鍒嗙晫絎commandm鎶婃妸鏂囦歡鎻忚堪絎m浣滀負鏍囧噯杈撳叆command>m鎶婃妸鏍囧噯杈撳嚭閲嶅畾鍚戝埌鏂囦歡鎻忚堪絎m涓璫ommand-鎶婂叧闂鏍囧噯杈撳叆
LINUX涓嫿racle鏁版嵁瀵煎叆瀵煎嚭鐨勬柟娉曡﹁В錛
鍦ㄢ滆繍琛屸濋噷鎵撳紑cmd
2
杈撳叆鍛戒護錛歴qlplussystem/123456@orcl
鍏朵腑system鏄鐧誨綍鏁版嵁搴撶殑鐢ㄦ埛鍚
123456鏄鐢ㄦ埛鍚嶇殑瀵嗙爜
orcl鏄鏁版嵁搴撳疄渚嬪悕縐
3
濡傛灉鎻愮ず鍛戒護鏃犳晥錛岄偅灝辨槸浣犳病鏈夐厤緗濂給racle鐨勭幆澧冨彉閲忥紙鎯沖綋騫存垜涔熻榪欎釜闂棰樺洶鎵扮潃錛夛紝閰嶇疆oracle鐜澧冨彉閲忕殑鏂規硶濡備笅錛
1銆佸彸鍑燴滄垜鐨勭數鑴戔->閫夋嫨鈥滃睘鎬р->閫夋嫨鈥滈珮綰р->鍗曞嚮鈥滅幆澧冨彉閲忊2銆侀夋嫨鈥減ath鈥濊繖涓琛岋紝鍗曞嚮鈥滅紪杈戔濓紝鍦ㄢ減ath鈥濈殑鍙橀噺鍊兼枃鏈妗嗙殑鏈鍚庨潰鍏堝姞鍏ヤ竴涓鍒嗗彿鈥:鈥濓紝鐒跺悗鍐嶅垎鍙峰悗闈㈠姞鍏sqlplus鏂囦歡鐨勭洰褰曡礬寰勶紝濡傗渃:programfilesoracleproct10.2.0db_1bin鈥濓紝鐒跺悗鐐瑰嚮鈥滅『瀹氣濇寜閽銆3銆佸傛灉鍦ㄢ滅郴緇熷彉閲忊濆垪琛ㄦ嗕笅闈㈢殑鈥滃彉閲忊濆垪涓鎵句笉鍒扳渙racle_home鈥濆拰鈥渙racle_sid鈥濊繖涓や釜鍙橀噺錛屽垯闇瑕佷笅闈㈡搷浣滐紝鍚﹀垯鏃犻渶涓涓嬫搷浣溿4銆佸湪鈥滅郴緇熷彉閲忊濅腑鐐瑰嚮鈥滄柊寤衡濇寜閽錛屽湪鈥滃彉閲忓悕鈥濅腑杈撳叆鈥渙racle_home鈥濓紝鍙橀噺鍊間腑杈撳叆oracle鐨勫畨瑁呯洰褰曡礬寰勶紝濡傗渃:programfilesoracleproct10.2.0db_1鈥濓紝鐒跺悗鐐瑰嚮鈥滅『瀹氣濇寜閽銆5銆佸湪鈥滅郴緇熷彉閲忊濅腑鐐瑰嚮鈥滄柊寤衡濇寜閽錛屽湪鈥滃彉閲忓悕鈥濅腑杈撳叆鈥渙racle_sid鈥濓紝鍙橀噺鍊間腑杈撳叆鏁版嵁搴撶殑瀹炰緥鍚嶏紝鐒跺悗鐐瑰嚮鈥滅『瀹氣濇寜閽銆
oracle_home錛歰racle鏁版嵁搴撹蔣浠剁殑瀹夎呯洰褰曨racle_sid錛歰racle鏁版嵁搴撶殑瀹炰緥鍚峯racle鏁版嵁搴撳疄渚嬪悕錛氱敤浜庡拰鎿嶄綔緋葷粺榪涜岃仈緋葷殑鏍囪瘑錛屽嵆鏁版嵁搴撳拰鎿嶄綔緋葷粺涔嬮棿鐨勪氦鎹㈡槸閫氳繃鏁版嵁搴撳疄渚嬪悕鏉ヤ綋鐜扮殑銆
end
絎浜屾ワ紝expdp澶囦喚鍛戒護
1
鍒涘緩oracle鐨勫囦喚鐩褰曪細
sql>createdirectorydpdata1as'd:tempdmp'
榪欎粎浠呮槸鍦╫racle閲岃懼畾鐨勭洰褰曪紝騫舵病鏈夌湡姝e壋寤
2
鍙浠ラ氳繃榪欏彞鍛戒護鏌ョ湅鍒拌繖涓鐩褰
sql>select*fromdba_directories;
3
璧嬩簬瑕佸煎嚭鏁版嵁琛ㄧ殑鎵灞炵敤鎴鋒潈闄
sql>grantread,writeondirectorydpdata1tosshe;
4
濂戒簡錛屽埌浜嗗叧閿涓姝ワ紝涔嬪墠璧頒簡涓嶅皯寮璺錛屼絾鍏跺畠鏄灝忛棶棰橈紝鍦ㄧ綉涓婇浂闆剁庣庢煡浜嗗緢澶氳祫鏂欙紝緇堜簬鎵懼埌鍘熷洜銆
棣栧厛錛岃佸垏鎹㈠洖鍛戒護紿楀彛錛屼笉瑕佸啀鍦╯ql>涓嬭繍琛岋紝鐒跺悗杈撳叆鍛戒護錛
expdpsystem/123456@orcldirectory=dpdata1mpfile=sshe.dmplogfile=sshe.logschemas=sshe
5
涓婇潰鎶ヤ簡涓涓閿檕ra-39002:鎿嶄綔鏃犳晥
鍘熷洜鏄痙:tempdmp榪欎釜鐩褰曚笉瀛樺湪錛屽埆浠ヤ負createdirectory涔嬪悗灝變細鑷鍔ㄧ敓鎴愭枃浠跺す錛屼篃鍒浠ヤ負鎵ц宔xpdp鍚庝細鑷鍔ㄧ敓鎴愭枃浠跺す錛岃佽嚜宸辨墜鍔ㄦ柊寤鴻繖涓鐩褰曟枃浠跺す鐨勩傛柊寤烘枃浠跺す鍚庡啀璇曚竴涓嬶紝鏋滅劧鎴愬姛浜嗭紒鎮鍠滀綘錛屽凡鎴愬姛澶囦喚錛
6
濡傛灉浣犺侀棶錛屽煎嚭鏉ョ殑dmp鏂囦歡鎬庢牱榪樺師鍥炲幓銆傚ソ鍚э紝鍋氫漢鍋氬埌搴曪紝涓轟簡鐪佸幓浣犲啀鎵炬柟娉曠殑楹葷儲錛岃繖閲屾垜涔熷仛涓涓婕旂ず錛堜竴鑸澶囦喚鐨勬暟鎹鏄絳夊埌鏁版嵁搴撴湁闂棰樻椂鎵嶇敤鐨勪笂錛夈
棣栧厛錛屽啀涓嬈$櫥褰曟暟鎹搴搒qlplussystem/123456@orcl
鐒跺悗錛屽垹闄ょ洰鏍囨暟鎹搴撶敤鎴穌ropusersshecascade;
7
鐜板湪鏉ュ啀涓嬈″壋寤虹敤鎴鳳紝鍙浠ョ敤鍛戒護鍒涘緩錛屼篃鍙浠ュ湪plsql閲屽壋寤猴紝榪欓噷鍦╬lsql鍒涘緩銆
鐢╯ystem鐧誨綍鏁版嵁搴擄紝鐒跺悗鍙抽敭users--鏂板緩
鐒跺悗濉鍐欎綘鐨勮處鍙峰悕縐幫紝蹇呴』鍜屽囦喚鏃剁殑鐢ㄦ埛涓鑷達紝騫惰祴浜庣浉搴旂殑鏉冮檺
鏈鍚庣偣鍑誨簲鐢錛屽畬鎴愮敤鎴峰壋寤恆
8
榪斿洖dos鍛戒護紿楀彛錛屼笉鍐嶆槸sql>
杈撳叆瀵煎叆鍛戒護錛歩mpdpsystem/123456@orcldirectory=dpdata1mpfile=sshe.dmplogfile=sshe.logschemas=sshe
瀵煎叆鎴愬姛錛
end
姝ラ3瀹氭椂鎵ц屽囦喚浠誨姟
鍋氫竴涓鎸夊勾鏈堟棩鍛藉悕鐨勬壒澶勭悊銆傚湪d:temp鐩褰曚笅鏂板緩涓涓鏂囦歡錛岄殢渚垮懡鍚嶄負.bat錛屾垜鐨勫懡鍚嶄負sshe.bat錛岀紪杈戜負濡備笅浠g爜
-------------------------------------------------------------------------
@echooffremsetbackupfile=f_database_%date:~0,4%-%date:~5,2%-%date:~8,2%.dmpremsetlogfile=f_database_%date:~0,4%-%date:~5,2%-%date:~8,2%./p"d:tempdmp"/d-30/c"cmd/[email protected]/f@path"cdd:tempdmp
rembackupschemassetbackupfile=sshe_%date:~0,4%-%date:~5,2%-%date:~8,2%.dmpsetlogfile=sshe_%date:~0,4%-%date:~5,2%-%date:~8,2%.logexpdpsshe/sshedirectory=dir_dpmpfile=%backupfile%logfile=%logfile%schemas=ssheparallel=4
-------------------------------------------------------------------------------
鍙浠ヨ瘯鎵ц屼竴涓嬶紝浼氳嚜鍔ㄧ敓鎴愪竴涓浠ュ勾鏈堟棩鍛藉悕鐨勫囦喚鏂囦歡
forfiles/p"d:tempdmp"/d-30/c"cmd/[email protected]/f@path"鐨勪綔鐢ㄦ槸錛氬垹闄ゆ湰鐩褰曚笅30澶╀互鍚庣殑澶囦喚鏂囦歡錛岃繖涓鎸烘湁鐢ㄧ殑銆
鍋氫竴涓獁indows姣忔櫄鑷鍔ㄨ繍琛屾暟鎹搴撳囦喚鐨刡at錛屾垜鐨勫懡鍚嶄負auto.bat緙栬緫濡備笅鍐呭
------------------------------------------------------------------------------
@echooffschtasks/create/tnsshe鏁版嵁搴撳畾鏃跺囦喚/tr"d:tempsshe_bak.bat"/scdaily/st00:00:00/ru"system"pauseexit
------------------------------------------------------------------------------
鍙屽嚮auto.bat錛屽氨浼氬湪windows娣誨姞涓涓瀹氭椂浠誨姟錛屾瘡鏅0鐐0鍒嗗氨浼氳嚜鍔ㄦ墽琛屼竴嬈sshe.bat錛屼粠鑰屽畬鎴愯嚜鍔ㄥ囦喚鐨勭洰鐨勩
鍙抽敭鎴戠殑鐢佃剳錛氱$悊鈥斺斾換鍔¤″垝紼嬪簭鈥斺斾換鍔¤″垝紼嬪簭搴擄紝鍙浠ョ湅鍒板垰鎵嶆坊鍔犺繘鍘葷殑瀹氭椂浠誨姟
5
鍙浠ュ皢鐢佃剳鐨勬椂閽熻句負23鐐59鍒50縐掞紝絳夊緟10縐掗挓錛岀湅鐪嬭嚜鍔ㄥ囦喚鑳藉惁鎴愬姛銆傚傛灉鎴愬姛閭e氨澶у姛鍛婃垚浜嗭紒錛
linux鎬庝箞娓呯┖涓涓鏂囦歡鐨勫唴瀹癸紵
鍑犵嶅揩閫熸竻絀烘枃浠跺唴瀹圭殑鏂規硶錛$:>filename#鍏朵腑鐨:鏄涓涓鍗犱綅絎,涓嶄駭鐢熶換浣曡緭鍑.$>filename$echo鈥溾>filename$echo/dev/null>filename$echo>filename$cat/dev/null>filename
❷ Oracle數據導入導出imp/exp命令 10g以上expdp/impdp命令 詳細的 詳細的 謝謝
這個網路上一搜一大把,都說的很詳細,樓主沒搜過,
數據導出:
1 將資料庫TEST完全導出,用戶名system 密碼manager 導出到D:chu.dmp中
exp system/manager@TEST file=d:chu.dmp full=y
2 將資料庫中system用戶與sys用戶的表導出
exp system/manager@TEST file=d:chu.dmp owner=(system,sys)
3 將資料庫中的表inner_notify、notify_staff_relat導出
exp aichannel/aichannel@TESTDB2 file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat)
4 將資料庫中的表table1中的欄位filed1以"00"打頭的數據導出
exp system/manager@TEST file=d:chu.dmp tables=(table1) query=" where filed1 like '00%'"
上面是常用的導出,對於壓縮,既用winzip把dmp文件可以很好的壓縮。
也可以在上面命令後面 加上 compress=y 來實現。
數據的導入
1 將D:chu.dmp 中的數據導入 TEST資料庫中。
imp system/manager@TEST file=d:chu.dmp
imp aichannel/aichannel@HUST full=y file=d:datanewsmgnt.dmp ignore=y
上面可能有點問題,因為有的表已經存在,然後它就報錯,對該表就不進行導入。
在後面加上 ignore=y 就可以了。
2 將d:chu.dmp中的表table1 導入
imp system/manager@TEST file=d:chu.dmp tables=(table1)
基本上上面的導入導出夠用了。不少情況要先是將表徹底刪除,然後導入。
注意:
操作者要有足夠的許可權,許可權不夠它會提示。
資料庫時可以連上的。可以用tnsping TEST 來獲得資料庫TEST能否連上。
當然,上面的方法在導出數據時可能會導出很大的包,那是因為你的用戶可能在授權的時候授予了DBA的許可權,所以可以採用下面方法來進行資料庫備份:
資料庫備份
建議系統過渡後,每周進行一次備份。或者在數據表發生重大改變前,對要改變的數據表進行備份。
執行以下步驟,進行備份。
在命令行里,敲入「cmd」,回車,進入命令行窗口。
在窗口中,輸入:
exp mas/123456@mas
系統提示:輸入數組提取緩沖區大小: 4096 >
可以直接回車;
系統提示:導出文件: EXPDAT.DMP>
此處輸入導出文件的位置,其路徑必須存在,Oracle在這里不會自動建立路徑,但可以建立文件名。備份文件以dmp作為後綴。
輸入內容如:e:\work\mas_db_090925v1.dmp 回車
系統提示: (1)E(完整的資料庫),(2)U(用戶) 或 (3)T(表): (2)U > u
此處可以輸入u,也可以直接回車,因為系統此時默認的是U
系統提示:導出許可權(yes/no):yes>回車
系統提示:導出表數據(yes/no):yes>回車
系統提示:壓縮區(yes/no):yes>回車
系統提示:要導出的用戶: (RETURN 以退出) > mas
系統提示:要導出的用戶: (RETURN 以退出) > 回車
此時系統會自動進行備份
本文對Oracle數據的導入導出 imp ,exp 兩個命令進行了介紹, 並對其相應的參數進行了說明,然後通過一些示例進行演練,加深理解.
文章最後對運用這兩個命令可能出現的問題(如許可權不夠,不同oracle版本)進行了探討,並提出了相應的解決方案;
本文部分內容摘錄自網路,感謝網友的經驗總結;
一.說明
oracle 的exp/imp命令用於實現對資料庫的導出/導入操作;
exp命令用於把數據從遠程資料庫伺服器導出至本地,生成dmp文件;
imp命令用於把本地的資料庫dmp文件從本地導入到遠程的Oracle資料庫中。
二.語法
可以通過在命令行輸入 imp help=y 獲取imp的語法信息:
=============================================================================
C:\Documents and Settings\auser>imp help=y
Import: Release 9.0.1.1.1 - Proction on 星期二 5月 20 18:21:57 2008
(c) Copyright 2001 Oracle Corporation. All rights reserved.
可以通過輸入 IMP 命令和您的用戶名/口令
後接用戶名/口令的命令:
常式: IMP SCOTT/TIGER
或者, 可以通過輸入 IMP 命令和各種參數來控制「導入」
按照不同參數。要指定參數,您可以使用關鍵字:
格式: IMP KEYWORD=value 或 KEYWORD=(value1,value2,...,vlaueN)
常式: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N
或 TABLES=(T1: P1,T1: P2),如果 T1 是分區表
USERID 必須是命令行中的第一個參數。
關鍵字 說明(默認) 關鍵字 說明(默認)
--------------------------------------------------------------------------
USERID 用戶名/口令 FULL 導入整個文件 (N)
BUFFER 數據緩沖區大小 FROMUSER 所有人用戶名列表
FILE 輸入文件 (EXPDAT.DMP) TOUSER 用戶名列表
SHOW 只列出文件內容 (N) TABLES 表名列表
IGNORE 忽略創建錯誤 (N) RECORDLENGTH IO 記錄的長度
GRANTS 導入許可權 (Y) INCTYPE 增量導入類型
INDEXES 導入索引 (Y) COMMIT 提交數組插入 (N)
ROWS 導入數據行 (Y) PARFILE 參數文件名
LOG 屏幕輸出的日誌文件 CONSTRAINTS 導入限制 (Y)
DESTROY 覆蓋表空間數據文件 (N)
INDEXFILE 將表/索引信息寫入指定的文件
SKIP_UNUSABLE_INDEXES 跳過不可用索引的維護 (N)
FEEDBACK 每 x 行顯示進度 (0)
TOID_NOVALIDATE 跳過指定類型 ID 的驗證
FILESIZE 每個轉儲文件的最大大小
STATISTICS 始終導入預計算的統計信息
RESUMABLE 遇到與空格有關的錯誤時掛起 (N)
RESUMABLE_NAME 用來標識可恢復語句的文本字元串
RESUMABLE_TIMEOUT RESUMABLE 的等待時間
COMPILE 編譯過程, 程序包和函數 (Y)
下列關鍵字僅用於可傳輸的表空間
TRANSPORT_TABLESPACE 導入可傳輸的表空間元數據 (N)
TABLESPACES 將要傳輸到資料庫的表空間
DATAFILES 將要傳輸到資料庫的數據文件
TTS_OWNERS 擁有可傳輸表空間集中數據的用戶
==============================================
同樣可以通過輸入 exp help=y 獲取exp的語法信息
Microsoft Windows XP [版本 5.1.2600]
(C) 版權所有 1985-2001 Microsoft Corp.
C:\Documents and Settings\auser>exp help=y
Export: Release 9.0.1.1.1 - Proction on 星期二 5月 20 18:26:34 2008
(c) Copyright 2001 Oracle Corporation. All rights reserved.
通過輸入 EXP 命令和用戶名/口令,您可以
後接用戶名/口令的命令:
常式: EXP SCOTT/TIGER
或者,您也可以通過輸入跟有各種參數的 EXP 命令來控制「導出」
按照不同參數。要指定參數,您可以使用關鍵字:
格式: EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
常式: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)
或 TABLES=(T1: P1,T1: P2),如果 T1 是分區表
USERID 必須是命令行中的第一個參數。
關鍵字 說明(默認) 關鍵字 說明(默認)
--------------------------------------------------------------------------
USERID 用戶名/口令 FULL 導出整個文件 (N)
BUFFER 數據緩沖區大小 OWNER 所有者用戶名列表
FILE 輸出文件 (EXPDAT.DMP) TABLES 表名稱列表
COMPRESS 導入到一個區 (Y) RECORDLENGTH IO 記錄的長度
GRANTS 導出許可權 (Y) INCTYPE 增量導出類型
INDEXES 導出索引 (Y) RECORD 跟蹤增量導出 (Y)
DIRECT 直接路徑 (N) TRIGGERS 導出觸發器 (Y)
LOG 屏幕輸出的日誌文件 STATISTICS 分析對象 (ESTIMATE)
ROWS 導出數據行 (Y) PARFILE 參數文件名
CONSISTENT 交叉表一致性 CONSTRAINTS 導出約束條件 (Y)
FEEDBACK 每 x 行顯示進度 (0)
FILESIZE 每個轉儲文件的最大大小
FLASHBACK_SCN 用於回調會話快照的 SCN
FLASHBACK_TIME 用來獲得最接近於指定時間的 SCN 的時間
QUERY 用來導出表的子集的選擇子句
RESUMABLE 遇到與空格有關的錯誤時掛起 (N)
RESUMABLE_NAME 用來標識可恢復語句的文本字元串
RESUMABLE_TIMEOUT RESUMABLE 的等待時間
TTS_FULL_CHECK 對 TTS 執行完全或部分相關性檢查
TABLESPACES 要導出的表空間列表
TRANSPORT_TABLESPACE 導出可傳輸的表空間元數據 (N)
TEMPLATE 調用 iAS 模式導出的模板名稱
三.使用示例
3.1 數據導出:
1 將資料庫SampleDB完全導出,用戶名system 密碼manager 導出到E:\SampleDB.dmp中
exp system/manager@TestDB file=E:\sampleDB.dmp full=y
2 將資料庫中system用戶與sys用戶的表導出
exp system/manager@TestDB file=E:\sampleDB.dmp owner=(system,sys)
3 將資料庫中的表 TableA,TableB 導出
exp system/manager@TestDB file=E:\sampleDB.dmp tables=(TableA,TableB)
4 將資料庫中的表tableA中的欄位filed1 值為 "王五" 的數據導出
exp system/manager@TestDB file=E:\sampleDB.dmp tables=(tableA) query=' where filed1='王五'
如果想對dmp文件進行壓縮,可以在上面命令後面 加上 compress=y 來實現。
3.2 數據的導入
1 將備份資料庫文件中的數據導入指定的資料庫SampleDB 中,如果 SampleDB 已存在該表,則不再導入;
imp system/manager@TEST file=E:\sampleDB.dmp full=y ignore=y
2 將d:\chu.dmp中的表table1 導入
imp system/manager@TEST file=E:\sampleDB.dmp tables=(table1)
3. 導入一個完整資料庫
imp system/manager file=bible_db log=dible_db full=y ignore=y
4. 導入一個或一組指定用戶所屬的全部表、索引和其他對象
imp system/manager file=seapark log=seapark fromuser=seapark imp
system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)
5. 將一個用戶所屬的數據導入另一個用戶
imp system/manager file=tank log=tank fromuser=seapark touser=seapark_
imp system/manager file=tank log=tank fromuser=(seapark,amy)
touser=(seapark1, amy1)
6. 導入一個表
imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)
7. 從多個文件導入
imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4)
log=paycheck, filesize=1G full=y
8. 使用參數文件
imp system/manager parfile=bible_tables.par
bible_tables.par參數文件:
#Import the sample tables used for the Oracle8i Database Administrator's
Bible. fromuser=seapark touser=seapark_ file=seapark log=seapark_import
參數文件示例見附錄
9. 增量導入
imp system./manager inctype= RECTORE FULL=Y FILE=A
不少情況下要先將表徹底刪除,然後導入。
四.參數說明
4.1、8i EXP常用選項
1、FULL,這個用於導出整個資料庫,在ROWS=N一起使用時,可以導出整個資料庫的結構。例如:
exp sys file=./db_str.dmp log=./db_str.log full=y rows=n compress=y direct=y
2、BUFFER和FEEDBACK,在導出比較多的數據時,我會考慮設置這兩個參數。例如:
exp new file=yw97_2003.dmp log=yw97_2003_3.log feedback=10000 buffer=100000000 tables=WO4,OK_YT
3、FILL和LOG,這兩個參數分別指定備份的DMP名稱和LOG名稱,包括文件名和目錄,例子見上面。
需要說明的是,EXP可以直接備份到磁帶中,即使用FILE=/dev/rmt0(磁帶設備名),但是一般我們都不這么做,原因有二:一、這樣做的速度會慢很多,二、現在一般都是使用磁帶庫的,不建議直接對磁帶進行操作。至於沒有使用磁帶庫的朋友可以考慮和UNIX的TAR結合使用。
如果你真想使用EXP直接到磁帶,你可以參考Metalink文章「EXPORTING TO TAPE ON UNIX SYSTEMS」(文檔號:30428.1),該文中有詳細解釋。
4、COMPRESS參數將在導出的同時合並碎塊,盡量把數據壓縮到initial的EXTENT里,默認是N,一般建議使用。DIRECT參數將告訴EXP直接讀取數據,而不像傳統的EXP那樣,使用SELECT來讀取表中的數據,這樣就減少了SQL語句處理過程。一般也建議使用。不過有些情況下DIRECT參數是無法使用的。
5、如何使用SYSDBA執行EXP/IMP?
這是一個很現實的問題,有時候我們需要使用SYSDBA來執行EXP/IMP,如進行傳輸表空間的EXP/IMP,以及在9i下用SYS用戶來執行EXP/IMP時,都需要使用SYSDBA才可。我們可以使用下面方式連入EXP/IMP:
exp "'sys/sys as sysdba'" file=1.dmp tables=gototop.t rows=n
6、QUERY參數後面跟的是where條件,值得注意的是,整個where子句需要使用""括起來,where子句的寫法和SELECT中相同,如果是UNIX平台所有"和'都需要使用\u26469屏蔽它們的特殊含義:
exp gototop/gototop file=1.dmp log=1.log tables=cyx.t query="where c1=20 and c2=gototop"
如果是windows平台,則使用下面的格式:
exp c/c@ncn file=c.dmp log=c.log tables=t query="""where id=1 and name='gototop'"""
4.2、8i IMP常用選項
1、FROMUSER和TOUSER,使用它們實現將數據從一個SCHEMA中導入到另外一個SCHEMA中。
2、IGNORE、GRANTS和INDEXES,其中IGNORE參數將忽略表的存在,繼續導入,這個對於需要調整表的存儲參數時很有用,我們可以先根據實際情況用合理的存儲參數建好表,然後直接導入數據。而GRANTS和INDEXES則表示是否導入授權和索引,如果想使用新的存儲參數重建索引,或者為了加快到入速度,我們可以考慮將INDEXES設為N,而GRANTS一般都是Y。
另外一個EXP/IMP都有的參數是PARFILE,它是用來定義EXP/IMP的參數文件,也就是說,上面的參數都可以寫在一個參數文件中,但我們一般很少使用。
4.4、Oracle9i EXP功能描述
Oracle9i EXP在原有的基礎上新增了部分新的參數,按功能主要分為以下幾個部分:
1、OBJECT_CONSISTENT - 用於設置EXP對象為只讀以保持對象的一致性。默認是N。
2、FLASHBACK_SCN和FLASHBACK_TIME - 用於支持FLASHBACK功能而新增。
3、RESUMABLE、RESUMABLE_NAME和RESUMABLE_TIMEOUT - 用於支持RESUMABLE空間分配而新增。
4、TTS_FULL_CHECK - 用於在傳輸表空間時使用依賴性檢查。
5、TEMPLATE - 用於支持iAS。
6、TABLESPACES - 設置表空間導出模式。個人覺得對於一般用戶而言,這個才是新增參數中最實用的一個,可以讓用戶在原來的FULL、OWNER、TABLES的基礎上多了一種選擇,使得EXP更加靈活。
五、不同版本的EXP/IMP問題?
一般來說,從低版本導入到高版本問題不大,麻煩的是將高版本的數據導入到低版本中,在Oracle9i之前,不同版本Oracle之間的EXP/IMP可以通過下面的方法來解決:
1、在高版本資料庫上運行底版本的catexp.sql;
2、使用低版本的EXP來導出高版本的數據;
3、使用低版本的IMP將資料庫導入到底版本資料庫中;
4、在高版本資料庫上重新運行高版本的catexp.sql腳本。
但在9i中,上面的方法並不能解決問題。如果直接使用底版本EXP/IMP會出現如下錯誤:
EXP-00008: ORACLE error %lu encountered
ORA-00904: invalid column name
這已經是一個公布的BUG,需要等到Oracle10.0才能解決,BUG號為2261,你可以到METALINK上去查看有關此BUG的詳細信息。
BUG歸BUG,我們的工作還是要做,在沒有Oracle的支持之前,我們就自己解決。在Oracle9i中執行下面的SQL重建exu81rls視圖即可。
CREATE OR REPLACE view exu81rls
(objown,objnam,policy,polown,polsch,polfun,stmts,chkopt,enabled,spolicy)
AS select u.name, o.name, r.pname, r.pfschma, r.ppname, r.pfname,
decode(bitand(r.stmt_type,1), 0,'', 'SELECT,')
|| decode(bitand(r.stmt_type,2), 0,'', 'INSERT,')
|| decode(bitand(r.stmt_type,4), 0,'', 'UPDATE,')
|| decode(bitand(r.stmt_type,8), 0,'', 'DELETE,'),
r.check_opt, r.enable_flag,
DECODE(BITAND(r.stmt_type, 16), 0, 0, 1)
from user$ u, obj$ o, rls$ r
where u.user# = o.owner#
and r.obj# = o.obj#
and (uid = 0 or
uid = o.owner# or
exists ( select * from session_roles where role='SELECT_CATALOG_ROLE')
)
/
grant select on sys.exu81rls to public;
/
六、其他問題
本文只討論了Oracle8i和9i中的EXP/IMP的一些情況,對於之前的版本,在8.0.X中,除了QUERY參數不能用外,其它差別不大。針對沒有QUERY的情況,我們可以先在資料庫中使用查詢條件建立臨時中間表,然後使用EXP導出這個中間表即可。至於Oracle7因為目前使用的人較少,gototop不打算在此做詳細解釋了,如果讀者朋友有需求,你可以參考Metalink文檔:「Overview of Export and Import in Oracle7」(文檔號:61949.1)。關於EXP/IMP的詳細參數信息你可以通過EXP/IMP HELP=Y來獲得。
另外關於傳輸表空間的更多信息可以參考下面的Metelink文檔,本文不再詳述。
[NOTE:77523.1] Transportable Tablespaces -- An Example to setup and use.
[NOTE:100698.1] Perform tablespace point-in-time recovery using Transportable Tablespace.
在進行並行EXP/IMP的時候,如果IMP過程建索引的話不建議同時運行5個以上的IMP,如果你想加快速度,可以在IMP的時候不建索引,這樣只要內存允許,可以多跑幾個,然後是SQL腳本創建需要的索引。
注意:
操作者要有足夠的許可權,許可權不夠它會提示。
資料庫是否可以連上, 可以用tnsping TestDB 來獲得資料庫 TestDB 能否連上。
附錄一:
給用戶增加導入數據許可權的操作
第一, 啟動sql*puls
第二,以system/manager登陸
第三,create user 用戶名 IDENTIFIED BY 密碼(如果已經創建過用戶,這步可以省略)
第四,GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,
DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,
DBA,CONNECT,RESOURCE,CREATE SESSION TO 用戶名字
第五, 運行-cmd-進入dmp文件所在的目錄,
imp userid=system/manager full=y file=*.dmp
或者 imp userid=system/manager full=y file=filename.dmp
附錄二:
Oracle 不允許直接改變表的擁有者, 利用Export/Import可以達到這一目的.
先建立import9.par,
然後,使用時命令如下:imp parfile=/filepath/import9.par
例 import9.par 內容如下:
FROMUSER=TGPMS
TOUSER=TGPMS2 (註:把表的擁有者由FROMUSER改為TOUSER,FROMUSER和TOUSER的用戶可以不同)
ROWS=Y
INDEXES=Y
GRANTS=Y
CONSTRAINTS=Y
BUFFER=409600
file==/backup/ctgpc_20030623.dmp
log==/backup/import_20030623.log
❸ EXP-00056: 遇到 ORACLE 錯誤 932 ORA-00932: 數據類型不一致: 應為 BLOB, 但卻獲得 CHAR 導出失敗
是個bug,metalink解釋如下
Full Export From 10.2.0.1 Aborts With EXP-56 ORA-932 (Inconsistent Datatypes) EXP-0 [ID 339938.1] Modified 30-MAR-2009 Type PROBLEM Status PUBLISHED In this Document
Symptoms
Cause
Solution
References
Applies to:Oracle Server - Enterprise Edition - Version: 10.1.0.2 to 10.2.0.3
Oracle Server - Personal Edition - Version: 10.1.0.2 to 10.2.0.3
Oracle Server - Standard Edition - Version: 10.1.0.2 to 10.2.0.3
This problem can occur on any platform.
SymptomsA full database export from a Oracle10g database aborts with:...
. exporting cluster definitions
EXP-00056: ORACLE error 932 encountered
ORA-00932: inconsistent datatypes: expected BLOB, CLOB got CHAR
EXP-00056: ORACLE error 932 encountered
ORA-00932: inconsistent datatypes: expected BLOB, CLOB got CHAR
EXP-00000: Export terminated unsuccessfully
EXP-00000: Export terminated unsuccessfully
If export was started with SYS schema, a table level export may also fail with:...
Current user changed to TEST
. . exporting table DOC_ARCHIVE 16 rows exported
Current user changed to SYS
EXP-00011: SYS.; does not exist
Export terminated successfully with warnings.CauseOne possible cause (note there might be others):Script $ORACLE_HOME/rdbms/admin/catmeta.sql has been run recently.There are several invalid SYS.KU$_% views in the dictionary:-- invalid objects:
SET lines 120 pages 2000
COL status FOR a9
COL object_type FOR a20;
COL owner.object FOR a50
SELECT status, object_id, object_type, owner||'.'||object_name "OWNER.OBJECT"
FROM dba_objects
WHERE status != 'VALID' AND object_name NOT LIKE 'BIN$%'
ORDER BY 4,2;
STATUS OBJECT_ID OBJECT_TYPE OWNER.OBJECT
--------- ---------- --------------- --------------------------------
INVALID 7105 PACKAGE BODY SYS.DBMS_METADATA
INVALID 6683 VIEW SYS.KU$_10_1_COMMENT_VIEW
INVALID 6788 VIEW SYS.KU$_10_1_IND_STATS_VIEW
INVALID 6778 VIEW SYS.KU$_10_1_PIND_STATS_VIEW
INVALID 6752 VIEW SYS.KU$_10_1_PTAB_STATS_VIEW
INVALID 6770 VIEW SYS.KU$_10_1_SPIND_STATS_VIEW
INVALID 6748 VIEW SYS.KU$_10_1_TAB_ONLY_STATS_VIEW
... (etc)
A query in SQL*Plus on sys.ku$_xmlschema_view also fails with ORA-932:SET lines 200 pages 2000
COL url FOR a60 WRA
SELECT url, local, stripped_val
FROM sys.ku$_xmlschema_view;
ORA-00932: inconsistent datatypes: expected BLOB, CLOB got CHARSolutionFor reasons having to do with compatibility, the XDB objects cannot be created by the catproc.sql script. The script catproc.sql therefore calls the catmeta.sql script, which contains fake object views for XDB objects.
The real object views are defined in the catmetx.sql script (this script is invoked by catxdbv.sql which is invoked by catqm.sql).Solution #1
Run following scripts while connected as SYS user:> sqlplus /nolog
SQL> connect / as sysdba
SQL> @?/rdbms/admin/catmetx.sql
SQL> @?/rdbms/admin/utlrp.sql
SQL> exit
Afterwards, re-run the export.or:Solution #2
Run the export with the Export DataPump client. E.g.:> expdp system/manager directory=my_dir \
mpfile=expdp_full.dmp logfile=expdp_full.log full=y
❹ ORACLE濡備綍淇鏀硅〃鎵鍦ㄧ殑琛ㄧ┖闂
鍙浠ラ氳繃alter鏂規硶錛屽皢涓涓琛ㄧЩ鍔ㄥ埌鍙﹀栦竴涓琛ㄧ┖闂翠腑錛
sql錛 alter table spaceOne.tablename move tablespace spaceTwo;
瑙i噴錛氫互涓婅鍙ュ氨鏄鎶妕ablename琛ㄤ粠spaceOne縐誨姩鍒皊paceTwo涓銆
澶囨敞涓錛
褰撳墠鐨勭敤鎴峰繀欏誨箂paceTwo銆乻paceOne閮芥湁鎿嶄綔鏉冮檺鎵嶅彲浠ャ
澶囨敞浜岋細
鍏跺疄濡傛灉瀵逛袱涓琛ㄧ┖闂撮兘鏈夋潈闄愮殑璇濓紝鍙浠ラ氳繃
create spaceTwo.tablename as select * from spaceOne.tablename;
涔嬪悗鍐嶅垹闄spaceOne涓璽ablename琛ㄧ殑闂存帴鏂瑰紡涔熻兘瀹炵幇銆
❺ 求助:如何用C#導出SQL的建表腳本和索引腳本
有同事要導出一個資料庫用戶下創建索引的腳本,然後拿到另外一個庫裡面去執行。很少有這樣的需求,問了一下,他們要進行數據遷移,在新的庫中要求索引單獨放在一個表空間裡面,於是就把所有的索引都刪除了,進行重建。
本來這個可以用如下方法來實現:
ALTER INDEX index_name rebuild tablespace tbs_name;
既然索引已經刪除了,就需要從原資料庫中導出創建索引的腳本,索引是依附於表而存在的,沒有辦法用exp/expdp工具單獨導出創建索引的腳本,不過我們可以通過如下方法進行:
1 生成批量導出索引的語句
在sqlplus中運行spool create_create_index.SQLSELECT'select dbms_metadata.get_ddl(''INDEX'', ' || ''''|| INDEX_NAME||'''' || ') from al;'FROMuser_indexes ;spool off
2 生成創建索引的sql語句
在sqlplus中運行spool create_index.SQL@create_create_index.SQLspool off
得到b.sql文件中即為創建索引的語句
3 創建索引
在sqlplus中運行@create_index.SQL