Oracle数据库的impdp导入操作以及dba_directories使用方法
Oracle数据库的impdp导入操作以及dba_directories使用方法 今天从同事那里拿到了导出的dmp文件,当导入时发现了很多问题,记下来以免以后忘记,以下是本人的操作过程: 1.首先是创建一个文件夹dump,用来存放dmp文件,存放在E:oracledump 2.然后是把同事那里拿来的表空间脚本执行完,我是用system执行的,下边是其中一段: CREATE TABLESPACE UR_FWDJ_DATA DATAFILE 'E:oracleoradataorclUR_FWDJ_DATA.dbf' SIZE 1060M AUTOEXTEND OFF, 'E:oracleoradataorclUR_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:oracledump'; 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 Filesfiletop'; 删除:drop directory mydump; 4.创建好目录之后,开始操作还原数据 impdp system/manager directory=mydump dumpfile=ur_fwdj.dmp logfile=ur_fwdj.log 5.执行过程中发现表空间不够用了,扩表空间: alter database datafile'E:ORACLEORADATAORCLUR_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是小写,我导入时有影响,大写就成功导入了,不知道什么原因 最后不要加分号,不然会提示目录名某某某无效! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |