`
I_conquer
  • 浏览: 24427 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

从一个用户expdp导出再impdp导入到另一个用户

阅读更多
在执行expdp、impdp之前首先要创建directory 对象:
如:创建dump directory对象语句如下:
create directory dump as 'd:\dump';
注:dump 对象的创建是用system/admin用户操作的

然后将directory对象dump的read,write权限授权给当前操作用户:
grant read,write on directory dump to oracle;
grant read,write on directory dump to scott;

下面语句实现将oracle用户下所有对象 导入到 scott用户中:

1.将oracle用户 导出到 f:\dump\oracledata.dmp文件 日志文件:oraclebak.log

导出语句:
D:\oracle\product\10.2.0\db_1\BIN>expdp username/password directory=dump
dumpfile=oracledata.dmp schemas=oracle logfile=oraclebak.log job_name=exporacle

这里我执行的时候报错:
ORA-39002: invalid operation
ORA-39070: Unable to open the log file.
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 475
ORA-29283: invalid file operation

我一直以为是权限的问题,最后Google后发现是因为没有dump这个文件夹,create directory dump as 'd:\dump';这个语句不创建文件夹么?有知道的大神可以给我详细说一下。

建好文件夹后执行成功。

2.将d:\dump\oracledata.dmp 文件中oracle用户下所有的对象 导入到scott用户下,日志文件:imporacle.log

导入语句:
D:\oracle\product\10.2.0\db_1\BIN>impdp scott/123456 directory=dump dumpfile=
oracledata.dmp logfile=imporacle.log remap_schema=oracle:scott

导入有两种情况:
如果想导入的用户已经存在:
1. 导出用户 expdp user1/pass1 directory=dumpdir dumpfile=user1.dmp
2. 导入用户 impdp user2/pass2 directory=dumpdir dumpfile=user1.dmp REMAP_SCHEMA=user1:user2 EXCLUDE=USER

如果想导入的用户不存在:
1. 导出用户 expdp user1/pass1 directory=dumpdir dumpfile=user1.dmp
2. 导入用户 impdp system/passsystem directory=dumpdir dumpfile=user1.dmp REMAP_SCHEMA=user1:user2
3. user2会自动建立,其权限和使用的表空间与user1相同,但此时用user2无法登录,必须修改user2的密码
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics