ORACLE 不同表空间转移数据 问题解决方法

(ORACLE10g)

        多个系统,每个系统对应一套独立的表结构。但是数据库服务器只有一台,如果在一台机器上创建多个数据库,内存压力比较大。所以可以采用在一个数据库上建立多个用户,每个用户对应一个系统的方式。oracle10默认表空间是USERS,如果每个用户都建立一套表结构,且都存放在USERS表空间上,这种方式肯定是不好的,几个系统的表都用一块地址存放,不利于维护;也会造成IO使用冲突;影响性能;备份、还原、管理都有问题;且USERS表空间出现问题,几个用户的数据都挂掉了。所以好的方式应该是每一个用户都建立一个单独的表空间。

        现在在机器2上建立了一个数据库DB2,建立了一个用户user2,建立了一个表空间tspace2,且将该表空间设为user2的默认表空间,再给用户user2赋予权限。

                create user user2 identified by 123456;
                grant resource,connect, IMP_FULL_DATABASE to user2;
                alter user user2 default tablespace tspace2 quota unlimited on tspace2

        这时,从机器1上导出一个db.dmp文件,机器1是用user1用户,在默认表空间USERS上执行exp导出的。

        现在在机器2上执行

                imp user2/123456@DB2 file=db.dmp full=y ignore=y

        发现导入后,还是导入到了DB2的默认表空间USERS上。

        解决方法:

         收回用户user2的"UNLIMITED TABLESPACE"权限;将user2在USERS表空间的使用限额设为0:
                  revoke unlimited tablespace from user2;
                  alter user user2 quota 0 on users;

         这时,数据就被导入进了user2的默认表空间tspace2。

----------------------------------------------------------------------------------------------------------------------------------------------------------
         但又有点小问题出现,错误如下:

                 IMP-00017: 由于 ORACLE 错误 1536, 以下语句失败:
                 "CREATE TABLE "RE_TEMPLATE" ****************“
                 IMP-00003: 遇到 ORACLE 错误 1536
                ORA-01536: 超出表空间 'USERS' 的空间限额

         查找原因发现是含用blob,clob类型字段的表无法导入成功。
         解决方法:

         用建表语句脚本,先将含有blob,clob类型的表建立出来,这时再执行导入,发现导入成功,全部表结构都导入进user2的默认表空间tspace上。注意使用参数ignore=y

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值