2011-06-24 40 views
48

我該如何去創建一個dmp文件的數據庫?我的系統中沒有現有的具有相同結構的數據庫,因此必須完成作業,事件和表格等。如何從dmp文件和日誌文件導入Oracle數據庫?

我把DMP和日誌在電子商務文件:驅動

我曾嘗試導入實用程序

E:/>impdp system/[email protected] FILE=WB_PROD_FULL_20MAY11.dmp 

但我發現了錯誤的

invalid argument value 
bad dump file specification 
unable to open dump file "E:\app\Vensi\admin\oratest\dpdump\WB_PROD_F 
ULL_20MAY11.dmp" for read 
unable to open file 
unable to open file 
(OS 2) The system cannot find the file specified. 

當我看到Windows資源管理器dmp文件(取自Linux服務器)顯示爲崩潰轉儲文件

我dono瞭解我如何解決這個問題。請幫我解決這個問題。

我是一個完整的Oracle新手...

回答

78

數據庫是如何導出的?

  • 如果它是使用exp出口和一個完整的模式導出,然後

    1. 創建用戶:

      create user <username> identified by <password> default tablespace <tablespacename> quota unlimited on <tablespacename>; 
      
    2. 授予的權限:

      grant connect, create session, imp_full_database to <username>; 
      
    3. imp啓動導入:

      imp <username>/<password>@<hostname> file=<filename>.dmp log=<filename>.log full=y; 
      
  • 如果它是使用expdp出口,然後用impdp開始導入:

    impdp <username>/<password> directory=<directoryname> dumpfile=<filename>.dmp logfile=<filename>.log full=y; 
    

望着錯誤日誌,似乎您尚未指定目錄,因此Oracle會嘗試在默認目錄(即E:\app\Vensi\admin\oratest\dpdump\)中找到dmp文件。

將導出文件移動到上述路徑或創建一個目錄對象以指向dmp文件所在的路徑,並將對象名稱傳遞給上面的impdp命令。

+1

要導出他們用過的exp,他們在cmnd中使用Owner。所以我用imp cmnd在這裏,我不創建用戶,我直接與IMP cmnd試圖能夠將本地數據庫導入表,但我沒有看到一些表和導入的包。請告訴我如何解決這個問題。非常感謝您的回覆 – praveenb

+0

編輯您的問題併發布導入過程日誌@Praveenb – Sathya

+0

這是我使用的imp cmnd,imp userid = system/tiger FILE =「e:\ WB_PROD_FULL_20MAY11.dmp」FUll = y,我不知道哪裏進口日誌存儲請讓我知道謝謝 – praveenb

3

所有的代碼,這個和平放到* .bat文件和所有同時運行:

我的代碼在Oracle中創建用戶。 crate_drop_user.sql文件

drop user "USER" cascade; 
DROP TABLESPACE "USER"; 

CREATE TABLESPACE USER DATAFILE 'D:\ORA_DATA\ORA10\USER.ORA' SIZE 10M REUSE 
    AUTOEXTEND 
    ON NEXT 5M EXTENT MANAGEMENT LOCAL 
    SEGMENT SPACE MANAGEMENT AUTO 
/

CREATE TEMPORARY TABLESPACE "USER_TEMP" TEMPFILE 
    'D:\ORA_DATA\ORA10\USER_TEMP.ORA' SIZE 10M REUSE AUTOEXTEND 
    ON NEXT 5M EXTENT MANAGEMENT LOCAL 
    UNIFORM SIZE 1M  
/

CREATE USER "USER" PROFILE "DEFAULT" 
    IDENTIFIED BY "user_password" DEFAULT TABLESPACE "USER" 
    TEMPORARY TABLESPACE "USER_TEMP" 
/ 

alter user USER quota unlimited on "USER"; 

GRANT CREATE PROCEDURE TO "USER"; 
GRANT CREATE PUBLIC SYNONYM TO "USER"; 
GRANT CREATE SEQUENCE TO "USER"; 
GRANT CREATE SNAPSHOT TO "USER"; 
GRANT CREATE SYNONYM TO "USER"; 
GRANT CREATE TABLE TO "USER"; 
GRANT CREATE TRIGGER TO "USER"; 
GRANT CREATE VIEW TO "USER"; 
GRANT "CONNECT" TO "USER"; 
GRANT SELECT ANY DICTIONARY to "USER"; 
GRANT CREATE TYPE TO "USER"; 

創建文件import.bat,並把這個線是:

SQLPLUS SYSTEM/[email protected]_alias @"crate_drop_user.SQL" 
IMP SYSTEM/[email protected]_alias FILE=user.DMP FROMUSER=user TOUSER=user GRANTS=Y log =user.log 

要當心,如果你會從一個用戶導入到另一個。例如,如果您有名爲user1的用戶,並且您將導入到user2,則可能會失去所有權限,因此您必須重新創建該用戶。

祝你好運伊萬