问题描述
有哪几种方式可以获取数据库的scn
专家解答
可以通过如下几种方式获得数据库的当前或近似SCN。
1.从Oracle9i开始
可以通过可以使用dbms_flashback.get_system_change_number来获得
SQL> select dbms_flashback.get_system_change_number from dual; GET_SYSTEM_CHANGE_NUMBER ------------------------ 2982184
2.Oracle9i前
可以通过查询x$ktuxe获得系统最接近当前值的SCN:
X$KTUXE-------------[K]ernel [T]ransaction [U]ndo Transa[x]tion [E]ntry (table) SQL> select max(ktuxescnw*power(2,32)+ktuxescnb) from x$ktuxe; MAX(KTUXESCNW*POWER(2,32)+KTUXESCNB) ------------------------------------ 2980613
3.从Oracle10g开始
在v$database视图中增加了current_scn字段,通过查询该字段可以获得数据库的当前SCN值:
SQL> select current_scn from v$database; CURRENT_SCN ----------- 612842
4.从内存中取得SCN信息
通过oradebug工具可以直接读取内存中用于记录SCN的内存变量:
SQL> oradebug setmypid Statement processed. SQL> oradebug DUMPvar SGA kcsgscn_ kcslf kcsgscn_ [2000C848, 2000C868) = 00000000 000959EA 00000000 00000000 00000000 00000000 00000000 2000C654 SQL> select to_number('959EA','xxxxxx') SCN from dual; SCN --------------------------- 612842
最后修改时间:2019-07-24 10:37:35
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。