使用expdp命令导出用户,表或者表空间的数据的步骤如下:
1. 创建directory(在sqlplus中进行创建)
create or replace directory wsj_obj_name as '/home/wsj'; #注意这边的/home/wsj目录oracle用户必须是属主
2. 授权
grant read or write on wsj_obj_name to wsj;# 给wsj这个数据库用户赋予对wsj_obj_name这个路径(即/home/wsj)的读写权限
3. 导出数据
expdp wsj/wsj directory=wsj_obj_name dumpfile=exp_wsj.dmp logfile=exp_wsj.log parallel=1 schemas=wsj # 导出的exp_wsj.dmp会默认的放在wsj_obj_name这个路径(即/home/wsj)
在上面的1,2步骤中,都是以数据库中的sys用户来执行的,若需要使用普通用来完成1,2步骤,方法如下:
a. 给用户赋予create any directory权限
grant create any directory to wsj; # 给wsj这个数据库用户赋予create any directory
b. 以普通用户创建directory
sqlplus wsj/wsj;
create or replace directory wsj_obj_name as '/home/wsj';
c. 导出数据
expdp wsj/wsj directory=wsj_obj_name dumpfile=exp_wsj.dmp logfile=exp_wsj.log parallel=1 schemas=wsj # 导出的exp_wsj.dmp会默认的放在wsj_obj_name这个路径(即/home/wsj)
删除directory:
drop directory wsj_obj_name;
两种方法对比发现:
1. 使用普通用户创建directory不需要再对普通用户自己赋予读写权限,而sys用户需要
2. 不管是普通用户还是sys用户,wsj_obj_name这个directory任何用户都可以使用,只是需要给用户赋予grant read or write 权限(若是自己创建的directory则无需grant read or write,因为自己对自己创建的东西享有任何相关权限,这当然包括read,write)