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')
相关文档:
Logminer是oracle从8i开始提供的用于分析重做日志信息的工具,它包括DBMS_LOGMNR和DBMS_LOGMNR_D两个package,后边的D是字典的意思。它既能分析redo log file,也能分析归档后的archive log file。在分析日志的过程中需要使用数据字典,一般先生成数据字典文件后使用,10g以后的版本还可以使用在线数据字典。
Logminer可以 ......
在使用Oracle Instance Manager创建一数据库实例的时侯,在ORACLE_HOME\DATABASE目录下还自动创建了一个与之对应的密码文件,文件名为PWDSID.ORA,其中SID代表相应的Oracle数据库系统标识符。此密码文件是进行初始数据库管理工作的基础。在此之后,管理员也可以根据需要,使用工具ORAPWD.EXE手工创建密码文件,命令格式 ......
-- Drop existing database link drop database link DL_name
-- Create database link create database link DL_name connect to username identified by userpwd using '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=ipaddress)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=service_name)))'; ......
用jpa不能建表,sql语句是对的,不过就是不能建,同样的sql,在下面的jdbc中就可以,可能是框架的限制,希望高人指点
import java.net.URL;
import java.sql.*;
public class Create {
public Create() {
}
public static void main(String[] args){
String url = "jdbc:oracle:thin:@10.0.1.3:1521:SDCDB" ......
SELECT...FOR UPDATE 语句的语法如下:
SELECT ... FOR UPDATE [OF column_list][WAIT n|NOWAIT][SKIP LOCKED];
其中:
OF 子句用于指定即将更新的列,即锁定行上的特定列。
WAIT 子句指定等待其他用户释放锁的秒数,防止无限期的等待。
“使用FOR UPDATE WAIT&rd ......