#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 и зачистили пустышки. Не тот вариант что хотел, но другого не нашел.
Комментариев нет:
Отправить комментарий