如何找到当前的SCN?


Answers:


16

目前的SCN

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数据库需要不胜枚举才能使数量众多的事务黯然失色并引起问题-也许您会认为。

软极限

软限制来自于一个固定在24年前某个时间点的非常简单的计算:取自1988年1月1日00:00:00以来的秒数,然后将该数字乘以16,384。如果当前SCN值低于该值,则一切正常,处理将继续正常进行。简而言之,该计算假设自1988年1月1日以来一直在运行的数据库,每秒处理16,384个事务,实际上是不存在的。

SCN极限检查

该脚本(Oracle 10g及更高版本)将检查您已经用尽了哪些硬限制和软限制。感谢Rob提出了软限制。

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
我看到你有你的答案。您还应该在orainternals.com/2012/01/20/scn-what-why-and-how
Niall Litchfield

感谢您的参考!万一其他人想读它,这篇文章现在在orainternals.wordpress.com/2012/01/19/scn-what-why-and-how
Magnus Reftel

6

这是我想出的一个查询,用于检查我的数据库有关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;

我使用DB链接的大多数数据库都用尽了3.5%的标记,并且可以按当前速率连续使用50多年,而不会出现问题。这并不意味着我可以避免有人打勾SCN错误,但是至少我们没有找到一个比其他人更高或接近极限的数据库。


2

281,474,976,710,656是硬限制。您将要知道软限制是多少,因为这是您首先要达到的价值。软限制(大致)由自1988年1月1日起经过的秒数x 16384计算得出。


我不知道原来的答案怎么会错过软限制(在Nick链接的文章中已提到)-因此,添加缺少的细节是个好主意。
dezso
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.