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

Откуда:
Сообщений: 152
Как заблокировать таблицу, если необходимо выполнить следующее:

1. Заблокировать таблицу
2. INSERT INTO ...
3. CREATE TABLE ...
4. INSERT INTO ...
5. Разблокировать таблицу.
27 ноя 07, 16:18    [4970019]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка таблицы  [new]
Дубовая голова
Member [заблокирован]

Откуда: с цепи сорвался
Сообщений: 1821
Voler48
Как заблокировать таблицу, если необходимо выполнить следующее:

1. Заблокировать таблицу
2. INSERT INTO ...
3. CREATE TABLE ...
4. INSERT INTO ...
5. Разблокировать таблицу.


Блокировки снимаются после выполнения commit или rollback (за исключением пользовательских),
так что в случае CREATE TABLE в той же транзакции и именно в такой последовательности - никак.
Зачем это нужно делать именно в такой последовательности ?
И что подразумевается точно под "заблокировать таблицу" ? В какой моде ?
27 ноя 07, 16:25    [4970108]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка таблицы  [new]
_Alex_SMIRNOV_
Member

Откуда: Киев
Сообщений: 1519
select * from table for update;
27 ноя 07, 16:25    [4970117]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка таблицы  [new]
Дубовая голова
Member [заблокирован]

Откуда: с цепи сорвался
Сообщений: 1821
_Alex_SMIRNOV_
select * from table for update;


А если подумать слегка ?
27 ноя 07, 16:26    [4970126]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка таблицы  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
dbms_lock, особое внимание на release_on_commit

а создание таблицы в середине так ли уж необходимо? Выглядит, как неправильная задумка...
27 ноя 07, 16:26    [4970128]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка таблицы  [new]
badm
Member

Откуда: Kazan
Сообщений: 984
Voler48
Как заблокировать таблицу, если необходимо выполнить следующее:

1. Заблокировать таблицу
2. INSERT INTO ...
3. CREATE TABLE ...
4. INSERT INTO ...
5. Разблокировать таблицу.


А зачем блокировать? Конкуренция на транзакции высокая чстоли, есть вероятность что другие будут чтото менять, а вам типа срочно надо, без ожиданий? )))

Ну например

LOCK TABLE имя IN а здесь тип блокировки

например

LOCK TABLE имя IN SHARE MODE NOWAIT


вроде так, не помню точно
27 ноя 07, 16:26    [4970129]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка таблицы  [new]
Дубовая голова
Member [заблокирован]

Откуда: с цепи сорвался
Сообщений: 1821
Jannny
dbms_lock, особое внимание на release_on_commit

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


В худшем случАе может автономную транзакцию использовать для создания. :) Но
это уже тяжелые извращения
27 ноя 07, 16:27    [4970142]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка таблицы  [new]
Voler48
Member

Откуда:
Сообщений: 152
IN EXCLUSIVE MODE
27 ноя 07, 16:28    [4970146]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка таблицы  [new]
Дубовая голова
Member [заблокирован]

Откуда: с цепи сорвался
Сообщений: 1821
Voler48
IN EXCLUSIVE MODE


На все вопросы ответил ?
27 ноя 07, 16:29    [4970159]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка таблицы  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Дубовая голова
В худшем случАе может автономную транзакцию использовать для создания. :) Но это уже тяжелые извращения
А транзакция без автономки с create-ом посередине - смотрится менее извращенно? :) ИМХО "А вы друзья, как не садитесь..."(с)
27 ноя 07, 16:29    [4970163]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка таблицы  [new]
Elic
Member

Откуда:
Сообщений: 29976
Jannny
dbms_lock, особое внимание на release_on_commit
Только если запихнуть её и в триггер before all, тогда спасёт только от измененений, но не от блокировок :)
27 ноя 07, 16:31    [4970178]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка таблицы  [new]
Дубовая голова
Member [заблокирован]

Откуда: с цепи сорвался
Сообщений: 1821
Jannny
Дубовая голова
В худшем случАе может автономную транзакцию использовать для создания. :) Но это уже тяжелые извращения
А транзакция без автономки с create-ом посередине - смотрится менее извращенно? :) ИМХО "А вы друзья, как не садитесь..."(с)


Я имел в виду, что автономка на-крайняк LOCK TABLE в родительской не снимет. Но ППКС - изврат полный, только с вариациями.
27 ноя 07, 16:31    [4970185]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка таблицы  [new]
Voler48
Member

Откуда:
Сообщений: 152
CREATE TABLE WH.XTBLP0000000001 ORGANIZATION EXTERNAL
( TYPE oracle_datapump
DEFAULT DIRECTORY "TR_UNLOAD_DIR"
ACCESS PARAMETERS ( VERSION '10.1' )
LOCATION ( 'XTBLP0000000001.DAT') ) parallel as
SELECT ID, idgroup, owner, table_name, column_name, NULL data_type, NULL data_length, NULL data_precision, NULL data_scale, NULL column_id, NULL name_pk_column, 0 npack_warehouse, 'D' flag_upd_warehouse, 0 map_warehouse, 0 sti_snd_warehouse,
0 sti_rcv_warehouse
FROM wh.otbl#0100000001 a
WHERE (ID, idgroup, owner, table_name, column_name) IN (SELECT ID, idgroup, owner, table_name, column_name
FROM wh.otbl#0100000001
WHERE ID = 1700 AND idgroup = 50
MINUS
SELECT ID, idgroup, owner, table_name, column_name
FROM tr.db_dict_col
WHERE ID = 1700 AND idgroup = 50)
UNION ALL
SELECT ID, idgroup, owner, table_name, column_name, data_type, data_length, data_precision, data_scale, column_id, name_pk_column, 1 npack_warehouse, 'A' flag_upd_warehouse, 1 map_warehouse, 1700 sti_snd_warehouse, 9999 sti_rcv_warehouse
FROM tr.db_dict_col a
WHERE ora_rowscn > (SELECT NVL (MAX (rsn), 0)
FROM wh.otbl#0100000001) AND (ID = 1700 AND idgroup = 50)
27 ноя 07, 16:37    [4970229]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка таблицы  [new]
Elic
Member

Откуда:
Сообщений: 29976
Voler48
CREATE TABLE ... ORGANIZATION EXTERNAL ... as SELECT
Уморил
27 ноя 07, 16:41    [4970275]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка таблицы  [new]
Voler48
Member

Откуда:
Сообщений: 152
Уморил ... ПОЧЕМУ.
27 ноя 07, 16:42    [4970289]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка таблицы  [new]
Дубовая голова
Member [заблокирован]

Откуда: с цепи сорвался
Сообщений: 1821
Voler48
Уморил ... ПОЧЕМУ.


Хоть бы инструкцию прочитал, прежде чем "программировать"
27 ноя 07, 16:46    [4970338]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка таблицы  [new]
Voler48
Member

Откуда:
Сообщений: 152
Такая конструкция выгружает во внешнюю таблицу 5 млн. сьрок за секунды
27 ноя 07, 16:48    [4970355]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка таблицы  [new]
Voler48
Member

Откуда:
Сообщений: 152
И что же там такого, что нужно читать ИНСТРУКЦИЮ ?
27 ноя 07, 16:51    [4970389]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка таблицы  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
Дубовая голова
Voler48
Уморил ... ПОЧЕМУ.


Хоть бы инструкцию прочитал, прежде чем "программировать"


Unloading and Loading Data with the ORACLE_DATAPUMP Access Driver
???
27 ноя 07, 16:52    [4970401]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка таблицы  [new]
Voler48
Member

Откуда:
Сообщений: 152
Представте себе ЧИТАЛ эту ИНСТРУКЦИЮ !
27 ноя 07, 16:54    [4970412]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка таблицы  [new]
Дубовая голова
Member [заблокирован]

Откуда: с цепи сорвался
Сообщений: 1821
Voler48
Представте себе ЧИТАЛ эту ИНСТРУКЦИЮ !


Пардон, каюсь, datapump не углядел :)

В любом случае - гнилая идея, почему - см. выше.
27 ноя 07, 16:56    [4970453]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка таблицы  [new]
Voler48
Member

Откуда:
Сообщений: 152
Это нужно для пакетной выгрузки данных, которые изменились со времени предыдудей выгрузки.
На время выгрузки - заблокировать таблицу.
27 ноя 07, 17:02    [4970522]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка таблицы  [new]
Дубовая голова
Member [заблокирован]

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


1) И как же вы определяете, какие данные "изменились со времени предыдущей выгрузки" ?

Voler48
На время выгрузки - заблокировать таблицу.



2) Все еще остается непонятным - какую таблицу и зачем ?
27 ноя 07, 17:09    [4970595]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка таблицы  [new]
Voler48
Member

Откуда:
Сообщений: 152
WHERE ora_rowscn > (SELECT NVL (MAX (rsn), 0) ...
27 ноя 07, 17:10    [4970618]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка таблицы  [new]
Voler48
Member

Откуда:
Сообщений: 152
Выгружаемая таблица имеет свойство ROWDEPENDENCIES
27 ноя 07, 17:12    [4970640]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить