日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

8idmp导入oracle 11g,11g导入8i的dmp文件问题

發布時間:2023/12/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 8idmp导入oracle 11g,11g导入8i的dmp文件问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

單位有臺老的8i的服務器掛了,手頭只有之前日常備份下來的dmp文件。

在一臺新的服務器安裝了windows2008 + 11g , 默認字符集選用ZH16GBK,??然后用IMP導入8i的DMP , 發現能導入。只不過在導入的過程,IMP提示原導出服務器的字符集是UTF8的。

于是猜測應該把數據庫字符集也改成UTF8的,才能保證原來的客戶端也正常工作,手動改數據庫字符集為UTF8,于是噩夢開始。做了多次嘗試,總是導入時出錯,大意提示“插入的字段值長度太大。。。”

經過百度,目前大概分析原因是:建表時分配的字段長度不足以存儲UTF8的字符集。觀察到imp時在建表階段varchar2類型是用byte定義的,??于是做了個變通的處理:

1 先imp空表,此時沒數據就不出錯

2 用SQL Developer 導出建表SQL腳本,用查找/替換把"byte"統統替換成"char" ,

3 drop掉空表,用新的SQL腳本建表,新表的存儲以char為單位,

4 imp導入數據,就沒有錯誤提示了。

回過頭來想,既然按原來表的定義,用byte不足以存儲UTF8的數據,只能推斷原來數據庫用的不是UTF8,只是exp的時候被轉換成了utf8,然而為什么dmp文件里會標識為UTF8呢?

另外是否oracle服務器的服務器和客戶端字符集一定要一致呢?(因為看到有文章說可以不一樣的,oracle會自動轉換,如果這樣我就沒必要費大力氣去調服務器的字符集)

本人剛接觸,許多概念不清楚,望指點。

本帖最后由 超級慢打 于 2016-3-21 20:39 編輯

分享至:

總結

以上是生活随笔為你收集整理的8idmp导入oracle 11g,11g导入8i的dmp文件问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。