2011-06-24 38 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,则可能会失去所有权限,因此您必须重新创建该用户。

祝你好运伊万