2014-11-27 1 views
0

Mates,WIll TIMESTAMP & ORA_ROWSCN будет генерировать для каждой строки?

Когда я пытаюсь получить Отметка с помощью следующей функции,

SCN_TO_TIMESTAMP(ORA_ROWSCN) 

получил ошибку как

ORA-08181: specified number is not a valid system change number ORA-06512: at "SYS.SCN_TO_TIMESTAMP", line 1 ORA-06512: at line 1

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

Thanks

+0

Я не понимаю, о чем вы спрашиваете в вопросе 1. Я не понимаю, что метка времени вы говорите в вопросе 2. –

+0

@JustinCave отредактирован –

ответ

1

Есть несколько проблем с подобным подходом.

Во-первых, если ваш стол не построен с rowdependencies, то ora_rowscn хранится на уровне блока, а не на уровне строки. Во-вторых, функция scn_to_timestamp может предоставлять только сопоставление для относительно недавних значений SCN, возможно, в лучшем случае, на несколько недель. В-третьих, само отображение не является особенно точным - это будет +/- 3 секунды во всех версиях 11g, я полагаю. Точность может отличаться в других версиях Oracle. Объединяя их, маловероятно, что вы можете использовать временную метку, которая обеспечивает функцию оптимистической блокировки.

Использование только ORA_ROWSCN, но оно по-прежнему имеет issues if you're trying to implement optimistic locking. ORA_ROWSCN может сделать потерянные обновления маловероятными в вашей среде, чтобы быть приемлемыми, но это не лучший подход для реализации оптимистической блокировки.

+0

могли бы вы помочь с перемежаются если –

+0

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

+0

Спасибо, Джастин. Я пробовал этот путь. У меня две таблицы. Оба имеют id как foriegn key. когда вставка происходит, я нашел рекордер time_stamp как 26/11/2014 11:11:59 PM за один стол и 26/11/2014 11:12:00 PM за секунду. IS все еще можно использовать отметку времени, чтобы добиться блокировки с этой задержкой микросекунд ?????? –