Вернуться

Скрипт 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



Вернуться