Orcle 12c DG 新特性---Active Data Guard Support for Sequences
作者:
Expect-乐
1 说明
从12c开始,Oracle Active Data Guard支持序列,备库通过临时表可以使用主库创建的序列。序列也可以创建为会话级别的序列。
2 实验-DG使用CACHE序列
CACHE的作用就是存入缓存中序列值的个数。
2.1 主库创建临时表和序列
SQL> CREATE GLOBAL TEMPORARY TABLE gtt (a int);
Table created.
SQL> CREATE SEQUENCE g CACHE 10;
Sequence created.
2.2 备库上向临时表插入序列值
SQL> INSERT INTO gtt VALUES (g.NEXTVAL);
1 row created.
SQL> INSERT INTO gtt VALUES (g.NEXTVAL);
1 row created.
SQL> SELECT * FROM gtt;
A
----------
1
2
可以看到插入没有问题,且序列按顺序插入。
2.3 主库查询序列值
SQL> SELECT g.NEXTVAL FROM dual;
NEXTVAL
----------
11
SQL> SELECT g.NEXTVAL FROM dual;
NEXTVAL
----------
12
可以看到从11开始了,这就是CACHE 10的作用。如果要是有第二个备库,那么第二个备库的该序列的值会从21开始。
3 实验-会话级别序列
会话级别序列,新会话都会从序列的开始重新使用该序列,而不管另一个会话已经使用了多少个序列值。
3.1 主库创建会话级别序列
SQL> CREATE SEQUENCE sess_seq SESSION;
Sequence created.
--可以通过ALTER SEQUENCE....BLOBAL|SESSION来修改序列类型。GLOBAL为常规的序列。
3.2 备库使用该序列
SQL> insert into gtt values(sess_seq.NEXTVAL);
1 row created.
SQL> insert into gtt values(sess_seq.NEXTVAL);
1 row created.
SQL> SELECT * FROM gtt;
A
----------
1
2
3.3 另一个会话使用该序列
SQL> conn lei/lei@sihong
Connected.
SQL> select * from gtt;
no rows selected
SQL> insert into gtt values(sess_seq.NEXTVAL);
1 row created.
SQL> insert into gtt values(sess_seq.NEXTVAL);
1 row created.
SQL> select * from gtt;
A
----------
1
2
可以看到,序列被初始化了,从1开始重新使用。
版权声明:本文为博主原创文章,未经博主允许不得转载。
Active Data Guard Support for Sequences