В этом учебном материале вы узнаете, как использовать Oracle оператор COMMIT с синтаксисом и примерами.
Описание
Oracle оператор COMMIT фиксирует все изменения для текущей транзакции. Как только COMMIT выполнится, остальным пользователям будут доступны внесенные изменения.
Синтаксис
Параметры или аргументы
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 будет выполняться так же, как в следующем примере:
В этом примере ключевое слово WORK предлагает и опускает параметр WRITE по умолчанию WRITE WAIT IMMEDIATE, поэтому первые 2 COMMIT утверждения эквивалентны.
Comment оператор
Давайте рассмотрим на пример COMMIT, который показывает, как использовать оператор Comment:
Например, вы можете написать COMMIT с комментарием двумя способами:
или
Поскольку ключевое слово WORK всегда подразумевает, что оба примера COMMIT эквивалентны. COMMIT будет хранить свой комментарий, заключенный в кавычки вместе с ID (идентификатором) транзакции в представлении системы DBA_2PC_PENDING, если транзакция была сомнительной или ошибочной.
Force оператор
И наконец, рассмотрим пример COMMIT, который показывает, как использовать оператор FORCE.
Например, вы можете написать COMMIT из сомнительной транзакции двумя способами:
или
COMMIT WORK FORCE '23.15.68’;
Поскольку ключевое слово WORK всегда подразумевает, что в обоих примерах COMMIT принудит к фиксации поврежденной или сомнительной транзакции, идентифицированной как транзакция ID '22 .14.67 '.