Come trovo il mio SCN attuale?


14

Data qualsiasi versione di Oracle:

  • Come trovo il mio SCN attuale?
  • Qual è il massimo SCN possibile?

Questa domanda è stata ispirata da questo articolo . Probabilmente ci sono molte persone Oracle che stanno cercando questi numeri in questo momento. :)
Nick Chammas il

Sembra che il link del mio commento precedente sia ora interrotto. Credo che la pagina sia stata spostata qui: infoworld.com/article/2618409/…
Nick Chammas,

Risposte:


16

SCN attuale

Oracle 9i:

SELECT dbms_flashback.get_system_change_number as current_scn 
FROM DUAL;

Oracle 10g e versioni successive:

SELECT current_scn
FROM V$DATABASE;

Limiti SCN

SCN ha un limite rigido imposto dal suo formato e un limite soft imposto artificialmente da Oracle, come descritto qui . Ho citato le parti pertinenti di seguito (enfasi aggiunta).

Hard Limit

Gli architetti dell'applicazione database di punta di Oracle devono essere ben consapevoli che l'SCN doveva essere un numero intero enorme. È: un numero a 48 bit ( 281.474.976.710.656 ). Ci vorrebbero eoni per un database Oracle per eclissare quel numero di transazioni e causare problemi - o così potresti pensare.

Soft Limit

Il limite morbido deriva da un calcolo molto semplice ancorato ad un punto nel tempo di 24 anni fa: prendi il numero di secondi dalle 00:00:00 del 01/01/1988 e moltiplica tale cifra per 16.384. Se il valore SCN corrente è inferiore a quello, allora tutto va bene e l'elaborazione continua normalmente. Per dirla in termini semplici, il calcolo presuppone che un database in esecuzione costantemente dal 01/01/1988, che elabora 16.384 transazioni al secondo, non possa esistere nella realtà.

Controllo limite SCN

Questo script (Oracle 10g e versioni successive) verificherà quanti limiti hard e soft hai esaurito. Grazie a Rob per aver definito il limite soft.

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 * 16384 
        AS SCN_soft_limit
    , 281474976710656 AS SCN_hard_limit
  FROM V$DATABASE
)
SELECT
    current_scn
  , current_scn/scn_soft_limit*100 AS pct_soft_limit_exhausted
  , scn_soft_limit
  , current_scn/scn_hard_limit*100 AS pct_hard_limit_exhausted
  , scn_hard_limit
FROM limits;

2
Vedo che hai la tua risposta. Dovresti anche leggere l'articolo di Riyaj
Niall Litchfield

Grazie per il riferimento! Nel caso in cui qualcun altro voglia leggerlo, l'articolo è ora su orainternals.wordpress.com/2012/01/19/scn-what-why-and-how
Magnus Reftel

6

Ecco una domanda che mi è venuta in mente per verificare la correttezza dei miei database riguardo al problema dei bug SCN:

# Show the amount of SCN keyspace we have used so far on this database
# By default the SCN max on a 10g/11g 
# instance is a 48-bit integer (281,474,976,710,656) 
SELECT NAME,  
   (current_scn/281474976710656)*100 as 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;

La maggior parte dei miei database che utilizzano i collegamenti DB hanno raggiunto il 3,5% e possono continuare al ritmo attuale per oltre 50 anni senza problemi. Questo non significa che io sia al sicuro da qualcuno che solletica il bug SCN, ma almeno non abbiamo trovato un database che fosse molto più alto degli altri o vicino al limite.


2

281.474.976.710.656 è il limite massimo. Avrai voglia di sapere qual è il limite soft, poiché questo è il valore che ti colpirebbe per primo. Il limite morbido è (approssimativamente) calcolato dal numero di secondi trascorsi dal 1 gennaio 1988 x 16384.


Non so come le vecchie risposte abbiano mancato il limite morbido (che è menzionato nell'articolo collegato da Nick) - quindi è una buona idea aggiungere i dettagli mancanti.
dezso
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.