注意:在导出导入过程中要确保导入的表空间(及临时)名称与原表空间名称一致。
如果表中有BLOB或CLOB字段。可以先创建表,再导数据
EXPDP 用法步骤
手动创建导出目录文件夹。目录名称与第二步的目录名称一致
使用SQL 创建目录(需要使用SYSDBA权限)
create directory dir_dp(目录名称) as 'D:/dir_dp';
授权(需要使用SYSDBA权限)
Grant read,write on directory dir_dp to zftang;
执行导出(cmd下运行)
expdp 用户名/密码@实例名 schemas=用户名 directory=创建的目录名称 dumpfile =expdp_test1.dmp logfile=expdp_test1.log;
备注:该方法忽略了JOB名称,如果需要,写法后添加:job_name=my_job
EXP 用法详解
数据导出
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 来实现。
数据导入
1 将备份数据库文件中的数据导入指定的数据库SampleDB 中,如果 SampleDB 已存在该表,则不再导入;
imp system/manager@TEST file=E:\sampleDB.dmp full=y ignore=y
2 将d:\daochu.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_copy
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_copy file=seapark log=seapark_import
参数文件示例见附录
9. 增量导入
imp system./manager inctype= RECTORE FULL=Y FILE=A
EXP 实用示例
----之前一直使用PL/SQL工具将表、视图等等分开导入。后来发现oracle自带的 imp和exp 更加好用。可以将所有信息全部copy,如此,我们也可以也根据这个写自动备份,将数据库数据全部备份。--
a.导出整个数据库TEST,system/manager 为用户名密码, file=d:\daochu.dmp 是导出的目录
exp system/manager@TEST file=d:\daochu.dmp full=y
b.导出数据库TEST下的system用户域sys用户所有表
exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
c.指定导出数据库的表或视图或其它
exp system/manager@TEST file=d:\daochu.dmp tables=(table_1,table_2)
view=......
d.导入整个数据库,D:\daochu.dmp 中的数据到test数据库中。
imp sys/manager@test file=d:\daochu.dmp
e.导入用户下所有表空间等等
imp ZM/sql123@ORCL fromuser=ZM touser=SZZM file=F:\test.dmp ignore=y