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