Welcome 微信登录

首页 / 数据库 / MySQL / Oracle入门教程:ADF中解决sequence断号问题

定义Sequence时,如果使用缓存,在数据库关闭或者宕掉时,将出现Sequence跳号。
要解决ADF程序中的sequence断号,首先要确保Oracle数据库中不产生断号。1,对于非频繁使用的Sequence,可以在定义中加NOCACHE,即不缓存。这样数据库中不会出现断号了。2,对于频繁使用的Sequence,定义的时候又使用了CACHE。可以使用DBMS_SHARED_POOL来KEEP SEQUENCE的CACHE。命令如下:
  1. exec dbms_shared_pool.keep(name => "myseq", flag => "Q")  
测试:1)未设置DBMS_SHARED_POOL
  1. SQL> create sequence myseq cache 100;  
  2.   
  3. 序列已创建。  
  4.   
  5. SQL> select myseq.nextval from dual;  
  6.   
  7.    NEXTVAL  
  8. ----------   
  9.          1  
  10.            
  11. SQL> conn / as sysdba  
  12. 已连接。  
  13.   
  14. SQL> alter system flush shared_pool;  
  15.   
  16. 系统已更改。  
  17.   
  18. SQL> conn hr/hr  
  19. 已连接。  
  20.   
  21. SQL> select myseq.nextval from dual;  
  22.   
  23.    NEXTVAL  
  24. ----------   
  25.        101  
2)设置DBMS_SHARED_POOL
  1. SQL> conn / as sysdba  
  2. 已连接。  
  3.   
  4. SQL> exec dbms_shared_pool.keep(name => "hr.myseq",flag => "Q");  
  5.   
  6. PL/SQL 过程已成功完成。  
  7.   
  8. SQL>  alter system flush shared_pool;  
  9.   
  10. 系统已更改。  
  11.   
  12. SQL> conn hr/hr  
  13. 已连接。  
  14. SQL> select myseq.nextval from dual;  
  15.   
  16.    NEXTVAL  
  17. ----------   
  18.        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)
表情: 姓名: 字数