2015-05-21 3 views
2

Я хотел бы знать, почему я получаю другой номер SCN для тетрадей нижеOracle SCN осветление

  1. ВЫБОР TIMESTAMP_TO_SCN (SYSDATE) FROM DUAL - Я использую это для момента времени ВОССТАНОВЛЕНИЯ ДЛЯ TABLESPACE.

  2. SELECT CURRENT_SCN FROM V $ DATABASE. - Я использую это для восстановления базы данных (RMAN)

ПОЧЕМУ Я ПОЛУЧ

Я знаю основные принципы SCN, но все же я смущен. Может ли кто-нибудь уточнить, что представляет собой точный смысл запроса

ответ

1

timestamp_to_scn дает приблизительный результат. В любой момент времени база данных, вероятно, будет проходить через тысячи SCN, поэтому результат не может быть точным. И было бы ужасно дорого поддерживать таблицу, которая ассоциировала бы временную метку с каждым SCN, с которым когда-либо сталкивалась система. Под обложками Oracle поддерживает таблицу, которая хранит текущий SCN каждые несколько секунд и хранит эти данные в течение нескольких дней. В последних версиях гранулярность этой таблицы составляет 1 SCN каждые 3 секунды, хотя это может меняться со временем.

Когда вы вызываете timestamp_to_scn, вы получаете SCN, который был создан в течение нескольких секунд от даты, в которой вы заинтересованы, но это никогда не будет точно, и это не будет работать вечно. Это, как правило, достаточно близко для восстановления момента времени - вы знаете, что хотите восстановить до 20 мая 2015 года в 12:05:00, но вам все равно, если вы вернетесь к состоянию на секунду или два раньше или позже. Если вы идентифицируете конкретную плохую транзакцию, которую хотите восстановить систему (или только раньше), вы не захотите использовать timestamp_to_scn.

0

Это не о 2 разных запросах, даже если вы пытаетесь с любым запросом, SCN различается каждый раз, когда он генерируется каждый раз в реальном времени. Даже запуск вашего запроса заставляет базу данных создавать новый SCN evry time.Hence Каждый раз, когда вы запускаете запрос, вы получаете разные номера SCN базы данных.

Смежные вопросы