Oracle数据库的impdp导入操作以及dba_directories使用方法
今天从同事那里拿到了导出的dmp文件,当导入时发现了很多问题,记下来以免以后忘记,以下是本人的操作过程:
1.首先是创建一个文件夹dump,用来存放dmp文件,存放在E:\oracle\dump
2.然后是把同事那里拿来的表空间脚本执行完,我是用system执行的,下边是其中一段:
CREATE TABLESPACE UR_FWDJ_DATA DATAFILE
'E:\oracle\oradata\orcl\UR_FWDJ_DATA.dbf' SIZE 1060M AUTOEXTEND OFF,
'E:\oracle\oradata\orcl\UR_fwdj_data_2.dbf' SIZE 4684M AUTOEXTEND OFF
LOGGING
ONLINE
PERMANENT
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;
3.创建好表空间之后,在dos命令下使用impdp导入,但之前需要做点准备工作:
3.1 创建逻辑目录,该命令不会再硬盘中创建真正的目录,最好使用system等管理员账户创建:
create or replace directory mydump as 'E:\oracle\dump';
3.2 查看是否正确创建(硬盘中也要有这个目录,Oracle并不关心该目录是否真的存在,如果不存在会报错):
select * from dba_directories;
3.3 目录创建好之后,就可以把读写权限授予特定用户:
grant read,write on dirrectory mydump to system;
3.3 这里同时提一下,如果创建的目录不对,修改,删除的命令:
修改:create or replace directory mydump as'F:\Program Files\file\top';
删除:drop directory mydump;
4.创建好目录之后,开始操作还原数据
impdp system/manager directory=mydump dumpfile=ur_fwdj.dmp logfile=ur_fwdj.log
5.执行过程中发现表空间不够用了,扩表空间:
alter database datafile'E:\ORACLE\ORADATA\ORCL\UR_FWDJ_DATA.DBF' resize 2000M;
发现在PL/sql中执行会报:Oracle ORA-00911 无效字符,但只需要在dos下边执行就会成功,好奇怪!
6.有时候我们执行的过程中导入有错误,需要把导入的用户下的表都删除,删除表空间如下:
删除用户以及用户下的所有表:drop user ur_fwdj cascade;
删除表空间:drop tablespace ur_fwdj_data including contents and datafiles;
drop tablespace ur_fwdj_data;
drop tablespace ur_fwdj_data including datafiles
drop tablespace ur_fwdj_data including contents;
drop tablespace ur_fwdj_data including contents and datafiles;
--如果其他表空间的表的外键约束关联到本表空间的表的字段时,就:
drop tablespace ur_fwdj_data including contents and datafiles cascade constrants;
所以上边删除表空间的意思明白了吧!
导出:
expdp name/pass@test directory=mydump dumpfile=UR_FWDJ.DMP schemas=ur_fwdj(远程导出数据的一种方法)
注意的是如果UR_FWDJ.DMP是小写,我导入时有影响,大写就成功导入了,不知道什么原因
最后不要加分号,不然会提示目录名某某某无效!
原文链接:https://www.f2er.com/oracle/212636.html