[20131121]12c新特性Session sequences.txt

[20131121]12c新特性Session sequences.txt

http://docs.oracle.com/cd/E16655_01/server.121/e17209/statements_6016.htm

SESSION Specify SESSION to create a session sequence, which is a special type of sequence that is specifically designed
to be used with global temporary tables that have session visibility. Unlike the existing regular sequences (referred to
as "global" sequences for the sake of comparison), a session sequence returns a unique range of sequence numbers only
within a session, but not across sessions. Another difference is that session sequences are not persistent. If a session
goes away, so does the state of the session sequences that were accessed during the session.

Session sequences must be created by a read-write database but can be accessed on any read-write or read-only databases
(either a regular database temporarily open read-only or a standby database).

在12c 可以建立sequence为session有效.自己做一个测试.

SQL> @ver

BANNER                                                                               CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production              0

SQL> create sequence seq1 start with 1 increment by 1 session;
Sequence created.

--打开会话1:
SQL> select seq1.nextval from dual connect by level

   NEXTVAL
----------
         1
         2
         3
         4
         5
         6
         7
         8
         9
        10

10 rows selected.

--打开会话2:
SQL> select seq1.nextval from dual connect by level

   NEXTVAL
----------
         1
         2
         3
         4
         5
5 rows selected.

--可以发现仅仅在会话有效.

SQL> create sequence seq2 start with 1 increment by 1 ;
Sequence created.

SQL> column SEQUENCE_NAME format a20
SQL> column SESSION_FLAG format a16

SQL> select * from USER_SEQUENCES;

SEQUENCE_NAME         MIN_VALUE  MAX_VALUE INCREMENT_BY C O CACHE_SIZE LAST_NUMBER PARTITION_COUNT S K
-------------------- ---------- ---------- ------------ - - ---------- ----------- --------------- - -
SEQ1                          1 1.0000E+28            1 N N         20           1                 Y N
SEQ2                          1 1.0000E+28            1 N N         20           1                 N N

SQL> desc USER_SEQUENCES;
Name             Null?    Type
---------------- -------- ------------------
SEQUENCE_NAME    NOT NULL VARCHAR2(128)
MIN_VALUE                 NUMBER
MAX_VALUE                 NUMBER
INCREMENT_BY     NOT NULL NUMBER
CYCLE_FLAG                VARCHAR2(1)
ORDER_FLAG                VARCHAR2(1)
CACHE_SIZE       NOT NULL NUMBER
LAST_NUMBER      NOT NULL NUMBER
PARTITION_COUNT           NUMBER
SESSION_FLAG              VARCHAR2(1)
KEEP_VALUE                VARCHAR2(1)

--通过对比可以发现seq1的SESSION_FLAG=Y.真不知道oracle实现这个主要用途在那里?某个大客户的特殊需求....
--打开新会话,执行:

SQL> select seq1.nextval,seq2.nextval from dual connect by level
..

SQL> select * from USER_SEQUENCES;

SEQUENCE_NAME         MIN_VALUE  MAX_VALUE INCREMENT_BY C O CACHE_SIZE LAST_NUMBER PARTITION_COUNT S K
-------------------- ---------- ---------- ------------ - - ---------- ----------- --------------- - -
SEQ1                          1 1.0000E+28            1 N N         20           1                 Y N
SEQ2                          1 1.0000E+28            1 N N         20          41                 N N

SQL> column audit$ noprint
SQL> select * from SYS.seq$ where obj# in (select object_id from user_objects where OBJECT_TYPE='SEQUENCE');

      OBJ# INCREMENT$   MINVALUE   MAXVALUE     CYCLE#     ORDER$      CACHE  HIGHWATER      FLAGS  PARTCOUNT
---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
     91988          1          1 1.0000E+28          0          0         20         41          8          0
     91986          1          1 1.0000E+28          0          0         20          1         72          0

--可以发现seq1的session sequence 最后的值LAST_NUMBER并没有变化.

--做一个简单的跟踪看看.

SQL> @10046on 12
old   1: alter session set events '10046 trace name context forever, level &1'
new   1: alter session set events '10046 trace name context forever, level 12'

Session altered.

SQL> select seq1.nextval from dual connect by level
...

SQL> @10046off
Session altered.

$ /home/oracle11g/bin/trimsql.sh a.trc
0001 0 #409596424>>>> select seq1.nextval from dual connect by level
0002 0 #409591896>>>> alter session set events '10046 trace name context off'

-- 看不出任何递归调用.
-- trimsql.sh 可以参考链接:
http://space.itpub.net/267265/viewspace-775398/

时间: 2024-09-20 16:30:27

[20131121]12c新特性Session sequences.txt的相关文章

[20130808]12c新特性Temporary undo.txt

[20130808]12c新特性Temporary undo.txt 12C提供特性临时表执行dml时生成的undo保存在临时表空间,这个特性叫Temporary Undo,由数据库参数temp_undo_enabled控制,有两个优点:     1.很明显减少redo在临时表做dml操作时.    2.允许在physical standby database上对临时表执行dml操作.(没有环境无法测试) 测试: SQL> @ver BANNER                         

[20140108]12c新特性_Statistics Feedback.txt

[20140108]12c新特性_Statistics Feedback.txt 摘自:Apress.Pro.Oracle.SQL.2nd.Edition.Nov.2013.pdf Statistics feedback, known as cardinality feedback prior to Oracle 12c, is a mechanism used by the optimizer to improve automatically plans' repeated query exe

[20140218]12c 新特性heat map.txt

[20140218]12c 新特性heat map.txt 12c 新特性,可以记录那些对象经常使用. 它可以在session或者system打开,不过我的测试好像在cdb数据库无效. SCOTT@ztest> @ver BANNER                                                                               CON_ID -----------------------------------------------

[20130915]12c新特性 varchar2支持32K长度.txt

[20130915]12c新特性 varchar2支持32K长度.txt oracle 12c以前如果字符串长度超过4000,必须使用blob或者clob类型.12c开始支持超过4000的字符串长度,提高一些应用的灵活性,达到32K,避免一些字段定义为clob,blob类型,提高处理能力. 但是12c默认的方式不支持大于4000的字符串长度,必须经过一些步骤升级完成,自己测试如下: SYS@test> @ver BANNER                                    

[20131212]12c新特性建表 属性DEFAULT ON NULL.txt

[20131212]12c新特性建表 属性DEFAULT ON NULL.txt 在12c上建立表可以让插入NULL等于某个特定的值.举一个例子: SCOTT@ztest> @verBANNER                                                                               CON_ID--------------------------------------------------------------------

《Oracle数据库管理与维护实战》——1.3 Oracle 12c新特性

1.3 Oracle 12c新特性 Oracle数据库管理与维护实战 纵观甲骨文全球大会和甲骨文公司的各种资讯,我们可以发现云计算和大数据是两个重要的主题,Oracle 12c则融合了这两大主题.与以往的Oracle数据库相比,Oracle 12c在16个方面进行了更新.本节将详细介绍Oracle 12c数据库中的16个新特性. 1.3.1 支持多线程模式 在Oracle 12c中,Oracle引入了多线程模式,允许在Windows平台之外的UNIX.Linux等系统使用多线程模式.结合多进程与

12c新特性:Last Successful login time

[20150920]12c新特性:Last Successful login time.txt --12c有一个新特性,就是使用sqlplus登录时,会提示最后成功的登录时间.Last Successful login time. --起始这个不算什么特性,我个人想了解这个时间是从那里得来的. sqlplus scott/xxxxxx@test01p SQL*Plus: Release 12.1.0.1.0 Production on Sun Sep 20 17:54:37 2015 Copyr

软件大会分享PPT:面向开发和DBA的Oracle 12c新特性

在2016年12月10日的『中国软件大会上』,我分享了一个主题:<面向开发人员和DBA的Oracle 12c新特性>,从安全的主题开始,以在线变更为主线,分享了Oracle 12c的一些新特性,尤其是12.2的部分新特性. 在这个主题中,12.2 的 lockdown profile 成为我的出发点,通过这一新的安全机制,Oracle 12c 的PDB权限得以被限制,可以防范PDB的高权限操作对全局产生影响. 而在12.2中PDB的Clone,可以在线进行,这是较12.1的又一大进步: Ora

ORACLE 12C新特性——CDB与PDB

Oracle 12C引入了CDB与PDB的新特性,在ORACLE 12C数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB).CDB全称为Container Database,中文翻译为数据库容器,PDB全称为Pluggable Database,即可插拔数据库.在ORACLE 12C之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载.而实例与数据库不可