====== Как вернуть прошлое состояние записи в Oracle? ======
При работе с Siebel CRM (из-за кривых рук) возникает необходимость вернуть прошлое состояние записи. В моем случаи такая необходимость возникает при написании скриптов.
Первоисточник [[https://docs.oracle.com/cd/B28359_01/appdev.111/b28424/adfns_flashback.htm#g1025584|Example 13-1 Retrieving a Lost Row with Oracle Flashback Query]]
SELECT * FROM employees
AS OF TIMESTAMP
TO_TIMESTAMP('2004-04-04 09:30:00', 'YYYY-MM-DD HH24:MI:SS')
WHERE last_name = 'Chung';
Рассмотрим ситуацию когда мы хотим получить значение записи BusComp Server Script. Получает ROW_ID необходимой Server Script и выполняем следующий код:
SELECT * FROM S_BUSCOMP_SCRIPT
AS OF TIMESTAMP
TO_TIMESTAMP('2014-11-14 10:00:00', 'YYYY-MM-DD HH24:MI:SS')
WHERE ROW_ID = '1-2DYR1';
Или получить все записи из таблицы на определенный момент времени.
select * from S_BUSCOMP_SCRIPT as of timestamp (sysdate-1);
Ограничение - Размер UNDO тейблспейса (время гарантированного хранения информации) и/или ограничения технологии flashback.
[[table:S_BUSCOMP_SCRIPT]] - таблица содержащая Серверные скрипты Business Componet
--- //[[admin@siebelwiki.com.ua|wiki_admin]] 2014/11/14 10:55//
{{tag>Oracle eScript}}