Oracle的EXP和IMP命令导入导出操作
一、EXP实现逻辑备份
EXP/IMP是Oracle比较传统的数据库逻辑备份工具,实现全库或表空间的逻辑备份,不支持用户的交互模式,基于客户端。
EXP导出方式
a)传统路径方式:采用SQL语句把要导出的表的数据检索出来,通过网络将这些数据传输到客户端,并生成转储文件。既然是SQL语句的方式,就需要在shared_pool中解析生成执行计划以后,将数据缓存到buffer中,然后传到客户端,该方式是默认的导出方式。
b)直接路径方式:直接获得数据块,并绕过shared_pool和buffer cache,将数据块里的数据直接抽出来后直接传递到客户端上,速度较快。导出时需加上direct=y,有一些限制,不能导出含有LOB,BFILE等大对象的表。
EXP指令
在Windows平台,可以输入EXP HELP=Y,查看帮助信息。
D:\backup>exp help=y
演示基于EXP的数据导出
1)EXP导出整个数据库
D:\backup>exp full=y file=wholedb.dmp
Username: sys as sysdba
Password:
2)EXP导出全库,不包括数据
D:\backup>exp full=y rows=n file=wholedb_without_data.dmp
Username: sys as sysdba
Password:
注:参数rows=n,表示只导出数据块不包括数据
3)EXP指令导出特定的表
D:\backup>exp tables=scott.emp,scott.dept file=scott.dmp
Username: sys as sysdba
Password:
4)EXP指令导出当前用户的表
D:\backup>exp scott/scott tables=dept,emp file=current_user_data.dmp
5)EXP指令导出指定的用户
D:\backup>exp owner=scott file=scott.dmp
Username: sys as sysdba
Password:
6)EXP导出指定的表空间
D:\backup>exp tablespaces=users file=user_ts.dmp
Username: sys as sysdba
Password:
二、IMP实现逻辑恢复
在执行导入命令的过程中,按下面的顺序导入:
1、创建表结构
2、导入表数据
3、创建索引
4、导入触发器
5、对导入的表启用完整性约束
6、建立索引
通过IMP HELP=Y查看该命令的帮助信息
D:\backup>imp help=y
演示基于IMP的数据导入
1)恢复特定的表
D:\backup>imp tables=emp fromuser=scott touser=scott file=scott.dmp
Username: sys as sysdba
Password:
2)IMP指令恢复指定的用户
D:\backup>imp ignore=y fromuser=scott touser=scott file=scott.dmp
Username: sys as sysdba
Password:
注意:在导出导入中发现有些表没有导入,原因是这些表为空表,当表为空表时,不分配Segment,以节省空间。
解决办法:
SQL> conn scott/scott@orcl
Connected.SQL> SELECT 'alter table ' || t.table_name || ' allocate extent'
2 FROM user_tables t
3 WHERE t.num_rows = 0;
'ALTERTABLE'||T.TABLE_NAME||'ALLOCATEEXTENT'----------------------------------------------------------alter table BONUS allocate extent
SQL> alter table BONUS allocate extent;
Table altered.
SQL>
D:\backup>imp ignore=y fromuser=scott touser=scott file=scott.dmp
Username: sys as sysdba
Password: