前言:

最近,客户方要求每天定时导出数据库某个用户对象数据,方便出错时用于数据恢复或用于调用数据。由于客户生产环境的数据库为非归档模式,数据量比较小,最后采用古老的exp/imp导出导入方法。下面主要讲解一下EXP/IMP用户对象导出导入的使用方法。

正文:

操作系统windows server 2003  oracle10g

EXP用户对象导出操作:

oracle客户端配置tnsnames.ora

canway =

 (DESCRIPTION =

   (ADDRESS_LIST =

     (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.2.43)(PORT = 1521))

    )

   (CONNECT_DATA =

     (SERVICE_NAME = ORCL)

    )

  )

使用EXP用户对象导出的方法比较简单:

打开cmd窗口,执行以下命令:

exp system/canway@canway owner=用户名 file=*.dmp log=*.log compress=y direct=nrows=y

#标注:owner:需要导出的用户名compress 导入一个extent (Y)   DIRECT:直接路径 (N)  ROWS 导出数据行 (Y)

 

IMP用户对象导入操作:

由于imp导入用户对象数据,不会进行覆盖,故导入之前需要做以下操作:

1.查看用户对应默认表空间:

select username,DEFAULT_TABLESPACE from dba_users;

 

2.删除用户并删除此用户名下的所有表和视图(不删除用户所在的表空间):

drop user username cascade;

(若该用户正在运行,需要KILL掉会话

select sid,serial# from v$session where username='user_name';

 

alter system kill session 'sid,serial';

 

3.重建之前的用户和密码:

create user 用户名 identified by 密码 default tablespace 表空间名;

(查找用户对应的默认表空间:

 select username,DEFAULT_TABLESPACE from dba_users;

 

4.赋予用户适当的权力

grant connect,resource,dba to 用户名;

 

5.对用户对象数据导入:

运行在命令行的窗口下

imp system/canway@canway file=I:\backup\*.dmplog=I:\backup\*.log  fromuser=导出的用户名 touser=导入的用户名;

#注释:file=导出文件存放的直接路径和名称.dmp log=导入过程中产生的日志追踪log

Fromuser:导出的文件所有者touser:即将需要导入到哪个用户名。

 

总结:Exp/Imp导出导入是一个好的转储工具,特别是在小型数据库的转储,表空间的迁移,表的抽取,检测逻辑和物理冲突等中有不小的功劳,本次主要介绍用户对象导出导入的方法。而对于越来越大的数据库,特别是TB级数据库和越来越多数据仓库的出现,EXP/IMP越来越力不从心了,这个时候,数据库的备份都转向了RMAN和第三方工具。