oracle 开发设计一些规范经验
1 设计表过程中 尽量采用数据驱动思想
比如说用户注册 因为业务情况 需要4个字段不同组合来表示用户从哪里注册的。 业务部需要不断扩展新的渠道来招揽用户,比如在某个网站做了广告。而不能在业务程序或存储过程直接修改
update f_userinfo
set f_regchannel='新浪首页广告注册'
where f_regurl='http://www.sina.com.cn' and f_come='index.html' and f_cooper=7
直接做到业务配置表 己所谓的基础表。 f_id,f_regchannel,f_regurl,f_come,f_cooper,f_channel.
在过程中采用游标逐行读取,组合成动态SQL。
2 存储过程或者业务端逻辑程序 不能在代码中含有固定的 数值,字符,时间等条件。
比如说 where name='shark' and money=10000 这两个值应该存在配置表中。
我们有很多理由来推脱,比如开发项目时候需求做的不够;项目时间太紧了;业务不断变化;没有测试部门。
假如上面的条件 写成 这样 where name='shak'。
当用户提出数据有问题,你去查发现数据少了几条,你增量跑数据,再次全量跑数据。发现还是少了!
花费很大的时间,精力发现问题所在,免费加班加点哦! 还挨上司的骂,被用户投诉。
就这个少写了r ,这个理由能推脱给其他人吗?
3 数据库所有的字段的值 要么全大写,要么全小写,去空格。 同上面的一样 细节问题。如果大小写混乱会对应用带来很多麻烦事。
4 所有表应该尾加 插入时间和更新时间字段。为的是程序能根据这两个字段来增量查询。
5 所有过程 要么全大写,要么全小写,采用一样的风格。不建议采用TOAD,PL/SQL DEVELOPER 自动风格。同一风格有利阅读。
select to_char(f_regtime,'yyyy-mm-dd'),count(f_username)
from t_userinfo t
where f_regtime > to_date('2010-04-26','yyyy-mm-dd')
and f_regtime < TRUNC (SYSDATE, 'D') + 1
group by to_char(f_regtime,'yyyy-mm-dd')
order by to_char(f_regtime,'yyyy-mm-dd')
相关文档:
应用数据库中记录中date列莫名其妙的出现了几个值为0000-00-00的数据。
更可怕的是如果将这样的记录进行读取成为varchar2后再to_date转换回去就会报错。
问题无从查起,只说一下最终同事搜索到的连接结果:http://www.hellodba.com/Doc/oracle_date_zero_bug.htm
看来的确是oracle的一个bug。
另外需要注意的是,在使用 ......
Oracle中的to_date()函数
to_date()与24小时制表示法及mm分钟的显示:
一、在使用Oracle的to_date函数来做日期转换时,很多Java程序员也许会直接的采用“yyyy-MM-dd HH:mm:ss”的格式作为格式进行转换,但是在Oracle中会引起错误:“ORA 01810 格式代码出现
&nbs ......
1. Oracle内存结构简介
Oracle在内存中存储以下信息:
。程序代码
。以连接的会话信息,包括当前活动的及非活动的会话
。程序执行过程中所需的信息
。需要在Oracle进程间共享并进行通信的的信息
。数据文件内数据的缓存(如数据块及重做日志条目)
Oracle 中的基本内存结构包括:
。系统全局区(SGA):此区域由所有的 ......
第一章:日志管理
1.forcing log switches
sql> alter system switch logfile;
2.forcing checkpoints
sql> alter system checkpoint;
3.adding online redo log groups
sql> alter database add logfile [group 4]
sql> ('/disk3/log4a.rdo','/disk4/log4b.rdo') size 1m;
4.adding online re ......
指标名称
指标描述
指标范围
指标单位
1.关于实例效率(Instance Efficiency Percentages)的性能指标
缓冲区未等待率
(Buffer Nowait %)
指在缓冲区中获取Buffer的未等待比率。
该指标的值应接近100%,如果该值较低,则可能要增大buffer cache。
%
Redo缓冲区未等待 ......