Этот вопрос был вдохновлен этой статьей . Вероятно, сейчас много людей из Oracle ищут эти цифры. :)
Ник Чаммас
Похоже, ссылка из моего предыдущего комментария теперь не работает. Я считаю, что эта страница была перенесена сюда: infoworld.com/article/2618409/…
Ник Чаммас
Ответы:
16
Текущий СКС
Oracle 9i:
SELECT dbms_flashback.get_system_change_number as current_scn
FROM DUAL;
Oracle 10g и выше:
SELECT current_scn
FROM V$DATABASE;
Пределы SCN
SCN имеет жесткое ограничение, налагаемое его форматом, и мягкое ограничение, налагаемое Oracle, как описано здесь . Я процитировал соответствующие части ниже (выделение добавлено).
Жесткий предел
Архитекторы флагманского приложения базы данных Oracle должны были хорошо понимать, что SCN должен быть целым числом. Это: 48-разрядное число ( 281 474 976 710 656 ). Для базы данных Oracle потребуются эоны, чтобы затмить такое количество транзакций и вызвать проблемы - или вы можете подумать.
Soft Limit
Мягкий предел вытекает из очень простого вычисления, привязанного к моменту времени 24 года назад: возьмите количество секунд с 00:00:00 01.01.1988 и умножьте эту цифру на 16 384. Если текущее значение SCN ниже этого, тогда все в порядке, и обработка продолжается как обычно. Проще говоря, расчет предполагает, что база данных, постоянно работающая с 01.01.1988, обрабатывающая 16 384 транзакций в секунду, в действительности не может существовать.
Проверка предела SCN
Этот скрипт (Oracle 10g и выше) проверит, сколько жестких и мягких ограничений вы исчерпали. Спасибо Робу за то, что он объявил мягкий предел.
WITH limits AS(SELECT
current_scn
--, dbms_flashback.get_system_change_number as current_scn -- Oracle 9i,(SYSDATE - TO_DATE('1988-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS'))*24*60*60*16384AS SCN_soft_limit
,281474976710656AS SCN_hard_limit
FROM V$DATABASE)SELECT
current_scn
, current_scn/scn_soft_limit*100AS pct_soft_limit_exhausted
, scn_soft_limit
, current_scn/scn_hard_limit*100AS pct_hard_limit_exhausted
, scn_hard_limit
FROM limits;
Вот запрос, который я пришел, чтобы проверить мои базы данных на предмет исправности в отношении ошибки SCN:
# Show the amount of SCN keyspace we have used so far on this database#Bydefault the SCN max on a 10g/11g
# instance is a 48-bit integer (281,474,976,710,656)SELECT NAME,(current_scn/281474976710656)*100as PCT_OF_SCN_KEYSPACE_USED,
ROUND(SYSDATE-CREATED)as DAYS_SINCE_DB_CREATION,
ROUND(1/(current_scn/281474976710656)*(SYSDATE-CREATED))AS EST_DAYS_BEFORE_SCN_EXHAUSTED,
ROUND(1/(current_scn/281474976710656)*(SYSDATE-CREATED)/365)AS EST_YEARS_BEFORE_SCN_EXHAUSTED
FROM v$database;
Большинство моих баз данных, которые используют ссылки на БД, находятся на отметке 3,5% и могут продолжать работу с текущей скоростью в течение 50+ лет без проблем. Это не означает, что я в безопасности от того, что кто-то исправит ошибку SCN, но, по крайней мере, мы не нашли базу данных, которая была бы намного выше других или близка к пределу.
281 474 976 710 656 - это жесткий предел. Вы захотите узнать, что такое мягкий предел, так как это значение, которое вы в первую очередь ударили по голове. Мягкий предел (приблизительно) рассчитывается по количеству секунд, прошедших с 1 января 1988 года x 16384.
Я не знаю, как старые ответы не соответствовали мягкому пределу (который упоминается в статье, связанной Ником) - так что это хорошая идея для добавления недостающих деталей.
Ответы:
Текущий СКС
Oracle 9i:
Oracle 10g и выше:
Пределы SCN
SCN имеет жесткое ограничение, налагаемое его форматом, и мягкое ограничение, налагаемое Oracle, как описано здесь . Я процитировал соответствующие части ниже (выделение добавлено).
Жесткий предел
Soft Limit
Проверка предела SCN
Этот скрипт (Oracle 10g и выше) проверит, сколько жестких и мягких ограничений вы исчерпали. Спасибо Робу за то, что он объявил мягкий предел.
источник
Вот запрос, который я пришел, чтобы проверить мои базы данных на предмет исправности в отношении ошибки SCN:
Большинство моих баз данных, которые используют ссылки на БД, находятся на отметке 3,5% и могут продолжать работу с текущей скоростью в течение 50+ лет без проблем. Это не означает, что я в безопасности от того, что кто-то исправит ошибку SCN, но, по крайней мере, мы не нашли базу данных, которая была бы намного выше других или близка к пределу.
источник
281 474 976 710 656 - это жесткий предел. Вы захотите узнать, что такое мягкий предел, так как это значение, которое вы в первую очередь ударили по голове. Мягкий предел (приблизительно) рассчитывается по количеству секунд, прошедших с 1 января 1988 года x 16384.
источник