Экспорт БД¶
Настраивается под конкретный сервер CWMS3000. Пример сценария:
del /Q "D:\backup\dump\*"
set _my_datetime=%date%_%time%
set _my_datetime=%_my_datetime: =_%
set _my_datetime=%_my_datetime::=%
set _my_datetime=%_my_datetime:/=_%
set _my_datetime=%_my_datetime:.=_%
set _my_datetime=%_my_datetime:,=%
set NLS_LANG=.CL8MSWIN1251
exp.EXE USERID=system/<пароль>@<строка соединен> LOG=D:\backup\dump\%_my_datetime%_mi.log FILE=D:\backup\dump\%_my_datetime%_mi.dmp owner=<login> consistent=y
copy "D:\backup\rar\*" "\\192.168.60.13\backup\Oracle_ed"
и второй пример:
@echo off
for /f "Tokens=1-4 Delims=/ " %%i in ('date /t') do set dt=%%i%%j%%k%%l
for /f "Tokens=1" %%i in ('time /t') do set tm=%%i
set tm=%tm%
set dtt=%dt%%tm-st.dmp%
set tape_label="%computername%-%dtt%"
set set_label="%computername% export %dtt%"
set NLS_LANG=.CL8MSWIN1251
exp.EXE USERID=system/<пароль>@<строка соединения> LOG=f:\IDE_BACKUP\BOX\%dtt%.log FILE=f:\IDE_BACKUP\BOX\%dtt%.dmp owner=<строка соединения> consistent=y
Необходимо задать строку соединения, нужные директории.
Внимание
При импорте БД необходимо настроить системные задачи БД. Это выполняется нашими специалистами.
Новые рекомендации к "Экспорт", "Импорт"
Cоздать объект-директорию, с которым нам предстоит работать:
CREATE OR REPLACE DIRECTORY <объект>AS '/u01/app/oracle/oradata/';
GRANT READ, WRITE ON DIRECTORY <объект> TO <логин>;
Дополнительная информация
В отличии от утилит exp и imp, все файлы Data Pump: и ".dmp", и ".log", - создаются на Oracle-сервере, а не на клиентском компьютере.
Все действия Data Pump выполняются множественными задачами (jobs) (server processes not DBMS_JOB jobs). Эти задачи управляются главным управляюшим процессом, который использует расширенную очередь (Advanced Queuing). Во время выполнения, создаётся и используется главным управляющим процессом таблица очереди, которая называется по имени задания. Таблица удаляется после успешного выполнения задания Data Pump. Задание и очередь могут быть названы на Ваше усмотрение с использованием параметра "JOB_NAME". Остановка клиентского процесса не останавливает связанное с ним Data Pump задание. Передача клиенту комбинации клавиш "Ctrl+C" во время выполнения задания остановит вывод на стандартное устройство вывода и переведёт в командную строку. Ввод "status" в этой командной строке позволить проследить за состоянием текущего задания:
Export> status
Worker 1 Status:
State: EXECUTING
Object Schema: SYSMAN
Object Name: MGMT_CONTAINER_CRED_ARRAY
Object Type: DATABASE_EXPORT/SCHEMA/TYPE/TYPE_SPEC
Completed Objects: 261
Total Objects: 261
Job: SYS_EXPORT_FULL_01
Operation: EXPORT
Mode: FULL
State: EXECUTING
Bytes Processed: 0
Current Parallelism: 1
Job Error Count: 0
Dump File: D:TEMPDB10G.DMP
bytes written: 4,096
Worker 1 Status:
State: EXECUTING
Object Schema: SYSMAN
Object Name: MGMT_CONTAINER_CRED_ARRAY
Object Type: DATABASE_EXPORT/SCHEMA/TYPE/TYPE_SPEC
Completed Objects: 261
Total Objects: 261
Производительность Data Pump может быть улучшена использованием параметра "PARALLEL". Этот параметр следует использовать совместно с шаблоном "%U" в параметре "DUMPFILE" для разрешения создания или чтения множественных dump-файлов:
expdp <user>/<пароль>@<схема> schemas=<имя схемы> directory=<имя директории> parallel=4 dumpfile=<имя дампа>.dmp logfile=<имя лога>.log
Вьюшка (view) "DBA_DATAPUMP_JOBS" может быть использована для контроля состояния задания:
<user>@<схема>> select * from dba_datapump_jobs;
OWNER_NAME JOB_NAME OPERATION
------------------------------ ------------------------------ ------------------------------
JOB_MODE STATE DEGREE ATTACHED_SESSIONS
------------------------------ ------------------------------ ---------- -----------------
<user> SYS_EXPORT_FULL_01 EXPORT
FULL EXECUTING 1 1
Параметры "INCLUDE" и "EXCLUDE" могут быть использованы для ограничения импорта/экспорта указанных объектов. Когда используется параметр "INCLUDE", в экспорт будут включены только указанные объекты:
expdp <user>/<пароль>@<схема> schemas=<имя схемы> include=TABLE:"IN ('EMP', 'DEPT')" directory=<имя директории> dumpfile=<имя дампа>.dmp logfile=<имя лога>.log
При использовании параметра "EXCLUDE", все объекты, кроме указанных в параметре, будут включены в экспорт:
expdp <user>/<пароль>@<схема> schemas=<имя схемы> exclude=TABLE:"= 'BONUS'" directory=<имя директории> dumpfile=<имя дампа>.dmp logfile=<имя лога>.log
Кроме всего прочего, нужно учитывать особенности реализации среды. Например, в bash строка может выглядеть так:
expdp <user>/<пароль>@<схема> schemas=<имя схемы> exclude=TABLE:\"like \'USER%\'\" directory=<имя директории> dumpfile=<имя дампа>.dmp logfile=<имя лога>.log
Data Pump API
Вместе с утилитами Data Pump, Oracle предоставляет PL/SQL API. Следующий пример показывает, как API может быть использован для выполнения экспорта:
SET SERVEROUTPUT ON SIZE 1000000
DECLARE
l_dp_handle NUMBER;
l_last_job_state VARCHAR2(30) := 'UNDEFINED';
l_job_state VARCHAR2(30) := 'UNDEFINED';
l_sts KU$_STATUS;
BEGIN
l_dp_handle := DBMS_DATAPUMP.open(
operation => 'EXPORT',
job_mode => 'SCHEMA',
remote_link => NULL,
job_name => 'EMP_EXPORT',
version => 'LATEST');
DBMS_DATAPUMP.add_file(
handle => l_dp_handle,
filename => 'SCOTT.dmp',
directory => 'TEST_DIR');
DBMS_DATAPUMP.add_file(
handle => l_dp_handle,
filename => 'SCOTT.log',
directory => 'TEST_DIR',
filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE);
DBMS_DATAPUMP.metadata_filter(
handle => l_dp_handle,
name => 'SCHEMA_EXPR',
value => '= SCOTT');
DBMS_DATAPUMP.start_job(l_dp_handle);
DBMS_DATAPUMP.detach(l_dp_handle);
END;
/
Как только задание запущено, его статус можно проверить используя следующий запрос:
system@db10g> select * from dba_datapump_jobs;
Внешние таблицы
У Oracle появилась поддержка технологий Data Pump, с помощью которых можно преносить данные во внешние таблицы. Драйвер доступа ORACLE_DATAPUMP может быть использован для выгрузки данных в экспорт-файл и последующей перезагрузке их. Выгрузка данных происходит, когда внешняя таблица создана с использованием кляузы "AS":
CREATE TABLE emp_xt
ORGANIZATION EXTERNAL
(
TYPE ORACLE_DATAPUMP
DEFAULT DIRECTORY test_dir
LOCATION ('emp_xt.dmp')
)
AS SELECT * FROM emp;
Затем данные могут быть запрошены так:
SELECT * FROM emp_xt;
Синтаксис создания указателя на внешнюю таблицу в существующем файле аналогичен, но без кляузы "AS":
DROP TABLE emp_xt;
CREATE TABLE emp_xt (
EMPNO NUMBER(4),
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2))
ORGANIZATION EXTERNAL (
TYPE ORACLE_DATAPUMP
DEFAULT DIRECTORY test_dir
LOCATION ('emp_xt.dmp')
);
SELECT * FROM emp_xt;
HELP
Опция "HELP=Y" заставит отобразить описание всех доступных параметров:
expdp help=y
Export: Release 10.2.0.3.0 - 64bit Production on Среда, 20 Февраль, 2008 13:57:18
Copyright (c) 2003, 2005, Oracle. All rights reserved.
Утилита экспорта насоса данных предоставляет механизм для передачи объектов данных
между базами данных Oracle. Эта утилита вызывается следующей командой:
Пример: expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp
Управление выполнением экспорта может осуществляться вводом команды 'expdp' с заданием после нее
различных параметров. Для задания параметров служат ключевые слова:
Формат: expdp КЛЮЧЕВОЕ СЛОВО=значение или КЛЮЧЕВОЕ СЛОВО=(значение1,значение2,...,значениеN)
Пример: expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=scott
или TABLES=(T1:P1,T1:P2), если T1 является секционированной таблицей
USERID должно быть первым параметром в командной строке.
Ключевое слово Описание (Знач. по умолчанию)
------------------------------------------------------------------------------
ATTACH Служит для присоединения к существующему заданию, например, ATTACH [=имя задания].
COMPRESSION Уменьшение размера содержимого файла дампа, если допустимо
значения ключевого слова: (METADATA_ONLY) и NONE.
CONTENT Служит для задания данных для выгрузки. Разрешаются ключевые слова:
(ALL), DATA_ONLY и METADATA_ONLY.
DIRECTORY Объект 'каталог' для файлов дампов и файлов журналов.
DUMPFILE Список результирующих файлов дампов (expdat.dmp),
например, DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp.
ENCRYPTION_PASSWORD Ключ пароля для создания столбца зашифрованных данных.
ESTIMATE Служит для вычисления оценочных данных заданий. Допускаются следующие ключевые слова:
(BLOCKS) и STATISTICS.
ESTIMATE_ONLY Служит для вычисления оценочных данных заданий без выполнения экспорта.
EXCLUDE Служит для исключения определенных типов объектов, например, EXCLUDE=TABLE:EMP.
FILESIZE Служит для задания размера каждого файла дампа в байтах.
FLASHBACK_SCN SCN, используемый для установки мгновенного снимка сеанса назад.
FLASHBACK_TIME Время, используемое на получение SCN, ближайшее к заданному времени.
FULL Служит для экспорта всей базы данных (N).
HELP Служит для отображения сообщений Справки (N).
INCLUDE Служит для включения определенных типов объектов, например, INCLUDE=TABLE_DATA.
JOB_NAME Имя создаваемого задания экспорта.
LOGFILE Имя файла журнала (export.log).
NETWORK_LINK Имя канала связи удаленной базы данных с исходной системой.
NOLOGFILE Не записывать файл журнала (N).
PARALLEL Служит для изменения числа активных рабочих процессов для текущего задания.
PARFILE Служит для задания файла параметров.
QUERY Фраза предиката, используемая для экспорта подмножества таблицы.
SAMPLE Процент данных для экспорта;
SCHEMAS Служит для перечисления схем экспорта (схема при регистрации).
STATUS Частота (сек) с которой должно отслеживаться состояние задания, где
значение по умолчанию (0) соответствует отображению нового состояния, когда оно будет доступно.
TABLES Служит для указания списка таблиц для экспорта - только для одной схемы.
TABLESPACES Служит для указания списка табличных пространств для экспорта.
TRANSPORT_FULL_CHECK Служит для проверки сегментов хранения для всех таблиц (N).
TRANSPORT_TABLESPACES Список табличных пространств, из которых будут выгружены метаданные.
VERSION Версия объектов для экспорта. Могут использоваться следующие ключевые слова:
(COMPATIBLE), LATEST или любой действительный номер версии базы данных.
Следующие команды могут использоваться в интерактивном режиме.
Примечание. Допускается использование сокращений
Команда Описание
------------------------------------------------------------------------------
ADD_FILE Служит для добавления файла дампа в набор файлов дампов.
CONTINUE_CLIENT Служит для возврата в режим протоколирования. В случае простоя задание будет запущено заново.
EXIT_CLIENT Служит для выхода из сеанса клиента без прекращения выполнения задания.
FILESIZE Размер файла по умолчанию (байт) для последующих команд ADD_FILE.
HELP Отображает сводку по интерактивным командам.
KILL_JOB Служит для отсоединения и удаления задания.
PARALLEL Служит для изменения числа активных рабочих процессов для текущего задания.
PARALLEL=<число рабочих процессов>.
START_JOB Служит для запуска/возобновления текущего задания.
STATUS Частота (сек) с которой должно отслеживаться состояние задания, где
значение по умолчанию (0) соответствует отображению нового состояния, когда оно будет доступно.
STATUS[=interval]
STOP_JOB Служит для нормального завершения выполнения задания и выхода из клиента.
STOP_JOB=IMMEDIATE выполняет немедленное завершение
задания насоса данных.
impdp help=y
Import: Release 10.2.0.3.0 - 64bit Production on Среда, 20 Февраль, 2008 13:57:18
Copyright (c) 2003, 2005, Oracle. All rights reserved.
Утилита импорта насоса данных предоставляет механизм для передачи объектов данных
между базами данных Oracle. Эта утилита вызывается следующей командой:
Пример: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp
Управление выполнением импорта может осуществляться вводом команды 'impdp' с заданием после нее
различных параметров. Для задания параметров служат ключевые слова:
Формат: impdp КЛЮЧЕВОЕ СЛОВО=значение или КЛЮЧЕВОЕ СЛОВО=(значение1,значение2,...,значениеN)
Пример: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp
USERID должно быть первым параметром в командной строке.
Ключевое слово Описание (Знач. по умолчанию)
------------------------------------------------------------------------------
ATTACH Служит для присоединения к существующему заданию, например, ATTACH [=имя задания].
CONTENT Служит для задания данных для загрузки. Разрешаются ключевые слова:
(ALL), DATA_ONLY и METADATA_ONLY.
DIRECTORY Объект 'каталог', который должен использоваться для файлов дампов, журналов и sql.
DUMPFILE Список файлов дампов для выполнения импорта из них (expdat.dmp),
например, DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp.
ENCRYPTION_PASSWORD Ключ пароля для доступа к столбцу зашифрованных данных.
Этот параметр недействителен для заданий импорта по сети.
ESTIMATE Служит для вычисления оценочных данных заданий. Допускаются следующие ключевые слова:
(BLOCKS) и STATISTICS.
EXCLUDE Служит для исключения определенных типов объектов, например, EXCLUDE=TABLE:EMP.
FLASHBACK_SCN SCN, используемый для установки мгновенного снимка сеанса назад.
FLASHBACK_TIME Время, используемое на получение SCN, ближайшее к заданному времени.
FULL Служит для выполнения импорта всех данных из источника (Y).
HELP Служит для отображения сообщения Справки (N).
INCLUDE Служит для включения определенных типов объектов, например, INCLUDE=TABLE_DATA.
JOB_NAME Имя создаваемого задания импорта.
LOGFILE Имя файла журнала (import.log).
NETWORK_LINK Имя канала связи удаленной базы данных с исходной системой.
NOLOGFILE Не записывать файл журнала.
PARALLEL Служит для изменения числа активных рабочих процессов для текущего задания.
PARFILE Служит для задания файла параметров.
QUERY фраза предиката, используемая для импорта подмножества таблицы.
REMAP_DATAFILE Служит для переопределения ссылок на файлы данных во всех операторах DDL.
REMAP_SCHEMA Объекты из одной схемы загружаются в другую схему.
REMAP_TABLESPACE Объект табличного пространства повторно отображается в другое табличное пространство.
REUSE_DATAFILES Табличное пространство будет инициализировано, если оно уже существует (N).
SCHEMAS Список схем для импорта.
SKIP_UNUSABLE_INDEXES Служит для пропуска индексов, для которых было установлено состояние 'Индекс не применим'.
SQLFILE Служит для записи всех DDL SQL в указанный файл.
STATUS Частота (сек) с которой должно отслеживаться состояние задания, где
значение по умолчанию (0) соответствует отображению нового состояния, когда оно будет доступно.
STREAMS_CONFIGURATION включает загрузку метаданных потоков
TABLE_EXISTS_ACTION Действие, которое выполняется, если импортируемый объект уже существует.
Допустимые ключевые слова: (SKIP), APPEND, REPLACE и TRUNCATE.
TABLES Служит для задания списка таблиц для импорта.
TABLESPACES Служит для задания списка табличных пространств для импорта.
TRANSFORM Преобразование метаданных, которое должно применяться к соответствующим объектам.
Допустимые ключевые слова для преобразований: SEGMENT_ATTRIBUTES, STORAGE
OID и PCTSPACE.
TRANSPORT_DATAFILES Список файлов данных для импорта в режиме, допускающем транспортировку.
TRANSPORT_FULL_CHECK Служит для проверки сегментов хранения для всех таблиц (N).
TRANSPORT_TABLESPACES Список табличных пространств, из которых будут загружаться метаданные.
Действительно только для операций в режиме импорта NETWORK_LINK.
VERSION Версия объектов для экспорта. Могут использоваться следующие ключевые слова:
(COMPATIBLE), LATEST или любой действительный номер версии базы данных.
Действительно только для NETWORK_LINK и SQLFILE.
Следующие команды могут использоваться в интерактивном режиме.
Примечание. Допускается использование сокращений
Команда Описание (Значение по умолчанию)
------------------------------------------------------------------------------
CONTINUE_CLIENT Служит для возврата в режим протоколирования. В случае простоя задание будет запущено заново.
EXIT_CLIENT Служит для выхода из сеанса клиента без прекращения выполнения задания.
HELP Отображает сводку по интерактивным командам.
KILL_JOB Служит для отсоединения и удаления задания.
PARALLEL Служит для изменения числа активных рабочих процессов для текущего задания.
PARALLEL=<число рабочих процессов>.
START_JOB Служит для запуска/возобновления текущего задания.
START_JOB=SKIP_CURRENT служит для запуска задания после пропуска
всех действий, которые выполнялись, когда задание было остановлено.
STATUS Частота (сек) с которой должно отслеживаться состояние задания, где
значение по умолчанию (0) соответствует отображению нового состояния, когда оно будет доступно.
STATUS[=interval]
STOP_JOB Служит для нормального завершения выполнения задания и выхода из клиента.
STOP_JOB=IMMEDIATE выполняет немедленное завершение
задания насоса данных.