使用expdp和impdp时应该注重的事项:
1、exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。
2、expdp和impdp是服务端的工具程序,他们只能在oracle服务端使用,不能在客户端使用。
3、imp只适用于exp导出的文件,不适用于expdp导出文件;impdp只适用于expdp导出的文件,而不适用于exp导出文件。
4、对于10g以上的服务器,使用exp通常不能导出0行数据的空表,而此时必须使用expdp导出。
第一步:首先使用DBA权限的用户创建directory,我使用system ,可以在服务器本地创建,也可以远程连接sqlplus进行创建,使用的将是服务器上面的路径。要确保创建directory时,操作系统层面的路径已经存在。如果不存在,可以删除directory后,再重新建立directory。
SQL〉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=后面的用户:
SQL〉grant read,write on directory DUMPDIR to system;
可以使用角色授权:
SQL〉grant read,write on directory DUMPDIR to system;
如果没有授权使用,也会出相应的错误
第三步:查看管理理员目录,也可远程执行:
select * from dba_directories;
建立的directory 都是隶属于sys用户的,列出的路径也都是指服务器上面的,可以在此对照下物理目录是否存在问题。
注意事项:
1、需要注意的是,虽然可以远程建立目录、授权和查询,expdp只能在服务器端执行,在客户端执行会出现:
连接到: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Pr
With the Partitioning, OLAP, Data Mining and Real Application Testing
ORA-39002: 操作无效
ORA-39070: 无法打开日志文件。
ORA-29283: 文件操作无效
ORA-06512: 在 "SYS.UTL_FILE", line 488
ORA-29283: 文件操作无效
等类似的错误。
2、使用expdp导出的11g的数据可以使用 10g的impdp导入到10g的数据库里面,需要在两个命令里面都添加一个version =10.2.0.1.0 指定相应的版本号。
3:userid可以这样写,看帮助同样是help=y
IMPDP USERID='SYS/cuc2009@cucf as sysdba' schemas=sybj directory=DATA_PUMP_DIR dumpfile=aa.dmp logfile=aa.log version=10.2.0.1.0
按照正常3步走,
数据泵工具导出的步骤:
1、创建DIRECTORY
create directory testdb as 'G:\testdb';
2、授权
Grant read,write on directory testdb to naifen;
--查看目录及权限
SELECT privilege, directory_name, DIRECTORY_PATH FROM user_tab_privs t, all_directories d
WHERE t.table_name(+) = d.directory_name ORDER BY 2, 1;
3、执行导出
expdp naifen/naifen@mycqjmdb schemas=naifen directory=testdb dumpfile =testdb.dmp ;
执行expdp时,出现
连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORA-39002: 操作无效
ORA-39070: 无法打开日志文件。
ORA-29283: 文件操作无效
ORA-06512: 在 "SYS.UTL_FILE", line 536
ORA-29283: 文件操作无效
查阅无数资料,最终确定语句无误,无奈之下,我打开G盘随意翻翻,发现G盘并没有我创建的文件夹testdb,于是手动创建了testdb文件夹,
再于CMD下执行EXPDP,问题不复存在,就这样解决了啊,原来Oracle并不会真正在G盘创建文件夹啊,只是做了这么个映射,真是印证了那个回复“首先,你得有个女朋友”...