Дек 302010
 

Известно, что с помощью утилит exp/imp нельзя залить дамп в ту же самую БД, из-за дублирования OID'ов. Кроме того, если на целевой базе имя табличного пространства не совпадает с именем ТП на исходной, то схему импортировать не получится.
Написал скрипт, который убирает storage clause, tablespace clause, и OID для объектов в файле дампа, созданного утилитой exp:

Вот он:nostorage.pl

Работает так:

./nostorage.pl [--oid] [--tablespace] [--storage] file.dmp > file.filtered.dmp

По умолчанию, скрипт удаляет всё, ключи --oid, --tablespace, --storage указываются, чтобы оставить OID, tablespace clause, и storage clause соответственно.
70-гигабайтный дамп обработался за 20 минут на сервере Sun Fire 6900, что на мой взгляд довольно шустро, учитывая то, что операция проводится "на лету", результат передаётся через пайп в imp, который работает на порядок дольше:

mknod pipe_temp p
./nostorage.pl file.dmp pipe_temp &
imp file=pipe_temp

Кстати, так же удобно работать со сжатыми gzip или bzip2 дампами, т.к. для их распаковки может просто не хватить места.

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">

(обязательно)

(обязательно)