Additional
dbCAP
AnyDAC
ThinDAC
NCOCI8
Topic: read-only ?
[1 2 |Next ]
read-only ?
Posted: 2002/08/05 16:38
 
? ????? ?? ?????????? read-only ???????????
??? ???? ?? ????????? OCIDatabase ?? read-only?

PS: ?????? ????????? ????? - ??? ???? ??????? ?????...

PPS: ? ??? ?? ???????? ??? Compatibility string ?
? ?? ??? ??? ?????, ???...
RE: read-only ?
Posted: 2002/08/05 17:00
 
Мда... Этим бы вебмастерам, да увидеть раз в жизни Оперу (версия 6.04), ох...
Ладно, у меня еще мысли появились...

Повторим:
А можно ли установить read-only транзакцию?
Или хотя бы настроить OCIDatabase на read-only?

PS: выложи исходники хелпа - там ведь столько лакун...

А теперь новое:

В общем мне надо переволдить прогу из-под record manager'a.
Пока я в каждую таблицу тупо добавляю PK на sequnce'ах (получаю через sp, которая делает selecr seq.nextval from v$database )
Хорошо бы для этого поиметь событие OnAutoSetPK

Далее - я планирую для симуляции ISAM сделать 2 соединения: read-only read-commited с одной транзакцией на все время. И обычный read-write snapshot autocommit
Тревожусь я, сможет ли detailquery от db2 использовать pk из списка полученного masterquery от db1 ?
В идеале, даже db2 хорошо бы чтобы пускала чтение серез db1, а изменение через db2

Хорошо бы time-out на autocommit: т.е. если от посл. операции прошло например 0.1 секунд с большой вероятностью юзер сидит и читает. А если меньше - то с большой версией программа читает/пишет какие-то подчиненные данные. Можно типа псевдо-транзакций устроить. Особенно вместе с всплывающим окошком a la "громкость" - т.е. ползунок с кнопочкой "отключить"

PS: а пустить несколько транзакций через одно соединение на оракле возможно? м.б. я зря 2 db планирую - одной хватит?
RE: read-only ?
Posted: 2002/08/06 09:40
 
1.Пиши по-английски - проблемы исчезнут
2.r/o транзакцию можно
3.Исходники хелпа - к Диману на мыло. Последнее время он редко читает форум
4.Выкинь свою процедуру и RTFM. Query.FieldByName('ID').DefaultExpression := 'NextVal(''MY_SQ'')'
5.На крайняк в afterinsert detail'а читаешь значение PK master'а.А вообще, ИМХО использовать 2 db в данном случае - это изврат
6.time-out на autocommit - к Диману
7.Я сам не пробовал, но вроде можно использовать параллельные транзакции с помощью TransactionManager
Смотри демку TransMan
Успехов!
RE: read-only ?
Posted: 2002/08/06 12:49
 
2) как?
4) возможно, но так как я еще делаю Fib+/Yaffil то лучше все же иметь.
Кроме того у меня опционально триггеры создаются. Если у меня здесь поле без PK вставится - я получаю ошибку и ищу таракана. А у клиента - втихаря заполняется триггером. Хотя м.б. Я не прав.
7) Гляну. Но будут ли это параллельные транзакции, т.е. одновременно активные? Хорошо, если да, поскольку вопрос 8:
8) мне тут уже по рогам дали, мрол ты по 2 соединения откроешь и у нас лицензии кончатся. Как Оракл 8i считает лицензии? По соединениям, машинам, юзерам?
5) откуда я его читать буду? М.б. ты и прав, но а вдруг? так она надежнее вроде.
2 соединения изврат, но запускать по 10 транзакций в секунду - тоже изврат. Вроде версионники этого не любят...

PS: если я Автора мылом попрошу глянуть на эту страничку, он откликнется? Или ему ее обязательно аттачем надо :-D
RE: read-only ?
Posted: 2002/08/07 13:34
 
2.Вероятно TransactionManager.Transisolation:=tmReadOnly. Сам не пробовал, так что копай.
4.Не понял что ты имеешь ввиду. Генераторы и сиквенсы аналогичны. Другое дело что fib+ очень сильно отличается от NCOCI (у нас тоже есть опыт использования, но первым был оракл, а недавно жарптица). Вместо OnAutoSetPK используй AfterInsert и сам там смотри, надо заполнять PK или нет.
5.Чем проще, тем надежнее. 2 Db - вдвое сложнее. Я так и не понял, нафига это? Чтоб делать как в FIB+? Так это они не от хорошей жизни, а от уродства Interbase так сделали. Оракл - не "версионник". У него rollback-сегменты есть. Держи сколько хош открытых курсоров, делай коммиты - проблем не будет. Главное чтоб транзакции покороче были. При этом в момент commit ничего такого страшного не делается, все изменения в файлы вносятся во время DML, так что количество commit/сек особой роли не играет.
7. Вот ты и расскажи, как это будет. Очень интересно.
8.http://oradba.com.ru/misc/tips/license.shtml
Если лицензии на процессор (что чаще), то количество коннектов ограничивается памятью и включенным/выключенным MTS. Каждый OCIDatabase.Connected := True - это 1 коннект.
PS: у него как повезет - может вообще почту не читать, а может в тот же день все сделать и новую версию кинуть.
RE: read-only ?
Posted: 2002/08/07 17:57
 
2) да, нашел уже. Просто кто же это ее обозвал Изоляцией? Изоляция - ээто Sanpshot, ReadCommited, DirtyRead... Кстати, ReadCommited в Оракле 8.1.7 есть?

4) в IB есть GEN_ID а в оракле надо select from v$database делать. а так - одна и та же СП. А если надо - я ее и их триггера вызову.

5) транзакции покороче - это интересно... Можно попробовать.
Но если в таблице полтора миллиона записей?
итого 6 мегабайт...
Значит либо надо suspend на транзакцию делать. Либо пречитывать пропуская первые XXX записей. подумаю, что проще... Либо дочитвать отдельным потоком - в грид вытащили первые 30 ПК и детайлов по ним и в отдельном потоке остальное... Если б оно умело

9) я так понял, что TransactionManager поддерживает одну транзакцию? Т.е. сколько надо транзакция - столько и менеджеров заводить?

8) спасибо.
RE: read-only ?
Posted: 2002/08/08 11:12
 
2. Про транзакции в оракл тута http://otn.oracle.com/doc/oracle8i_816/server.816/a76965/c15trans.htm#222
и тута http://technet.oracle.com/doc/oracle8i_816/server.816/a76989/ch4m2.htm#10880
И вообще там ответы на все вопросы
5.Покороче в смысле, если ты сделаешь DML, а потом долго-долго коммититься не будешь, может переполниться redo-buffer. Если транзакция для чтения (без for update) - то она никого не блокирует и может жить сколько хочешь. Не понял, ты хочешь полтора миллиона записей на клиента тащить? Нафига. Пользователь не в состоянии оценить более 150-300 записей. Надо менять идеологию приложения, чтоб больше этого количества не выкачивать за раз. Что такое suspend на транзакцию я не понял тоже.
9. Вероятно. Всегда было достаточно 1 транзакции, так что даже не задумывался над этим
RE: read-only ?
Posted: 2002/08/08 11:29
 
Привет Всем !

Насчет множественных транзакций ...
1) Множественные транзакции в сессии возможны, если сессия будет работать в distributed режиме. В этом режиме есть несколько важных ограничений. Сейчас по памяти не вспомню ... Короче это не есть "штатный" режим ...
2) В каждый момент времени в сессии может быть только одна транзакция активной. Другие - должны спать ...
3) Множественные транзакции = глобальные транзакции. Т.е. ими владеет не сессия, а скорее всего сервер. Т.е. одна сессия может начать TX, потом усыпить ее, далее другая сессия может разбудить ее, и .т.д.
4) Используйте TOCITransactionManager только если это все вам надо TOCIDatabase имеет один менеджер встроенный и сама управляется с ним ...
5) Все это дело Ораклом тольком **не документировано**, поэтому если надо - экспериментируйте или спрашивайте в конфе про OCI на technet.oracle.com.
6) Множественные TX в Interbase и в Oracle это две очень большие разницы. См (1)-(3)

Надеюсь не испугал сильно.

Удачи,
Дмитрий

PS: Исходники хелпа - пожалуйста, если надо. Если потом доработанный хелп выкладывать, то необходимо делать его на английском.

PS2: Со временем у меня на самом деле полный таймаут ...
RE: read-only ?
Posted: 2002/08/08 13:53
 
Opera test на предмет русских букв
RE: read-only ?
Posted: 2002/08/08 14:09
 
M5) Длинную транзакцию я и имел ввиду как read-only.
Менять идеология пока не возможно - это потом все переписывать будем. Сейчас надо эмулировать файлово-табличный доступ.
Suspend - это ... спящая тарнзакция...
В общем я прокачал 150-300 записей - и заснул. Сверху по тому же соединению другие транзакции запустились. Надо дочитать следующие 150-300 - разбудил, прочитал и пусть опять транзакция спит. Видимо это то что надо.
Тем паче что 90% времени будут делаться отчеты где читать надо целиком таблицы!

D2) это наверное мне подойдет. И это не является множественным.. не штатным.. и т.д.?
D4) если найду как в Оракле ReadCommited делать, то будет по 2 соединения. Одна будет вечнозеленой ReadOnly и читать будет PK с использованием where Row<150*N and Row>=150*(N-1)
Если не найду - то будет от же самое, только у каждой таблицы для ПК будет своя транзакция, которая будет класться в Suspend. Хотя тут уже стращно - как бы их многовато не стало.
Поля же будут читаться/меняться отдельной query которая будет детейлом к ПК-query. Через отдельное соединение короткими тразакциями. Если можно, чтобы мастер и детейл на разных соединениях висели, конечно.
Хотя опять же - если бы можно было Select пускать через одно соединение, а изменения через другое.

Кстати, в чем у TransMgr TimeOut меряется? Секунды, миллисекунды?

Спасибо. Надеюсь всех еще увидеть
[1 2 |Next ]