Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Быстрый откат  [new]
__ddd__
Member

Откуда:
Сообщений: 3
Добрый день.
Oracle 9.2.0.1. Есть схема (таблиц 25, в каждой таблице записей по 10-30).
Есть приложение.
Надо:
Приложение запускается, работает с БД, редактирует данные.
Но когда приложение закрывается, надо откатить схему к первоначальному состоянию, и сделать это надо меньше чем за 1 секунду.
Возможно ли это? И если да, то как.

Помогите.

Заранее спасибо.
6 мар 08, 18:44    [5382474]     Ответить | Цитировать Сообщить модератору
 Re: Быстрый откат  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18351
Понаделать схем и каждый раз подключать пользователя к новой, "отработанные" схемы неспешно дропать и пересоздавать.
6 мар 08, 18:48    [5382497]     Ответить | Цитировать Сообщить модератору
 Re: Быстрый откат  [new]
__ddd__
Member

Откуда:
Сообщений: 3
andrey_anonymous
Понаделать схем и каждый раз подключать пользователя к новой, "отработанные" схемы неспешно дропать и пересоздавать.


нет, можно только одной схемой пользоваться.

просто тут типа тест (тесты) запускаем, он (они) отрабатывает, и надо быстро вернуть первоначальное состояние
6 мар 08, 18:52    [5382516]     Ответить | Цитировать Сообщить модератору
 Re: Быстрый откат  [new]
Консерва
Member

Откуда:
Сообщений: 2794
__ddd__
andrey_anonymous
Понаделать схем и каждый раз подключать пользователя к новой, "отработанные" схемы неспешно дропать и пересоздавать.


нет, можно только одной схемой пользоваться.

просто тут типа тест (тесты) запускаем, он (они) отрабатывает, и надо быстро вернуть первоначальное состояние
Проапгрейдься на 10g и открой для себя FLASHBACK.
6 мар 08, 18:59    [5382548]     Ответить | Цитировать Сообщить модератору
 Re: Быстрый откат  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18351
__ddd__
andrey_anonymous
Понаделать схем и каждый раз подключать пользователя к новой, "отработанные" схемы неспешно дропать и пересоздавать.


нет, можно только одной схемой пользоваться.

просто тут типа тест (тесты) запускаем, он (они) отрабатывает, и надо быстро вернуть первоначальное состояние

Я так и понял. Но если норматив 1с, то единственное что можно предложить - это подменить схему. Или сервис.
Подменить схему можно довольно просто на основе alter session set current_schema в after logon триггере.
6 мар 08, 19:00    [5382552]     Ответить | Цитировать Сообщить модератору
 Re: Быстрый откат  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18351
Консерва
Проапгрейдься на 10g и открой для себя FLASHBACK.

И что, <1с реально?
6 мар 08, 19:01    [5382555]     Ответить | Цитировать Сообщить модератору
 Re: Быстрый откат  [new]
Timm
Member

Откуда: Moscow, Ё-burg
Сообщений: 3696
__ddd__
просто тут типа тест (тесты) запускаем, он (они) отрабатывает, и надо быстро вернуть первоначальное состояние

True TDD-исты для юнит тестирования пользуются mock object'ами.
6 мар 08, 19:23    [5382627]     Ответить | Цитировать Сообщить модератору
 Re: Быстрый откат  [new]
__ddd__
Member

Откуда:
Сообщений: 3
Timm
__ddd__
просто тут типа тест (тесты) запускаем, он (они) отрабатывает, и надо быстро вернуть первоначальное состояние

True TDD-исты для юнит тестирования пользуются mock object'ами.


Пользуемся, но возникли некоторые проблемы с этим (есть классы. кот юзают БД напрямую, не через бины).
Один из вариантов: с БД работать напрямую, запускать все на живой апликухе (на реальном серваке).

Второй вариант рассматривает другой человек.
6 мар 08, 19:37    [5382655]     Ответить | Цитировать Сообщить модератору
 Re: Быстрый откат  [new]
Ответ за консерву
Guest
andrey_anonymous
Консерва
Проапгрейдься на 10g и открой для себя FLASHBACK.

И что, <1с реально?


Ну ежели у Консервы скорость ввода команд в SQL Plus настолько велика, то да...:)
6 мар 08, 19:39    [5382662]     Ответить | Цитировать Сообщить модератору
 Re: Быстрый откат  [new]
Консерва
Member

Откуда:
Сообщений: 2794
Ответ за консерву
andrey_anonymous
Консерва
Проапгрейдься на 10g и открой для себя FLASHBACK.

И что, <1с реально?


Ну ежели у Консервы скорость ввода команд в SQL Plus настолько велика, то да...:)

На самом деле я аццки гоню:
SQL>  insert into test select * from all_objects where rownum<1000; 

999 rows created.

Elapsed: 00:00:00.13
SQL>  flashback table test to timestamp to_date('06032008 19:41:00','ddmmyyyy hh24:mi:ss');  

Flashback complete.

Elapsed: 00:00:22.30
SQL> 
Так что меньше секунды - вряд ли. Но зато все преимущества флэшбэка.
6 мар 08, 19:44    [5382677]     Ответить | Цитировать Сообщить модератору
 Re: Быстрый откат  [new]
Консерва
Member

Откуда:
Сообщений: 2794
Ответ за консерву
andrey_anonymous
Консерва
Проапгрейдься на 10g и открой для себя FLASHBACK.

И что, <1с реально?


Ну ежели у Консервы скорость ввода команд в SQL Plus настолько велика, то да...:)
Ввод команд тут не причем - можно запастись скриптом заранее.
6 мар 08, 19:48    [5382686]     Ответить | Цитировать Сообщить модератору
 Re: Быстрый откат  [new]
Bambino
Member

Откуда:
Сообщений: 124
Вообще FLASHBACK не в 10-ке появился. в10-ке появилась только команда. А до этого был пакет. Читать тут или тут
Только лучше базу сразу обновить каким-нибудь патчиком.
6 мар 08, 21:08    [5382821]     Ответить | Цитировать Сообщить модератору
 Re: Быстрый откат  [new]
AG#
Member

Откуда: Российская Федерация
Сообщений: 2305
Гарантированно быстро - когда вообще отсутсвуют(минимально) операции redo и undo при возврате в начальное состояние.

andrey_anonymous прав.
Лучше при операциях на словаре.

Как вариант реализации:

Подопытная на которой тесты таблица TTT1.

TTT2 - это таблица для отката изменений(данные - копия из TTT1).

Здесь не 1 sec, но и записей 127тыс. при обьеме 100Мб.


20:49:16 SQL> create table TTT1 tablespace TOOLS as select TEXT from dba_source;

Table created.

Elapsed: 00:00:27.95
20:49:53 SQL> create table TTT2 partition by range(TEXT) (partition p1 values less than (maxvalue)) as select * from TTT1;

Table created.

Elapsed: 00:00:05.15
20:50:26 SQL> select count(*) from TTT1;

  COUNT(*)
----------
    127279

Elapsed: 00:00:01.28

20:51:24 SQL> select bytes from dba_segments where SEGMENT_NAME='TTT1';

     BYTES
----------
 100663296

Elapsed: 00:00:00.89

20:52:34 SQL> delete TTT1 where rownum<1000;

999 rows deleted.

Elapsed: 00:00:00.22

20:52:46 SQL> update TTT1 set TEXT='FFF';

126280 rows updated.

Elapsed: 00:00:13.58
20:53:31 SQL> commit;

Commit complete.

Elapsed: 00:00:00.03
20:53:35 SQL> select count(*) from TTT1;

  COUNT(*)
----------
    126280

Elapsed: 00:00:03.46

20:54:06 SQL> select TEXT from TTT1 where rownum<3;

TEXT
--------------------------------------------------------------------------------
FFF
FFF

Elapsed: 00:00:00.05


20:54:18 SQL> alter table TTT2
20:54:48   2  EXCHANGE PARTITION P1 WITH TABLE TTT1;

Table altered.

Elapsed: 00:00:03.81 (немного не уложился в 1 секунду :-) )

-- Ключевое (меняем только определение в словаре)



20:55:05 SQL> select TEXT from TTT1 where rownum<3;

TEXT
--------------------------------------------------------------------------------
type       "SYS_YOID0000004710$" as object( "SYS_NC00001$" RAW(16), "SYS_NC00002
$" NUMBER)

type       "SYS_YOID0000004707$" as object( "SYS_NC00001$" VARCHAR2(30 BYTE), "S
YS_NC00002$" VARCHAR2(700 BYTE))


Elapsed: 00:00:00.08
20:55:16 SQL> select count(*) from TTT1;

  COUNT(*)
----------
    127279

Elapsed: 00:00:01.19

6 мар 08, 21:14    [5382833]     Ответить | Цитировать Сообщить модератору
 Re: Быстрый откат  [new]
Консерва
Member

Откуда:
Сообщений: 2794
Bambino
Вообще FLASHBACK не в 10-ке появился. в10-ке появилась только команда. А до этого был пакет. Читать тут или тут
Только лучше базу сразу обновить каким-нибудь патчиком.

Пакет был, но убогий. А так согласен.
6 мар 08, 21:23    [5382847]     Ответить | Цитировать Сообщить модератору
 Re: Быстрый откат  [new]
AI
Member

Откуда: Москва
Сообщений: 2817
Для подобных целей был придуман workspace manager. Почему бы не попробовать?
7 мар 08, 10:28    [5383910]     Ответить | Цитировать Сообщить модератору
 Re: Быстрый откат  [new]
Sashko81
Member

Откуда: Киев
Сообщений: 103
__ddd__
Приложение запускается, работает с БД, редактирует данные.

Может пусть это приложение меняет только временные таблички?
А вся исходная информация пусть хранится в "обычных".
7 мар 08, 10:36    [5383963]     Ответить | Цитировать Сообщить модератору
 Re: Быстрый откат  [new]
Fucker
Member [заблокирован]

Откуда:
Сообщений: 1525
Консерва
Bambino
Вообще FLASHBACK не в 10-ке появился. в10-ке появилась только команда. А до этого был пакет. Читать тут или тут
Только лучше базу сразу обновить каким-нибудь патчиком.

Пакет был, но убогий. А так согласен.
В данном случае убога попытка применения неподходящего решения. Убог сам подход к решению задачи.

В ситуациях, когда что-то надо сделать и получить результат очень быстро, быстрее, чем при лобовой атаке бульдозера, надо разносить время начала выполнения этого самого действия со временем потребления результата, либо пользоваться какими-либо "домашними заготовками", "предварительными вычислениями", подменами и прочими "элементарными хитростями". Т.е. что-то типа того, что предложил Андрей.

В скольких местах в том же самом Оракле используются подобные принципы...

И "убогости каких-то пакетов" тут совсем не при чем.

Последующее адресуется не только автору исходных пассажей, но и чуть более широкой аудитории:
Со времени появления флешбека я не меньше сотни раз видел всякие разные прикольные "попытки" его применения. Т.е. где-то между народным "дурнем с писанной торбой" и Крыловской мартышкой с очками. Посмотрите по форуму, сколько раз встречается это слово и в каких ситуациях его хотят применять...
7 мар 08, 10:59    [5384123]     Ответить | Цитировать Сообщить модератору
 Re: Быстрый откат  [new]
mcureenab
Member

Откуда: Murmansk
Сообщений: 5928
__ddd__

Возможно ли это? И если да, то как.


Попробуй пересоздавать схему обычным imp. ИМХО, залить в БД ~1000 записей дело совсем простое.
7 мар 08, 11:42    [5384501]     Ответить | Цитировать Сообщить модератору
 Re: Быстрый откат  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18351
mcureenab
__ddd__

Возможно ли это? И если да, то как.
Попробуй пересоздавать схему обычным imp. ИМХО, залить в БД ~1000 записей дело совсем простое.

Андрей, к сожалению, предварительно схему придется немного зачистить...
В норматив этот вариант не укладывается "палюбому" ;)
7 мар 08, 12:43    [5385056]     Ответить | Цитировать Сообщить модератору
 Re: Быстрый откат  [new]
AG#
Member

Откуда: Российская Федерация
Сообщений: 2305
Тут кстати фурмулу эффективности лучше такую:
время операции/обьем(количество) оперируемых данных.

По той же общей идеологии "подмены", просто другая техника(3-й вариант):

в качестве заготовки - Transport Tablespace (TTS)
все обьекты (rows,индексы) там.

плюс - не плодятся segments(при очень больших обьемах тестирования),также множественность перезаписи (кол-во циклов тестирования).
минус - запуск внешней утилиты(наготове держать ?), поэтому по скорости хз как будет(миллисекунды или секунды).
Но это тоже операции на словаре, так что быстро.
7 мар 08, 13:14    [5385314]     Ответить | Цитировать Сообщить модератору
 Re: Быстрый откат  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7131
Однако утро...
__ddd__
Добрый день.
Oracle 9.2.0.1. Есть схема (таблиц 25, в каждой таблице записей по 10-30).
Есть приложение.
Надо:
Приложение запускается, работает с БД, редактирует данные.
Но когда приложение закрывается, надо откатить схему к первоначальному состоянию, и сделать это надо меньше чем за 1 секунду.
Возможно ли это? И если да, то как.

Помогите.

Заранее спасибо.


А может подойти с другого боку?
Триггер prelogon копирует данные во временные таблицы и приложение работает с ними?
7 мар 08, 13:17    [5385355]     Ответить | Цитировать Сообщить модератору
 Re: Быстрый откат  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7131
Пардон опередили :)
---------------------
Встретил как то раз Волк девочку Машу и умер...
...
soap: vlejnin mail ру
7 мар 08, 13:19    [5385377]     Ответить | Цитировать Сообщить модератору
 Re: Быстрый откат  [new]
Александр Б
Member

Откуда: Санкт-Петербург
Сообщений: 246
Может в приложении использовать In-Memory DataSet ?
7 мар 08, 14:38    [5386026]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить