eygle.com   eygle.com
eygle.com  
 

« 人生若只如初见 | Blog首页 | Oracle bloggers on frappr »

Oracle HowTo:How to get Oracle 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.通过oradebug获取

以前在l2g32003的站点上看到使用oradebug获取SCN的方法,转引在这里:

[oracle@neirong oracle]$ sqlplus "/ as sysdba"
SQL*Plus: Release 9.2.0.4.0 - Production on Wed Dec 21 21:04:24 2005
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production
SQL> col a for 999999999999
SQL> oradebug setmypid
Statement processed.
SQL> oradebug DUMPvar SGA kcsgscn_
kcslf kcsgscn_ [1200BC68, 1200BC88) = 00000003 BA84F392 00071266 00000000 00000000 00000000 00000000 1200B948
SQL> select to_number('3BA84F392','xxxxxxxxxxxx') a from dual;
            A
-------------
  16014177170
SQL> select dbms_flashback.get_system_change_number a from dual;
            A
-------------
  16014177255
SQL> 

方法有多种,但是涉及的知识各有巧妙不同,深入研究一下都是很有意思的.


历史上的今天...
      >> 2010-01-06文章:
      >> 2008-01-06文章:
             崔健:时代的早上还是晚上
------
这篇 【Oracle HowTo:How to get Oracle SCN?】来自 eygle.com | CSDN网摘| del.icio.us|Google订阅 | 鲜果订阅 | 抓虾订阅

By eygle on 2006-01-06 20:51 | Comments (3) | Posted to HowTo | Internal | Edit |Pageviews:

相关文章 随机文章
Cache-low rba 与 on-disk rba - 恢复笔记
使用ora_rowscn识别误操作数据时间点
Oracle Wait Events: Wait for scn ack
Oracle10g的current_scn是如何计算的?
Oracle10g中SCN与TimeStamp的相互转换
人生若只如初见
圣诞超级复杂困难之Oracle数据库大恢复
谁偷走了一秒光阴?
经典图书推荐系列-之五
Oracle10g如何释放flash_recovery_area,解决ORA-19815错误
搜索本站:

留言 (3)

为何我使用前两种方法,在同一时间获取的SCN不一致?

Posted by: wangwang at April 27, 2007 2:10 PM

x$ktuxe
为啥我的10G里没有这个表?

Posted by: msrennan at November 27, 2007 11:29 AM

我的有:

SQL> desc x$ktuxe
Name Null? Type
----------------------------------------- -------- ----------------------------
ADDR RAW(8)
INDX NUMBER
INST_ID NUMBER
KTUXEUSN NUMBER
KTUXESLT NUMBER
KTUXESQN NUMBER
KTUXERDBF NUMBER
KTUXERDBB NUMBER
KTUXESCNB NUMBER
KTUXESCNW NUMBER
KTUXESTA VARCHAR2(16)
KTUXECFL VARCHAR2(24)
KTUXEUEL NUMBER
KTUXEDDBF NUMBER
KTUXEDDBB NUMBER
KTUXEPUSN NUMBER
KTUXEPSLT NUMBER
KTUXEPSQN NUMBER
KTUXESIZ NUMBER

SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
PL/SQL Release 10.2.0.3.0 - Production
CORE 10.2.0.3.0 Production
TNS for Solaris: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production

Posted by: eygle at November 27, 2007 4:20 PM

发表留言:



Remember Me?
(输入验证码后方可评论,谢谢支持)



CopyRight © 2004~2010 eygle.com, All rights reserved.