第一步:首先使用DBA权限的用户创建directory,我使用system ,可以在服务器本地创建,也可以远程连接sqlplus进行创建,使用的将是服务器上面的路径。要确保创建directory时,操作系统层面的路径已经存在。如果不存在,可以删除directory后,再重新建立directory。
create directory data_pump_dir as '\exphd\datapump';
此处注意,即便操作系统层面不存在相应的目录,也会显示创建成功,但是在执行expdp的时候会出现错误:
ORA-39002: 操作无效
ORA-39070: 无法打开日志文件。
ORA-39087: directory name DUMPDIR is invalid
第二步:连接到其它dba权限的用户,授权给要使用expdp的用户,,也可远程执行,即expdp 中的userid中的用户,而不是schemas=后面的用户:
grant read,write on directory DUMPDIR to system;
如果没有授权使用,也会出相应的错误
第三步:查看管理理员目录,也可远程执行:
select * from dba_directories;
建立的directory 都是隶属于sys用户的,列出的路径也都是指服务器上面的,可以在此对照下物理目录是否存在问题。
注意事项:
1、需要注意的是,虽然可以远程建立目录、授权和查询,expdp只能在服务器端执行,