imp/exp 导出导入含有大字段的表

   首先。如果你的表空间里有多个大字段的表,那么建议你最好使用oracle最新的数据泵技术expep/impep,这个技术能很好的支持大数据字段(clob/blob)。

   那么如果你习惯使用imp/exp这种比较古老但是你顺手的技术呢。这时依如下步骤即可解决。

   首先,使用我之前的文章导入除大数据外的其他所有表。参考:http://blog.csdn.net/kai27ks/article/details/7356269 中A异名同数据的方法。

   之后我们就要对单独的顽固分子进行操作了。

   imp "'/ as sysdba'" indexes=y  file=/exp_swserp.dmp fromuser=swserp touser=swserpreal log=/oracle_recovers/mylog.log tables=Trpreportdatasource
   

   其中tables指向的就是你的大字段的表。如果有多个用,分割即可。 这个时候你如果之前是按我那种方式做很有可能报这个错误:

   IMP-00003: ORACLE error 1536 encountered
   ORA-01536: space quota exceeded for tablespace 'SWSERP'

    take it easy! 把新用户在原表空间的quota设大。懒人做法: alter user new quota unlimited on old.

   再重来一次: imp "'/ as sysdba'" indexes=y  file=/exp_swserp.dmp fromuser=swserp touser=swserpreal log=/oracle_recovers/mylog.log tables=Trpreportdatasource

  Import terminated successfully without warnings.

   解决!
   PS:

        看了这篇文章的读友们,原谅我当初的无知吧~ 如果有大字段的表,默认是在原表空间内存储的。这个时候你导过去,如果没有和源表空间同名的表空间如上文的swserp,是会报错:找不到swserp表空间的。如果有的话,它会把这些数据放在源表空间--swserp里。而不是你新的表空间。这是由于大字段数据的特性决定的--表空间依赖。怎么办呢?你可以用重组去弥补这一步的错误:参加另一篇文章:重组表空间http://blog.csdn.net/kai27ks/article/details/7527943 即可解决问题。

        有人会问:有木有根本解决的方法啊亲?有的,下面就来告诉你。其实下面的方式是很多年前就有人用了,我只不过多告诉了你为什么而已。

        情况A:你有当初创建这个大字段表和主键索引等的语句,那问题就简单多了。

                       1.首先在新的表空间创建好表和主键索引等。

                        2.使用imp 加上imp userid=system/123456 file = xxx.dmp(之前那份即可) touser=new fromuser=swserp indexs=n ignore=y

                                indexs=n 表示不导入索引 ignore=y 表示忽略报错(表已存在)

                        3.检查--数据应该已经过去了

        情况B: 哥没有建表语句或者已经丢了---这其实很正常

                       1. imp 使用indexfiles参数  imp userid=system/123456 file=xxx.dmp indexfiles=xxx.sql  tables=大字段表名

                             这一步实际上没有导入数据,而是将那个表的建表和索引语句导出到xxx.sql中

                       2. 使用那些语句建表和索引,注意先后顺序 先表,再索引。

                       3.  其余部分同情况A.2

                       4. 当然 你也可以使用其他工具导出建表和索引语句,原理一样的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值