oracle expep impep,imp/exp 導出導入含有CLOB,BLOB大字段的表出現問題解決辦法

如果你的表空間里有多個大字段的表,那么建議你最好使用Oracle最新的數據泵技術expep/impep,這個技術能很好的支持大數據字段(clob/blob)。

那么如果你習慣使用imp/exp這種比較古老但是你順手的技術呢。這時依如下步驟即可解決。

之后我們就要對單獨的頑固分子進行操作了。

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、付费专栏及课程。

余额充值
>