2015-04-21 2 views
0

У нас есть устаревшая система, которая использует Java и базу данных Oracle.Откат данных в среде интеграции после каждого теста

Теперь я хочу настроить среду интеграции, где мы можем запускать тесты через HTTP-вызовы.

Перед началом всего цикла испытаний база данных будет настроена заново. У нас уже есть функциональность для этого.

Теперь после каждого теста только измененные данные этого теста должны быть отброшены назад. Возможно ли это в базе данных Oracle?

+1

Что значит «не использует транзакции базы данных»? Как вы можете использовать базу данных без нее? – kevinsky

+0

Не понимаю: у вас есть процедура настройки базы данных «заново», но ... это не так? – Mat

+0

@kevinsky Возможно, я ошибся в транзакциях и сформулировал свой вопрос неправильно. Скажем, перед тестом у меня есть состояние A в моей базе данных. Затем после теста у меня состояние B. Но после того, как каждое тестовое состояние A должно быть восстановлено снова. –

ответ

0

Если вы используете Oracle 11, вы можете использовать команду FLASHBACK для восстановления таблицы до момента времени. Использование подобно этому

FLASHBACK TABLE employees_test 
    TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' minute); 

Ваш пользователь будут нужны специальные привилегии

  • SELECT ANY СЛОВАРЬ или ЭКСКУРС ANY TABLE или SELECT_CATALOG_ROLE

Я предполагаю, что это для разработки или тестирования, например, как эти привилегии не разрешены всем пользователям на производстве.

0

Два варианта я вижу для этого:

  • Flashback database - вы можете сделать что-то вроде глобального «отката» вашей базы данных в предопределенный точку восстановления.
  • Используйте Datapump: когда ваша схема готова, экспортируйте ее. После каждого теста импортируйте его с помощью CONTENT=DATA_ONLY и TABLE_EXISTS_ACTION=TRUNCATE (например). Может быть довольно быстро, не требует настройки вещей для флешбэка.
Смежные вопросы