exp/imp可以在服务器端和客户端执行,并且备份文件也是可以在客户端产生。而expdp/impdp只能服务器上执行,同时备份文件只能存在服务器上面。
1. 创建用户及授权
create user ilanni identified by ilanni default tablespace ilanni;
grant connect,resource,create any view to ilanni;
2. 创建导出目录及授权
create directory exp_dir as ‘d:\test’;
(这个创建先后没有顺序,可以在用户未创建前创建,也可以在用户创建后创建。但是d:\test目录必须首先已经存在,或者已经创建)
grant read,write on directory exp_dir to ilanni;
3. 创建导入目录及授权
create or replace directory wpdp_dir as ‘d:\test’;
(这个创建先后没有顺序,可以在用户未创建前创建,也可以在用户创建后创建。但是d:\test目录必须首先已经存在,或者已经创建)
grant read,write on directory wpdp_dir to ilanni;
4. 导出dmp文件
expdp ilanni/topo@127.0.0.1:/xe schemas=ilanni dumpfile=ilanni_expdp.dmp logfile=ilanni_expdp.log directory=exp_dir
5. 导入dmp文件,从一个用户expdp导出再impdp导入到另一个用户
5.1 如果想导入的用户已经在数据库中存在:
a. 导出用户
expdp user1/pass1 directory=dumpdir dumpfile=user1.dmp
b. 导入用户
impdp user2/pass2 directory=dumpdir dumpfile=user1.dmp remap_schema=user1:user2 exclude=user full=y;
5.2 如果想导入的用户在数据库中不存在:
a. 导出用户
expdp user1/pass1 directory=dumpdir umpfile=user1.dmp
b. 导入用户
impdp system/passsystem directory=dumpdir dumpfile=user1.dmp remap_schema=user1:user2 full=y;
user2会自动建立,其权限和使用的表空间与user1相同,但此时用user2无法登录,因为此是user2是锁定状态,而且还要必须修改user2的密码(详见8解释)
impdp ilanni/topo@127.0.0.1:/xe directory=wpdp_dir remap_schema=topo:ilanni remap_tablespace=ilanni_test:ilanni dumpfile=ilanni_expdp.dmp logfile=ilanni_impdp.log
其中remap_schema字段中的topo为原来数据库用户,ilanni为现在数据库用户。remap_tablespace字段中的ilanni_test为原来数据库的表空间,ilanni为现在数据库的表空间。
6. 查询已经存在的导入目录
select * from dba_directories;
7. 删除已经存在导入目录
drop directory directory_name;
8. impd导入时,可以创建用户
impdp命令在导入数据时,如果用户存在,则会自动创建该用户,因为expdp导出的dmp文件中包含了创建用户的脚本信息(包括密码,缺省表空间,临时表空间等)。
impdp自动创建用户有一个前提条件,就是需要首先创建用户的缺省表空间和临时表空间,如果缺省表空间或者临时表空间不存在,则自动创建用户会失败,导致导入数据的失败。
在执行impdp之前,必须要创建导入目录,如下:
create directory wpdp_dir as ‘ d:\test ‘;
impdp system/system@192.168.24.249:/orcl directory=wpdp_dir remap_schema=coss:ilanni remap_tablespace=ilanni_test:ilanni dumpfile=ilanni.dmp logfile=ilanni.log
该导入语句中coss是原来dmp文件原来数据库用户,ilanni为要创建的用户。这个执行完毕后,新建的用户ilanni还处于锁定状态,密码还要修改。而且该用户还有DBA权限。