On the road again

Импорт и экспорт базы данных Oracle.

Для экспорта и импорта БД Oracle существуют стандартные утилиты - exp и imp соответственно. Они идут вместе с основной инсталляцией Oracle и находятся в директории $ORACLE_HOME/bin.

Экспорт

exp SYSTEM/password FULL=y FILE=dba.dmp LOG=dba.log CONSISTENT=y

или

exp SYSTEM/password PARFILE=params.dat , но в этом случае необходим файл с параметрами params.dat с таким содержимым:

FILE=dba.dmp
GRANTS=y
FULL=y
ROWS=y
LOG=dba.log

exp SYSTEM/password FIlE=expdat.dmp TABLES=(emp,deploy,offices,...) - экспорт отдельных таблиц.

Экспорт схемы:

exp SYSTEM/password OWNER=user FILE=dumpfile LOGFILE=logfile

Импорт

imp SYSTEM/password FULL=y FIlE=dba.dmp

imp SYSTEM/password FIlE=dba.dmp FROMUSER=scott TABLES=(dept,emp) - импорт выбранных таблиц пользователя scott.

 

Если запуск утилит exp, imp осуществляется без параметров, то мы попадем в интерактивный режим работы утилит.

 

Начиная с версии Oracle 10g наряду с утилитами exp,imp появились новые утилити Data Pump - expdp и impdp соответственно. Они также находятся в каталоге bin домашней папки Оракла. Коренное отличие состоит в том что обычные утилиты экспорта и импорта ориентированы на работу со стороны клиента, а новые - на работу со стороны сервера. Хотя старые и новые утилиты похожи друг на друга по использованию, однако результаты их работы совершенно разные. Это означает, что дамп, экспортированный с помощью exp, нельзя импортировать с помощью  impdp.

Для работы этих утилит сначала необходимо создать папку-объект ("directory object") например в директории /tmp/backup, а также дать права на чтение и запись пользователю, который будет делать экспорт :

$ sqlplus /nolog

SQL>connect sys/password@orcl as sysdba

Connected.

SQL>create directory export_dir as '/tmp/backup';

SQL>grant read,write on directory export_dir to scott;

Для того чтобы сделать полный экспорт, у пользователя должна быть роль exp_full_database. Дадим эту роль пользователю scott:

SQL>grant exp_full_database to scott;

Теперь можно непосредственно приступать к экспорту:

$ expdp scott/password@orcl DIRECTORY=export_dir DUMPFILE=dump.tmp FULL=y

Моэно экспортировать отдельные таблицы:

$ expdp scott/password@orcl DIRECTORY=export_dir DUMPFILE=dump.tmp TABLES=table1,table2,...

 

Импорт делается аналогично. Для импорта полной базы у пользователя должна быть роль imp_full_database:

$ impdp scott/password@orcl DIRECTORY=export_dir DUMPFILE=dump.tmp FULL=y

$ impdp scott/password@orcl DIRECTORY=export_dir DUMPFILE=dump.tmp TABLES=table1,table2,...

 

Добавить комментарий

Защитный код
Обновить