Как импортировать базу данных Oracle из файла dmp и файла журнала? - PullRequest
66 голосов
/ 24 июня 2011

Как мне создать базу данных из dmp-файла? У меня нет существующей базы данных с такой же структурой в моей системе, поэтому она должна быть укомплектована заданиями, событиями, таблицами и так далее.

Я поместил dmp и файл журнала на диск 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\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) отображается как файл аварийного дампа

Я не понимаю, как я могу решить эту проблему. Пожалуйста, помогите мне решить эту проблему.

Я полный новичок в Oracle ...

Ответы [ 3 ]

101 голосов
/ 24 июня 2011

Как была экспортирована база данных?

  • Если он был экспортирован с использованием 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 выше.

7 голосов
/ 23 июня 2016

Весь этот мир кода помещается в файл * .bat и запускается одновременно:

Мой код для создания пользователя в Oracle.crate_drop_user.sql file

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, вы можете потерять все гранты, поэтому вам придется его заново создать.

Удачи, Иван

1 голос
/ 02 января 2019

Если вы используете пример команды impdp из ответа @ sathyajith-bhat:

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

, вам нужно будет использовать обязательный параметр directory , а также создать и предоставитьэто как:

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 /) вам необходимо предоставить его для вашего пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...