Esta pergunta foi inspirada neste artigo . Provavelmente, há muitas pessoas da Oracle pesquisando esses números agora. :)
Nick Chammas
Parece que o link do meu comentário anterior agora está quebrado. Eu acredito que a página foi transferida aqui: infoworld.com/article/2618409/...
Nick Chammas
Respostas:
16
SCN atual
Oracle 9i:
SELECT dbms_flashback.get_system_change_number as current_scn FROM DUAL;
Oracle 10g e superior:
SELECT current_scnFROM V$DATABASE;
Limites de SCN
O SCN possui um limite rígido imposto por seu formato e um limite flexível imposto artificialmente pela Oracle, conforme descrito aqui . Citei as partes relevantes abaixo (ênfase adicionada).
Hard Limit
Os arquitetos do aplicativo de banco de dados principal da Oracle devem estar cientes de que o SCN precisava ser um número inteiro maciço. É: um número de 48 bits ( 281.474.976.710.656 ). Levaria éons para um banco de dados Oracle eclipsar esse número de transações e causar problemas - ou assim você pode pensar.
Limite suave
O limite flexível deriva de um cálculo muito simples ancorado em um ponto no tempo há 24 anos: Pegue o número de segundos desde 00:00:00 01/01/1988 e multiplique esse número por 16.384. Se o valor atual do SCN estiver abaixo disso, tudo estará bem e o processamento continuará normalmente. Para simplificar, o cálculo supõe que um banco de dados em execução constantemente desde 01/01/1988, processando 16.384 transações por segundo, não possa existir na realidade.
Verificação de limite de SCN
Este script (Oracle 10g e superior) verificará quanto dos limites rígidos e flexíveis você esgotou. Agradecemos a Rob por chamar o limite flexível.
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;
Aqui está uma consulta que eu criei para verificar a integridade dos meus bancos de dados em relação ao problema de bug do 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;
A maioria dos meus bancos de dados que usam links de banco de dados está na marca esgotada de 3,5% e pode continuar na taxa atual por mais de 50 anos sem problemas. Isso não significa que estou a salvo de alguém que esteja fazendo cócegas no bug do SCN, mas pelo menos não encontramos um banco de dados que fosse muito mais alto que os outros ou próximo ao limite.
281.474.976.710.656 é o limite máximo. Você quer saber qual é o limite flexível, já que esse é o valor em que você acertaria sua cabeça primeiro. O limite flexível é (aproximadamente) calculado pelo número de segundos decorridos desde 1º de janeiro de 1988 x 16384.
Não sei como as respostas antigas perderam o limite flexível (que é mencionado no artigo vinculado por Nick) - portanto, é uma boa ideia adicionar os detalhes ausentes.
Respostas:
SCN atual
Oracle 9i:
Oracle 10g e superior:
Limites de SCN
O SCN possui um limite rígido imposto por seu formato e um limite flexível imposto artificialmente pela Oracle, conforme descrito aqui . Citei as partes relevantes abaixo (ênfase adicionada).
Hard Limit
Limite suave
Verificação de limite de SCN
Este script (Oracle 10g e superior) verificará quanto dos limites rígidos e flexíveis você esgotou. Agradecemos a Rob por chamar o limite flexível.
fonte
Aqui está uma consulta que eu criei para verificar a integridade dos meus bancos de dados em relação ao problema de bug do SCN:
A maioria dos meus bancos de dados que usam links de banco de dados está na marca esgotada de 3,5% e pode continuar na taxa atual por mais de 50 anos sem problemas. Isso não significa que estou a salvo de alguém que esteja fazendo cócegas no bug do SCN, mas pelo menos não encontramos um banco de dados que fosse muito mais alto que os outros ou próximo ao limite.
fonte
281.474.976.710.656 é o limite máximo. Você quer saber qual é o limite flexível, já que esse é o valor em que você acertaria sua cabeça primeiro. O limite flexível é (aproximadamente) calculado pelo número de segundos decorridos desde 1º de janeiro de 1988 x 16384.
fonte