imp/exp 导出导入含有CLOB,BLOB大字段的表出现问题解决办法

如果你的表空间里有多个大字段的表,那么建议你最好使用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 userName/password@localhost:1521/orcl log=E:\impLog.2log(日志输出文件) file=e:\XXX.dump(之前那份数据库导出文件即可) touser=newUserName fromuser=oldUserName indexes=n ignore=y
备注:indexes=n 表示不导入索引 ignore=y 表示忽略报错(表已存在)

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

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

                       1. imp 使用indexfile参数  imp userName/password@localhost:1521/orcl file=e:\XXX.dump(之前那份数据库导出文件即可) indexfile=e:\XX.sql tables=tableName(包含clob/blob大字段的表表名)

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

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

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

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


来源:http://blog.csdn.net/kai27ks/article/details/7410699

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值