Oracle数据库开发规范
Oracle数据库设计规范建议

Oracle数据库1 数据对象的命名规范1.1 通用规范1.1.1 使用英文:要用简单明了的英文单词,不要用拼音,特别是拼音缩写。
主要目的很明确,让人容易明白这个对象是做什么用的;1.1.2 一律大写,特别是表名:有些数据库,表的命名乃至其他数据对象的命名是大小写敏感的,为了避免不必要的麻烦,并且尊重通常的习惯,最好一律用大写;1.2 数据库对象命名规范1.2.1 表的命名1.2.1.1 表名的前缀:前缀_表名_T。
为表的名称增加一个或者多个前缀,前缀名不要太长,可以用缩写,最好用下划线与后面的单词分开;其目的有这样几个:1.2.1.1.1 为了不与其他项目或者其他系统、子系统的表重名;1.2.1.1.2 表示某种从属关系,比如表明是属于某个子系统、某个模块或者某个项目等等。
表示这种从属关系的一个主要目的是,从表名能够大概知道如何去找相关的人员。
比如以子系统为前缀的,当看到这个表的时候,就知道有问题可以去找该子系统的开发和使用人员;1.2.2 视图命名:相关表名_V(或者根据需要另取名字);1.2.3 程序包命名:程序包名_PKG(用英文表达程序包意义);1.2.4 存储过程命名:存储过程名_PRO(用英文表达存储过程意义);1.2.5 函数命名:函数名称_FUN(用英文表达函数作用);1.2.6 触发器命名:触发器名称_TRI(用英文表达触发器作用);1.2.7 索引命名:表名_字段名_IDX(如果存在多字段索引,取每字段前三个字符加下划线组合,如在 custom, cutting, curtail 上建立联合索引,命名为表名_cus_cut_cur_IDX,如果前三个截取字符相同,就从字段名称中不同的字符开始取三个字符加下划线组合,如在 custid, custom,custname上建立联合索引,就命名为表_tid_tom_tna_IDX;1.2.8 唯一索引命名:表名_字段名_UNI(如果存在多字段唯一索引,取每字段前三个字符加下划线组合,如在 custom, cutting, curtail上建立唯一索引,命名为表名_ cus_cut_cur_UNI,如果前三个截取字符相同,就从字段名称中不同的字符开始取三个字符加下划线组合,如:在 custid, custom,custname上建立唯一索引,命名:表_tid_tom_tna_UNI;1.2.9 主键命名:表名_字段名_PK(如果存在多字段主键,取每字段前三个字符加下划线组合,如在 custom, cutting, curtail上建立主键,命名为表名_cus_cut_cur_PK,如果前三个截取字符相同,就从字段名称中不同的字符开始取三个字符加下划线组合,如在 custid, custom,custname上建立主键,命名:表_tid_tom_tna_PK;1.2.10 外键命名:表名_主表名_字段名_FK;1.2.11 Sequence命名:表名_列名_SEQ(或者根据需要另取名字);1.2.12 Synonym命名:与对应的数据库对象同名;1.2.12 JAVA命名:遵守公司相应的JAVA命名规范;2 SQL的设计和使用2.1 Sql 书写规范2.1.1 尽量不要写复杂的SQL:过于复杂的S QL可以用存储过程或函数来代替,效率更高;甚至如果能保证不造成瓶颈的话,把条SQL拆成多条也是可以的。
(完整版)Oracle数据库规划设计和运行维护方案

Oracle数据库规划设计和运行维护方案(V1。
0)目录1。
前言 (6)1。
1. 编写目的 (6)1。
2。
方案说明 (6)1.3. 预期读者 (7)2。
数据库部署模式 (7)2.1. 单机模式 (7)2.2. 双机热备模式(HA模式) (8)2.3。
集群模式(RAC) (9)2。
4. 主从模式(DataGuard) (10)2.5。
混合模式(DataGrard+RAC) (10)2。
6。
数据库运行模式选择 (11)3。
系统特点和数据库类型 (11)3。
1。
业务系统的特点 (11)3。
1.1。
OLTP特点 (12)3.1.2。
OLAP特点 (13)3。
2。
数据库的规模 (13)3.3。
数据库版本建议 (13)4. 数据库运行环境规划 (14)4.1。
主机规划 (14)4。
2. 网络规划 (15)4.3. 存储规划 (17)5。
数据库安装部署规划 (19)5.1。
软件安装路径 (19)5。
2. 表空间设计 (19)5.2.1. 业务数据量估算 (19)5。
2。
2。
表空间使用规则 (21)5.2.3。
表空间的概念和分配原则 (25)5。
2.4。
表空间的参数配置 (26)5.2。
5. Undo/temp表空间的估算 (30)5.2。
6. 表的参数设置 (30)5.2。
7. 索引的使用原则 (31)5。
3. 文件设计 (32)5.3。
1. RAC配置文件 (32)5.3。
2. 参数文件 (33)5。
3。
3. 控制文件 (34)5。
3.4。
重做日志文件 (35)6。
数据库应用规划 (37)6。
1。
数据库用户设计 (37)6。
1。
1。
用户权限规划 (37)6.1.2。
用户安全实现 (39)6。
1。
3. 用户类型及角色命名规范 (41)6.2. 数据库分区 (44)6.2。
1. 数据库分区介绍 (44)6。
2.3. 物理分割 (45)6。
2。
4. 数据分区的优点 (45)6.2.5. 数据分区的不足 (45)6.2。
数据库开发安全规范

数据库开发安全规范1. 密码安全- 使用强密码:密码应包含大小写字母、数字和特殊字符,并且长度应不少于8位。
- 定期更换密码:为了保持数据库的安全性,管理员应定期更换数据库密码。
- 不保存明文密码:开发人员不得将用户密码以明文形式存储在数据库中。
2. 数据备份和恢复- 定期备份数据:管理员应定期备份数据库中的重要数据,以防止数据丢失或损坏。
- 离线备份:备份数据应存储在不同物理位置的离线设备上,以防止数据丢失或被未经授权的访问者篡改。
- 定期测试数据恢复:管理员应定期测试数据库备份的可恢复性,以确保在发生数据丢失时能够快速进行恢复操作。
3. 访问控制- 最小权限原则:管理员应为开发人员分配最小必要权限,以降低数据泄露和滥用的风险。
- 严格权限控制:数据库用户应仅被授予其工作所需的权限,以防止未经授权的访问和数据泄露。
- 监控和审计:管理员应实施日志监控和审计机制,以便及时检测和响应异常访问行为。
4. 网络安全- 防火墙配置:数据库服务器应配置防火墙,限制从外部网络访问数据库的连接。
- 加密通信:数据库的网络通信应使用加密协议,如SSL/TLS,以确保数据在传输过程中的安全性。
- 远程访问限制:禁止未经授权的远程访问数据库,仅允许经过身份验证的用户进行远程访问。
5. 安全审计- 定期安全审计:管理员应定期进行数据库安全审计,包括检查权限配置、访问日志、异常行为等,以发现潜在的安全隐患。
- 及时处理安全漏洞:一旦发现数据库安全漏洞,管理员应立即采取措施进行修复,以防止被黑客利用。
以上是数据库开发安全规范的主要内容。
管理员和开发人员应严格遵守这些规范,以保护数据库中的数据安全和用户隐私。
oracle数据库开发规范

编程规范1:所有数据库关键字和保留字都大写;字段、变量的大小写2:程序块采用缩进风格书写,保证代码清晰易读,风格一致,缩进格数统一为2/4个。
必须使用空格,不允许使用【tab】键。
3:当同一条语句暂用多于一行时,每行的其他关键字与第一行的关键字进行右对齐。
4:不允许多个语句写到一行,即一行只写一条语句。
5:避免把复杂的SQL语句写到同一行,建议要在关键字和谓词处换行。
6:相对独立的程序块之间必须加空行。
BEGIN、END独立成行。
7:太长的表达式应在低优先级操作符处换行,操作符或关键字应放在新行之首。
不同类型的操作符混合使用时,用括号隔离,使得代码清晰。
8: 不同类型的操作符混合使用时,应使用括号明确的表达运算的先后关系。
9:运算符以及比较符左边或者右边只要不是链接的括弧,则空一格。
10:if 后的条件要用括号括起来,括号内每行最多两个条件。
11:减少控制语句的检查次数,如在else( if..else)控制语句中,对最常用符合条件,尽量往前被检查到。
尽量避免使用嵌套的if 语句,在这种情况应使用多个if 语句来判断其可能。
命名规范1:不使用数据库关键字和保留字,为了避免不必要的冲突和麻烦。
2:严禁使用带空格的名称来给字段和表命名,会出错误而终止。
3:用户自定义数据库对象:表,视图,主外键,索引,触发器,函数,存储过程,序列,同义词,数据库连接,包,包体风格要保持一致。
数据库名称1-8个字符,其他对象1-30个字符,数据库连接不操过30个字符。
使用英文字母、数字、下划线。
除表外,其他对象命名最好用不同的前缀来区别。
表tbl_/t_视图v_序列seq_簇c_触发器trg_存储过程sp_/p_函数f_/fn_物化视图mv_包和包体pkg_类和类体typ_主键pk_外键fk_唯一索引uk_普通索引idx_位图索引bk_4:PL/SQL对象和变量命名规则输入变量i_输出变量o_输入输出变量io_普通变量v_全局变量gv_常量大写游标cur_用户自定义类型type_保存点spt_不允许使用中文和特殊字符用户对象命名应全部为小写,且不允许使用控制符号强制转换对象为小写字符变量命名,要有具体含义,能表明变量类型。
oracle sql developer 编码格式

一、介绍Oracle SQL Developer编码格式的重要性Oracle SQL Developer是一款用于管理Oracle数据库的集成开发环境(IDE),它不仅可以用于编写和执行SQL语句,还可以进行数据建模、数据导入导出等操作。
在使用Oracle SQL Developer时,编码格式的设置至关重要,它直接影响到SQL语句的正确性和可读性。
了解和正确设置Oracle SQL Developer的编码格式对于数据库开发人员来说至关重要。
二、Oracle SQL Developer编码格式的设置方法1. 打开Oracle SQL Developer并登入到需要操作的数据库2. 点击菜单栏中的“工具”-“首选项”-“代码编辑器”-“文件编码”选项3. 在文件编码选项中,可以选择默认的文件编码格式,一般情况下默认为UTF-84. 确定设置后,关闭首选项窗口,设置即生效。
三、UTF-8编码格式在Oracle SQL Developer中的应用UTF-8是一种针对Unicode的可变长度字符编码,它可以表示Unicode标准中的任何字符,并且在互联全球信息站有广泛的应用。
在Oracle SQL Developer中,使用UTF-8编码格式可以很好地支持中文、英文等多种语言的字符,保证数据库操作的正确性和稳定性。
四、常见的编码格式错误及解决方法1. 中文乱码:在使用Oracle SQL Developer进行数据库操作时,有时会出现中文乱码的情况。
这通常是由于数据库和Oracle SQL Developer的编码格式设置不一致导致的。
解决方法是统一数据库的编码格式,并在Oracle SQL Developer中设置相应的文件编码格式。
2. 数据录入错误:如果在使用Oracle SQL Developer进行数据录入时出现字符错误或丢失的情况,很可能是由于编码格式不匹配所致。
在这种情况下,需要检查数据库和Oracle SQL Developer的编码格式设置,并做出相应的调整。
oracle数据库设计课程设计

oracle数据库设计课程设计一、课程目标知识目标:1. 理解Oracle数据库的基本概念,掌握数据库设计的基本原理;2. 学会使用SQL语言进行数据库的基本操作,如创建表、查询数据、更新数据等;3. 掌握数据库设计规范,能够设计出结构合理、性能优良的数据库表结构;4. 了解数据库的安全性和一致性约束,能够为数据库设置合理的约束条件。
技能目标:1. 能够运用所学知识独立完成小型信息系统的数据库设计;2. 能够熟练运用SQL语言进行数据库的操作,解决实际问题;3. 能够运用数据库设计原则对现有数据库进行优化,提高数据库性能;4. 能够分析实际业务需求,撰写数据库设计文档,为软件开发提供支持。
情感态度价值观目标:1. 培养学生对数据库技术的兴趣,激发学习积极性,提高自主学习能力;2. 培养学生具备良好的团队合作精神,能够在团队项目中发挥积极作用;3. 培养学生严谨、细致的学习态度,对待数据库设计和操作能够认真负责;4. 通过数据库技术在实际案例中的应用,使学生认识到信息技术对社会发展的积极作用,增强社会责任感。
二、教学内容1. Oracle数据库基础知识- 数据库概念、发展历史及Oracle数据库特点- 数据库体系结构、数据库存储结构- SQL*Plus工具的使用2. SQL语言基础- 数据定义语言(DDL):创建、修改、删除表- 数据操纵语言(DML):插入、查询、更新、删除数据- 数据控制语言(DCL):权限管理、事务控制3. 数据库设计原理- 实体关系模型(ER模型)及其转换- 数据库设计范式:1NF、2NF、3NF、BCNF- 数据完整性、约束条件设置4. Oracle数据库高级应用- 索引、分区、视图、序列的应用- 存储过程、函数、触发器的创建与使用- 数据库性能优化、备份与恢复5. 实践项目- 设计一个小型信息系统的数据库,包括表结构设计、数据操作、完整性约束设置等- 对数据库进行性能优化,分析并解决性能瓶颈- 撰写数据库设计文档,进行项目展示与交流教学内容按照以上五个方面进行组织,确保学生能够系统地掌握Oracle数据库的设计与应用。
ORACLE设计规范
ORACLE设计规范1、数据库模型设计方法规范1.1、数据建模原则性规范1.2、实体型之间关系认定规范1.3、范式化1NF的规范1.4、范式化2NF的规范1.5、范式化3NF的规范1.6、反范式化冗余字段使用规范1.7、数据库对象命名基本规范第一:长度规范:凡是需要命名的对象其标识符均不能超过30个字符,也即:Oracle中的表名、字段名,函数名,过程名,触发器名,序列名,视图名的长度均不能超过30个字符;第二:构成规范:数据库各种名称必须以字母开头,但严禁使用SYS开头;名称只能含有字母,数字和下划线“_”三类字符,“_”用于间隔名称中的各语义字段;不要使用DUAL作表名;第三:大小写规范:构成Oracle数据库中的各种名称(表明,字段名,过程名,视图名等等)的所有字符,必须使用大写,也就是不能在脚本中,对任何名称添加双引号“”来设定字符的大小写形式,只要不采用“”限制,Oracle自动会将各名称转化成大写。
2、表的设计规范2.1、表的主键规范遵循如下三点原则:第一:有无原则:除临时表和外部表,以及流水表,日志表外,其他表都要建立主键;第二:构成原则:主键不能使用含有实际语义的列,应该增加一个xx_id字段做主键,类型为number,取值来自序列sequence;第三:创建原则:对于500万以上的表,请数据组参与设计实施,采用先建唯一索引再添加主键约束的方式来创建主键;2.2、表的主键列规范对于实体表,主键就是一列,就是没有任何语义的自增的NUMBER列,对于关系表,主键就是相关实体表主键形成的复合主键,是多列;2.3、使用注释的规范2.4、一个表所含字段总长度的规范2.5、一个表所含字段访问频繁度的规范2.6、一个表所含数据量的规范2.7、大对象字段(BLOB,CLOB)使用规范2.8、增量同步表的设计规范字典信息表和需要使用增量同步的表必须增加如下属性:2.9、表的表空间使用规范2.10、索引的表空间使用规范3、设计分区表的规范3.1、RANGE分区的规范3.2、LIST分区的规范3.3、HASH分区的规范3.4、RANGE-LIST分区的规范3.5、RANGE-HASH分区的规范4、索引的设计规范4.1、主键索引的规范4.2、唯一约束索引的规范4.3、外键列索引的规范4.4、复合索引的规范4.5、函数索引的规范4.6、位图索引的规范4.7、反向索引的规范4.8、分区索引的规范4.9、索引重建的规范5、SQL访问规范5.1、避免SELECT *程序中不能出现SELECT*,即使是选择全部选择项,也需要全部指明,这主要出于如下原因:第一:使用*相对比较慢,因为Oracle 需要遍历更多的内部字典信息;第二:为避免以后相关表增加字段造成程序错误,比如INSERT INTO SELECT和SELECT INTO语句会报错;5.2、避免笛卡尔运算多表关联查询不能出现笛卡尔积,如果在报表中为集聚表(或称中间表)生成多个维度组成的复合主键需要使用迪克尔积的,必须请数据组确认性能。
Oracle数据库管理与开发第9章 系统安全管理
INSERT
SELECT
UPDATE
创建用户角色
创建用户角色的语法:
create role role_name [ not identified | identified by [password] | [exeternally] | [globally]]
试一试
创建一个名为designer的角色,该角色的口令为123456
创建用户
试一试
创建一个mr用户,口令为mrsoft,并设置默认的表空间为users,临时表 空间为temp的用户。
SQL> create user mr identified by mrsoft default tablespace users temporary tablespace temp;
安全特性
3.过程安全 过程方案的对象权限(其中包括独立的过程、函数和包)只有EXECUTE权限,将这个权限 授予需要执行的过程或需要编译另一个需要调用它的过程。 (1)过程对象。具有某个过程的EXECUTE对象权限的用户可以执行该过程,也可以编译引 用该过程的程序单元。过程调用时不会检查权限。具有EXECUTE ANY PROCEDURE系统权限的 用户可以执行数据库中的任何过程。当用户需要创建过程时,必须拥有CREATE PROCEDURE 系统权限或者是CREATE ANY PROCEDURE系统权限。当需要修改过程时,需要ALTER ANY PROCEDURE系统权限。 拥有过程的用户必须拥有在过程体中引用的方案对象的权限。为了创建过程,必须为过程 引用的所有对象授予用户必要的权限。 (2)包对象。拥有包的EXECUTE对象权限的用户,可以执行包中的任何公共过程和函数, 能够访问和修改任何公共包变量的值。对于包不能授予EXECUTE权限,当为数据库应用开发 过程、函数和包时,要考虑建立安全性。
Oracle数据库规划设计和运行维护方案
Oracle数据库规划设计和运行维护方案()目录1.前言.编写目的.......................................................... .方案说明.......................................................... .预期读者..........................................................2.数据库部署模式.单机模式.......................................................... .双机热备模式(HA模式)........................................... .集群模式(RAC)................................................... .主从模式(DataGuard)............................................. .混合模式(DataGrard+RAC)......................................... .数据库运行模式选择................................................3.系统特点和数据库类型.业务系统的特点....................................................OLTP特点.................................................OLAP特点................................................. .数据库的规模...................................................... .数据库版本建议....................................................4.数据库运行环境规划.主机规划.......................................................... .网络规划.......................................................... .存储规划..........................................................5.数据库安装部署规划.软件安装路径...................................................... .表空间设计........................................................业务数据量估算............................................表空间使用规则............................................表空间的概念和分配原则....................................表空间的参数配置..........................................Undo/temp表空间的估算....................................表的参数设置..............................................索引的使用原则............................................ .文件设计..........................................................RAC配置文件..............................................参数文件..................................................控制文件..................................................重做日志文件..............................................6.数据库应用规划.数据库用户设计....................................................用户权限规划..............................................用户安全实现..............................................用户类型及角色命名规范.................................... .数据库分区........................................................数据库分区介绍............................................逻辑分割..................................................物理分割..................................................数据分区的优点............................................数据分区的不足............................................Oracle分区技术...........................................分区使用建议..............................................分区索引.................................................. .数据库实例配置.................................................... .数据库参数设置....................................................必须修改的初始化参数......................................建议修改的初始化参数......................................不可修改的初始化参数......................................建议不可修改的初始化参数..................................与并行有关的参数.......................................... .数据库连接服务....................................................专用服务器连接............................................共享服务器连接............................................连接服务建议.............................................. .数据库安全建议.................................................... .数据库备份和恢复..................................................RMAN备份.................................................EXP/IMP备份..............................................存储级备份................................................数据库恢复................................................ .数据库网络配置....................................................监听器的使用配置原则......................................TNSNAMES的使用配置原则...................................RAC环境下TNSNAMES的配置.................................7.业务系统开发建议.数据库模型设计规范................................................命名规则..................................................数据库对象................................................ .PLSQL开发规则....................................................总体开发原则...............................................SQL语句编写规则..................................................查询语句的使用原则........................................DML语句的调整原则........................................8.数据库体系结构.整体结构.......................................................... .内存结构..........................................................系统全局区(SGA).........................................程序全局区(PGA).........................................后台进程.................................................. .存储结构..........................................................物理结构..................................................逻辑结构..................................................9.数据库基本管理.参数文件管理...................................................... .表空间管理........................................................用户表空间管理............................................临时表空间管理............................................回滚段表空间管理.......................................... .重做日志文件管理..................................................增加重做日志文件组........................................添加重做日志文件组成员....................................改变重做日志文件组成员....................................删除重做日志文件组成员....................................删除重做日志文件组........................................重做日志切换..............................................重做日志清理..............................................重做日志切换次数查询...................................... .归档模式设置......................................................单实例数据库设置归档模式..................................RAC数据库设置归档模式....................................归档路径设置.............................................. .控制文件重建...................................................... .内存参数管理......................................................Oracle内存管理发展阶段...................................自动内存管理AMM..........................................自动共享内存管理ASMM.....................................自动PGA管理.............................................. .其它管理内容......................................................查看数据库版本............................................数据库字符集..............................................创建密码文件..............................................关闭数据库审计功能........................................账号管理..................................................10.数据库集群(RAC)管理.RAC状态检查......................................................检查守护进程..............................................检查资源状态.............................................. .RAC启动与关闭.................................................... .管理OCR..........................................................OCR盘状态查看............................................OCR备份与恢复............................................查看OCR内容..............................................指定OCR盘................................................增加OCR盘................................................删除OCR盘................................................ .管理VOTING DISK..................................................检查Voting Disl盘........................................VOTING DISK备份与恢复....................................添加VOTING DISK盘........................................删除VOTING DISK盘........................................ .CSS管理.......................................................... .SRVCTL管理工具...................................................管理实例..................................................管理监听程序..............................................管理ASM..................................................管理service.............................................. .修改RAC的IP及VIP...............................................修改外网IP和心跳IP......................................修改VIP..................................................查看与删除IP............................................. .管理ASM..........................................................管理DiskGroup............................................ASM兼容性管理............................................ASM中添加disk的方法.....................................ASMCMD管理命令介绍.......................................ASM常用视图..............................................11.数据库备份.备份概念说明......................................................脱机备份..................................................联机备份..................................................RMAN备份................................................. .备份策略规划...................................................... .RMAN备份和恢复案例...............................................归档模式下的完全恢复......................................归档模式下的不完全恢复....................................12.数据库运维管理.运维职责.......................................................... .运维要求.......................................................... .技能要求.......................................................... .运维内容..........................................................检查数据库运行情况........................................检查操作系统和数据库日志文件..............................检查Oracle对象状态.......................................检查数据库相关资源的使用..................................检查数据库备份............................................检查数据库的性能..........................................数据库安全性检查.......................................... 前言编写目的随着以使用Oracle数据库的应用系统不断增加,为了加强应用系统在规划、开发、实施、维护等环节工作的规范化,特编写本文档,力求对实际的设计、实施工作起到规范和指导作用。
ORACLE数据库设计规范
1 命名原则约定ü? 是指对数据库、数据库对象如表、字段、索引、序列、存储过程等的命名约定;ü? 命名使用富有意义的英文词汇,尽量避免使用缩写,多个单词组成的,中间以下划线分割ü? 避免使用Oracle的保留字如LEVEL、关键字如TYPE(见Oracle保留字和关键字);ü? 各表之间相关列名尽量同名;ü? 除数据库名称长度为1-8个字符,其余为1-30个字符,Database link名称也不要超过30个字符;ü? 命名只能使用英文字母,数字和下划线;?表名规则如下:命名规则为xxx_yyy_TableName。
xxx表示开发公司的名称,最多五个字母构成,尽量用简称;yyy表示子系统中的子模块的名称(可以没有), 最多五个字母构成,尽量用简称;TableName为表含义, 最多十个字母构成,尽量用简称?TableName规则如下:ü? 使用英文单词或词组作为表名,不得使用汉语拼音ü? 用名词和名词短语作表名ü? 不使用复数?正确的命名,例如:fiber_sys_userfiber_biz_order?存储过程规则如下:命名规则为xxx_yyy_StoredProcedureName。
xxx表示开发公司的名称,最多五个字母构成,尽量用简称;yyy表示子系统中的子模块的名称(可以没有), 最多五个字母构成,尽量用简称;StoredProcedureName为存储过程含义,最多十个字母构成,尽量用简称?StoredProcedureName规则如下:ü? 用动词或动词短语来命名,并带有宾语ü? 需要符合用Pascal 命名规则。
ü? 尽量谨慎地使用缩写ü? 尽量不要和关键字重合ü? 不要用任何名前缀 (例如 U,B)ü? StoredProce dureName内不使用下划线ü? 当操作依赖条件时,一般结尾使用 By+条件?存储过程正确的命名,例如:sys_InsertUsersys_SearchUserByUserIDsys_DeleteUserByUserID?视图规则如下:ü? 视图的命名采用xxx_yyy_ViewName_v。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
项目编号:×××xxxOracle数据库开发规范Oracle DB Development Standardization <Language:Version><部门名称>**年**月**日文档信息:文档名称:文档编号:文档版本日期:起草人:起草日期:复审人:复审日期:版本历史:版本日期作者更改参考说明审批信息:签字/日期审核审批目录1 概述 41.1 编写目的 41.2 文档约定 41.3 预期的读者和阅读建议 41.4 参考文献 52 数据库对象命名 62.1 命名总体原则 62.2 表名 62.3 视图 62.4 同义词 62.5 序列72.6 索引72.7 存储过程72.8 存储函数82.9 存储程序包82.10 触发器82.11 字段82.12 其他93 设计规范93.1 范围93.2 表空间93.3 字符集103.4 主外键约束103.5 分区表103.6 RAC下的序列设计103.7 字段103.8 表结构设计113.9 索引设计113.10 临时表114 SQL编写规范 124.1 书写规范124.2 SQL语句的索引使用134.3 SQL语句降低系统负荷 155 PL/SQL编程规范185.1 书写规范185.2 常用数据库操作语句编码规范195.3 常用过程控制结构205.4 Condition 215.5 Cursor 225.6 变量定义与赋值225.7 过程与函数调用235.8 例外处理(Exception) 235.9 例外处理的错误消息245.10 注释(Comment) 255.11 应用调试控制275.12 并发控制275.13 代码测试、维护291 概述1.1 编写目的为规范软件开发人员的Oracle数据库开发提供参考依据和统一标准。
1.2 文档约定说明本文档中所用到的专用术语定义或解释,缩略词定义。
1.3 预期的读者和阅读建议本文档适用于所有开发员。
1.4 参考文献列出有关的参考文件,如:a.属于本项目的其他已发表文件;b.本文件中各处引用的文档资料。
列出这些文件的标题、作者,说明能够得到这些文件资料的来源。
2 数据库对象命名2.1 命名总体原则本规范所涉及数据库对象主要是指表、视图、同义词、索引、序列、存储过程、函数、触发器等;命名应使用富有意义的英文词汇,尽量避免使用缩写,多个单词组成的,中间以下划线分割;避免使用Oracle的保留字或关键字,如LEVEL和TYPE;各表之间相关列名尽量同名;除数据库模式对象名称长度为1-8个字符,其余对象名称均要求不超过30个字符;命名只能使用大写英文字母,数字和下划线,且以英文字母开头。
2.2 表名规则:XXX_MMM_DDDD说明:XXX代表子系统或模块名称(2-3个字母构成);MMM代表子模块名称(2-3个字母构成,根据实际情况可以没有);DDDD为表的简称含义,使用英文单词或词组构成,可包括下划线,但不得使用汉语拼音。
示例:PO_HEADERS_ALL2.3 视图规则:XXX_MMM_DDDD_V说明:XXX代表子系统或模块名称(2-3个字母构成);MMM代表子模块名称(2-3个字母构成,根据实际情况可以没有);DDDD为视图简称含义,使用英文单词或词组构成,可包括下划线,但不得使用汉语拼音;V表示视图,如有多个功能类似的视图,名称以V,V1,V2...Vn区分。
示例:PO_HEADER_RELEASE_V2.4 同义词规则:与引用的原对象同名示例:PO_HEADERS_ALL2.5 序列规则:XXX_MMM_DDDD_S说明:XXX代表子系统或模块名称(2-3个字母构成);MMM代表子模块名称(2-3个字母构成,根据实际情况可以没有);DDDD为序列简称含义,使用英文单词或词组构成,可包括下划线,但不得使用汉语拼音;S表示序列。
示例:PO_HEADERS_S2.6 索引规则:XXX_MMM_DDDD_Tn说明:XXX代表子系统或模块名称(2-3个字母构成);MMM代表子模块名称(2-3个字母构成,根据实际情况可以没有);DDDD为索引简称含义,要求同表名,如总长度超过限制,可适当缩写;T有三种值:U表示唯一性索引,N表示非唯一性索引,B表示位图索引;n表示序号,用数字构成。
示例:PO_HEADERS_ALL_U12.7 存储过程规则:XXX_MMM_DDDD_P说明:XXX代表子系统或模块名称(2-3个字母构成);MMM代表子模块名称(2-3个字母构成,根据实际情况可以没有);DDDD为存储过程简称含义,使用英文单词或词组构成,可包括下划线,不得使用汉语拼音;P表示存储过程。
示例:PO_HEADERS_P2.8 存储函数规则:XXX_MMM_DDDD_F说明:XXX代表子系统或模块名称(2-3个字母构成);MMM代表子模块名称(2-3个字母构成,根据实际情况可以没有);DDDD为存储函数简称含义,使用英文单词或词组构成,可包括下划线,不得使用汉语拼音;F表示存储函数。
示例:PO_HEADERS_F2.9 存储程序包规则:XXX_MMM_DDDD_PKG说明:XXX代表子系统或模块名称(2-3个字母构成);MMM代表子模块名称(2-3个字母构成,根据实际情况可以没有);DDDD为存储程序包简称,使用英文单词或词组构成,可包括下划线,不得使用汉语拼音;PKG表示存储程序包。
示例:PO_HEADERS_PKG2.10 触发器规则:XXX_MMM_DDDD_Tn说明:XXX代表子系统或模块名称(2-3个字母构成);MMM代表子模块名称(2-3个字母构成,根据实际情况可以没有);DDDD为触发器简称含义,要求同表名,如总长度超过限制,可适当缩写;T表示触发器;n表示序号,用数字构成。
示例:PO_HEADERS_T12.11 字段一般性字段:使用英文单词、词组或其有意义的缩写表示,可包括下划线,不得使用汉语拼音,多个类似含义的字段,可在最后加数字序号;特殊字段:(1)代表主键的字段:表名或缩写+"_ID",如PO_HEADER_ID(2)代表外键的字段:要求与相关表对应字段相同(3)记录跟踪字段(代表记录创建人、创建时间、最后修改人、最后修改时间):字段名类型NULL?说明CREATED_BYNUMBERNOT NULL这些字段仅用于跟踪数据的变化,而不能用于其他用途。
CREATION_DATEDATENOT NULLLAST_UPDATED_BYNUMBERNOT NULLLAST_UPDATE_DATEDATENOT NULL(4)扩展字段(预留未来使用):ATTRIBUTE+n,n代表序号,如ATTRIBUTE1,类型统一为VARCHAR2(150);对应扩展属性分类字段,命名为ATTRIBUTE_CATEGORY,类型为VARCHAR2(30)。
2.12 其他其他对象参照上述原则和对象命名。
3 设计规范3.1 范围设计规范主要是对与开发关系密切的数据库整体设计部分进行说明,以便于DBA更有效的管理和维护数据库。
主要包括表空间、字符集、主外键约束、分区表、字段类型等内容。
3.2 表空间一致性:无论是基于商品化软件的开发,还是独立的客制化开发系统,对于客制化对象,每个子系统或模块都使用统一的一组表空间(数据表空间和索引表空间各一个,且数据表空间为默认表空间);独立性:数据和索引独立存储,表空间由DBA统一管理和维护,任何新建表均应使用默认的数据表空间,新建索引均需使用指定的索引表空间;新建表和索引时,原则上不允许指定除表空间以外的任何参数,特殊情况必须指定有别于表空间的默认参数时,需经过单独评审。
示例:CREATE TABLE TABLE_NAME (FIELD1...) TABLESPACE XXX;例外情况:当使用分区表时,可根据情况建立独立的表空间。
3.3 字符集应用系统数据库应使用UTF8字符集,应用程序开发本身也需要支持UTF8字符集录入和查询。
注意事项:UTF8字符集默认排序规则非中文拼音,如有需要应在代码级或数据库会话级做特殊处理。
3.4 主外键约束数据库表对象原则上禁止使用主外键约束,主外键所承担的主要作用应通过其他方式实现,如主子表数据完整性由应用层实现,索引功能通过建立单独索引实现。
3.5 分区表为了降低数据库的维护复杂度,非必要情况下,不使用分区表;或经常需要跨分区查询数据,此时也不应使用分区表;特殊应用场景确有必要时,可选择范围分区表、列表分区表、哈希分区表、组合分区表几种方式,并根据分区类型和分区依据,调整索引,使相关数据查询尽量在一个分区中完成。
3.6 RAC下的序列设计当数据库部署架构为RAC时,原则上禁止使用序列生成依赖其大小排序的单据号码,如确有必要,则序列必须设计为禁用缓存模式。
3.7 字段数值类型使用NUMBER,需要存储整型数值时,可指定小数位精度为0;枚举类型优先使用数值型替代字符型,且需要备注说明枚举类型的各个不同取值的含义;ID结尾的字段为应为数值型,CODE结尾的字段可为字符型或数值型;用CHAR(1)表示布尔值的取大写:"Y","N",或改为数值型,用0和1表示;原则上使用VARCHAR2代替CHAR类型,以节省存储空间,但对性能要求太别高的应用场景例外;日期时间型应使用DATE,禁止使用字符型;使用CLOB代替LONG,BLOB代替LONG RAW;一般性字段应有含义注释,对于可以有缺省值的字段,应设为非空类型,并给出缺省值。
3.8 表结构设计原则上表结构设计应符合第三范式,减少冗余字段,但在不影响数据一致性的情况下,为了提高性能或开发实现的方便性,可以适当增加冗余字段。
创建表时,应添加相关注释,简要说明主要用途。
表与表之间的关系应提供E-R图。
3.9 索引设计对代表唯一记录的字段或字段组合应建立唯一索引,对于查询中需要作为查询条件的字段,可以考虑建立非唯一索引,对于作为查询条件的枚举型字段,可考虑建立位图索引。
建立复合索引时,应根据条件字段的查询频率决定索引字段顺序。
开发过程中新编写的SQL,应对照查询条件检查有无相关索引,除需要特别指定全表扫描的情况外,原则上应建立相关索引。
3.10 临时表临时表指创建表时指定临时表参数的数据表,并非指表名中含有TEMP字符的表。
尽量避免在临时表上使用DISTINCT、ORDER BY、GROUP BY、HAVING、JOIN,以减轻临时表负担,同时应避免频繁创建和删除临时表,减少系统表资源的消耗。
在新建临时表时,如果一次性插入数据量很大,应使用SELECT INTO代替CREATE TABLE,避免数据库LOG,提高速度;如果数据量不大,为了缓和系统表的资源,可先CREATE TABLE,然后INSERT。