Как импортировать базу данных Oracle из файла dmp и файла журнала?
Как мне создать базу данных из dmp файла? У меня нет существующей базы данных с той же структурой в моей системе, поэтому она должна быть заполнена заданиями, событиями, таблицами и т.д.
Я разместил dmp и файл журнала в E: drive
Я попробовал утилиту импорта
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 Explorer файл dmp (взятый с сервера Linux) отображается как файл дампа сбоя
Я не понимаю, как я могу решить эту проблему. Пожалуйста, помогите мне решить эту проблему.
Я полный новичок в Oracle...
Ответы
Ответ 1
Как экспортировалась база данных?
-
Если он был экспортирован с помощью exp
и экспортирована полная схема, то
-
Создайте пользователя:
create user <username> identified by <password> default tablespace <tablespacename> quota unlimited on <tablespacename>;
-
Предоставьте права:
grant connect, create session, imp_full_database to <username>;
-
Запустите импорт с помощью 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
выше.
Ответ 2
Весь этот код кода помещается в *.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, вы можете потерять все гранты, поэтому вам придется его воссоздать.
Удачи, Иван