Ответ 1
Обычная практика заключается в том, чтобы позволить изменениям проходить процесс сборки. В основном.. есть средство управления версиями, такое как CVS, где пользователи проверяют изменения, которые необходимо выполнить в средах QA и Prod.
Итак, скажем, есть несколько столбцов, добавленных в таблицу, разработчик проверит в .ddl script команду "Alter table..." и будет "применен" к в следующий раз, когда вы выполните сборку.
Если вы не ограничиваете пользователей (в данном случае.. Разработчиков) от непосредственного внесения изменений и вместо этого используете стандартный процесс сборки, отслеживание изменений объектов практически невозможно с течением времени.
Рассмотрите необходимые детали, такие как пользователь, внесший изменения, время изменения, причина (комментарии для проверки, номер ошибки, новый запрос функции и т.д.), которые вам понадобятся позже, чтобы понять, почему было сделано изменение. Все изменения обычно скомпилируются с использованием стандартного пользователя, такого как "APPOWNER", и в отсутствие системы управления версиями у вас есть только доступ к последнему изменению (last_ddl_change).
Если вы хотите отслеживать изменения в Data, вы можете использовать триггеры или использовать приложение, такое как Golden Gate, которое будет считывать журналы повтора и получать записи об изменениях. Из вашего вопроса, похоже, вы ищете способ отслеживания изменений объектов.