Скрипт Pipe/Compress
####### # Автор : C. R. Soza - Oracle Consultant (UK) # # Дата : 09/07/96 # # Описание: Использование механизма Pipe/Compress # для сокращения размера файла экспорта. # # Результат: Предлагаемый скрипт был проверен на DEC # Alpha. Результирующий экспортный файл # оказался в 8 раз меньше обычного. # Можно сделать то же самое, но без сжатия. # Это избавит от требования памяти при декомпрессировании. # ####### # Как root сделаем директорию /dev/oracle mkdir /dev/oracle # # Дадим разрешение записи в эту директорию # chmod 666 /dev/oracle # Построим канал (pipe) (Я должен сделать это, как администратор root) mknod /dev/oracle/expdat.dmp p # запуск в фоновом режиме процесса компрессирования файла, получаемого # на выходе из канала compress < /dev/oracle/expdat.dmp > expdat.dmp.Z & # подождем немного sleep 30 # запуск процесса эксторта с направлением выходного (экспортного) файла в канал # (В своей базе я определил параметр os_authent_prefix="" # и создал пользователя oracle, который идентифицирован внешне (externally)) exp / file=/dev/oracle/expdat.dmp full=y compress=y log=exp.log # В результате в Вашей рабочей директории сжатый получится файл # expdat.dmp.Z # Для того, чтобы сделать импорт из этого скомпрессипрванного файла, # надо выполнить: imp / file=/dev/oracle/expdat.dmp full=y log=imp.log & uncompress < expdat.dmp.Z > /dev/oracle/expdat.dmp # Заметим, что построенный канал не надо удалять после его использования. # Он еще может пригодиться. # Вот другое использование этого приема # Проблема: Пусть существуют два пользователя, каждый в своей базе(предположим: TEST и PROD). # Как обновить базу данных TEST, используя данные из базы PROD # (пусть для простоты uid = scott для обеих баз данных) # (также, естественно, полагается, что обе базы данных находятся на одном и том же сервере) # # Решение: imp system/manager@TEST file=/dev/oracle/expdat.dmp fromuser=scott touser=scott & exp system/manager@PROD file=/dev/oracle/expdat.dmp user=scott compress=y