楼主: bellsz

[精华] 关于SCN的理解,请指正

[复制链接]
论坛徽章:
47
蒙奇·D·路飞
日期:2017-03-27 08:04:23马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11一汽
日期:2013-09-01 20:46:27复活蛋
日期:2013-03-13 07:55:232013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:322012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20
41#
发表于 2006-7-2 02:36 | 只看该作者
最初由 biti_rainy 发布
[B]

current  scn 是 系统当前所产生的最大 scn ,可能是当前未结束事务所产生的scn。 在9i 的 dbms_flashback.get_system_number 可以得到这个值,这个值应该是大于等于  x$ktuxe SCN  (这个view 记录的是 当前数据库结束事务的最大scn) [/B]


You're right. I forgot about dbms_flashback.get_system_change_number.

I thought I could find out how Oracle got this number internally. I set SQL trace and see Oracle probably got this from one of idl_xxx$ tables, piece column. That "famous" piece column is of type UNDEFINED. I never figured out how to select from that column directly.

Before 9i, asktom tells us we can insert userenv('COMMITSCN') into a table and check its value. (Can't directly select it, got ORA-01725).

Yong Huang

使用道具 举报

回复
论坛徽章:
8
CTO参与奖
日期:2009-01-15 11:42:46SQL大赛参与纪念
日期:2011-04-13 12:08:17蛋疼蛋
日期:2012-05-31 13:19:132013年新春福章
日期:2013-02-25 14:51:24优秀写手
日期:2014-03-13 06:00:16目光如炬
日期:2016-07-31 22:30:25火眼金睛
日期:2016-08-31 22:00:00授权会员
日期:2017-09-30 15:12:14
42#
发表于 2007-3-30 14:11 | 只看该作者
很经典啊,收益菲浅!!

使用道具 举报

回复
招聘 : 软件工程师
论坛徽章:
51
ITPUB元老
日期:2007-09-25 14:45:26现代
日期:2014-02-10 13:35:242014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:14马上有车
日期:2014-08-25 08:54:25
43#
发表于 2007-4-14 10:10 | 只看该作者
好多人还是对基础概念不清楚

使用道具 举报

回复
论坛徽章:
24
生肖徽章:狗
日期:2006-09-07 10:14:43数据库板块每日发贴之星
日期:2008-07-26 01:02:20生肖徽章2007版:兔
日期:2008-10-13 11:10:11奥运会纪念徽章:铁人三项
日期:2008-10-24 13:27:21开发板块每日发贴之星
日期:2008-12-27 01:01:09生肖徽章2007版:马
日期:2009-11-18 10:45:032010新春纪念徽章
日期:2010-03-01 11:21:02ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51ERP板块每日发贴之星
日期:2011-05-18 01:01:01ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15
44#
发表于 2007-12-9 11:55 | 只看该作者
还得再来一遍!

使用道具 举报

回复
论坛徽章:
24
生肖徽章:狗
日期:2006-09-07 10:14:43数据库板块每日发贴之星
日期:2008-07-26 01:02:20生肖徽章2007版:兔
日期:2008-10-13 11:10:11奥运会纪念徽章:铁人三项
日期:2008-10-24 13:27:21开发板块每日发贴之星
日期:2008-12-27 01:01:09生肖徽章2007版:马
日期:2009-11-18 10:45:032010新春纪念徽章
日期:2010-03-01 11:21:02ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51ERP板块每日发贴之星
日期:2011-05-18 01:01:01ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15
45#
发表于 2007-12-9 13:51 | 只看该作者
我有一个疑问!

SQL> select checkpoint_change#,archive_change#,controlfile_change#,archivelog_change# from v$database;

CHECKPOINT_CHANGE# ARCHIVE_CHANGE# CONTROLFILE_CHANGE# ARCHIVELOG_CHANGE#
------------------ --------------- ------------------- ------------------
           3145665         3145039             3146288                  0

SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARCHIVED STATUS           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- -------- ---------------- ------------- -----------
         1          1         17  104857600          1 NO       INACTIVE               3145665 2007-12-9 1
         2          1         18  104857600          1 NO       CURRENT                3146287 2007-12-9 1
         3          1         16  104857600          1 NO       INACTIVE               3145039 2007-12-9 1

SQL> select dbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER
------------------------
                 3152331

SQL> insert into t values(4);

1 row inserted

SQL> commit;

Commit complete

SQL> select dbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER
------------------------
                 3152417

SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARCHIVED STATUS           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- -------- ---------------- ------------- -----------
         1          1         17  104857600          1 NO       INACTIVE               3145665 2007-12-9 1
         2          1         18  104857600          1 NO       CURRENT                3146287 2007-12-9 1
         3          1         16  104857600          1 NO       INACTIVE               3145039 2007-12-9 1

SQL> alter system switch logfile;

System altered

SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARCHIVED STATUS           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- -------- ---------------- ------------- -----------
         1          1         17  104857600          1 NO       INACTIVE               3145665 2007-12-9 1
         2          1         18  104857600          1 NO       ACTIVE                 3146287 2007-12-9 1
         3          1         19  104857600          1 NO       CURRENT                3152499 2007-12-9 1

SQL> select checkpoint_change#,archive_change#,controlfile_change#,archivelog_change# from v$database;

CHECKPOINT_CHANGE# ARCHIVE_CHANGE# CONTROLFILE_CHANGE# ARCHIVELOG_CHANGE#
------------------ --------------- ------------------- ------------------
           3146287         3145665             3152499                  0

通过上面的测试,怎么checkpoint_change#总是active log所对应的first_change#呢?而archive_chenge#是inactive log的那个first_change#,controlfile_change#是当前current log的first_change#?

不明白,感觉切换日志了会触发ckpt啊,那么应该记录我commit之后的那个状态啊!也就是3152417这个数前面的。

使用道具 举报

回复
论坛徽章:
11
生肖徽章2007版:虎
日期:2008-01-02 17:35:53奥运会纪念徽章:帆船
日期:2008-07-10 11:29:10生肖徽章2007版:鸡
日期:2008-10-07 15:25:30奥运会纪念徽章:艺术体操
日期:2008-10-24 13:26:02生肖徽章2007版:虎
日期:2009-03-10 21:13:282010世博会纪念徽章
日期:2010-08-12 17:02:18
46#
发表于 2007-12-10 10:07 | 只看该作者
原帖由 hanjs 于 2007-12-9 13:51 发表
不明白,感觉切换日志了会触发ckpt啊,那么应该记录我commit之后的那个状态啊!也就是3152417这个数前面的。


日志切换是要触发ckpt
日志切换后,redo log buffer内容写入到redolog中
dbwr写内容到DB block中的

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
25
生肖徽章2007版:龙
日期:2008-05-06 11:07:48咸鸭蛋
日期:2011-10-19 10:09:12ITPUB十周年纪念徽章
日期:2011-11-01 16:20:282012新春纪念徽章
日期:2012-01-04 11:49:542013年新春福章
日期:2013-02-25 14:51:24
47#
发表于 2007-12-13 20:08 | 只看该作者
精彩的辩论。

使用道具 举报

回复
论坛徽章:
76
双子座
日期:2015-07-28 14:26:072012新春纪念徽章
日期:2012-02-13 15:09:52ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15鲜花蛋
日期:2011-08-26 02:02:24管理团队成员
日期:2011-05-07 01:45:082010广州亚运会纪念徽章:皮划艇
日期:2011-04-18 11:24:412011新春纪念徽章
日期:2011-02-18 11:43:342011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:15
48#
发表于 2008-1-16 14:27 | 只看该作者
温顾一下

使用道具 举报

回复
论坛徽章:
0
49#
发表于 2008-1-21 18:31 | 只看该作者
看了一遍,收获不浅

使用道具 举报

回复
论坛徽章:
6
BLOG每日发帖之星
日期:2008-08-11 01:02:28授权会员
日期:2008-09-12 22:53:43生肖徽章2007版:猴
日期:2008-10-08 23:35:11BLOG每日发帖之星
日期:2008-12-09 01:01:082009新春纪念徽章
日期:2009-01-04 14:52:28ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26
50#
发表于 2008-1-24 09:57 | 只看该作者
经典!

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表