Как изменить директорию dumpfile в impdp?

Я использую impdp импортировать резервную копию. Но я хочу изменить дамп-файл каталога по умолчанию.

$ impdp system/password@$ORACLE_SID schemas=USER_SCHEMA dumpfile=mydumpfile.dmp logfile=impdpmydumpfile.log

Import: Release 11.2.0.3.0 - Production on Mon Mar 16 09:32:05 2015

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 11g Release 11.2.0.3.0 - 64bit Production
ORA-39001: invalid argument value
ORA-39000: bad dump file specification
ORA-31640: unable to open dump file "/u01/app/oracle/admin/mydatabase/dpdump/mydumpfile.dmp" for read
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

5 ответов

Решение

С directory параметр:

impdp system/password@$ORACLE_SID schemas=USER_SCHEMA directory=MY_DIR \
  dumpfile=mydumpfile.dmp logfile=impdpmydumpfile.log

Каталог по умолчанию DATA_PUMP_DIRкоторый предположительно установлен в /u01/app/oracle/admin/mydatabase/dpdump в вашей системе.

Чтобы использовать другой каталог, вы (или ваш администратор БД) должны будете создать новый объект каталога в базе данных, который указывает на видимый для Oracle каталог операционной системы, в который вы поместили файл, и назначить привилегии пользователю, выполняющему импорт.

Я хочу изменить дамп-файл каталога по умолчанию.

Вы можете создать новый каталог и предоставить ему необходимые привилегии, например:

SQL> CREATE DIRECTORY dmpdir AS '/opt/oracle';
Directory created.

SQL> GRANT read, write ON DIRECTORY dmpdir TO scott;
Grant succeeded.

Чтобы использовать только что созданный каталог, вы можете просто добавить его в качестве параметра:

DIRECTORY=dmpdir

Oracle представил каталог по умолчанию из 10g R2, который называется DATA_PUMP_DIR, который можно использовать. Чтобы проверить местоположение, вы можете посмотреть в dba_directories:

SQL> select DIRECTORY_NAME, DIRECTORY_PATH from dba_directories where DIRECTORY_NAME = 'DATA_PUMP_DIR';

DIRECTORY_NAME       DIRECTORY_PATH
-------------------- --------------------------------------------------
DATA_PUMP_DIR        C:\app\Lalit/admin/orcl/dpdump/

SQL>

Вы можете использовать следующую команду для обновления пути DATA PUMP DIRECTORY,

create or replace directory DATA_PUMP_DIR as '/u01/app/oracle/admin/MYDB/dpdump/';

Для меня требовалось исправление пути к данным, так как я восстановил свою базу данных из рабочей среды в тестовую среду.

Эту же команду можно использовать для создания нового DATA PUMP DIRECTORYname а также path,

Используйте опцию DIRECTORY.

Документация здесь: http://docs.oracle.com/cd/E11882_01/server.112/e22490/dp_import.htm

  DIRECTORY

  Default: DATA_PUMP_DIR

  Purpose

  Specifies the default location in which the import job can find the dump file set and where it should create log and SQL files.

  Syntax and Description

  DIRECTORY=directory_object
  The directory_object is the name of a database directory object (not the file path of an actual directory). Upon installation, privileged users have access to a default directory object named DATA_PUMP_DIR. Users with access to the default DATA_PUMP_DIR directory object do not need to use the DIRECTORY parameter at all.

  A directory object specified on the DUMPFILE, LOGFILE, or SQLFILE parameter overrides any directory object that you specify for the DIRECTORY parameter. You must have Read access to the directory used for the dump file set and Write access to the directory used to create the log and SQL files.

  Example

  The following is an example of using the DIRECTORY parameter. You can create the expfull.dmp dump file used in this example by running the example provided for the Export FULL parameter. See "FULL".

  > impdp hr DIRECTORY=dpump_dir1 DUMPFILE=expfull.dmp 
  LOGFILE=dpump_dir2:expfull.log
  This command results in the import job looking for the expfull.dmp dump file in the directory pointed to by the dpump_dir1 directory object. The dpump_dir2 directory object specified on the LOGFILE parameter overrides the DIRECTORY parameter so that the log file is written to dpump_dir2.

Проблема, с которой я столкнулся, заключалась в том, что разрешения для DATA_PUMP_DIR были неправильными. Мне пришлось воссоздать каталог.

Другие вопросы по тегам