powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Различия в работе версионных механизмов в Oracle и Yukon
25 сообщений из 151, страница 6 из 7
Различия в работе версионных механизмов в Oracle и Yukon
    #33141807
Yo!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторДело в том что перечисленные операции (alter table, alter index, ...) относятся к DDL и никогда в транзакции не входили. Если речь идет именно о транзакции, то в этой иноформации нет смысла, зачем говорить что они не входят в транзакцию в снапшот-уровне изоляции если они не входят ни в какую транзакцию ни при каком уровне изоляции. Или в Юконе на каких-то уровнях изоляции можно откатить alter table?

да можно у них откатить и ddl и alter, и полно лапухов которые так и делают, а потом чешут репу с вопросом чего это у него теперь однопользовательская система получилась.
...
Рейтинг: 0 / 0
Различия в работе версионных механизмов в Oracle и Yukon
    #33142958
AAron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Именно, DDL могут быть обрамлены транзакцией и соотвественно откачены либо закоммичены. Пример приводить не надо, надеюсь ? Юкона под рукой нет, поэтому я не могу проверить как он поведет при наличии в снапшот транзакции DDL.
...
Рейтинг: 0 / 0
Различия в работе версионных механизмов в Oracle и Yukon
    #33143845
Фотография StalkerS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
c127
Это была шутка. Если присмотритесь, то увидите что это ответ не segun-у, а Silver-у на шутливый пост.

Читайте внимательно, а главное ДУМАЙТЕ хотябы изредка. Полезная штука.

да-уж, насмешили. Все остальное тоже шутка ? А то до меня юмор по вечерам плохо доходит

и кстати, я бы на вашем месте не давал советов, которым вы сами не следуете
...
Рейтинг: 0 / 0
Различия в работе версионных механизмов в Oracle и Yukon
    #33144074
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AAronИменно, DDL могут быть обрамлены транзакцией и соотвественно откачены либо закоммичены. Пример приводить не надо, надеюсь ?

Как раз надо. Приведите пример alter table drop column с последующим откатом. Это еще одна новая фича Юкона или в МССКЛ2000 такое тоже бывает?



StalkerSА то до меня юмор по вечерам плохо доходит

Тренируйтесь чаще.

А вот и упражнение. Ответьте где это я говорил что углядел лыпы в Юконе (StalkerS: "Очередной спец по Ораклу углядел потрясающие ляпы в Yukon.").
...
Рейтинг: 0 / 0
Различия в работе версионных механизмов в Oracle и Yukon
    #33144342
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
c127 AAronИменно, DDL могут быть обрамлены транзакцией и соотвественно откачены либо закоммичены. Пример приводить не надо, надеюсь ?

Как раз надо. Приведите пример alter table drop column с последующим откатом. Это еще одна новая фича Юкона или в МССКЛ2000 такое тоже бывает?


Трудно поверить что MS может то что не может Оракл? :)
Да можно и пример. Причем это было уже и в 6.5 (правда там drop column не было)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
create table a(i int, b int)
go

insert a select  1 , 2 
begin tran
alter table a drop column b 
go

select * from a
go
rollback tran

select * from a
go
drop table a

Но единственно где это(DDL в транзакции) реально было полезно - можно было создавать временные таблицы в триггерах. А т.к. в 2000 появились таблицы-переменные, то пользы от такой возможности немного. Но она есть.
...
Рейтинг: 0 / 0
Различия в работе версионных механизмов в Oracle и Yukon
    #33144367
AAron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это не единственная область применения. Мне сейчас по ходу нового проекта приходится активно использовать конструкцию "select ... into _new_table_". Правда пока вне транзакций.

Правда у меня Юкона все равно нет сейчас, может кто из присутствующих проделает опыт на нем при Snapshot изоляции?
...
Рейтинг: 0 / 0
Различия в работе версионных механизмов в Oracle и Yukon
    #33146231
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SergSuper
Трудно поверить что MS может то что не может Оракл? :)


Нет, трудно поверить что это кому-нибудь нужно. Я о такой штуке никогда не слышал и никогда не встречал ситуацию когда такое могло бы хоть как-нибудь помочь.

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

SergSuper
Да можно и пример. Причем это было уже и в 6.5 (правда там drop column не было)


Раз эту штуку можно проделать в МССКЛ-е 6.5 то ее наверняка можно проделать и в сайбейзе АСЕ. Нужно посмотреть.


AAronЭто не единственная область применения. Мне сейчас по ходу нового проекта приходится активно использовать конструкцию "select ... into _new_table_". Правда пока вне транзакций.


Не убедительно, к тому же ничего особенного, такие штуки сайбейз АСА тоже позволяет делать.
[ WITH temporary-views ]
SELECT [ ALL | DISTINCT ] [ row-limitation ] select-list
[ INTO { hostvar-list | variable-list | table-name } ]
....
INTO table-name This clause is used to create a table and fill it with data.
If the table name starts # then it is created as a temporary table. Otherwise, the table is created as a permanent base table.

Но вроде бы в АСА постоянные таблицы в транзакцию не входят, т.е. откатить нельзя, а вопрос был по транзакциям. Никогда не приходилось использовать эту фичу. По-моему использование ДДЛ в рабочих частях программ есть дурной тон, тут это как-то обсуждалось, работает медленно, плохо контролируется, проблемы с ограничением прав доступа и т.д. Наверное единственное исключение это временные таблицы.
...
Рейтинг: 0 / 0
Различия в работе версионных механизмов в Oracle и Yukon
    #33146391
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 c127

DDL в транзакциях в разных СУБД уже обсуждались полгода назад
/topic/157503
...
Рейтинг: 0 / 0
Различия в работе версионных механизмов в Oracle и Yukon
    #33146624
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЛП2 c127

DDL в транзакциях в разных СУБД уже обсуждались полгода назад
/topic/157503

Ну да, хотя я имел в виду другой топик, этот я раньше не видел. Кстати там можно прочитать что, как и предполагалось, сайбейз АСЕ тоже умеет откатывать ДДЛ в транзакциях. Версионник ПостгреСКЛ тоже умеет, хотя у него все транзакции версионные по определению. Но вот беда, он не коммерческий, поэтому по замыслу автора статьи его учитывать не нужно.
...
Рейтинг: 0 / 0
Различия в работе версионных механизмов в Oracle и Yukon
    #33146646
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
c127Версионник ПостгреСКЛ тоже умеет, хотя у него все транзакции версионные по определению. Но вот беда, он не коммерческий, поэтому по замыслу автора статьи его учитывать не нужно.
Гммм... пардон, не понял?
Речь про тот топик на который я дал ссылку, или про какой-то другой?
Если про тот, то почему по замыслу автора его не надо учитывать?
gardenmanВозник вопрос, в каких базах данных кроме DB2 возможен DDL внутри транзакции? Для Oracle - понятно - всякий DDL вызовет коммит, который приведет к завершению транзакции. Sybase ASE - просто не позволяет DDL внутри транзакции. А как в остальных базах, ASA,MSSQL,POSTGRES и пр? для примера на DB2:
и ответ
...
Рейтинг: 0 / 0
Различия в работе версионных механизмов в Oracle и Yukon
    #33146648
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эээ... пардон, не разобрался сразу - какой автор какой штатьи имелся в виду.
Вопрос снят.
...
Рейтинг: 0 / 0
Различия в работе версионных механизмов в Oracle и Yukon
    #33149241
AlTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
c127
Я о такой штуке никогда не слышал и никогда не встречал ситуацию когда такое могло бы хоть как-нибудь помочь.

вообще говоря, полезная штука в случае если необходимо выполнить реструктуризацию БД, находящейся за несколько сот километров.
...
Рейтинг: 0 / 0
Различия в работе версионных механизмов в Oracle и Yukon
    #33151337
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlTk c127
Я о такой штуке никогда не слышал и никогда не встречал ситуацию когда такое могло бы хоть как-нибудь помочь.

вообще говоря, полезная штука в случае если необходимо выполнить реструктуризацию БД, находящейся за несколько сот километров.

По-прежнему не вижу полезности. С точки зрения администрирования нет разницы находится ли СКЛ сервер в соседней комнате или на другом континенте. Но даже если принять тезис о полезности, то мы тут выяснили ничего нового мелкософт опять не придумал, эту якобы полезную штуку умеют делать даже бесплатные СКЛ сервера и по понятным причинам Сайбейз АСЕ тоже умеет.
...
Рейтинг: 0 / 0
Различия в работе версионных механизмов в Oracle и Yukon
    #33151530
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
c127 AlTk c127
Я о такой штуке никогда не слышал и никогда не встречал ситуацию когда такое могло бы хоть как-нибудь помочь.

вообще говоря, полезная штука в случае если необходимо выполнить реструктуризацию БД, находящейся за несколько сот километров.

По-прежнему не вижу полезности. С точки зрения администрирования нет разницы находится ли СКЛ сервер в соседней комнате или на другом континенте. Но даже если принять тезис о полезности, то мы тут выяснили ничего нового мелкософт опять не придумал, эту якобы полезную штуку умеют делать даже бесплатные СКЛ сервера и по понятным причинам Сайбейз АСЕ тоже умеет.

А я например не вижу полезности в битмап индексах. Наверное вещь полезная, но я никогда их не использовал (даже слабо представляю что это такое) и на любой Ваш аргумент их полезности тоже отвечу что можно сделать как-то по-другому.
Так что не надо уподобляться ярому фанату MS SQL :)

Есть возможность - и хорошо, а кто её придумал - дело десятое.
...
Рейтинг: 0 / 0
Различия в работе версионных механизмов в Oracle и Yukon
    #33151547
Yo!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
c127
По-прежнему не вижу полезности. С точки зрения администрирования нет разницы находится ли СКЛ сервер в соседней комнате или на другом континенте. Но даже если принять тезис о полезности, то мы тут выяснили ничего нового мелкософт опять не придумал, эту якобы полезную штуку умеют делать даже бесплатные СКЛ сервера и по понятным причинам Сайбейз АСЕ тоже умеет.

интересно что с этой фичей будет делать mssql и другие когда дорастут до отслеживания зависимостей. и еще например у нас такой код

begin
create table a (b int) ;
insert into a (10,20) ;
end ;

во время компиляции таблички нет и ф правильно понимаю, что сиквел такое пропустит ?
...
Рейтинг: 0 / 0
Различия в работе версионных механизмов в Oracle и Yukon
    #33151588
AAron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сиквел выполнит этот код без проблем.
...
Рейтинг: 0 / 0
Различия в работе версионных механизмов в Oracle и Yukon
    #33151641
Yo!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а вообще сиквел пытается проверяет правильность самих команд (существование полей, таблиц и т.п. ) или только синтаксис ?
...
Рейтинг: 0 / 0
Различия в работе версионных механизмов в Oracle и Yukon
    #33151648
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo!!
интересно что с этой фичей будет делать mssql и другие когда дорастут до отслеживания зависимостей. и еще например у нас такой код

begin
create table a (b int) ;
insert into a (10,20) ;
end ;

во время компиляции таблички нет и ф правильно понимаю, что сиквел такое пропустит ?
ну в Постгре придецца со второй строкой прокрутить динамо:
EXECUTE 'insert into a (10,20) ;'
, т.к. оно в откомпиленном виде oid таблички держит (в связи с чем обычные, не динамо, инструкции каацца нормально съедят ренейм тейбл, не требуя).

мне этафича была интересна в вариации:

дроп индекс;
дроп ключ; -- (если нет связанных ключей/процедур -т.к. пк тоже - оид)
инсерт/апдейт много-много записей;
криэйт ключ;
криэйт индекс;

процедурка заполняла некие служебные таблички (в последствии не запущалась - заполнялось триггерами, но могла работать в кач-ве репейра - если наблудил в триггерах). Скорость вставки с дропом увеличивалась раз в 10. Вся транзакция - раз в 5 (перестроение индексов, знаете ли). Я предполагал (и запускал) по возможности при отсутствии иных пользователей.
Т.ч. что будет при активных иных юзерах - сказать не могу.
...
Рейтинг: 0 / 0
Различия в работе версионных механизмов в Oracle и Yukon
    #33152064
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вообще-то такой код не выполнится:
Код: plaintext
1.
2.
3.
begin 
create table a (b int) ;
insert into a ( 10 , 20 ) ;
end 
Invalid object name 'а'

Но это можно разнести в разные пакеты, но в одной транзакции.

А что понимается под отслеживанием зависимостей ?



Yo!! а вообще сиквел пытается проверяет правильность самих команд (существование полей, таблиц и т.п. ) или только синтаксис ?
Если таблица есть то проверяется её поля, если её нет - ничего не проверяется. В 4 и 6.5 выдавались предупреждения, анализировалось создание временных таблиц в процедуре и проверялись их поля. С 7-й версии с проверками стало похуже.
...
Рейтинг: 0 / 0
Различия в работе версионных механизмов в Oracle и Yukon
    #33152185
Yo!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SergSuperНу вообще-то такой код не выполнится:
Код: plaintext
1.
2.
3.
begin 
create table a (b int) ;
insert into a ( 10 , 20 ) ;
end 
Invalid object name 'а'
а на котором стейтменте ?

SergSuper
Но это можно разнести в разные пакеты, но в одной транзакции.

А что понимается под отслеживанием зависимостей ?

а чо такое пакеты в сиквеле ?
зависимости это когда ты делаешь drop table у тебя помечаются как инвалидные все процедуры/пакеты где упоминалась эта табличка.


SergSuper
Если таблица есть то проверяется её поля, если её нет - ничего не проверяется. В 4 и 6.5 выдавались предупреждения, анализировалось создание временных таблиц в процедуре и проверялись их поля. С 7-й версии с проверками стало похуже.

непонял а что в случае если была таблица с одними полями, а в коде alter ? т.е. проверку нада не по текущей таблицы а по alterу из кода, который еще и может откатится ??
...
Рейтинг: 0 / 0
Различия в работе версионных механизмов в Oracle и Yukon
    #33152237
AAron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если исправить ошибки, например так
Код: plaintext
1.
2.
3.
4.
begin
create table a (b int)
insert into a values ( 10 )
insert into a values ( 20 )
end
, то скрипт выполняется без проблем. Никаких ошибок нет.

Проверял на версии SQL Server 2000, а не Юкон.

Пакеты - это последовательность команд. В SQL Server нет состояний объекта - валидный/невалидный, как это сделано в Оракле.
...
Рейтинг: 0 / 0
Различия в работе версионных механизмов в Oracle и Yukon
    #33152292
Yo!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2AAron

вы нас не поняли :) еще раз:

была табличка a (b int);
мы запускаем:

alter table a (b char(1)) ;
insert into a values ('a') ;

если сиквел проверит перед исполнением наличие полей у существуещей таблицы то такое уже не должно пройти (поле b int). если проходит значит сиквел вообще не занимается проверками, т.к. угадать пройтет ли алтер нельзя.

короче, лет через 6 посмотрим как сиквел будет из этой ситуевины выкручиватся.
...
Рейтинг: 0 / 0
Различия в работе версионных механизмов в Oracle и Yukon
    #33152294
AlTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
c127
По-прежнему не вижу полезности. С точки зрения администрирования нет разницы находится ли СКЛ сервер в соседней комнате или на другом континенте. Но даже если принять тезис о полезности, то мы тут выяснили ничего нового мелкософт опять не придумал, эту якобы полезную штуку умеют делать даже ...
речь вроде бы не про новое, а про полезное.
про "несколько сот километров" вы слишком буквально поняли. с точки зрения администрирования нет разницы если между этими серверами есть связь.
бывают места, где не то, что связи нет, а куда в некоторое время года можно только на вертолете добраться, и скрипт с обновлением БД с оказией пилоту передают. я, думаю, лишняя надежность очень полезной окажется.
...
Рейтинг: 0 / 0
Различия в работе версионных механизмов в Oracle и Yukon
    #33152425
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Yo!!
Во-первых, насчет того скриптика я был не прав - он выполняется.
Во-вторых мне вообще непонятно что значит сиквел занимается проверками наличия полей у существуещей таблицы
Вот такой скриптик. Надеюсь не должно смущыть что таблица и процедура временные, на постоянных тоже самое.
go - это как раз граница между пакетами
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
create table #t(i int)
go

create proc #p @i int
as 
if @i= 1  alter table #t add b int
insert #t values ( 10 )

go

exec #p  0   -- 1
exec #p  1   -- 2
drop table #t -- 3
exec #p  1   -- 4

drop proc #p  --  5 

1-й шаг выполниться без ошибок и запись вставится
2-й шаг вывалится с ошибкой на инсерте: несоответсвие количества полей при вставке(Insert Error: Column name or number of supplied values does not match table definition), т.к. поле добавится
На 3-м шаге мы удаляем таблицу - увы, это делается спокойно и без предупреждений
На 4-м шаге процедура запуститься и на алтере вылетит ошибка: такой таблицы нет (Cannot alter table '#t' because this table does not exist)

А как это будет в Оракле?
...
Рейтинг: 0 / 0
Различия в работе версионных механизмов в Oracle и Yukon
    #33152472
Yo!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>А как это будет в Оракле?

правильно - никак. DDL в процедурах использовать нельзя.

можно использовать динамический sql + автономные транзакции (чтоб DDL транзакцию не закомитил), тогда это будет то же самое что у вас, но за это обычно отрывают яйца (динамический sql оракл уже не контролирует).
...
Рейтинг: 0 / 0
25 сообщений из 151, страница 6 из 7
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Различия в работе версионных механизмов в Oracle и Yukon
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]