Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 5 [6] 7   вперед  Ctrl      все
 Re: Различия в работе версионных механизмов в Oracle и Yukon  [new]
Yo!!
Guest
автор
Дело в том что перечисленные операции (alter table, alter index, ...) относятся к DDL и никогда в транзакции не входили. Если речь идет именно о транзакции, то в этой иноформации нет смысла, зачем говорить что они не входят в транзакцию в снапшот-уровне изоляции если они не входят ни в какую транзакцию ни при каком уровне изоляции. Или в Юконе на каких-то уровнях изоляции можно откатить alter table?


да можно у них откатить и ddl и alter, и полно лапухов которые так и делают, а потом чешут репу с вопросом чего это у него теперь однопользовательская система получилась.
30 июн 05, 09:14    [1661510]     Ответить | Цитировать Сообщить модератору
 Re: Различия в работе версионных механизмов в Oracle и Yukon  [new]
AAron
Member

Откуда: Москва
Сообщений: 4324
Именно, DDL могут быть обрамлены транзакцией и соотвественно откачены либо закоммичены. Пример приводить не надо, надеюсь ? Юкона под рукой нет, поэтому я не могу проверить как он поведет при наличии в снапшот транзакции DDL.
30 июн 05, 15:05    [1663506]     Ответить | Цитировать Сообщить модератору
 Re: Различия в работе версионных механизмов в Oracle и Yukon  [new]
StalkerS
Member

Откуда: Melbourne
Сообщений: 1344
c127

Это была шутка. Если присмотритесь, то увидите что это ответ не segun-у, а Silver-у на шутливый пост.

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

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

и кстати, я бы на вашем месте не давал советов, которым вы сами не следуете
30 июн 05, 19:55    [1665178]     Ответить | Цитировать Сообщить модератору
 Re: Различия в работе версионных механизмов в Oracle и Yukon  [new]
c127
Guest
AAron
Именно, DDL могут быть обрамлены транзакцией и соотвественно откачены либо закоммичены. Пример приводить не надо, надеюсь ?


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



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


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

А вот и упражнение. Ответьте где это я говорил что углядел лыпы в Юконе (StalkerS: "Очередной спец по Ораклу углядел потрясающие ляпы в Yukon.").
1 июл 05, 05:11    [1665538]     Ответить | Цитировать Сообщить модератору
 Re: Различия в работе версионных механизмов в Oracle и Yukon  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
c127
AAron
Именно, DDL могут быть обрамлены транзакцией и соотвественно откачены либо закоммичены. Пример приводить не надо, надеюсь ?


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


Трудно поверить что MS может то что не может Оракл? :)
Да можно и пример. Причем это было уже и в 6.5 (правда там drop column не было)
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 появились таблицы-переменные, то пользы от такой возможности немного. Но она есть.
1 июл 05, 10:20    [1666005]     Ответить | Цитировать Сообщить модератору
 Re: Различия в работе версионных механизмов в Oracle и Yukon  [new]
AAron
Member

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

Правда у меня Юкона все равно нет сейчас, может кто из присутствующих проделает опыт на нем при Snapshot изоляции?
1 июл 05, 10:30    [1666056]     Ответить | Цитировать Сообщить модератору
 Re: Различия в работе версионных механизмов в Oracle и Yukon  [new]
c127
Guest
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.

Но вроде бы в АСА постоянные таблицы в транзакцию не входят, т.е. откатить нельзя, а вопрос был по транзакциям. Никогда не приходилось использовать эту фичу. По-моему использование ДДЛ в рабочих частях программ есть дурной тон, тут это как-то обсуждалось, работает медленно, плохо контролируется, проблемы с ограничением прав доступа и т.д. Наверное единственное исключение это временные таблицы.
2 июл 05, 08:50    [1669460]     Ответить | Цитировать Сообщить модератору
 Re: Различия в работе версионных механизмов в Oracle и Yukon  [new]
ЛП
Guest
2 c127

DDL в транзакциях в разных СУБД уже обсуждались полгода назад
https://www.sql.ru/forum/actualthread.aspx?bid=10&tid=157503
2 июл 05, 16:07    [1669725]     Ответить | Цитировать Сообщить модератору
 Re: Различия в работе версионных механизмов в Oracle и Yukon  [new]
c127
Guest
ЛП
2 c127

DDL в транзакциях в разных СУБД уже обсуждались полгода назад
https://www.sql.ru/forum/actualthread.aspx?bid=10&tid=157503


Ну да, хотя я имел в виду другой топик, этот я раньше не видел. Кстати там можно прочитать что, как и предполагалось, сайбейз АСЕ тоже умеет откатывать ДДЛ в транзакциях. Версионник ПостгреСКЛ тоже умеет, хотя у него все транзакции версионные по определению. Но вот беда, он не коммерческий, поэтому по замыслу автора статьи его учитывать не нужно.
2 июл 05, 22:12    [1670023]     Ответить | Цитировать Сообщить модератору
 Re: Различия в работе версионных механизмов в Oracle и Yukon  [new]
ЛП
Guest
c127
Версионник ПостгреСКЛ тоже умеет, хотя у него все транзакции версионные по определению. Но вот беда, он не коммерческий, поэтому по замыслу автора статьи его учитывать не нужно.

Гммм... пардон, не понял?
Речь про тот топик на который я дал ссылку, или про какой-то другой?
Если про тот, то почему по замыслу автора его не надо учитывать?
gardenman
Возник вопрос, в каких базах данных кроме DB2 возможен DDL внутри транзакции? Для Oracle - понятно - всякий DDL вызовет коммит, который приведет к завершению транзакции. Sybase ASE - просто не позволяет DDL внутри транзакции. А как в остальных базах, ASA,MSSQL,POSTGRES и пр? для примера на DB2:

и ответ
2 июл 05, 22:34    [1670052]     Ответить | Цитировать Сообщить модератору
 Re: Различия в работе версионных механизмов в Oracle и Yukon  [new]
ЛП
Guest
Эээ... пардон, не разобрался сразу - какой автор какой штатьи имелся в виду.
Вопрос снят.
2 июл 05, 22:39    [1670055]     Ответить | Цитировать Сообщить модератору
 Re: Различия в работе версионных механизмов в Oracle и Yukon  [new]
AlTk
Member

Откуда: Волгоград
Сообщений: 124
c127

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

вообще говоря, полезная штука в случае если необходимо выполнить реструктуризацию БД, находящейся за несколько сот километров.
5 июл 05, 09:29    [1674522]     Ответить | Цитировать Сообщить модератору
 Re: Различия в работе версионных механизмов в Oracle и Yukon  [new]
c127
Guest
AlTk
c127

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

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


По-прежнему не вижу полезности. С точки зрения администрирования нет разницы находится ли СКЛ сервер в соседней комнате или на другом континенте. Но даже если принять тезис о полезности, то мы тут выяснили ничего нового мелкософт опять не придумал, эту якобы полезную штуку умеют делать даже бесплатные СКЛ сервера и по понятным причинам Сайбейз АСЕ тоже умеет.
6 июл 05, 04:09    [1678567]     Ответить | Цитировать Сообщить модератору
 Re: Различия в работе версионных механизмов в Oracle и Yukon  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
c127
AlTk
c127

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

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


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


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

Есть возможность - и хорошо, а кто её придумал - дело десятое.
6 июл 05, 10:02    [1678867]     Ответить | Цитировать Сообщить модератору
 Re: Различия в работе версионных механизмов в Oracle и Yukon  [new]
Yo!!
Guest
c127

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


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

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

во время компиляции таблички нет и ф правильно понимаю, что сиквел такое пропустит ?
6 июл 05, 10:11    [1678888]     Ответить | Цитировать Сообщить модератору
 Re: Различия в работе версионных механизмов в Oracle и Yukon  [new]
AAron
Member

Откуда: Москва
Сообщений: 4324
сиквел выполнит этот код без проблем.
6 июл 05, 10:31    [1678962]     Ответить | Цитировать Сообщить модератору
 Re: Различия в работе версионных механизмов в Oracle и Yukon  [new]
Yo!!
Guest
а вообще сиквел пытается проверяет правильность самих команд (существование полей, таблиц и т.п. ) или только синтаксис ?
6 июл 05, 10:53    [1679048]     Ответить | Цитировать Сообщить модератору
 Re: Различия в работе версионных механизмов в Oracle и Yukon  [new]
4321
Member [заблокирован]

Откуда:
Сообщений: 3573
Yo!!

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

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

во время компиляции таблички нет и ф правильно понимаю, что сиквел такое пропустит ?

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

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

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

процедурка заполняла некие служебные таблички (в последствии не запущалась - заполнялось триггерами, но могла работать в кач-ве репейра - если наблудил в триггерах). Скорость вставки с дропом увеличивалась раз в 10. Вся транзакция - раз в 5 (перестроение индексов, знаете ли). Я предполагал (и запускал) по возможности при отсутствии иных пользователей.
Т.ч. что будет при активных иных юзерах - сказать не могу.
6 июл 05, 10:55    [1679058]     Ответить | Цитировать Сообщить модератору
 Re: Различия в работе версионных механизмов в Oracle и Yukon  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
Ну вообще-то такой код не выполнится:
begin 
create table a (b int) ;
insert into a (10,20) ;
end 
Invalid object name 'а'

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

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



Yo!!
а вообще сиквел пытается проверяет правильность самих команд (существование полей, таблиц и т.п. ) или только синтаксис ?

Если таблица есть то проверяется её поля, если её нет - ничего не проверяется. В 4 и 6.5 выдавались предупреждения, анализировалось создание временных таблиц в процедуре и проверялись их поля. С 7-й версии с проверками стало похуже.
6 июл 05, 13:07    [1679942]     Ответить | Цитировать Сообщить модератору
 Re: Различия в работе версионных механизмов в Oracle и Yukon  [new]
Yo!!
Guest
SergSuper
Ну вообще-то такой код не выполнится:
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у из кода, который еще и может откатится ??
6 июл 05, 13:50    [1680189]     Ответить | Цитировать Сообщить модератору
 Re: Различия в работе версионных механизмов в Oracle и Yukon  [new]
AAron
Member

Откуда: Москва
Сообщений: 4324
Если исправить ошибки, например так
begin
create table a (b int)
insert into a values (10)
insert into a values (20)
end
, то скрипт выполняется без проблем. Никаких ошибок нет.

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

Пакеты - это последовательность команд. В SQL Server нет состояний объекта - валидный/невалидный, как это сделано в Оракле.
6 июл 05, 14:06    [1680281]     Ответить | Цитировать Сообщить модератору
 Re: Различия в работе версионных механизмов в Oracle и Yukon  [new]
Yo!!
Guest
2AAron

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

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

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

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

короче, лет через 6 посмотрим как сиквел будет из этой ситуевины выкручиватся.
6 июл 05, 14:24    [1680384]     Ответить | Цитировать Сообщить модератору
 Re: Различия в работе версионных механизмов в Oracle и Yukon  [new]
AlTk
Member

Откуда: Волгоград
Сообщений: 124
c127

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

речь вроде бы не про новое, а про полезное.
про "несколько сот километров" вы слишком буквально поняли. с точки зрения администрирования нет разницы если между этими серверами есть связь.
бывают места, где не то, что связи нет, а куда в некоторое время года можно только на вертолете добраться, и скрипт с обновлением БД с оказией пилоту передают. я, думаю, лишняя надежность очень полезной окажется.
6 июл 05, 14:25    [1680388]     Ответить | Цитировать Сообщить модератору
 Re: Различия в работе версионных механизмов в Oracle и Yukon  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
2 Yo!!
Во-первых, насчет того скриптика я был не прав - он выполняется.
Во-вторых мне вообще непонятно что значит сиквел занимается проверками наличия полей у существуещей таблицы
Вот такой скриптик. Надеюсь не должно смущыть что таблица и процедура временные, на постоянных тоже самое.
go - это как раз граница между пакетами
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)

А как это будет в Оракле?
6 июл 05, 15:13    [1680662]     Ответить | Цитировать Сообщить модератору
 Re: Различия в работе версионных механизмов в Oracle и Yukon  [new]
Yo!!
Guest
>А как это будет в Оракле?

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

можно использовать динамический sql + автономные транзакции (чтоб DDL транзакцию не закомитил), тогда это будет то же самое что у вас, но за это обычно отрывают яйца (динамический sql оракл уже не контролирует).
6 июл 05, 15:29    [1680749]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 5 [6] 7   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить