不得不说的秘籍--用Imp导入到不同的用户的表空间中。

 

 

imp导入表空间更换的实例过程

有时候,我们exp了一个数据dump,但是我们再imp的时候,想把原来用户的表空间进行切换,
这时一个很常见的问题,我经常见到csdn里的朋友提出这样的问题。

现在我们来做一个完全的exp和imp的过程,在这个过程中我们将把原来test2的schema导出来,
然后导入到test3的用户里,test2的用户的默认表空间是test2, 而test3的用户的默认表空间是test3.

我们先来看看,我的测试数据吧。

这里可以看到我们现在使用的用户是test2


用户test2的默认表空间是TESTTS2


在test2里现在总共有三个表,表的表空间是TESTTS2

现在我们导出我们需要的test2的schema,进行逻辑备份,然后准备好逻辑备份以后,我们将用这个逻辑备份
用imp来进行对test3用户的逻辑恢复

exp如下

导出文件test.dump

现在我们来建立我们的test3的用户吧。 根据我们的实验要求,我们的test3用户的默认表空间是TESTTS3
和test2用户的表空间不一致,这样才可以才是我们的目的,如果是TESTTS2到TESTTS2,
就没有技术可言了。 大家顺便就可以完成了。我们现在建立test3用户。

命令如下

这里我们只是做一个简单的实验,所以我这里表空间的datafile的设置,只是个sample而已,
具体的设置应该以你的实际情况为准。


建立新的用户test3,默认表空间是TESTTS3


现在我们常规的导入的话
是会有提示告诉我们没有权限的。因为我们还没有个test3附上权限,不过我们这里如果给了unlimit tablespace的权限的话,这里test3的imp将不会把表导入到test3的默认表空间TESTTS3里,而是TESTTS2里,这里是由于 imp的原理是先按exp里的表空间来建对象,
如果表空间建立不成功,会用其默认表空间来导入,

所以我们按照这个原理来实现我们的目标了。

先附上必须的权限。

这里附上了我们经常用到的connect和resource的权限,这里如果导入就是常规导入,由于resource包括unlimited tablespace的系统权限,所以这里如果不做其他的处理是会导入到TESTTS2里的,而不是我们需要的TESTTS3

我们需要处理一下:

这里我们先revoke了unlimited tablespace的权限,这样test3的用户就不能access其他的表空间了
我们有alter了test3的quota 0 on TESTTS2使得用户test3可以访问TESTTS2,但是有没有配额
最后我们有在TESTTS3上给了test3用户配额,这样在TESTTS2上建立不了,就建立到TESTTS3上去了

下面我们imp一下,看看我们imp吧


imp成功,验证一下我们的对象是不是在TESTTS3的表空间上去了吧


到此,整个过程完全成功了,你可以取消到test3刚才的配额的一些设置了。 

 

 

如果图片不能正常显示,可以参见http://bbs.inthirties.com/thread-76-1-1.html




 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

inthirties

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值