Страницы

Поиск по вопросам

среда, 11 декабря 2019 г.

Как сделать частичную копию базы данных Oracle?

#sql #oracle


Есть база на Oracle 10g, ее полный размер - 1,3 Тб, при том что как минимум 1Тб -
pdf документы - картинки,
которые не несут смысловой нагрузки. Как можно сделать частичную копию, при том что
я точно знаю из каких таблиц я хочу исключить данные ?
    


Ответы

Ответ 1



RMAN: SKIP [FOREVER] TABLESPACE tablespace_name http://docs.oracle.com/cd/E11882_01/backup.112/e10643/rcmsynta2008.htm#RCMRF149

Ответ 2



Можно сделать через remap_data. В примере схема sh1 и я ограничился одной таблицей. Для полного дампа надо заменить tables на full=Y. create table bigdata (key number, value varchar2(32), media blob); / -- добавил тестовую запись select key, value, lengthb(media) mediasize from bigdata; KEY VALUE MEDIASIZE ---------- -------------------------------- ---------- 1 myvalue 2048000 $ expdp sh1/sh1 directory=DATA_PUMP_DIR dumpfile=emptyblob.dmp tables=sh1.bigdata . . exported "SH1"."BIGDATA" 1.958 MB 1 rows -- много create or replace package remap as function rmblob(nul blob) return blob; end; / create or replace package body remap as function rmblob(nul blob) return blob is begin return empty_blob(); end; end; / $ expdp sh1/sh1 directory=DATA_PUMP_DIR dumpfile=emptyblob.dmp tables=sh1.bigdata \ remap_data=sh1.bigdata.media:sh1.remap.rmblob . . exported "SH1"."BIGDATA" 5.820 KB 1 rows drop table bigdata; $ impdp sh1/sh1 directory=DATA_PUMP_DIR dumpfile=emptyblob.dmp tables=sh1.bigdata . . imported "SH1"."BIGDATA" 5.820 KB 1 rows KEY VALUE MEDIASIZE ---------- -------------------------------- ---------- 1 myvalue 0

Ответ 3



Решено следующим образом - сделали полную копию, убили blob-ы документов, остаток перенесли в другой tablespace и зачистили пустышки. Не тот вариант что хотел, но другого не нашел.

Комментариев нет:

Отправить комментарий