Помогите с проблемой выгрузки

Малеваный
Дата: 10.12.2012 17:34:13
Есть задача: выгружать все изменения с одной таблиц ежедневно.
Таблица очень большая 450 млн записей.
источник и целевая таблица одной и той же структуры.
Было не сколько вариантов:
1) Делать сравнения 2 таблиц
select * from table_SRC
minus
select * from table_TRG
Но через Minus оно вообще не выполняется, или очень долго, я не ждал так долго.

2) Использовать CDC - механизм - этот вариант подходит, но нет возможности его использовать. (свои причины)

3) Есть вариант такой:
select
scn_to_timestamp(ora_rowscn) dt
from table_SRC
where ora_rowscn >= (select timestamp_to_scn('08.06.2012 00:00:00') from dua)
and ora_rowscn < (select timestamp_to_scn('11.06.2012 00:00:00') from dual);
Можно ли данные вариант использовать? На мой взгляд он не надежный, так как если нужно перевыгрузить данные месяц назад, то это не возможно.


Какие еще можно использовать варианты??? подскажите кто знает!!!
Ramin Hashimzade
Дата: 10.12.2012 17:51:19
Малеваный,

конечно же я б использовал CDC, но так как не хотите то могу предложить такой вариант. Добавить поля ДАТЕ на обе таблицы, написать триггер на таблицу при изменение изменить дату=trunc(sysdate), и в конце дня :

insert into table_TRG
select * from table_SRC where change_date=:ddate

и плюсь если есть возможность будет лучше партитировать таблицу , создать локальный индекс
Малеваный
Дата: 10.12.2012 17:53:39
проблема в том, что источник не доступен для каких то модификаций ((
Так бы мы использовали CDC.
матершина
Дата: 10.12.2012 20:33:46
matview? Хотя без матвьюлогов лажа будет, наверное...
OracleX
Дата: 10.12.2012 21:08:56
4) Сохранять все факты изменения таблицы-источника (в виде operation_type, Row_ID)
в таблице изменений с помощью DBMS_CHANGE_NOTIFICATION:
http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_chngnt.htm
http://www.oracle-base.com/articles/10g/dbms_change_notification_10gR2.php

Затем один раз в день запускать хранимку для наката изменений на целевую таблицу.
Малеваный
Дата: 11.12.2012 13:45:49
Не подскажите DBMS_CHANGE_NOTIFICATION только на всю схему работает или можно отдельно на таблицу?
OracleX
Дата: 11.12.2012 14:54:39
На таблицу можно, на схему нельзя.