关于Oracle 数据库中的sequence

dba_sequences.last_number:
无cache时,取一次nextval,last_number递增一次
有cache时, 若在cache之内的取一次nextval,last_number不变
           若在cache之外的取一次nextval, last_number=last_number+cache值


dba_sequences.last_number未必是该sequence的下一个值,这其中一个原因是该sequence有cache

若是该sequence没有cache,那么dba_sequences.last_number是该sequence的下一个值

 

F:\oracle\product\10.2.0\db_1\BIN>sqlplus / as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Sat Apr 30 16:01:14 2016

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

16:01:15 sys@FS> create sequence scott.seq_tmp_1 start with 1 increment by 1 max
value 99999999 nocycle cache 10 order;

Sequence created.

Elapsed: 00:00:00.00
16:01:17 sys@FS> select SEQUENCE_NAME,LAST_NUMBER from dba_sequences where seque
nce_name='SEQ_TMP_1';

SEQUENCE_NAME                  LAST_NUMBER
------------------------------ -----------
SEQ_TMP_1                                1

Elapsed: 00:00:00.00
16:02:15 sys@FS> select scott.seq_tmp_1.currval from dual;
select scott.seq_tmp_1.currval from dual
             *
ERROR at line 1:
ORA-08002: sequence SEQ_TMP_1.CURRVAL is not yet defined in this session


Elapsed: 00:00:00.02
16:02:21 sys@FS> select scott.seq_tmp_1.nextval from dual;

   NEXTVAL
----------
         1

Elapsed: 00:00:00.00
16:02:52 sys@FS> select scott.seq_tmp_1.currval from dual;

   CURRVAL
----------
         1

Elapsed: 00:00:00.00
16:02:56 sys@FS>
16:02:57 sys@FS>
16:02:58 sys@FS>
16:02:58 sys@FS>
16:02:58 sys@FS>
16:02:58 sys@FS> select SEQUENCE_NAME,LAST_NUMBER from dba_sequences where seque
nce_name='SEQ_TMP_1';

SEQUENCE_NAME                  LAST_NUMBER
------------------------------ -----------
SEQ_TMP_1                               11

Elapsed: 00:00:00.01
16:03:00 sys@FS> select scott.seq_tmp_1.nextval from dual;

   NEXTVAL
----------
         2

Elapsed: 00:00:00.00
16:03:08 sys@FS> select scott.seq_tmp_1.currval from dual;

   CURRVAL
----------
         2

Elapsed: 00:00:00.00
16:03:11 sys@FS> select SEQUENCE_NAME,LAST_NUMBER from dba_sequences where seque
nce_name='SEQ_TMP_1';

SEQUENCE_NAME                  LAST_NUMBER
------------------------------ -----------
SEQ_TMP_1                               11

Elapsed: 00:00:00.00
16:03:26 sys@FS>


ORACLE数据库的系统参数都存储在数据库,可以通过SQLPLUS,以用户SYSYTEM进行查询。几个重要的表或者视图如下: v$controlfile:控制文件的信息; v$datafile:数据文件的信息; v$log:日志文件的信息; v$process:处理器的信息; v$session:会话信息; v$transaction:事务信息; v$resource:资源信息; v$sga:系统全局区的信息。 上面的视图名的‘v$’,只是视图名字的字符。类似于上面的视图或表还有很多,位于: $ORACLE_HOME/RDBMS/ADMIN/CATALOG.SQL文件。 这些视图或表可以在SQLPLUS用SELECT语句进行查询。 2.数据字典视图 表和列 DBA_TABLES、ALL_TABLES和USER_TABLES显示了有关数据库表的一般信息。 DBA_TAB_COLUMNS、ALL_TAB_COLUMNS和USER_TAB_COLUMNS显示了每个数据库表的列的信息。 注意:DBA_OBJECTS、ALL_OBJECTS和USER_OBJECTS显示了模式对象的信息,包括表。 完整性约束 DBA_CONSTRAINTS、ALL_CONSTRAINTS和USER_CONSTRAINST显示有关约束的一般信息。 DBA_CONS_COLUMNS、ALL_CONS_COLUMNS和USER_CONS_COLUMNS显示有关列的相关约束的一般信息。 视图 DBA_VIEWS、ALL_VIEWS和USER_VIEWS。 注意:DBA_OBJECTS、ALL_OBJECTS和USER_OBJECTS显示了模式对象的信息,包括视图。 序列 DBA_SEQUENCES、ALL_SEQUENCES和USER_SEQUENCES。 注意:DBA_OBJECTS、ALL_OBJECTS和USER_OBJECTS显示了模式对象的信息,包括序列。 同义词 DBA_SYNONYMS、ALL_SYNONYMS和USER_SYNONYMS。 注意:DBA_OBJECTS、ALL_OBJECTS和USER_OBJECTS显示了模式对象的信息,包括同义词。 索引 DBA_INDEXS、ALL_INDEXS、USER_INDEXS、DBA_IND_COLUMNS、ALL_IND_COLUMNS和USER_IND_COLUMNS。 用户 DBA_USERS。 角色 DBA_ROLES。 表空间定额 DBA_TS_QUOTAS。 配置表 DBA_PROFILES。 表空间 DBA_TABLESPACES。 数据文件 DBA_DATA_FILES。 段 DBA_SEGMENTS、USER_SEGMENT。 回滚段 DBA_ROLLBACK_SEGS、V$ROLLNAME、V$ROLLSTAT。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值