To pytanie zostało zainspirowane tym artykułem . Prawdopodobnie wielu ludzi Oracle szuka teraz tych liczb. :)
Nick Chammas
Wygląda na to, że link z mojego poprzedniego komentarza jest teraz uszkodzony. Wierzę, że ta strona została przeniesiona tutaj: infoworld.com/article/2618409/...
Nick Chammas
Odpowiedzi:
16
Aktualny SCN
Oracle 9i:
SELECT dbms_flashback.get_system_change_number as current_scn
FROM DUAL;
Oracle 10g i nowsze:
SELECT current_scn
FROM V$DATABASE;
Limity SCN
SCN ma twardy limit narzucony przez swój format i miękki limit narzucony sztucznie przez Oracle, jak opisano tutaj . Cytowałem odpowiednie fragmenty poniżej (wyróżnienie dodane).
Hard Limit
Architekci flagowej aplikacji bazy danych Oracle musieli być świadomi, że SCN musi być ogromną liczbą całkowitą. Jest to: 48-bitowa liczba ( 281,474,976,710,656 ). Eony bazy danych Oracle zajęłyby eony i spowodowałyby problemy - a przynajmniej tak myślisz.
Soft Limit
Miękki limit wynika z bardzo prostego obliczenia zakotwiczonego w punkcie sprzed 24 lat: weź liczbę sekund od 00:00:00 01/01/1988 i pomnóż tę liczbę przez 16 384. Jeśli bieżąca wartość SCN jest poniżej tej wartości, wszystko jest w porządku, a przetwarzanie jest kontynuowane jak zwykle. Mówiąc prościej, obliczenia zakładają, że baza danych działająca nieprzerwanie od 01.01.1988 r., Przetwarzająca 16 384 transakcji na sekundę, w rzeczywistości nie może istnieć.
Kontrola limitu SCN
Ten skrypt (Oracle 10g i wyżej) sprawdzi, ile wyczerpałeś twardych i miękkich limitów. Dzięki Rob za wywołanie miękkiego limitu.
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;
Oto zapytanie, które wymyśliłem, aby sprawdzić, czy moje bazy danych są poczytalne w odniesieniu do problemu z błędem 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;
Większość moich baz danych, które używają łączy DB, jest na poziomie 3,5% wyczerpania i może kontynuować bez zmian w obecnym tempie przez ponad 50 lat. Nie oznacza to, że jestem bezpieczny przed kimś łaskoczącym błąd SCN, ale przynajmniej nie znaleźliśmy bazy danych, która była znacznie wyższa od innych lub zbliżona do limitu.
281,474,976,710,656 to twardy limit. Będziesz chciał wiedzieć, jaki jest limit miękki, ponieważ jest to wartość, na którą najpierw uderzyłbyś głową. Limit miękki jest (z grubsza) obliczany na podstawie liczby sekund, które upłynęły od 1 stycznia 1988 x 16384.
Odpowiedzi:
Aktualny SCN
Oracle 9i:
Oracle 10g i nowsze:
Limity SCN
SCN ma twardy limit narzucony przez swój format i miękki limit narzucony sztucznie przez Oracle, jak opisano tutaj . Cytowałem odpowiednie fragmenty poniżej (wyróżnienie dodane).
Hard Limit
Soft Limit
Kontrola limitu SCN
Ten skrypt (Oracle 10g i wyżej) sprawdzi, ile wyczerpałeś twardych i miękkich limitów. Dzięki Rob za wywołanie miękkiego limitu.
źródło
Oto zapytanie, które wymyśliłem, aby sprawdzić, czy moje bazy danych są poczytalne w odniesieniu do problemu z błędem SCN:
Większość moich baz danych, które używają łączy DB, jest na poziomie 3,5% wyczerpania i może kontynuować bez zmian w obecnym tempie przez ponad 50 lat. Nie oznacza to, że jestem bezpieczny przed kimś łaskoczącym błąd SCN, ale przynajmniej nie znaleźliśmy bazy danych, która była znacznie wyższa od innych lub zbliżona do limitu.
źródło
281,474,976,710,656 to twardy limit. Będziesz chciał wiedzieć, jaki jest limit miękki, ponieważ jest to wartość, na którą najpierw uderzyłbyś głową. Limit miękki jest (z grubsza) obliczany na podstawie liczby sekund, które upłynęły od 1 stycznia 1988 x 16384.
źródło