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