Как использовать утилиту экспорта Oracle data pump для создания файла дампа на локальном компьютере? - PullRequest
5 голосов
/ 06 декабря 2011

Утилита экспорта данных Oracle ожидает параметр DIRECTORY (DBA_DIRECTORIES), который существует на сервере БД. Можно ли сопоставить этот каталог с локальной машиной или есть другой способ экспортировать несколько таблиц в локальную из базы данных Oracle?

Ответы [ 4 ]

8 голосов
/ 01 июля 2015

Если вы используете Data Pump, нет прямого способа сохранить файл дампа на вашем локальном компьютере.Именно так и был разработан Data Pump.

Однако есть один из возможных способов добиться того, чего вы хотите.Обходной путь состоит из двух шагов:

  1. Запустите expdp как обычно, что создаст файл дампа на сервере
  2. Используйте инструмент ocp для передачи файла дампа с сервера базы данных вваш локальный компьютер (и обратно, если хотите).

Инструмент ocp расшифровывается как «Oracle Copy» и написан именно для того, чтобы копировать файлы дампа туда и обратно из / всервер базы данных.Он доступен здесь: https://github.com/maxsatula/ocp/releases/download/v0.1/ocp-0.1.tar.gz Это исходный дистрибутив, поэтому после загрузки и распаковки запустите ./configure && make

(Надеюсь, у вас нет Windows на стороне клиента, потому что я никогда не пыталсяскомпилируйте его там)

Это простой инструмент командной строки с простым синтаксисом.Например, эта команда извлечет файл для вас:

ocp <connection_string> DATA_PUMP_DIR:remote_file_name.dmp local_file_name.dmp

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

Обновление:

Наконец-то я смог настроить исходный код и собрать ocp инструмент для 32-битной Windows:

https://github.com/maxsatula/ocp/releases/download/v0.1/ocp-0.1-win32.zip

Скомпилировано / протестированос 32-разрядным Instant Client 11.2.0.4, доступным здесь: http://www.oracle.com/technetwork/topics/winsoft-085727.html

instantclient-basiclite-nt-11.2.0.4.0.zip (20 258 449 байт)

Я полагаю, что он будет работать сполная установка Oracle Client тоже (просто следите за битами, должно быть 32), но я не проверял сам.

К сожалению, сборка Windows ocp не имеет необычного индикатора прогресса во время передачи файла.В этом фрагменте кода было слишком много специфических для * nix вещей, поэтому мне пришлось его обрезать.

Кроме того, поскольку он использует библиотеки popt и zlib, которые скомпилированы как часть проекта GnuWin и доступны только в 32-битной версии, ocp для Windows также 32-битная.Надеюсь, отсутствие 64-битной версии не является критически важным для вас.

Обновление 2:

Предупреждение! Убедитесь, что вы всегдаиспользуйте DEDICATED соединение с сервером при загрузке файлов с сервера, иначе (для SHARED сервера) скачанная копия файла будет повреждена без сообщений об ошибках!

6 голосов
/ 06 декабря 2011

Немного взломав, вы можете заставить насос данных делать то, что вы хотите, но вам нужна база данных на вашем локальном компьютере.

Вам нужно создать ссылку на базу данных на локальном компьютере на удаленный компьютер.

Затем в параметрах datapump войдите в локальную базу данных в качестве владельца ссылки db, укажите опцию 'network_link', которая будет именем созданного вами имени ссылки на базу данных. Таким образом, он должен экспортировать из удаленной базы данных через локальную базу данных и создать файл в вашем локальном экземпляре. Например:

expdp directory=<local_dir_object> network_link=<dblinkname on local instance> dumpfile=.. logfile=.. tables/schema=...
1 голос
/ 06 декабря 2011

Нет, насос данных отстой таким образом, но Oracle может получить более высокую пропускную способность, используя тот же сервер, на котором находится БД, так что это компромисс. Другие улучшения тоже, но я все еще думаю, что это большой недостаток для прокачки данных. Для этой цели используйте старые exp / imp или сторонние инструменты.

0 голосов
/ 06 декабря 2011

Вы должны спросить себя: «Почему я хочу хранить данные вне базы данных - самое безопасное место для моих данных? Где находится резервное копирование, восстановление и восстановление.

Если вы собираетесь переехатьданные из базы данных A в базу данных B, убедитесь, что обе базы данных имеют доступ к общей файловой области, где они могут получить доступ к файлам данных через их каталог-объект и использовать datapump.

Если вы все еще хотите экспортироватьДанные на стороне клиента вы можете использовать старые добрые инструменты exp и imp .

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