Найти в Дзене

При экспорте из БД Oracle утилитой EXP, в дамп попадают не все таблицы

Версия Oracle: 11.2.х.х Задача:
При экспорте пользователя с таблицами из БД Oracle утилитой EXP в дамп попадают не все таблицы пользователя.
Причина следующая – если таблица пользователя пустая, то ей не выделено места в БД и экспортироваться утилитой EXP она не будет.
Решение:
Принудительно выделить экстент в БД для таких таблиц, после этого они успешно экспортируются.
Чтобы найти таблицы без экстентов и автоматически сделать скрипт, который выделит экстенты для этих таблиц, можно воспользоваться следующим скриптом, запустив его из под пользователя SYS:
SELECT 'ALTER TABLE '||table_name||' ALLOCATE EXTENT;' FROM all_tables WHERE segment_created = 'NO'
and OWNER = 'USER_NAME' -- подставить имя пользователя, чьи таблицы нужно экспортировать.
order by table_name;
 
Получившийся в результате выполнения запроса набор скриптов выполняем на БД из под пользователя, после чего при экспорте все таблицы пользователя будут успешно выгружены в дамп.

Версия Oracle: 11.2.х.х

Задача:
При экспорте пользователя с таблицами из БД Oracle утилитой EXP в дамп попадают не все таблицы пользователя.
Причина следующая – если таблица пользователя пустая, то ей не выделено места в БД и экспортироваться утилитой EXP она не будет.

Решение:
Принудительно выделить экстент в БД для таких таблиц, после этого они успешно экспортируются.
Чтобы найти таблицы без экстентов и автоматически сделать скрипт, который выделит экстенты для этих таблиц, можно воспользоваться следующим скриптом, запустив его из под пользователя SYS:
SELECT 'ALTER TABLE '||table_name||' ALLOCATE EXTENT;' FROM all_tables WHERE segment_created = 'NO'
and OWNER = 'USER_NAME' -- подставить имя пользователя, чьи таблицы нужно экспортировать.
order by table_name;

Получившийся в результате выполнения запроса набор скриптов выполняем на БД из под пользователя, после чего при экспорте все таблицы пользователя будут успешно выгружены в дамп.