重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1253|回复: 0
打印 上一主题 下一主题

[Oracle] 数据库序列间断场景

[复制链接]
跳转到指定楼层
楼主
发表于 2022-9-6 09:30:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
文档课题:模拟数据库序列间断场景.
1、概念
Gaps insequence values can occur when:
aArollback occurs  应用出现回滚,但序列不会回滚
bThesystem crashes
cAsequence is used in another table
2、实际操作

2.1、系统crash
SQL>select sequence_name,increment_by,cache_size,last_number,scale_flag,extend_flagfrom user_sequences;
SEQUENCE_NAME                  INCREMENT_BY CACHE_SIZELAST_NUMBER S E
------------------------------------------ ---------- ----------- - -
DEPARTMENTS_SEQ                          10          0         280 N N
DEPT_DEPTID_SEQ                          10          0         340 Y Y
DEPT_DEPTID_SEQ1                         10          0         300 N N
EMPLOYEES_SEQ                             1          0         207 N N
LOCATIONS_SEQ                           100          0        3300 N N
SEQ_DEPT_DEPTID                          10          0         350 Y Y
SEQ_DEPT_DEPTID1                         10         10         710 N N
7 rowsselected.
SQL>select seq_dept_deptid1.nextval from dual;
   NEXTVAL
----------
       620
[oracle@dbserver~]$ ps -ef|grep ora_smon
oracle      3925      1  0 10:56 ?        00:00:01 ora_smon_orclcdb
oracle     12144   8251  0 18:28 pts/1    00:00:00 grep --color=auto ora_smon
[oracle@dbserver~]$ kill -9 3925
[oracle@dbserver~]$ ps -ef |grep ora_smon
oracle     12240      1  0 18:28 ?        00:00:00 ora_smon_orclcdb
oracle     12348   8251  0 18:28 pts/1    00:00:00 grep --color=auto ora_smon
说明:此处还能看到orclcdb进程,是因为GI自动开启数据库进程.
SQL>conn / as sysdba
Connected.
SQL>alter pluggable database orclpdb open;
Pluggabledatabase altered.
SQL>conn ora1/ora1@orclpdb
Connected.
SQL>select seq_dept_deptid1.nextval from dual;
   NEXTVAL
----------
       710  
说明:值从620变更为710,所以数据库一旦crash,内存的数据就丢失.
2.2rollback
SQL>create sequence id_seq start with 1;
Sequencecreated.
SQL>create table emp (id number default id_seq.nextval not null,
  2                    name varchar2(10));
SQL>insert into emp (name) values ('john');
1 rowcreated.
SQL>insert into emp(name) values('mark');
1 rowcreated.
SQL>commit;
Commitcomplete.
SQL>select * from emp;
        ID NAME
------------------------------
         1 john
         2 mark
SQL>select id_seq.nextval from dual;
   NEXTVAL
----------
         3
SQL>insert into emp (name) values ('jack');
1 rowcreated.
SQL>select * from emp;
        ID NAME
------------------------------
         1 john
         2 mark
         4 jack
SQL>rollback;
Rollbackcomplete.
SQL> select* from emp;
        ID NAME
------------------------------
         1 john
         2 mark
SQL>insert into emp (name) values('jessie');
1 rowcreated.
SQL>commit;
Commitcomplete.
SQL>select * from emp;
        ID NAME
------------------------------
         1 john
         2 mark
         5 jessie
结果:序列ID出现间断.
2.3anothertable
SQL>create table emp (id number default id_seq.nextval not null,
  2                    name varchar2(10));
SQL>insert into emp (name) values ('john');
SQL>insert into emp (name) values ('jack');
1 rowcreated.
SQL>insert into emp (name) values ('jessie');
1 rowcreated.
SQL>commit;
Commitcomplete.
SQL>select * from emp;
        ID NAME
--------------------
         1 jack
         2 jessie
SQL>create table emp01 (empid number default id_seq.nextval not null,
  2                      name varchar2(20));
Tablecreated.
SQL>insert into emp01(name) values ('cherry');
1 rowcreated.
SQL>commit;
Commitcomplete.
SQL>select * from emp01;
     EMPID NAME
------------------------------
         3 cherry
SQL>insert into emp(name) values ('jeff');
1 rowcreated.
SQL>commit;
Commitcomplete.
SQL>select * from emp;
        ID NAME
--------------------
         1 jack
         2 jessie
         4 jeff
结论:表emp序列ID出现间断.



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-11-25 19:30 , Processed in 0.112469 second(s), 21 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表