原来有一个用户user1在表空间eroodmonitor中,现在需要在原服务器中把user1的数据库重新建到新的用户user2在新的表空间eroadmonitor中。于是,在新建好eroadmonitor,user2后,给user2赋予全部权限,并把user2的默认表空间设置为eroadmonitor。执行imp命令后,数据库已经成功导入user2,但是表空间却是在原来的eroodmonitor中。
原来是少了2个步骤,取消user2的unlimited tablespace和设定user2的quotas
具体步骤如下:
1. 通过控制台新建命名空间erodmonitor,http:localhost:1158/em
2. 新建用户user2,选择erodmonitor作为默认表空间
3. 设置user2的权限,取消unlimited tablespace权限
命令是revoke unlimited tablespace from user2
4. 设定user2在新的表空间的quotas为unlimited,在老的表空间的quotas为0
5. 执行imp sys/password@orcl file=d:/user1.dmp log=d:/user1.log fromuser=user1 touser=user2
注意:
1. 执行exp/imp时字符集设置一致,select userenv('language') from dual可以查看服务器字符集
2. imp导入后表空间已经变更,但是trigger的作用对象是原来的user1.table,需要手动调整
其实,最直接的方式就是editplus工具打开user1.dmp,修改原表空间eroodmonitor为新表空间eroadmonitor,然后再执行imp