2013-07-29 102 views
1

到目前爲止,我從來沒有對Oracle數據庫做過任何嚴肅的事情。我知道它們與我所處理的不同,比如MS SQL。如何從Oracle 11g XE導出「數據庫」並將其導入到Oracle 10.2?

因此,從MS SQL的角度來看,我可以備份數據庫,將.bak文件複製到另一臺服務器,還原它,創建數據庫的完整副本。

我不知道如何爲Oracle做同樣的事情,更不用說不同的版本。我已經看到了它與命令行大多完成的,所以我想這:

$exp owner/owner schemas=tkcsdb directory=dumpdir dumpfile=dBaseName logfile=dBaseLog 

然後是SQL Plus中的回報:

未知參數名稱「架構」 無法處理參數 出口終止不成功

我已經用'schema'(同樣的錯誤)替換了'schemas',並且我想嘗試使用'tables',儘管我不知道結果如何。我甚至不是100%,如果'tkcsdb'是數據庫的名稱我在找 - 我一直無法列出所有數據庫我有。我想要做的事情(我已經用MS SQL,MySQL甚至是IBM DB2做的所有事情)正在Oracle中很難複製。

與標題一樣,如何從Oracle 11g XE導出「數據庫」並將其導入到Oracle 10.2?

我使用的是Windows 7,目標機器是某種Linux Fedora。

回答

5

EXP和IMP是古老的 - 不要使用它們,除非你絕對必須。他們無法處理新版Oracle版本的一些功能。

選擇的工具是EXPDP和IMPDP(EXP數據泵和IMP數據泵的縮寫)。

不幸的是,使用它們有點複雜,因爲只能在數據庫服務器上運行它們(與舊式的EXP/IMP相反,您可以從任何客戶端計算機上運行它們)。

因此,要獲得從11g的源DB到各10g目標DB您的模式,你必須:

  • 11g的數據庫服務器上打開一個終端會話
  • 運行的expdp與版本集到10(因此你可以將它導入10g服務器)
  • 將11g服務器的轉儲文件複製到10g服務器的數據池目錄(查找名爲「dpump」的目錄)
  • 打開終端會話10g DB服務器
  • 您的轉儲文件

運行示例IMPDP:

expdp scott/[email protected] version=10.2 schemas=SCOTT dumpfile=SCOTT.dmp logfile=expdpSCOTT.log 

    impdp scott/[email protected] schemas=SCOTT dumpfile=SCOTT.dmp logfile=impdpSCOTT.log 
+0

我與「tkcsdb」爲模式試了一下,確信這是「數據庫」的名稱。它沒有工作。看你的例子,你也把'斯科特'放在裏面。所以我加入了'tkcsowner'。你叫什麼scott/tkcsowner,以及如何將它們與MS SQL中的術語進行比較?無論如何,這是做到了。謝謝。但它確實返回了一個錯誤:「密碼將在7天后過期。」這是我應該關心的嗎?另外,由於沒有目錄,數據庫將在何處轉儲.dmp文件? –

+0

Scott或tkcsowner是數據庫「用戶」。每個數據庫用戶都有自己的「模式」,這個用戶的對象「活着」(術語用戶和模式在Oracle術語中或多或少是同義詞)。你確實應該關心密碼過期錯誤 - 只需要改變密碼(你也可以改變與這個用戶關聯的配置文件,這樣密碼永不過期)。數據庫將把轉儲文件放到數據池目錄中(除非你指定了一個帶目錄參數的文件,但對於初學者,我建議堅持默認的數據泵目錄)。 –

+0

tkcsowner/tkcsowner @ db11g。我忘了添加db11g。奇怪的是,它繼續備份很好。但是,當我使用db11g再次執行該操作時,它將返回一個錯誤:無法解析指定的連接標識符。 –

相關問題