Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 15 16 17 18 19 [20] 21 22 23 24   вперед  Ctrl
 Re: Покритикуйте Оракл 10г  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Приношу свои извинения. Рука дрогнула.

Yo.!
тогда к чему были примеры из mssql2k8 на тему MERGE !?


Пример на тему MERGE был приведен по просьбе Gluk (Kazan) только в конектсе неизменности заполняемости таблиц inserted и deleted.

Yo.!
но пля, объясните мне тупому как он умудряется оторвать головку от писания при нормальной нагрузке и по каким правилам он находит измененые мной строки в этом логе ? или он прочесывает с конца и до упора ? как он определяет упор ?


Я уже приводил "внутренности" лога и там присутсвует идентификатор транзакции + LSN.
24 июл 07, 17:41    [4430518]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
Yo.!
Guest
pkarklin

Я уже приводил "внутренности" лога и там присутсвует идентификатор транзакции + LSN.

а нельзя еще раз тот замечательный url ? идентификатор никакой пользы не принесет, там действительно нужен именно маркер начала транзакции.

ЗЫ. интересно, а как db2 обходится без MVCC, неужто тоже анальным с логом занимается ?
24 июл 07, 17:47    [4430555]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
Yo.!
идентификатор никакой пользы не принесет, там действительно нужен именно маркер начала транзакции.

Он в любом случае должен присутствовать в логе - иначе невозможно откатить эту транзакцию при восстановлении после сбоя.
24 июл 07, 17:53    [4430609]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
Yo.!
Guest
softwarer

Он в любом случае должен присутствовать в логе - иначе невозможно откатить эту транзакцию при восстановлении после сбоя.

я конечно почитаю теорию, но имхо начало совсем необязательно. вполне можно держать список "накатываемых" транзакций, если появляется запись с таким индификатором какого нет в списке считаем, что это за одно маркер начала. вот маркер окончания транзакции - согласен, без ниго никак.
24 июл 07, 17:59    [4430664]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Yo.!

а нельзя еще раз тот замечательный url ? идентификатор никакой пользы не принесет, там действительно нужен именно маркер начала транзакции.


Это было здесь: Покритикуйте Оракл 10г

Но там я умышленно удалил на тот момент "лишнюю информацию". Приведу ее полностью, чтобы было понятней:

Current LSN            Operation                 Context                   Transaction ID Tag Bits Log Record Length Previous LSN           Flag Bits Server UID  UID         SPID        Beginlog Status Begin Time              Transaction Name     Description                                                                                                                                                                                                                                                     
---------------------- ------------------------- ------------------------- -------------- -------- ----------------- ---------------------- --------- ----------- ----------- ----------- --------------- ----------------------- -------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
00000006:000001e0:0001 LOP_BEGIN_XACT LCX_NULL 0000:00000121 0x0000 60 00000000:00000000:0000 0x0200 0 1 51 0x01000000 2007/07/24 17:53:53:527 D M L DML

(1 row(s) affected)

Current LSN Operation Context Transaction ID Tag Bits Log Record Length Previous LSN Flag Bits Object Name Index Name Page ID Slot ID Previous Page LSN Offset in Row Num Elements Element Element Length Offset Row Data Description
---------------------- ------------------------- ------------------------- -------------- -------- ----------------- ---------------------- --------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------- ------------- ------- ---------------------- ------------- ------------ ------- -------------- ------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
00000006:000001e0:0002 LOP_MODIFY_ROW LCX_HEAP 0000:00000121 0x0000 76 00000006:000001e0:0001 0x0200 dbo.Table1 (469576711) Table1 (0) 0001:00000022 0 00000006:000001df:0001 4 2 0 6 0 0x01000000CCF2
00000006:000001e0:0002 LOP_MODIFY_ROW LCX_HEAP 0000:00000121 0x0000 76 00000006:000001e0:0001 0x0200 dbo.Table1 (469576711) Table1 (0) 0001:00000022 0 00000006:000001df:0001 4 2 1 6 0 0x020000000AF4

(2 row(s) affected)

Current LSN Operation Context Transaction ID Tag Bits Log Record Length Previous LSN Flag Bits End Time Transaction Begin Replicated Records Oldest Active LSN Server Name Database Name Mark Name Description
---------------------- ------------------------- ------------------------- -------------- -------- ----------------- ---------------------- --------- ----------------------- ---------------------- ------------------ ---------------------- ---------------------------------------------------------------- ---------------------------------------------------------------- ---------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
00000006:000001e0:0003 LOP_COMMIT_XACT LCX_NULL 0000:00000121 0x0000 52 00000006:000001e0:0001 0x0200 2007/07/24 17:53:53:527 00000006:000001e0:0001 48624040 none none none

(1 row(s) affected)

Current LSN Operation Context Transaction ID Tag Bits Log Record Length Previous LSN Flag Bits Server UID UID SPID Beginlog Status Begin Time Transaction Name Description
---------------------- ------------------------- ------------------------- -------------- -------- ----------------- ---------------------- --------- ----------- ----------- ----------- --------------- ----------------------- -------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
00000006:000001e1:0001 LOP_BEGIN_XACT LCX_NULL 0000:00000122 0x0000 60 00000000:00000000:0000 0x0200 0 1 51 0x01000000 2007/07/24 17:53:53:543 D M L DML

(1 row(s) affected)

Current LSN Operation Context Transaction ID Tag Bits Log Record Length Previous LSN Flag Bits Object Name Index Name Page ID Slot ID Previous Page LSN Offset in Row Num Elements Element Element Length Offset Row Data Description
---------------------- ------------------------- ------------------------- -------------- -------- ----------------- ---------------------- --------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------- ------------- ------- ---------------------- ------------- ------------ ------- -------------- ------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
00000006:000001e1:0002 LOP_MODIFY_ROW LCX_HEAP 0000:00000122 0x0000 68 00000006:000001e1:0001 0x0200 dbo.Table1 (469576711) Table1 (0) 0001:00000022 0 00000006:000001e0:0002 4 2 0 1 0 0x02
00000006:000001e1:0002 LOP_MODIFY_ROW LCX_HEAP 0000:00000122 0x0000 68 00000006:000001e1:0001 0x0200 dbo.Table1 (469576711) Table1 (0) 0001:00000022 0 00000006:000001e0:0002 4 2 1 1 0 0x03

(2 row(s) affected)

Current LSN Operation Context Transaction ID Tag Bits Log Record Length Previous LSN Flag Bits End Time Transaction Begin Replicated Records Oldest Active LSN Server Name Database Name Mark Name Description
---------------------- ------------------------- ------------------------- -------------- -------- ----------------- ---------------------- --------- ----------------------- ---------------------- ------------------ ---------------------- ---------------------------------------------------------------- ---------------------------------------------------------------- ---------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
00000006:000001e1:0003 LOP_COMMIT_XACT LCX_NULL 0000:00000122 0x0000 52 00000006:000001e1:0001 0x0200 2007/07/24 17:53:53:543 00000006:000001e1:0001 48624040 none none none

(1 row(s) affected)

Это "след" от двух UPDATEов. Хорошо видно идентификатор транзакции, начало транзакции, конец транзакции, как меняется LSN.
24 июл 07, 18:00    [4430667]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
И еще. Фиксируются Previous LSN там где это имеет смысл. И LSN от Transaction Begin для операции LOP_COMMIT_XACT.
24 июл 07, 18:03    [4430699]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
Yo.!
если появляется запись с таким индификатором какого нет в списке считаем, что это за одно маркер начала.

И в ситуации "транзакция началась раньше самого первого сохранившегося журнала" влипаем в баальшую задницу.
24 июл 07, 18:06    [4430721]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
Yo.!
Guest
ОК, маркер видно. получается наша транзакция обязана прочесывать каждый блок лога пока не наткнется на индентификатор транзакции.

pkarklin

locky... Ну уж Вы то... О какой либо просадке производительности можно говорить только по сравнению с чем то. А пока для сравнения предлагается некая гипотетическая теблица updated, затраты на построение которой, опять же, чисто из теоретических умозаключений не берутся, почему то, в счет.

ну так откуда могут взятся "лишнии" затраты если прочесать лог прийдется весь (до маркера) ?
24 июл 07, 18:07    [4430729]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
Yo.!
Guest
softwarer

И в ситуации "транзакция началась раньше самого первого сохранившегося журнала" влипаем в баальшую задницу.

нИпонял, а как можно провернуть udate не получив "ок" от процесса записи в лог ?
24 июл 07, 18:11    [4430753]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
Yo.!
нИпонял, а как можно провернуть udate не получив "ок" от процесса записи в лог ?

Допустим, транзакция началась давным-давно, поработала, закоммитилась. Журнал с ее стартом обработан, освобожден и переиспользован, ее начало затерто. Тем временем случилось страшное, и процессу восстановления потребовалось эту транзакцию откатить (например потому, что поврежден журнал, в котором лежит конец этой транзакции, или просто потому, что дана команда "откатить на указанное время").
24 июл 07, 18:18    [4430793]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
Yo.!
Guest
softwarer

Допустим, транзакция началась давным-давно, поработала, закоммитилась. Журнал с ее стартом обработан, освобожден и переиспользован, ее начало затерто. Тем временем случилось страшное, и процессу восстановления потребовалось эту транзакцию откатить (например потому, что поврежден журнал, в котором лежит конец этой транзакции, или просто потому, что дана команда "откатить на указанное время").

эт вы о чем ? насколько я помню у mssql надо делать бакап лога, т.е. переиспользовать его место никак не получится. ну и далее, что за команда "откатить на указанное время" ? это где такое чудо есть, recover database until ... я умею , но назад !? как это ?
24 июл 07, 18:24    [4430844]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
Yo.!
эт вы о чем ? насколько я помню у mssql надо делать бакап лога, т.е. переиспользовать его место никак не получится.

Хм. Странно, если так. Бэкап лога - это я так понимаю аналог archivelog-а; переиспользование журналов - вроде бы универсальный принцип. Хотя не скажу, что хорошо помню теорию в вопросах администрирования.

Yo.!
ну и далее, что за команда "откатить на указанное время" ? это где такое чудо есть, recover database until ... я умею , но назад !? как это ?

Хм. А в чем принципиальная проблема? Вас же не смущает наличие flashback, который самый то ни на есть "откат назад на указанное время"?

Впрочем, вряд ли стоит уходить еще и в эту сторону. Вариант с повреждением последнего журнала принимается? В этом случае процесс восстановления обязан решить - то ли он может откатить транзакцию целиком, то ли админу пора одевать стальные трусы.
24 июл 07, 18:35    [4430912]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
Yo.!
Guest
softwarer

Хм. А в чем принципиальная проблема? Вас же не смущает наличие flashback, который самый то ни на есть "откат назад на указанное время"?

принципиальная проблема - принципиальное отсутсвие флашбэка у блокировочника :) версионик mssql2k5 по логу не лазить ... мы вроде тут именно mssql2k обсуждаем

softwarer

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

неа, насколько я помню даже в оракле штатных вариантов рекавери с повреженным арчивлогом нет, только недокументированые пляски. в майкрософте такого и подавно нету (ГУЙ для плясок неподвезли) - т.е. трусы единственный и безальтернативный вариант.
24 июл 07, 18:43    [4430969]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
Yo.!
принципиальная проблема - принципиальное отсутсвие флашбэка у блокировочника :)

Я не готов обсуждать инструменты и возможности конкретно mssql2k. Речь об общих принципах - которые вряд ли нарушались даже если не полностью используются.

Yo.!
неа, насколько я помню даже в оракле штатных вариантов рекавери с повреженным арчивлогом нет, только недокументированые пляски.

Что-то мы запутались.

ORA-00314 log string of thread string, expected sequence# string doesnt match string

Cause
The online log is corrupted or is an old version.

Action
Find and install the correct version of the log or reset the logs. Refer to the Oracle9i Database Administrator’s Guide for recovery procedures.

Это разве уже недокументированные пляски?
24 июл 07, 18:52    [4431009]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
Yo.!
Guest
softwarer

Это разве уже недокументированные пляски?

reset logs вполне документировано, но к сожелению не накатит поврежденный арклог ...
еще раз - маркер старта транзакции в mssql2k имхо мог быть не обязателен, там нельзя штатно пропускать транзакции или накатывать поврежденные логи, потому и маркер похоже только тригерам и нужен.
24 июл 07, 19:02    [4431044]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
Yo.!
reset logs вполне документировано, но к сожелению не накатит поврежденный арклог ...

Об арклогах я и не говорил. Есть транзакция, размазанная по нескольким онлайн логам, из них первый уже затерт, а последний поврежден. Арклогов, допустим, нет вообще.
24 июл 07, 19:10    [4431068]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
Yo.!
Guest
softwarer

Об арклогах я и не говорил. Есть транзакция, размазанная по нескольким онлайн логам, из них первый уже затерт, а последний поврежден. Арклогов, допустим, нет вообще.

недогоняю, вы сумеете штатно накатить то что сохранилось между первым затертым до последнего (поврежденного) !? еще и после reset logs ???
24 июл 07, 19:20    [4431095]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
Yo.!
Guest
Yo.!
softwarer

Об арклогах я и не говорил. Есть транзакция, размазанная по нескольким онлайн логам, из них первый уже затерт, а последний поврежден. Арклогов, допустим, нет вообще.

недогоняю, вы сумеете штатно накатить то что сохранилось между первым затертым до последнего (поврежденного) !? еще и после reset logs ???

и именно для этого вам необходим маркер транзакции (типа без него никак) ?
24 июл 07, 19:29    [4431124]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
Yo.!
недогоняю, вы сумеете штатно накатить то что сохранилось между первым затертым до последнего (поврежденного) !?

Хм. Давайте совсем медленно и печально.

1. Есть поврежденный журнал (последний). В нем (до повреждения) лежал commit транзакции X.

2. Процесс восстановления должен просканировать доступные журналы и найти, есть ли в них начало транзакции X. Если есть - у него есть шанс успешно ее откатить (если изменения из поврежденного журнала не успели попасть в основные файлы БД). В этом случае он в принципе сможет даже автоматически поднять базу с откатом до последнего неповрежденного коммита.

3. Если начало транзакции не найдено - все, пришел Петр Иванович, поднять базу в согласованном состоянии невозможно. О чем надо уведомить админа.

4. Считая первую найденную запись за маркер старта транзакции процесс восстановления не сможет обработать такую ситуацию и ложно отрапортует "все хорошо" тогда, когда на самом деле все плохо.

Еще раз напомню, все - в общих понятиях теории БД. Детали процесса восстановления различных реализаций я не изучал.
24 июл 07, 19:33    [4431135]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
Yo.!
Guest
softwarer

Еще раз напомню, все - в общих понятиях теории БД. Детали процесса восстановления различных реализаций я не изучал.

да а попу теорию, между пунктом 1 и 2 вы получите ORA-00314 и на этом ваши документированые пляски кончаются упомянутыми трусами. маркер не нужен
но согласен, что для танцев с бубном и недокументированых фич аля _allow_resetlogs_corruption маркер мог бы пригодится, но это уже другая история и совсем не про mssql у которого лог по кругу не ходит.
24 июл 07, 19:55    [4431205]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
Yo.!
да а попу теорию, между пунктом 1 и 2 вы получите ORA-00314 и на этом ваши документированые пляски кончаются упомянутыми трусами. маркер не нужен

Почему же кончаются и почему именно здесь?

После пункта 1 будет неполное восстановление, isn't it? Это собственно и есть пункт 2. Именно в нем и будет задействован маркер - если будет найден. И если неполное восстановление пройдет, я получу ORA-00314, открою базу с документированным RESETLOGS и пойду жить дальше.
24 июл 07, 20:05    [4431235]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
Yo.!
не тащит mssql2к5 ничего из лога, все также как и в оракле из MVCC берется.

http://mgopinath.blogspot.com/2007/01/logical-tables-of-sql-server-inserted.html


спасибо, интересно :)
25 июл 07, 08:39    [4432031]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Yo.!
ОК, маркер видно. получается наша транзакция обязана прочесывать каждый блок лога пока не наткнется на индентификатор транзакции.

pkarklin

locky... Ну уж Вы то... О какой либо просадке производительности можно говорить только по сравнению с чем то. А пока для сравнения предлагается некая гипотетическая теблица updated, затраты на построение которой, опять же, чисто из теоретических умозаключений не берутся, почему то, в счет.

ну так откуда могут взятся "лишнии" затраты если прочесать лог прийдется весь (до маркера) ?


Покритикуйте Оракл 10г
25 июл 07, 08:54    [4432061]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
evostr
Member

Откуда: Екатеринбург
Сообщений: 1285
softwarer
Хм. Давайте совсем медленно и печально.

1. Есть поврежденный журнал (последний). В нем (до повреждения) лежал commit транзакции X.

2. Процесс восстановления должен просканировать доступные журналы и найти, есть ли в них начало транзакции X. Если есть - у него есть шанс успешно ее откатить (если изменения из поврежденного журнала не успели попасть в основные файлы БД). В этом случае он в принципе сможет даже автоматически поднять базу с откатом до последнего неповрежденного коммита.

3. Если начало транзакции не найдено - все, пришел Петр Иванович, поднять базу в согласованном состоянии невозможно. О чем надо уведомить админа.

4. Считая первую найденную запись за маркер старта транзакции процесс восстановления не сможет обработать такую ситуацию и ложно отрапортует "все хорошо" тогда, когда на самом деле все плохо.

Еще раз напомню, все - в общих понятиях теории БД. Детали процесса восстановления различных реализаций я не изучал.

softwarer
Почему же кончаются и почему именно здесь?

После пункта 1 будет неполное восстановление, isn't it? Это собственно и есть пункт 2. Именно в нем и будет задействован маркер - если будет найден. И если неполное восстановление пройдет, я получу ORA-00314, открою базу с документированным RESETLOGS и пойду жить дальше.

Есть один небольшой, но очень важный нюанс. Неполное восстановление с последующим RESETLOGS можно выполнить только с бекапа. Если у вас повредились все члены текущей (current) журнальной группы, восстановить документированными способами согласованную базу без бекапа не получится.

Причина в "если изменения из поврежденного журнала не успели попасть в основные файлы БД"

Losing an Active Online Redo Log Group
25 июл 07, 10:15    [4432432]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
drev
Member

Откуда: Одесса - Берег Красного Дерева - Красный мир
Сообщений: 564
Давайте попробуем отфиксировать текущее состояние по под-топикам

1. "отсутствие проверки на реальное изменение поля - грубая ошибка" - показано, что это не всегда верное утверждение для 2005 (практические результаты теста, ссылка Yo! - спасибо, объясняющая механизм).

2. "почему в SQL Servere нет updated" - ИМХО, приведены аргументы, что модель имеет право на существования, но имеет недостатки, которые могут свести в некоторых ситуациях на нет преимущества.

3. "Сотворение функциональности inserted, etc. в Оракл за 7 дней" - открыта, ждём ответа softwarer.

4. "кандидат в недостатки Оракл - невозможность определения смысла(типа) идентификатора без контекста" - открыта
25 июл 07, 10:53    [4432720]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 15 16 17 18 19 [20] 21 22 23 24   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить