前言:
最近,客户方要求每天定时导出数据库某个用户对象数据,方便出错时用于数据恢复或用于调用数据。由于客户生产环境的数据库为非归档模式,数据量比较小,最后采用古老的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和第三方工具。