Як вивантажити логічно согласованый набір даних з декількох таблиць в БД під OLTP навантаженням

Як вивантажити логічно согласованый набір даних з декількох таблиць в БД під OLTP навантаженням?

Для цих цілей в ORACLE можна використовувати чудовий інструмент — FLASHBACK.
FB позиціонується ORACLом як інструмент dba забезпечує ретроспективні запити до таблиць
для відновлення втраченої за будь-яких причин або відкоту змін до моменту часу в минулому.
Один з режимів читання працює по опції SCN(System Change Number).
Зафіксувавши значення SCN можна читати довільний об'єм логічно согласованой інформації приблизно DB_FLASHBACK_RETENTION_TARGET хвилин.
Пост не претендує на вичерпний опис функціоналу FB тому наведений нижче приклад схематичний і достатній для демонстрації його нетрадиційного застосування.

Перевіряємо доступність опції FLASHBACK.
SELECT FLASHBACK_ON FROM V$DATABASE;


Видаємо з під якої працює вивантаження необхідні права.
grant execute on SYS.DBMS_FLASHBACK to LOADER;


Значення SCN можна отримати декількома способами.
select sys.DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER from dual;
select TIME_DP, SCN from sys.smon_scn_time order by scn desc;
SELECT TIMESTAMP_TO_SCN(sysdate-1/(24*60)) from dual;


Перевіряємо велосипед на ходу.

create table FB_TABLE( p1 VARCHAR2(64));
select sys.DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER from dual;
GET_SYSTEM_CHANGE_NUMBER
8842201836421

insert into FB_TABLE (p1) values ('string_1');
commit;
select sys.DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER from dual;
GET_SYSTEM_CHANGE_NUMBER
8842201836472

update FB_TABLE set p1='string_2';
commit;
select sys.DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER from dual;
GET_SYSTEM_CHANGE_NUMBER
8842201836530

select t.* from FB_TABLE AS OF SCN 8842201836421 t;
P1

select t.* from FB_TABLE AS OF SCN 8842201836472 t;
P1
string_1

select t.* from FB_TABLE AS OF SCN 8842201836530 t;
P1
string_2

За даної технології кілька років online збирається інформація c декількох десятків OLTP-серверів на сервер аналітики.
Джерело: Хабрахабр
  • avatar
  • 0

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.