由於 ORACLE 的 922 錯誤,以下的語句失敗,ORA-00922: 缺少或無效選項


今天用Orcale數據庫,需要導入一個dmp備份文件,結果弄了半天,出了錯誤也沒看出在哪,幸好在網上找了半天還能找到相同的問題,現在問題解決了,特地將解決方法收藏下來~

 

引用網址:http://hi.baidu.com/stq1102/blog/item/a1861ed93690122911df9bc5.html

 

導入導出的dmp文件時出現如下錯誤
經由常規路徑導出由EXPORT:V09.02.00創建的文件
....
IMP-00017: 由於 ORACLE 的 922 錯誤,以下的語句失敗
IMP-00003: 遇到 ORACLE 錯誤 922
ORA-00922: 缺少或無效選項
IMP-00017: 由於 ORACLE 的 922 錯誤,以下的語句失敗


再次用indexfile參數導入文件得到對象創建語句,貼到sqlplus中執行發現是nocompress這
個參數的問題,根源是版本問題,導出數據服務器和客戶端的版本都是9.2,導入數據服務器
和客戶端的版本都是9.0,不過已經不可能再用9.0的客戶端去導數據了。所以只能用這個dmp
文件。
開始想到的是修改indexfile選項導出的sql文件,創建表結構,可以完成。
但是再次導入dmp文件發現還是無法繼續進行。
這樣只能更改dmp文件了,用ultraedit32打開dmp文件,定位nocompress字符,把這些字符
全部改成空格,空格的ascii碼是32,16進制就是20,也就是把nocompress所包含的字符全
部改成20即可。
重新導入dmp文件,成功。
不過編輯dmp文件始終是件危險的事情,不知道有沒有方法可以在創建表結構以後跳過這些
表結構定義語句直接導入數據的方法。

    我發現數據文件中的“TABLESPACE "USERS" LOGGING NOCOMPRESS”其實都是可以不要的,而它們的存在是導致不同版本數據庫文件無法導入的根本原因,將其全部替換爲空格,問題即可解決。

    注意:替換時一定要注意空格的數量一定要和替換的文字數量一致,否則會出錯的!

 

=============================================

    此上爲原文內容,按照方法可以解決問題,在此再細說一下此上說的替換“nocompress”, 可用EmEditor工具打開,選擇ascII碼打開,文檔中的英文是沒變的,所以很容易查找替換了。~!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章