ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 关于rac上sequence的值

关于rac上sequence的值

原创 Linux操作系统 作者:aaqwsh 时间:2011-05-10 16:55:39 0 删除 编辑

racsequence的值可能从不同的人查到的差别很大,重要原因是cache

取一次值就给对应的实例分配了对应的cache size 的值段。

另外一个实例去取就从下一个cache size 的值段开始。

这几天在调整SEQ_TEST_ID就遇到了类似的情况,结果是调整了一个节点的nextval(通过select SEQ_TEST_ID.nextval),

另外一个节点的nextval还很少。如果用暴力一点的方式就不会(alter sequence):

 

以下是测试环境的测试:

1  在节点2操作:

SQL> create sequence SEQ_TEST_ID

  2  minvalue 1

  3  maxvalue 99999999

  4  start with 1

  5  increment by 1

  6  cache 20

  7  cycle;

 

Sequence created.

 

SQL> select SEQ_TEST_ID.nextval from dual;

 

   NEXTVAL

----------

         1

 

SQL> select instance_name from v$instance;

 

INSTANCE_NAME

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

rac2

 

 

2         在节点1操作:

 

SQL> select SEQ_TEST_ID.nextval from dual;

 

   NEXTVAL

----------

        21

 

SQL>

SQL> select instance_name from v$instance;

 

INSTANCE_NAME

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

rac1

 

SQL>

 

3         在节点2操作:

 

 

SQL>  DECLARE

  2       row_num NUMBER := 0;

  3   BEGIN

  4       FOR i IN 1..20 LOOP

  5          select seq_TEST_id.nextval into row_num from dual;

  6       END LOOP;

  7 

  8   END;

  9  /

 

PL/SQL procedure successfully completed.

 

SQL> select SEQ_TEST_ID.nextval from dual;

 

   NEXTVAL

----------

        42

 

SQL>

 

4         在节点1操作:

 

SQL>

SQL> select SEQ_TEST_ID.nextval from dual;

 

   NEXTVAL

----------

        22

 

5         在节点1操作:

 

SQL> alter sequence SEQ_TEST_ID increment by 24 nocache;

select SEQ_TEST_ID.nextval from dual;

 

Sequence altered.

 

SQL>

   NEXTVAL

----------

        84

 

SQL> alter sequence SEQ_TEST_ID increment by 1 cache 20;

 

Sequence altered.

 

SQL>

SQL> select SEQ_TEST_ID.nextval from dual;

 

   NEXTVAL

----------

        85

6         在节点2操作:

SQL> select SEQ_TEST_ID.nextval from dual;

 

   NEXTVAL

----------

       105

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/758322/viewspace-694933/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-11-24

  • 博文量
    132
  • 访问量
    265303