亚洲精品成人18久久久久_日韩欧美色_江苏极品身材白嫩少妇自拍_曰本人做爰大片免费观看一老师_久草视频网_最近中文字幕MV高清在线视频

首頁 > 考試輔導 > 計算機考試 > Oracle認證 > Oracle學習 > Oracle的imp命令導入備份數據

Oracle的imp命令導入備份數據

        筆者在做項目過程中遇到以下問題,在客戶提供的數據庫備份文件需要導入到數據庫中,以便使用,數據庫為oracle 9.1.1,安裝在windows server 2000 jp系統中,服務器端字符集

為japanese_japan_utf8,而客戶端使用的是中文windows server 2000系統,字符集為simplified chinese_china.zhs16gbk。
在插入數據過程中出現如下問題:
c:\oracle\ora90\bin>imp scott/tiger@sdes full=y file=c:\expdat.dmp
import: release 9.0.1.1.1 - production on 星期一 1月 22 19:05:43 2007
(c) copyright 2001 oracle corporation.  all rights reserved.
連接到: oracle9i release 9.0.1.1.1 - production
jserver release 9.0.1.1.1 - production
imp-00016: 不支持要求的字符集轉換(從類型830到852)
imp-00000: 未成功終止導入
使用2進制文件編輯工具,如uedit32。打開導出的dmp文件,獲取2、3字節的內容,如00 01,先把它轉換為10進制數,為1,使用函數nls_charset_name即可獲得該字符集:
sql> select nls_charset_name(1) from dual;
nls_charset_name(1)
-------------------
us7ascii
可以知道該dmp文件的字符集為us7ascii,如果需要把該dmp文件的字符集換成zhs16gbk,則需要用nls_charset_id獲取該字符集的編號:

筆者遇到的問題為830到852類型轉換錯誤,進入oracle的sqlplus,進行以下查詢:
sql> select nls_charset_name(830) from dual;
nls_charset_na
--------------
ja16euc
sql> select nls_charset_name(852) from dual;
nls_charset_name
----------------
zhs16gbk
sql>

sql> select nls_charset_id('zhs16gbk') from dual;
nls_charset_id('zhs16gbk')
--------------------------
852
把852換成16進制數,為354,把2、3字節的00 01換成03 54,即完成了把該dmp文件字符集從us7ascii到zhs16gbk的轉化,這樣,再把該dmp文件導入到zhs16gbk字符集的數據庫就可以了。

影響oracle數據庫字符集最重要的參數是nls_lang參數。它的格式如下: nls_lang = language_territory.charset .它有三個組成部分(語言、地域和字符集),每個成分控制了nls子集的特性。
其中: language 指定服務器消息的語言,territory 指定服務器的日期和數字格式,charset 指定字符集。如:american _ america. zhs16gbk .
可以使用以下命令獲取字符集名稱:
sql> select userenv('language') from dual;
userenv('language')
-------------------------------------------------------------------------------
simplified chinese_china.utf8
sql>
用oracle的exp工具導出的dmp文件也包含了字符集信息,dmp文件的第2和第3個字節記錄了dmp文件的字符集。如果dmp文件不大,比如只有幾m或幾十m,可以用ultraedit打開(16進制方式),看第2第3個字節的內容,如0354,然后用以下sql查出它對應的字符集:
sql> select nls_charset_name(to_number('0354','')) from dual;
nls_charset_name(to_number('0354',''))
--------------------------------------------------------------------------------
zhs16gbk
sql>
03 03 3e 45 .....其中的033e就是字符集對應的值。
上文說過,dmp文件的第2第3字節記錄了字符集信息,因此直接修改dmp文件的第2第3字節的內容就可以‘騙’過oracle的檢查。這樣做理論上也僅是從子集到超集可以修改,但很多情況下在沒有子集和超集關系的情況下也可以修改,我們常用的一些字符集,如us7ascii,we8iso8859p1,zhs16cgb231280,zhs16gbk基本都可以改。因為改的只是dmp文件,所以影響不大。
  具體的修改方法比較多,最簡單的就是直接用ultraedit修改dmp文件的第2和第3個字節。比如想將dmp文件的字符集改為zhs16gbk,可以用以下sql查出該種字符集對應的16進制代碼:
  sql> select to_char(nls_charset_id('zhs16gbk'), '') from dual;
  0354
  然后將dmp文件的2、3字節修改為0354即可。

另外,如果dmp文件中備份的數據庫表已經存在,則導入過程會失敗,只能先將已經存在的表刪除,在進行導入。

主站蜘蛛池模板: 精品视频手机在线观看 | 男人天堂免费在线 | 小伙强行挺进护士体内 | 欧美成人精品在线 | 视频一区二区无码制服师生 | 免费午夜影片 | 精精精精xxxx免费视频 | 久久国产自偷自偷免费一区调 | 国产成人av大片在se | 国产精品久久综合 | 丰满少妇高潮叫久久国产 | 久久国产色av | 美女牲交视频一级毛片 | 欧美日产一区二区三区在线观看 | 欧美国产成人久久精品 | 日韩精品卡1卡二卡3卡四卡 | 免费一级毛片视频 | 日韩高清免费在线 | 精品人妻AV区波多野结衣 | 欧美极品日韩极品1 | 一级黄色毛毛片 | 1000部啪啪未满十八勿入 | 日本少妇翘臀啪啪无遮挡 | 国产欧美久久高清 | 福利社午夜影院 | 天天草夜夜 | 久久三级av | 亚州精品久久久久久久久 | 夜色资源站www国产在线观看 | 视频二区无码人妻在线 | 天天色成人网 | 一区二区三区网 | 国产乱码精品一品二品 | 日韩在线视频网址 | 夜夜草天天草 | 无码国内精品久久人 | 国产中文三级全黄 | 岛国无码免费不卡av | 蜜桃精品成人影片 | 国产精品久久偷人妻 | 中文字幕人妻无码一区二区三区 |