posts - 118,  comments - 87,  trackbacks - 0
Oracle
JDBC事务问题      摘要: 事务,在管理类系统中是一个非常重要的概念和技术点,几乎涉及到数据的业务都会考虑事务的操作性。现在主流的框架中有很多事务管理器已经帮我们做好了底层的支持,我们关心的是业务层面的事务逻辑控制,但很多时候我们也应该清楚事务在jdbc层面控制的思路和原理,这样才能更好的帮助我们来理解它并应用它。例如:为了解决与“多个线程请求相同数据”相关的问题,事务之间用锁相互隔开。多数主流的数据库支持不同类型的锁;因此,JDBC API 支持不同类型的事务,它们由 Connection 对象指派或确定...  阅读全文
posted @ 2008-08-31 21:19 cheng 阅读(41) | 评论 (0)  编辑
PLSQL中显式Cursor、隐式Cursor、动态Ref Cursor      摘要: PLSQL开发过程中,对于集合数据的处理,在sql的批量insert,update,delete操作下,我们还会经常用到游标。
对于游标的用法,用过的朋友都比较熟悉。此文中主要是对其分类以及各自用法做个小结。对于动态游标,静态游标各自的特点以及应用场景以及什么情况下用什么类型游标最优等等话题进行讨论和分析。  阅读全文
posted @ 2008-07-31 19:04 cheng 阅读(142) | 评论 (0)  编辑
PLSQL开发笔记和小结      摘要: wap项目需要和管理平台对接,近期一直在编写接口机存储过程,流程涵盖我们平台的大部分对象(SP,业务,产品,套餐,以及map关系表:产品与套餐,业务与业务类别,业务与栏目,业务类别与栏目等等)。于是趁开发联调完毕之际,总结一下以前写过的过程以及编写过程中需要的一些注意点,同时也参考CSDN上大牛们总结的一些精髓并吸收之,呵。  阅读全文
posted @ 2008-07-19 21:38 cheng 阅读(1335) | 评论 (5)  编辑
使用insert插入大量数据的总结      摘要: 在很多时候,我们会需要对一个表进行插入大量的数据,并且希望在尽可能短的时间内完成该工作,这里,和大家分享下我平时在做大量数据insert的一些经验。
前提:在做insert数据之前,如果是非生产环境,请将表的索引和约束去掉,待insert完成后再建索引和约束。

  阅读全文
posted @ 2008-06-30 21:52 cheng 阅读(234) | 评论 (0)  编辑
DBA在系统设计和开发中的工作范畴      摘要: 许多应用系统的性能并不理想,或者系统数据会出现一些难以重现的奇怪的错误,这些问题(尤其是性能问题)有时并不是在系统初期就会体现出来,但是随着系统的运行、数据的增多而逐步变得难以解决,给系统后期的功能扩展和用户使用上带来了不少麻烦,造成这些问题的原因,往往体现了一点:开发、设计这些系统的人不了解数据库!  阅读全文
posted @ 2008-06-29 08:38 cheng 阅读(112) | 评论 (0)  编辑
Oracle 的SQL*LOADER      摘要: Oracle 的SQL*LOADER可以将外部数据加载到数据库表中。下面是SQL*LOADER的基本特点:
1.1 功能
1)能装入不同数据类型文件及多个数据文件的数据
2)可装入固定格式,自由定界以及可度长格式的数据
3)可以装入二进制,压缩十进制数据
4)一次可对多个表装入数据
5)连接多个物理记录装到一个记录中
6)对一单记录分解再装入到表中  阅读全文
posted @ 2008-05-08 10:41 cheng 阅读(243) | 评论 (0)  编辑
理解需求,搭好框架      摘要: 面对SE下的需求,开发人员将原始需求转换成代码,流程思路每个人都会不一样。在这里谈一下自己在实际开发中遇到的一些问题以及理解体会。
举一例,现在需要编写一程序给外部接口调用,每天定时到指定server端指定path下取生成的文件并解析文件入库。
其中,server端生成的文件中有一个flag节点字段,其中2表示修改,标识此次提供文件中的数据是用来修改库上一次同步(新增flag值为1)入库的信息.
此时很容易想到利用update操作来实现,但有些时候我们用update往往无法达到同步数据的要求,这个时候就要考虑用delete+insert来操作了..  阅读全文
posted @ 2008-04-20 23:06 cheng 阅读(1129) | 评论 (0)  编辑
ORACLE Sequence      摘要: Sequence是数据库系统按照一定规则自动增加的数字序列。这个序列一般作为代理主键(因为不会重复),没有其他任何意义。
Sequence是数据库系统的特性,有的数据库有Sequence,有的没有。比如Oracle、DB2、PostgreSQL数据库有Sequence,MySQL、SQL Server、Sybase等数据库没有Sequence。  阅读全文
posted @ 2008-04-17 19:39 cheng 阅读(518) | 评论 (0)  编辑
Oracle spool 用法小结      摘要: 在oracle中批量数据的导出是借助sqlplus的spool来实现的,spool命令将屏幕缓冲区的内容输出到操作系统文件中,输出的内容以spool开始,以spool off结束。下面介绍一下spool的基本用法。
  阅读全文
posted @ 2008-03-19 19:58 cheng 阅读(3017) | 评论 (3)  编辑
sqlplus命令收集      摘要: Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus命令与sql*plus语句。

我们通常所说的DML、DDL、DCL语句都是sql*plus语句,它们执行完后,都可以保存在一个被称为sql buffer的内存区域中,并且只能保存一条最近执行的sql语句,我们可以对保存在sql buffer中的sql 语句进行修改,然后再次执行,sql*plus一般都与数据库打交道。 除了sql*plus语句,在sql*plus中执行的其它语句我们称之为sql*plus命令。它们执行完后,不保存在sql buffer的内存区域中,它们一般用来对输出的结果进行格式化显示,以便于制作报表。

下面就介绍一下一些常用的sql*plus命令:  阅读全文
posted @ 2008-03-07 17:00 cheng 阅读(284) | 评论 (0)  编辑
批量inset和update的存储过程      摘要: 通过调用该存储过程将v3_sub_1表中的不带86开头的用户号码insert到susr_basic表中生成对应的用户记录,同时要生成对应相同数量的susr_info客户记录,带86开头的号码以及sql异常需要记录log。(期间要利用自定义的v3_sub_2和v3_sub_4做数据缓冲区)

此工具重点在于批量insert语句和批量update语句的递归写法和过程的执行效率的比较上。
经笔者测试:110w的用户号码在PC机上成功导入完毕所花时间约为32min, 相对于用游标来实现的话,此存储过程的执行效率要快一倍以上。
  阅读全文
posted @ 2008-02-03 20:10 cheng 阅读(1492) | 评论 (1)  编辑
Oracle的悲观锁和乐观锁      摘要: 为了得到最大的性能,一般数据库都有并发机制,不过带来的问题就是数据访问的冲突。为了解决这个问题,大多数数据库用的方法就是数据的锁定。
数据的锁定分为两种方法,第一种叫做悲观锁,第二种叫做乐观锁。什么叫悲观锁呢,悲观锁顾名思义,就是对数据的冲突采取一种悲观的态度,也就是说假设...
  阅读全文
posted @ 2008-01-25 15:40 cheng 阅读(506) | 评论 (0)  编辑
Like SQL语句的优化      摘要: Like SQL语句的优化的一点测试
1.尽量不要使用 like '%..%'
2.对于 like '..%..' (不以 % 开头),Oracle可以应用 colunm上的index
3.对于 like '%...' 的 (不以 % 结尾),可以利用reverse + function index 的形式,变化成 like '..%'  阅读全文
posted @ 2008-01-23 15:58 cheng 阅读(352) | 评论 (2)  编辑
ORACLE批量更新三种方法比较      摘要: 昨天在网上看到一篇关于大数据量下的批量update操作的总结文章,写得很好,在此传载,和大家共享下。

在大型的数据库应用中,我们经常会有针对表与表之间的关键建进行字段更新,那么在这个时候,我们就不能写简单的update来实现更新操作,而要针对具体的数据量来进行批量的update,下面几个例子是常用的SQL,将其做个对比,欢迎大家提出更好更高效的SQL实现。  阅读全文
posted @ 2007-12-28 20:11 cheng 阅读(569) | 评论 (0)  编辑
批量记录删除工具(动态SQL运用)      摘要: 需求描述
输入参数:cpid,业务能力
根据用户号码文件把指定sp的业务能力下定购关系删除,不管定购关系处于什么状态。并记录日志,以便以后备查。如果用户信息不存在则不处理。
工具支持aix,linux上的oracle数据库,执行者:运营商管理员。

同时,动态SQL的运用,大大减少了工具的代码量,用动态sql语句代替之前大量的if else判断月份。体会颇深!  阅读全文
posted @ 2007-12-19 15:04 cheng 阅读(1046) | 评论 (0)  编辑
Oracle中的动态SQL      摘要: 一般的PL/SQL程序设计中,在DML和事务控制的语句中可以直接使用SQL,但是DDL语句及系统控制语句却不能在PL/SQL中直接使用,要想实现在PL/SQL中使用DDL语句及系统控制语句,可以通过使用动态SQL来实现。  阅读全文
posted @ 2007-12-17 17:22 cheng 阅读(301) | 评论 (0)  编辑
Oracle的自治事务      摘要: pragma autonomous_transaction

它是一种自治事务AT的标识,AT是由主事务MT调用但是独立于MT的事务,在AT被调用执行时,MT被挂起,在AT内部,一系列的DML可以被执行并且commit或rollback,注意由于AT的独立性,它的commit和rollback并不影响MT的执行效果。在AT执行结束后,主事务获得控制权,又可以继续执行了。  阅读全文
posted @ 2007-12-13 15:07 cheng 阅读(840) | 评论 (0)  编辑
Oracle中的rownum和rowid      摘要: 对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<、<=、!=),并非说用>,>=,=,between..and 时会提示SQL语法错误,而是经常是查不出一条记录来,还会出现似乎是莫名其妙的结果来,其实您只要理解好了这个 rownum 伪列的意义就不应该感到惊奇。

rowid与rownum 虽都被称为伪列,但它们的存在方式是不一样的,rowid 可以说是物理存在的,表示记录在表空间中的唯一位置ID,在DB中是唯一的。只要记录没被搬动过,rowid是不变的。rowid 相对于表来说又像表中的一般列,所以以 rowid 为条件就不会有rownum那些莫名其妙的结果出现。
  阅读全文
posted @ 2007-12-11 19:21 cheng 阅读(646) | 评论 (2)  编辑
Oracle字符集问题      摘要: 对于Oracle字符集问题,出差期间在测试csp项目时候遇到过字符编码的问题.
具体情况:Oracle客户端字符编码与服务器端不一致,导致用PL/SQL连数据库时select表数据出现乱码情况.
部署环境:客户端是windows,其上安装pl/sql,服务器端为suse linux其上部署Oracle服务器端 .
后经过分析,定位到了winwods注册表中的NLS_LANG键值的编码集的原因.
后网上搜寻相关文章,觉得这篇文章写得总结性比较强,于是在此传载,和大家分享下.  阅读全文
posted @ 2007-12-05 19:54 cheng 阅读(494) | 评论 (0)  编辑
Oracle存储过程读写文件      摘要: 我们在写Oralce存储过程时,针对异常情况需要具体跟踪到哪条记录,这里可以采用2种方式.
1.将异常情况insert至指定表中,再查询表信息来跟踪异常.
2.将异常信息写入指定文件中,查看文件来跟踪异常.
对于写文件,则需要注意一些文件的权限以及路径的注册问题.  阅读全文
posted @ 2007-12-04 19:40 cheng 阅读(1451) | 评论 (0)  编辑

Full Oracle Archive

<2008年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

^ ^欢迎光临,本Blog旨在促自己定期进行阶段性总结及博文转贴,有些文章迫于时间因素,先写上大体框架与思路,工作之余会继续补充细化。走过飘过,欢迎大家多踩脚印~~

常用链接

留言簿(3)

随笔分类(123)

随笔档案(118)

强烈推荐

搜索

  •  

最新随笔

最新评论

评论排行榜

60天内阅读排行