如何从dmp文件和日志文件导入Oracle数据库?


73

如何从转储文件创建数据库?我的系统上没有现有的具有相同结构的数据库,因此它必须包含作业,事件,表等。

我将转储和日志文件放在E:驱动器中

我已经尝试了导入实用程序

E:/>impdp system/tiger@oratest FILE=WB_PROD_FULL_20MAY11.dmp

但是我得到了错误

invalid argument value
bad dump file specification
unable to open dump file "E:\app\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服务器)显示为崩溃转储文件

我不明白如何解决此问题。请帮我解决这个问题。

我是Oracle的新手...

Answers:


111

数据库是如何导出的?

  • 如果使用导出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尝试dmp在默认目录(即E:\app\Vensi\admin\oratest\dpdump\)中查找文件。

将导出文件移动到上面的路径,或者创建目录对象以指向dmp文件所在的路径,然后将对象名称传递给impdp上面的命令。


1
要导出,他们使用了exp,并且在cmnd中使用了Owner。所以我在这里使用了imp cmnd,我没有创建我直接用imp cmnd尝试过的用户,无法将表导入本地数据库,但是我看不到导入的某些表和包。请告诉我如何解决这个问题。非常感谢您的答复
praveenb

编辑您的问题并发布导入过程日志@Praveenb
Sathyajith Bhat

这是我使用的imp cmnd,imp userid = system / tiger FILE =“ e:\ WB_PROD_FULL_20MAY11.dmp” FUll = y,我不知道导入日志存储在哪里,请让我知道,谢谢
praveenb

1
使用imp userid=system/tiger FILE="e:\WB_PROD_FULL_20MAY11.dmp" log =e:\wb_prod_imp.log FUll=y &日志将在您的e:驱动器@Praveenb
Sathyajith Bhat

1
如果要指定SID并以sysdba身份登录:impdb \'username / password @ ORCL as sysdba \'
Abdullah Gheith

7

所有这些安全的代码都放入* .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/systempassword@ORA_alias @"crate_drop_user.SQL"
IMP SYSTEM/systempassword@ORA_alias FILE=user.DMP FROMUSER=user TOUSER=user GRANTS=Y log =user.log

如果要从一个用户导入到另一个用户,请小心。例如,如果您有一个名为user1的用户,并且将导入到user2,则可能会丢失所有授权,因此您必须重新创建它。

祝你好运,伊万


2

如果您使用@ sathyajith-bhat响应中的impdp命令示例:

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

您将需要使用强制性参数目录并将其创建并授予为:

CREATE OR REPLACE DIRECTORY DMP_DIR AS 'c:\Users\USER\Downloads';
GRANT READ, WRITE ON DIRECTORY DMP_DIR TO {USER};

或使用以下定义之一:

select * from DBA_DIRECTORIES;

我的ORACLE Express 11g R2的默认名称为DATA_PUMP_DIR(位于{inst_dir} \ app \ oracle / admin / xe / dpdump /),您需要为用户授予该权限。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.