COMMIT ОПЕРАТОР

В этом учебном материале вы узнаете, как использовать Oracle оператор COMMIT с синтаксисом и примерами.

Описание

Oracle оператор COMMIT фиксирует все изменения для текущей транзакции. Как только COMMIT выполнится, остальным пользователям будут доступны внесенные изменения.

Синтаксис

COMMIT [ WORK ] [ COMMENT ] [ WRITE ] [ FORCE ];

Параметры или аргументы

WORK Необязательный. Был добавлен в Oracle, для SQL-совместимости. Выполнение оператора COMMIT с или без параметра WORK приведет к такому же результату.

COMMENT Необязательный. Используется, как комментарий, который ассоциируется с текущей транзакцией. Комментарий, может быть до 255 байт текста в одинарных кавычках. Он хранится в системном представлении (view) DBA_2PC_PENDING вместе с ID транзакции, если есть проблема.

WRITE Необязательный. Он используется для определения приоритета, что информация для повторного выполнения зафиксированной транзакции должна быть записана в журнал повтора. С WRITE, у вас есть два параметры для установки:

  • WAIT или NOWAIT (WAIT по умолчанию, если пропущен)
    • WAIT - означает, что фиксация возвращается клиенту только после того, как информация повтора повторяется в журнале повтора.
    • NOWAIT - означает, что фиксация возвращается клиенту сразу же, независимо от статуса журнала повтора.
  • IMMEDIATE или BATCH (IMMEDIATE по умолчанию, если пропущен)
    • IMMEDIATE – принуждает диск I/O (ввода / вывода) вызвать log writer, чтобы записать информацию повтора в журнал повтора.
    • BATCH - принуждает "group commit" (группа фиксации) и буферы журнала повтора записать с другими транзакциями.

FORCE Необязательный. Он используется для принуждения завершения транзакции, которые сомнительны или могут быть повреждены. С помощью этого аргумента, вы можете указать FORCE 3 способами:

  • FORCE 'string', [integer] - позволяет завершать транзакции, которые могут быть сомнительны или повреждены в распределенной системе баз данных, указав ID (идентификатор) транзакции в одиночные кавычки, как строку. Вы можете найти ID транзакции в system view (представлении системы) под названием DBA_2PC_PENDING. Вы можете указать целое число, чтобы обозначить транзакцию номером изменения системы, если вы не хотите, завершить транзакцию с использованием текущего номера изменения системы.
  • FORCE CORRUPT_XID 'string' - позволяет завершить транзакции, которые сомнительны или могут быть повреждены, указав идентификатор транзакции в одиночные кавычки, как строку. Вы можете найти идентификатор транзакции в представлении системы под названием V$CORRUPT_XID_LIST.
  • FORCE CORRUPT_XID_ALL - позволяет завершать все поврежденные транзакции.

Примечание

  • Вы должны иметь привилегии DBA для доступа к системным представлениям - DBA_2PC_PENDING и V$CORRUPT_XID_LIST.
  • Вы должны иметь привилегии DBA для завершения транзакции (COMMIT).

Пример

Рассмотрим на примере, как завершается транзакция в Oracle с помощью COMMIT.

COMMIT;

Этот пример COMMIT будет выполняться так же, как в следующем примере:

COMMIT WORK WRITE WAIT IMMEDIATE;

В этом примере ключевое слово WORK предлагает и опускает параметр WRITE по умолчанию WRITE WAIT IMMEDIATE, поэтому первые 2 COMMIT утверждения эквивалентны.

Comment оператор

Давайте рассмотрим на пример COMMIT, который показывает, как использовать оператор Comment:

Например, вы можете написать COMMIT с комментарием двумя способами:

COMMIT COMMENT 'Это комментарий к транзакции';

или

COMMIT WORK COMMENT 'Это комментарий к транзакции';

Поскольку ключевое слово WORK всегда подразумевает, что оба примера COMMIT эквивалентны. COMMIT будет хранить свой комментарий, заключенный в кавычки вместе с ID (идентификатором) транзакции в представлении системы DBA_2PC_PENDING, если транзакция была сомнительной или ошибочной.

Force оператор

И наконец, рассмотрим пример COMMIT, который показывает, как использовать оператор FORCE.

Например, вы можете написать COMMIT из сомнительной транзакции двумя способами:

COMMIT FORCE '23.15.68’;

или
COMMIT WORK FORCE '23.15.68’;
Поскольку ключевое слово WORK всегда подразумевает, что в обоих примерах COMMIT принудит к фиксации поврежденной или сомнительной транзакции, идентифицированной как транзакция ID '22 .14.67 '.