Фев 282011
 

При создании дампа схемы с помощью утилиты exp иногда бывает нужно экспортировать не некоторые таблицы по списку, а все таблицы, кроме некоторого списка. При большом количестве таблиц в экспортируемой схеме удобно будет автоматизировать создание файла параметров (parfile) для exp.

Для этого создадим файл build_parfile.sh с таким содержимым:

#!/bin/sh
 
echo userid=cube/cube@testdb
echo file=cube_schema.dmp
echo log=cube_schema.log
echo rows=y
echo indexes=y
echo constraints=y
echo direct=n
echo grants=n
echo consistent=n
echo compress=n
echo buffer=1048560
echo 'tables=('
 
sqlplus -S / as sysdba  2>/dev/null <<EOF
SET FEEDBACK OFF
SET SERVEROUTPUT OFF
SET VERIFY OFF
SET TRIMSPOOL ON
SET PAGESIZE 0
SET NEWPAGE 0
SET SPACE 0
SET LINESIZE 800
SET ECHO OFF
SET FEEDBACK OFF
SET VERIFY OFF
SET HEADING OFF
SET MARKUP HTML OFF SPOOL OFF
 
SELECT table_name || ','
FROM dba_tables
WHERE owner = 'CUBE'
AND table_name NOT IN ('CUBE_TBL1', 'CUBE_TBL2', 'HR');
 
EXIT
EOF
 
echo ')'

И запустим его:

# Сделаем файл исполняемым
chmod u+x build_parfile.sh
 
# Построим файл параметров
build_parfile.sh > parfile.par

Скрипт работает просто: сначала с помощью команды echo выводит неизменяемые параметры (можно будет потом переделать скрипт, чтобы он использовал шаблон, но мне и так удобно), и использует SQL*Plus с подавлением вывода всего, кроме имён таблиц для генерации списка. При необходимости несложно доработать скрипт, чтобы он выбирал таблицы по более хитрому условию.
И ещё: обратите внимание, что в списке после последнего имени таблицы будет запятая, т.е. файл параметров будет выглядеть примерно так:

userid=cube/cube
file=cube.dmp
log=cube.log
rows=y
indexes=y
constraints=y
direct=n
grants=n
consistent=n
compress=n
buffer=1048560
tables=(
EMP,
BONUS,
DEPT,
SALGRADE,
)

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

 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="">

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

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