關於Oracle使用EXPDP時遇到的幾個錯誤

來源:互聯網
上載者:User

瞭解了EXPDP的使用後,然後過了一陣子,開始對大量匯出進行運用,結果發現了一系列的問題。

首先建立好邏輯目錄和作業系統對應的物理目錄後,開始執行下面的匯出語句

expdp username/psw dumpfile=bigdata.dmp logfile=explog.log directory=oradpbackup SCHEMAS=username;

然後遇到如下的錯誤碼,提示說找不到對應的模式:

ORA-39001: 參數值無效
ORA-39170: 方案運算式 'res8000;' 與任何方案均不對應。

圖1找不到相應的模式

 

為了這個我還專門去學習了一下schema的相關概念,然後發現說的最多的就是schemas當預設的時候一般與使用者名稱是相同的,我就很不理解了。

為什麼預設是一樣的但是卻提示找不到該模式呢?

於是採用了退一步的策略,由於在expdp匯出的時候,預設的是目前使用者的schema,所以就想,反正我要匯出的也是這個使用者下的所有對象集合,不寫schema也罷。

 

然後就把語句改為如下的方式進行執行:

expdp username/psw dumpfile=bigdata.dmp logfile=explog.log directory=oradpbackup;

卻提示告訴我說,找不到oradpbackup這個邏輯目錄。

報如下的錯誤:

圖2找不到邏輯目錄

ORA-39002:操作無效

ORA-39070:無法開啟記錄檔。

ORA-39087:目錄名ORADPBACKUP;無效

 -------------------------------------------------------------------------------------------------------------------------------------

但是我直接輸入expdp,然後按照提示一步一步的往下來,卻發現又是可以正常大量匯出的。為什麼使用語句就不可以呢?

-------------------------------------------------------------------------------------------------------------------------------------

我就鬱悶了,以前沒有遇到這種問題啊。然後直接就度娘去了,研究了一天的expdp也沒有發現問題。

後來偶然看到有人說了這麼一句話。

執行匯出語句的時候不能加入分號";"做結尾,額,當時的心情,無語加崩潰。

使用expdp username/psw dumpfile=bigdata.dmp logfile=explog.log directory=oradpbackup執行了一下,果然可以了。

圖3 去掉分號後,匯出語句可以正常執行

圖4加入schema後依然可以正常匯出

然後仔細回過頭來看oracle給的錯誤提示,說的也是找不到“oradpbackup;”這個目錄,所以,看起來應該是oracle把分號也當做是目錄名稱中的一個字元了。

為了驗證這一點,我重新更改作業系統目錄名稱為ORADPBACKUP;

同時使用create or replace directory "ORADPBACKUP;" as 'e:\ORADPBACKUP;‘;重新建立一個帶分號的邏輯目錄

再次使用如下語句:

expdp username/psw dumpfile=bigdata.dmp logfile=explog.log directory=oradpbackup;

不過出現了一個內部錯誤,最終沒有執行成功。

雖然沒有成功無法驗證,不過預想原因應該還是oracle把分號當做邏輯目錄的名稱了。

---------------------------------------------------------------------------------------------------------------------------

於是對於兩個問題都有了合理的解釋了。

對於問題一:

expdp username/psw dumpfile=bigdata.dmp logfile=explog.log directory=oradpbackup SCHEMAS=username;

找不到schema的原因是oracle把“username;”整個當做了模式名稱,所以肯定無法找到。

而對於第二個問題:

expdp username/psw dumpfile=bigdata.dmp logfile=explog.log directory=oradpbackup;

找不到目錄的原因同樣為oracle把“oradpbackup;”整個當做了邏輯目錄名稱,也自然無法找到了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.