Oracle的EXP和IMP命令导入导出操作

一、EXP实现逻辑备份

EXP/IMPOracle比较传统的数据库逻辑备份工具,实现全库或表空间的逻辑备份,不支持用户的交互模式,基于客户端。

 

EXP导出方式

a)传统路径方式:采用SQL语句把要导出的表的数据检索出来,通过网络将这些数据传输到客户端,并生成转储文件。既然是SQL语句的方式,就需要在shared_pool中解析生成执行计划以后,将数据缓存到buffer中,然后传到客户端,该方式是默认的导出方式。

b)直接路径方式:直接获得数据块,并绕过shared_poolbuffer cache,将数据块里的数据直接抽出来后直接传递到客户端上,速度较快。导出时需加上direct=y,有一些限制,不能导出含有LOBBFILE等大对象的表。

 

EXP指令

Windows平台,可以输入EXP HELP=Y,查看帮助信息。

D:\backup>exp help=y

演示基于EXP的数据导出

1EXP导出整个数据库

D:\backup>exp full=y file=wholedb.dmp

Username: sys as sysdba

Password:

2EXP导出全库,不包括数据

D:\backup>exp full=y rows=n file=wholedb_without_data.dmp

Username: sys as sysdba

Password:

注:参数rows=n,表示只导出数据块不包括数据

3EXP指令导出特定的表

D:\backup>exp tables=scott.emp,scott.dept file=scott.dmp

Username: sys as sysdba

Password:

4EXP指令导出当前用户的表

D:\backup>exp scott/scott tables=dept,emp file=current_user_data.dmp

5EXP指令导出指定的用户

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:

2IMP指令恢复指定的用户

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:

posted on 2022-09-30 16:17  洞幺人生  阅读(3440)  评论(0编辑  收藏  举报