Вы можете добавить в свою таблицу столбец на основе последовательности, но, как предлагает Гэри, я бы этого не делал.
Задача, которую вы собираетесь решить, настолько распространена, что уже реализованы другие решения.
Первая встроенная опция, которая приходит на ум, - это номер изменения системы SCN, своего рода Oracle внутренние часы. По умолчанию таблицы настроены для записи SCN всего (обычно 8 КБ) блока, обычно содержащего много строк, но вы можете настроить таблицу для хранения записи SCN, изменяющей каждую строку. Затем вы можете отслеживать новые или измененные столбцы, которые не были скопированы в таблицы отчетов.
CREATE TABLE t (c1 NUMBER) ROWDEPENDENCIES;
INSERT INTO t VALUES (1);
COMMIT;
SELECT c1, ora_rowscn FROM t;
Во-вторых, я бы подумал о добавлении столбца даты. С 60-80 миллионами строк я бы не стал этого делать с ALTER TABLE xxx ADD (d DATE DEFAULT SYSDATE)
, но с переименованием, созданием как select, drop:
CREATE TABLE t AS SELECT * FROM all_objects;
RENAME t TO told;
CREATE TABLE t AS SELECT sysdate AS d, told.* FROM told;
ALTER TABLE t MODIFY d DATE DEFAULT SYSDATE;
DROP TABLE told;
В-третьих, я бы прочитал материализованные представления . У меня никогда не было возможности использовать эту работу, но теоретически вы должны иметь возможность настроить журнал материализованных представлений на своем 80-метровом столе, который записывает изменения и обновляет зависимые материализованные представления.
И, наконец, я Я бы рассмотрел возможность разбиения вашей большой таблицы по (недавно введенному) столбцу даты, чтобы идентификация новых строк стала быстрее. К сожалению, это зависит от вашей версии и лицензии Oracle.