主要可以通过两种方式:
在Oraclei及以上版本中
可以使用dbms_flashbackget_system_change_number来获得
SQL> select dbms_flashbackget_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
在Oraclei之前
可以通过查询x$ktuxe获得最接近当前系统scn值
X$KTUXE[K]ernel [T]ransaction [U]ndo Transa[x]tion [E]ntry (table)
SQL> select max(ktuxescnw*power()+ktuxescnb) from x$ktuxe;
MAX(KTUXESCNW*POWER()+KTUXESCNB)
通过oradebug获取
以前在lg的站点上看到使用oradebug获取SCN的方法转引在这里:
[oracle@neirong oracle]$ sqlplus / as sysdba
SQL*Plus: Release Production on Wed Dec ::
Copyright (c) Oracle Corporation All rights reserved
Connected to:
Oraclei Enterprise Edition Release Production
With the Partitioning OLAP and Oracle Data Mining options
JServer Release Production
SQL> col a for
SQL> oradebug setmypid
Statement processed
SQL> oradebug DUMPvar SGA kcsgscn_
kcslf kcsgscn_ [BC BC) = BAF B
SQL> select to_number(BAFxxxxxxxxxxxx) a from dual;
A
SQL> select dbms_flashbackget_system_change_number a from dual;
A
SQL>
方法有多种但是涉及的知识各有巧妙不同深入研究一下都是很有意思的