定义Sequence时,如果使用缓存,在数据库关闭或者宕掉时,将出现Sequence跳号。
要解决ADF程序中的sequence断号,首先要确保Oracle数据库中不产生断号。1,对于非频繁使用的Sequence,可以在定义中加NOCACHE,即不缓存。这样数据库中不会出现断号了。2,对于频繁使用的Sequence,定义的时候又使用了CACHE。可以使用DBMS_SHARED_POOL来KEEP SEQUENCE的CACHE。命令如下:
- exec dbms_shared_pool.keep(name => "myseq", flag => "Q")
测试:1)未设置DBMS_SHARED_POOL
- SQL> create sequence myseq cache 100;
-
- 序列已创建。
-
- SQL> select myseq.nextval from dual;
-
- NEXTVAL
- ----------
- 1
-
- SQL> conn / as sysdba
- 已连接。
-
- SQL> alter system flush shared_pool;
-
- 系统已更改。
-
- SQL> conn hr/hr
- 已连接。
-
- SQL> select myseq.nextval from dual;
-
- NEXTVAL
- ----------
- 101
2)设置DBMS_SHARED_POOL
- SQL> conn / as sysdba
- 已连接。
-
- SQL> exec dbms_shared_pool.keep(name => "hr.myseq",flag => "Q");
-
- PL/SQL 过程已成功完成。
-
- SQL> alter system flush shared_pool;
-
- 系统已更改。
-
- SQL> conn hr/hr
- 已连接。
- SQL> select myseq.nextval from dual;
-
- NEXTVAL
- ----------
- 102
3,为了避免ADF应用程序中不断点击新增按钮产生的Sequence断号,可以使用定义字段类型为DBSequence并结合Trigger的技巧。ADF中使用DBSequence的方法可参考我的另一篇文章:ADF 中使用Sequence的方法总结 http://www.linuxidc.com/Linux/2011-11/46775.htmMySQL数据库备份和还原Oracle入门教程:ADF 中使用Sequence的方法总结相关资讯 Oracle数据库 Oracle入门教程 oracle数据库教程
- Oracle数据库全球化 (03月01日)
- Oracle数据库日期过滤方法性能比较 (02/02/2015 13:20:26)
- Oracle数据库安装中端口被占用问题 (10/29/2014 07:42:24)
| - 在CentOS 6.6上搭建C++运行环境并 (10/10/2015 19:44:40)
- Oracle数据库无法使用localhost和 (11/14/2014 16:39:10)
- 使用SQLT来构建Oracle测试用例 (08/28/2014 06:17:41)
|
本文评论 查看全部评论 (0)