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



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

我把转储和日志文件放在E:drive 中

我试过导入实用程序

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

但我在上出错了

invalid argument value
bad dump file specification
unable to open dump file "E:appadminoratestdpdumpWB_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的新手。。。

数据库是如何导出的?

  • 如果使用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:appVensiadminoratestdpdump)中查找dmp文件。

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

所有这些代码都放在*.bat文件中,并同时运行:

我在oracle中创建用户的代码。crate_drop_user.sql文件

drop user "USER" cascade;
DROP TABLESPACE "USER";
CREATE TABLESPACE USER DATAFILE 'D:ORA_DATAORA10USER.ORA' SIZE 10M REUSE 
    AUTOEXTEND 
    ON NEXT  5M  EXTENT MANAGEMENT LOCAL 
    SEGMENT SPACE MANAGEMENT  AUTO
/ 
CREATE  TEMPORARY TABLESPACE "USER_TEMP" TEMPFILE 
    'D:ORA_DATAORA10USER_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,你可能会失去所有的授权,所以你必须重新创建它

祝你好运,Ivan

如果使用@sathyajith bhat response:中的impdp命令示例

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

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

CREATE OR REPLACE DIRECTORY DMP_DIR AS 'c:UsersUSERDownloads';
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/),您需要为用户授予它。

相关内容

  • 没有找到相关文章

最新更新