oracle10与11区别,Oracle10g与oracle11g中current_scn计算差别

我们知道Oracle10g在v$database视图中引入了current_scn,这个SCN来自底层表,代表当前的SCN,在Oracle9i中我们可以通过dbms_flashback.get_system_change_number来获得系统的SCN。我的版本是oracle11g的。

但是注意current_scn还是有所不同的,看一下一个查询:

SQL> col current_scn for 99999999999999999

SQL> select current_scn from v$database;CURRENT_SCN

------------------

1941617

SQL> select dbms_flashback.get_system_change_number current_scn from dual;

CURRENT_SCN

------------------

1941650

SQL> select dbms_flashback.get_system_change_number current_scn from dual;

CURRENT_SCN

------------------

1941675

SQL> select dbms_flashback.get_system_change_number current_scn from dual;

CURRENT_SCN

------------------

1941678

SQL> select current_scn from v$database;

CURRENT_SCN

------------------

1941683

SQL> select dbms_flashback.get_system_change_number current_scn from dual;

CURRENT_SCN

------------------

1941689

SQL> select dbms_flashback.get_system_change_number current_scn from dual;

CURRENT_SCN

------------------

1941691

SQL> select current_scn from v$database;

CURRENT_SCN

------------------

1941762

SQL> conn system/yang as sysdba

已连接。

SQL> select current_scn from v$database;

CURRENT_SCN

------------------

1941780

SQL> select current_scn from v$database;

CURRENT_SCN

------------------

1941794

SQL> select dbms_flashback.get_system_change_number current_scn from dual;

CURRENT_SCN

------------------

1941794

SQL> select dbms_flashback.get_system_change_number current_scn from dual;

CURRENT_SCN

------------------

1941795

SQL> select dbms_flashback.get_system_change_number current_scn from dual;

CURRENT_SCN

------------------

1941797

SQL> select dbms_flashback.get_system_change_number current_scn from dual;

CURRENT_SCN

------------------

1941797

SQL> select dbms_flashback.get_system_change_number current_scn from dual;

CURRENT_SCN

------------------

1941798

SQL> select dbms_flashback.get_system_change_number current_scn from dual;

CURRENT_SCN

------------------

1941799

SQL> select dbms_flashback.get_system_change_number current_scn from dual;

CURRENT_SCN

------------------

1941799

SQL> select dbms_flashback.get_system_change_number current_scn from dual;

CURRENT_SCN

------------------

1941799

SQL> select dbms_flashback.get_system_change_number current_scn from dual;

CURRENT_SCN

------------------

1941800

SQL> select dbms_flashback.get_system_change_number current_scn from dual;

CURRENT_SCN

------------------

1941800

SQL> select dbms_flashback.get_system_change_number current_scn from dual;

CURRENT_SCN

------------------

1941801

SQL> select dbms_flashback.get_system_change_number current_scn from dual;

CURRENT_SCN

------------------

1941801

SQL> select dbms_flashback.get_system_change_number current_scn from dual;

CURRENT_SCN

------------------

1941801

SQL> select dbms_flashback.get_system_change_number current_scn from dual;

CURRENT_SCN

------------------

1941802

SQL> select dbms_flashback.get_system_change_number current_scn from dual;

CURRENT_SCN

------------------

1941802

SQL> select dbms_flashback.get_system_change_number current_scn from dual;

CURRENT_SCN

------------------

1941802

SQL> select dbms_flashback.get_system_change_number current_scn from dual;

CURRENT_SCN

------------------

1941803

SQL> select current_scn from v$database;

CURRENT_SCN

------------------

1941806

SQL> select current_scn from v$database;

CURRENT_SCN

------------------

1941808

SQL> select current_scn from v$database;

CURRENT_SCN

------------------

1941809

SQL> select current_scn from v$database;

CURRENT_SCN

------------------

1941811

SQL> select current_scn from v$database;

CURRENT_SCN

------------------

1941812

SQL> select current_scn from v$database;

CURRENT_SCN

------------------

1941814

SQL> select current_scn from v$database;

CURRENT_SCN

------------------

1941815

SQL> select current_scn from v$database;

CURRENT_SCN

------------------

1941817

我们看到current_scn的查询会直接导致SCN的增进,而其他方式并不会,至少执行两次时不会。也就是说在这里的current_scn就像是一个Sequence一样,查询会导致增进。这也很好理解,v$database只能通过增进当前的SCN才能保证获得的SCN是Current的。可是如果不查询呢?这个值肯定是不会增长的。

这里 和盖国强大师 说点不一样。

有点疑惑?那位朋友能给个解答!先谢谢了。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值