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。
Oracle数据库10g GIS应用开发:使用Oracle Spatial网络数据模型说明书
Oracle Database 10g: Building GIS Applications Using the Oracle Spatial Network Data ModelAn Oracle Technical White PaperMay 2005Table of Contents Abstract (3)Introduction (3)Oracle Spatial Network Data Model (5)Network Data Model Schema (5)Network Metadata (6)Network Tables (6)Oracle Spatial Network Data Model APIs (6)Network Data Model Analysis Capabilities (7)Modeling Network Applications (8)Network Constraints (8)Java Representations of Network Elements (8)Software Requirements (9)Using the Network Data Model (9)1. Create a Network (9)2. Visualize or Edit the Network (9)3. Analyze the Network (9)Network Data Model Editor (9)GIS Applications using the Network Data Model (10)Network Tracing Applications (10)Network Routing Applications (10)Network Allocation Applications (11)Using Network Constraints in Analysis (11)New Features in the Oracle Spatial 10g Network Data Model (13)Network Modeling: Link Direction (13)Network Analysis: Maximum Flow Analysis (14)PL/SQL Wrapper Package (14)Conclusion (14)References (14)ABSTRACTNetwork modeling, management, and analysis are common tasks for Geographic Information Systems (GIS). Network analysis includes routing (path computation) in transportation networks, tracing (accessibility) in utility networks, and resource allocation in decision-making and customer relationship management (CRM) applications. In this paper we present the Oracle Spatial network data model, an Oracle Database release 10g feature that lets users model and analyze networks. This feature simplifies network modeling, analysis, and management so that users can focus on application logic. The network data model provides an open, generic data model with many common GIS analysis capabilities. In addition, it fully supports Oracle Spatial objects of type SDO_GEOMETRY. GIS applications based on the Oracle Spatial network data model are discussed in this paper. INTRODUCTIONThere are two common types of GIS applications: applications that deal with spatial proximity, and applications that deal with both spatial proximity and connectivity. For many applications queries on spatial proximity, which mainly consider metrics like Euclidean or geodetic distances, are sufficient. However, there are instances when connectivity needs to be taken into account, such as in finding the shortest distance between two locations in a road network. Many GIS applications are networks that require modeling and analysis on object relationships (connectivity). Figure 1 shows a road network of New York City.Figure 1. New York City Road Network (60384 nodes, 151962 links. Source: NavStreets from NavTech)Oracle Spatial has supported spatial objects since release 8.1.5. A complete set of indexes, operators, and functions is available for managing information based on spatial proximity. The network data model extends Oracle Spatial to deal with connectivity. Currently there are many GIS vendors offering network solutions; however, their solutions may have the following issues:• Their data model is stored in proprietary file formats, and cannot be integrated with their database.• The data model and analysis capabilities cannot be extended.• Application information cannot be separated from connectivity information.• Spatial information management and hierarchical relationships are not directly supported.To address these issues, Oracle Spatial network data model does the following: • Provides an open and persistent network data model.The network data model is stored as relational tables in the database and ismanaged through SQL.• Simplifies network data management and analysisPL/SQL and Java APIs are provided for network data management andanalysis.• Separates connectivity and application information in the data model Connectivity information can be separated from application information.Both application information and connectivity information are managed inthe database. However, only connectivity information is required fornetwork analysis.• Allows the extension of data model and analysis capabilitiesThe Java API provides representations of network elements as JavaInterfaces. Users can define their own network elements by extendingthese interfaces. As a result, users can implement their own user-definedrepresentations and analysis functions.• Integrates with Oracle Spatial technology for spatial information managementThe network data model supports all Oracle Spatial data types.This paper is organized as follows: it presents the network data model database schema, APIs and architecture; shows how to use the data model; presents several GIS network applications built on top of the data model; discusses how to use network constraints to enhance analysis capabilities; and discusses the network data model editor that is used to edit and visualize networks.ORACLE SPATIAL NETWORK DATA MODELThe network data model consists of two parts: a network schema and network APIs. The network schema is the persistent data storage used to store network information. The network APIs contain a PL/SQL package for data management in the database and a Java API for data management and analysis on the client-side (via Java JDBC drivers).Network Data Model SchemaA network contains network metadata, a node table, and a link table. In addition, path information (path table and path-link table) can be stored with the network if desired. Figure 2 shows a schematic view of a network in the database. Note that only connectivity information is stored. Additional application information can be stored in the network tables, or in other tables and referenced by foreign keys.Figure 2. Oracle Network Data Model (Schematic View)Network MetadataNetwork metadata provides general information about networks. It includes the following network details:• Directed or undirected• Logical or spatial• Hierarchical or flat• Information about nodes, links, and paths• Geometry information -- for spatial networksNetwork TablesAn Oracle network contains two tables: a node table and a link table. A path table can be added if needed. Figure 2 shows the schema for the network data model, which includes these tables. The schema represents the information necessary for network management and analysis. Application attributes can be added to these tables or referenced from other application tables (through foreign keys). Note that the network data model is also capable of handling geometry information. That is, the network data model can represent both logical and spatial network applications. Adding geometric data to a logical network will allow the logical network to be displayed.Oracle Spatial Network Data Model APIsThe network data model provides a PL/SQL API and a Java API for network management on the database and client sides. The Java API can also be used for network analysis. The three-tiered network data model application architecture is shown in Figure 3.Figure 3. Network Data Model ArchitectureNetwork Data Model Analysis CapabilitiesThe following analyses are supported in the network data model:• Shortest Path: The shortest path from node A to node B• Accessibility Analysis: Is node A accessible from node B?• Minimum-Cost Spanning Tree: What is the minimum-cost tree that connects all nodes?• Within Cost Analysis: What nodes are within a given cost from (to) a given node?• Nearest Neighbors: What are the N nearest neighbors of a given node?• K Shortest Paths: What are the K shortest paths from node A to node B?• Connected Components Analysis: Label connected components with IDs.• Graph Operations: Graph union, intersection, and difference.• Traveling Salesman Problem: What is the minimum-cost tour that visits a set of cities?• Single Source, Single Sink Maximum Flow Analysis: What is the maximum allowable flow that can flow from the source node to the sink node?(Oracle Spatial 10g Release 2)Modeling Network ApplicationsThe network data model takes a generic approach to solving network problems, by separating connectivity information from application-specific information. Figure 4 shows how a typical network application can be modeled and analyzed. First the network connectivity information (node connections and link cost) is extracted and separated from the application-specific information. Application-specific attributes are stored, if needed, with the connectivity information or separately. Once the connectivity information is extracted, network analysis is conducted on the generic model. Additional network constraints can also be considered. The final result is then mapped to application-related attributes, and displayed. This approach avoids customized network solutions and simplifies the data management of connectivity and application-specific information.Figure 4. Network Modeling and Analysis Using the Network Data ModelNetwork ConstraintsThe network data model introduces the concept of network constraints, which provides a mechanism to guide network analysis. For example, you may want to compute the shortest path that passes through network links of a specific type. With network constraints, applications can easily incorporate application-specific logic into the network data model analysis engine without knowing how the engine works. Other constraints, such as path depth, or cost, can also be included in analysis. The network constraint is a Java interface and must be implemented by the application.Java Representations of Network ElementsThe Java network representations (network, nodes, links, and paths) are defined as Java interfaces and can therefore be extended. These interfaces specify the necessary behaviors for the network and its elements. In addition to these interfaces, user-defined analysis functions can be used by applications, allowing the modeling and analysis capabilities of the network data model to be extended.Software RequirementsThe Spatial network data model is shipped with Oracle Database release 10g. The PL/SQL package is pre-loaded in the database and required Java .jar files are provided; the Java API supports JDK (or JRE) version 1.3 or later. The network editor is also included as a utility tool for the network data model. For more information, see the Oracle Spatial Topology and Network Data Models manual. USING THE NETWORK DATA MODELThis section explains the usage of the network data model. There are three major steps.1. Create a Network1. Create and populate network tables and add metadata to the database.2. Create a Java network object using the Java API and save it to thedatabase.2. Visualize or Edit the Network1. Load a network from the database or an XML representation.2. Visualize or edit the Java network object using the network data modeleditor. Store the network in the database, if needed.3. Analyze the Network1. Load a network into a Java network object.2. Conduct network analysis. Save the path results, if needed.NETWORK DATA MODEL EDITORThe network data model editor is a standalone Java application that helps create, edit, and visualize networks. The editor supports viewing operations such as pan, zoom, and auto-fit. It also provides functions to navigate between network elements. All analysis functions are supported in the editor. With the editor, users can create a network from scratch in the client-side and save it to the database. The editor is configurable on element styles, colors, and sizes. Figure 5 shows the network data model editor.Figure 5. Network Data Model EditorGIS APPLICATIONS USING THE NETWORK DATA MODELGIS network analysis may include network tracing, network routing, and network allocation.Network Tracing ApplicationsTracing applications deal with queries like Is node A reachable from node B? or What are the nodes that are reachable or can be reached from a given node? Such queries are common in water or utility networks. Another type of tracing analysis is to find out how many connected components are in a network. Figure 6 shows some such queries.Figure 6. Reachable and Reaching AnalysisNetwork Routing ApplicationsRouting analysis or path computation, probably the most studied topic in network applications, is divided into the following categories:• Shortest Path or Fastest Path (transitive closure problem) (see Figure 7).• K Shortest Paths: Find k shortest paths from a start node to a destination node.• Traveling Salesman Problem (see Figure 7): Find a minimum-cost tour that passes a set of locations.Figure 7. Shortest Path and Traveling Salesman ProblemNetwork Allocation ApplicationsAllocation analysis deals with designating destination points within a network. It provides information on a service area or coverage for points of interest. The network data model supports the following allocation analyses (see Figure 8):• Within Cost: Find all points of interest within a certain distance from a designated location.• Nearest Neighbors: Find the N nearest restaurants to a designated location.• Minimum-Cost Spanning Tree: Find the cheapest way to connect all nodes.Figure 8. Nearest Neighbors, Within Cost, and Minimum Cost Spanning Tree AnalysisUsing Network Constraints in AnalysisConstraints are conditions to be satisfied during analysis. The network data model supports network constraints so that applications can impose application-specific conditions on the network during analysis. The Java interface NetworkConstraint canbe implemented by the user, and passed into any network data model analysis function. Figure 9 shows analysis information that is available for users to implement their network constraintsFigure 9. Analysis Information for Network ConstraintsThe following are some examples of network constraints:• Depth (number of links), cost, and MBR constraintsNetwork analysis can be limited based on the depth of the search path, thecost limit, or the area (minimum bounding rectangle) where the analysisoccurs. These constraints can be used to specify a preferred subset ofpossible solutions. The network data model provides a SystemConstraintclass (which implements the NetworkConstraint class) for these commonnetwork constraints. Users can create an instance of SystemConstraint anduse it in analysis.• Temporarily inactivated nodes or linksSometimes nodes or links must be temporarily turned off before analysisbegins, for example, road segments (links) under construction in a roadnetwork, or water valves (nodes) shut down for repair in a water network.You can make a node or link inactive by setting its state to false. Networkelements that are inactive will not be considered during analysis. Note thatchanging the state of nodes and links does not affect the persistent datamodel.• Routing with specific types of links and nodesSometimes network analysis must only be conducted through nodes andlinks of specific types or with specific requirements.• Turn restrictionsTurn restrictions are constraints involving two links. They are common inrouting for transportation networks. In the following example, aprohibited turn is represented by a start link and an end link (see Figure10). For intersections with turn restrictions, such as no “U” turn or no leftturn, if the search encounters the start link of a prohibited turn, the searchdoes not continue through the end link of that prohibited turn. This typeof restriction can be easily modeled using NetworkConstraint, sinceinformation on the current link and next link is made available to users.Figure 10. Turn Modeling for Road NetworksNEW FEATURES IN THE ORACLE SPATIAL 10G NETWORK DATA MODELWith Oracle Spatial 10g Release 2, the network data model provides the following features:Network Modeling: Link DirectionThe directionality of a link can be further specified at the link level. Unlike the network directionality that determines the directions of all links, a directed network can have links that are directed or bi-directed. A BIDIRECTED column can be added to the link table and used to indicate if a directed link is bi-directed. This modeling enhancement will reduce the storage requirement for directed networks with non-homogeneous link directions (unidirectional and bidirectional).Network Analysis: Maximum Flow AnalysisThe maximum flow analysis function is provided for a single source and single sink flow network. Each link in a flow network has a flow capacity associated with it. The goal of this function is to find the maximum allowable flow that can flow from the source node to the sink node. This type of analysis is commonly seen in communication or logistics network planning.PL/SQL Wrapper PackagePrior to Oracle Spatial 10g Release 2, only the network data model Java API could be used for network editing and analysis. Now, a PL/SQL wrapper package is also provided that helps users edit and analyze networks in PL/SQL. This wrapper package provides nearly equivalent functionality as the Java API. It is done through database Java stored procedures and Java virtual machine in Oracle. CONCLUSIONThe Oracle Spatial network data model, available with Oracle Spatial 10g, is a generic network (graph) modeling and analysis environment for network applications. GIS applications for routing, tracing, and allocation have been discussed. The network data model provides an open, easy-to-use, scalable, efficient, and manageable approach to developing GIS network applications. We are currently working with our customers and partners to extend the modeling and analysis capabilities of the network data model.REFERENCESOracle Spatial Topology and Network Data Models, Oracle Corporation.Oracle Spatial User’s Guide and Reference, Oracle Corporation.Oracle Linear Referencing System: A Technical White Paper, Oracle Corporation. Oracle Spatial Network Data Model: A Technical White Paper, Oracle Corporation.Building GIS Applications Using the Oracle Spatial Network Data Model: An Oracle Technical White Paper May 2005Author: Jack Chenghua WangContributors: Vishal Rao, Nicole AlexanderOracle CorporationWorld Headquarters500 Oracle ParkwayRedwood Shores, CA 94065U.S.A.Worldwide Inquiries:Phone: +1.650.506.7000Fax: +1.650.506.7200Copyright © 2005, Oracle. All rights reserved.This document is provided for information purposes only and thecontents hereof are subject to change without notice.This document is not warranted to be error-free, nor subject to anyother warranties or conditions, whether expressed orally or impliedin law, including implied warranties and conditions of merchantabilityor fitness for a particular purpose. We specifically disclaim anyliability with respect to this document and no contractual obligationsare formed either directly or indirectly by this document. This documentmay not be reproduced or transmitted in any form or by any means,electronic or mechanical, for any purpose, without our prior written permission.Oracle, JD Edwards, and PeopleSoft are registered trademarks ofOracle Corporation and/or its affiliates. Other names may be trademarksof their respective owners.。
Oracle数据库编程规范
密级公开()普通(√)秘密()机密()绝密()Oracle数据库编程规范文档编号:<文档编号(按照文档编码规范)>文档归类:<文档归类>作者:李程扬创建时间:2005-11-14修改时间:2005-11-15版本号:v1.0文档传阅:一、数据库对象创建及命名规范1、数据库字段及对象命名规范a.数据库命名规范与PB编程规范对命名方式的约定可相互参照;b.命名单词间分隔用下划线[_],尽可能使用与业务相匹配的单词或其缩写;c.绝对不允许使用拼音首码及简单数字的命名方式;d.Oracle对于对象或字段名称长度有限制,最多31个字符;2、字段定义及类型说明a.字段定义仅能使用以下类型i.date:日期时间类型,存入日期字段的数据若未指明时间,时间缺省就是[00:00:00];若未指明日期,则日期缺省是[1900-01-01];对于年份[number(4,0)]与月份[number(6,0)]这类数据,一般用number类型定义;ii.number:数值类型,字段所占空间与每一行数据相关,即有多少存多少;要注意其定义小数位是包含在总长度中,如number(12,2)——总长度为12位,其中小数占2位;iii.char:定长字符串类型,不论字符串信息多少都要占用所定义长度的空间,不足的部分用空格填充;对于一些更新操作比varchar2效率高;长度限制为255;iv.varchar2:非定长字符串类型,字符串信息多少就占多少空间,所以对于此类型数据在存入数据库前要去空格,以防止多余空格造成字段关联错误;相比char可节省很多存储空间,某种程序上可提高网络传输效率;长度限制为4000个字符;v.clob:一般存大于4000个字节的字符串信息,如数据窗口的语法;vi.blob:一般存二进制数据,如图片;b.对于字符串类型,除数据固定长度字段(如char(1)、SICK_ID),其它情况都必须使用varchar2类型;c.对于number与varchar2类型,在定义时要预留足够的长度,因为这两种类型都是按实际数据来分配存储空间,这样才能避免数据需求变长,字段长度修改造成程序错误(数据窗字段及数值变量小数位定义);d.应尽量使用number类型定义代码、状态字段;相比char或varchar2,这可最大程度地节省空间,并可显著提度检索效率;当然,同类型已定义的字段,为兼容原先设计,还是必须使用旧的类型定义;e.字段命名约定i.字段名称不必像PB变量使用前缀来标识其数据类型;ii.字段常用后缀如下ID/No表示唯一的序列号标识;其中ID多用于表示对人或物的标识,即指的是一种标志(如Sick_ID);而No多用于对连续号或流水号的标识(如单据号Apply_No)Code 表示项目代码(如项目代码Item_Code)Name 表示名称(如项目名称Item_Name)Class 表示类别(如单据类别Apply_Class)Operator 表示操作员(类型用varchar(27),如Apply_Operator)Time 表示日期或日期时间(如Audit_Time)Dept 表示科室(如开单科室Apply_Dept)Flag 表示标志(字段类型用char(1),值为Y或N)Status 表示状态(字段类型用char(1))iii.常见业务字段名称及类型定义如下3、数据库对象定义说明:创建对象时一定要指定是在哪个模式下面a.表i.下面列出建表步骤(一般在PB6中新建表,再拷出相应建表语法)建表语法创建主键及索引创建同义词对象授权(所有新建对象都必须授权给zhiydba)ii.对于表命名有以下常用后缀_master:主表_detail:细表_record:记录表_dict:系统字典/用户字典_config:用户配置表iii.不推荐使用表外键约束,也不推荐除空值以外的其它约束检查,这类约束判断一般在程序中处理;b.主键:一种特殊的索引i.主键名都是以pk_作为前缀,后面一部分用表名,即pk_+表名ii.所有表都必须创建主键,否则这些表就没办法做更新操作c.索引i.索引名以idx_作为前缀,后面一部分用表名+索引相关列名或其缩写ii.创建索引时一定要记得指明其所在模式(一般与表在同一模式下),这一点程序员常会遗漏;iii.索引也要区分是唯一索引还是可重复索引;iv.要查询的列尽可能创建索引,一般不推荐使用多列组合索引,而应分开建立索引;如病人ID或查询时间字段;另外,用到组合索引时要注意索引列的顺序;v.一个表索引最多不能超过7个,否则会影响数据更新效率,且占用存储空间,即:索引越多、查询效率高、但更新操作慢、存储占用高;vi.对于值内容单一(如只有0与1)或大部分数据是空值的字段不用建索引;对于某些数据量很少的表(如字典),也是不用建索引;d.视图:其命名以v_作为前缀,统一建在zhiydba模式下(可省去授权)e.序列号:其命名以_seq作为后缀,统一建在zhiydba模式下;主要用于数据表的主键字段取唯一值(如单据号),对于字典代码就没必要用序列号;f.同义词:创建相应对象的同义词主要是便于编程(public),做到对象模式无关g.用户:即模式h.函数及存储过程:除非开放接口给其它软件供应商,否则不使用这两类对象,因为包(package)就可代替其功能,并便于分类组织;i.后台包/Java包:不用深入了解,知道有这些东西就可;j.后台任务(Job):后台计划任务执行,通过dba_jobs可查询当前在执行任务;k.触发器:Oracle的触发器一般都认为在事务处理上不安全,所以除非特殊接口,否则不准使用触发器;二、Oracle常用函数1、Oracle的PL/SQL语言是对SQL的过程性语言扩展,当前Oracle的SQL语法遵循SQL92标准;2、完整PL/SQL函数集可查阅\\Research\ZHIS4_Tools\Database\Oracle8i资料\doc\server.816\a76989\toc.htm3、字符串相关函数a.||:字符串合并操作符b.trim:去字符串前后空格,一定要记住存取字符串数都要调用此函数去空格c.substr:截取字符串的一部分内容,也PB的mid函数功能一样d.to_char:将数值型或日期型数据转化为字符类型,如to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')e.lpad/rpad:在串值左/右重复填充指定的字符串,与PB的fill函数功能类似f.upper/lower:字符串都转为大写/小写4、日期相关函数a.+/-:加/减天数操作符b.to_date:将字符串类型数据转为日期型信息,如to_date('2005-11-15','yyyy-mm-dd')c.trunc:去掉时间那部分信息,常用于按日期检索数据d.add_months:增加月份5、数值相关函数:a.to_number:将字符串类型数据转为数值型,如to_number(to_char(operation_time,'yyyymmdd'))要注意,如果待转化数据包含非数字内容,就会报Oracle错误b.trunc:按指定小数位精度截取6、其它函数a.nvl:空值判断,这是很常用的函数;对于PL/SQL的空串与空值是一样的,即在SQL语法中没必要像PB一样判断空串;b.decode:条件分支判断,if elsec.sign:判断数值的符号,可用于>或<判断,常与decode合起来使用;7、伪列:在SQL语法中可以和普通列一样使用a.sysdate:取当前数据库所在服务器的时间——系统时间b.rownum:用于限制检索行数c.rowid:当前检索行的唯一内部定位标识符8、序列号取值:nextval,取序列号的下一数值9、特殊表:dual10、解析表列类型信息的命令:desc(describe)三、Oracle事务处理1、事务概念a.在PB编程中,事务开始于SQL更新操作或行锁,结束于提交(commit)或回滚操作,即一个事务的开始与结束是隐式由系统自动控制;b.在中断任何事务前(如弹出提示框或窗口),一定要把事务提交或回滚;c.注意:任何出错函数都会自动把事务回滚,再弹出相应提示;要注意判断返回值2、并发控制(锁机制/资源争用):多用户操作程序必须会遇到并发问题,数据库系统中一般通过锁来防止并发a.锁类型/锁粒度:PB编程中常用到的是排它锁,而Oracle内部处理一般是共享锁(如update/delete操作)i.行级锁:select for update语法;推荐在程序中使用;ii.表级锁:lock table语法;杜绝在程序中使用表级锁,除非是同一事务中对表的所有数据进行修改操作,否则极易引发数据库阻塞;b.死锁类型i.行间死锁:在不同事务处理中,a行与b行的锁表顺序相反;ii.表间死锁:在不同事务处理中,A表与B表的锁表顺序相反;c.死锁与阻塞:可认为两者是共生的,都源于对数据库资源未能及时释放i.死锁:Oracle对于死锁会在一定时间范围内检测到并自动解锁,但此过程需占有大量资源,大量事务并发死锁时常造成数据库变慢,客户端操作没有响应,严重情况下会引起系统崩溃;若Oracle没能及时解锁,这时数据库就会发生大量阻塞;ii.阻塞:一般是程序事务处理长时间未能提交或回滚,导致事务所占数据库资源未能释放,系统响应时间变量,大量阻塞也会使平常不会出现的行级死锁大量出现,从而使系统陷入资源争用的死循环,除非这时手工干预或引发阻塞的事务释放资源,否则最终结果必然是系统崩溃;iii.系统崩溃:指数据库系统对客户端操作无任何响应,且客户端无法连接;数据库所在服务器(一般是windows2000)对鼠标或键盘操作也无响应,这种情况下只能是重启服务器;四、数据库编程容错1、SQL执行语句容错:任何数据库操作都必须判断是否正确执行(sqlca)a.查询语句错误判断(select/cursor/execute immediate)sqlca.sqlcode:=0(正确),-1(出错),f_sqlerr/sqlca.sqlcode=100b.更新语句错误判断(update/insert/delete)sqlca.sqlcode/sqlnrows:数据更新影响行数,f_sqlerror2、PB程序错误判断a.数据窗口更新错误判断:update(true,false)=1/resetupdateb.数据窗口内部错误处理:dberror事件c.应用级错误:systemerror事件五、SQL执行效率问题1、客户端等待最占用时间的部分就是数据库操作及网络传输,网络问题不是这文档所涉及的,下面主要针对数据库操作讲一些常用优化方法;2、Oracle的SQL语法从提交命令到输出结果一般要经过以下几步:语法分析、语义分析、执行路径分析、……3、Oracle的优化方式:基于规则(base rule)/基于选择(base choose),一般推荐用基于选择(base choose)的优化方式,但可在检索语法中设置特殊的优化方式;4、SQL查询语句优化列举:尽可能利用索引,减少表间关联字段a.关联的字段不能加上使用表达式(函数、计算式等),特殊是修改数据窗口的检索条件时(SetSQLSelect),如:to_char(operation_time,'yyyy-mm-dd')=正确的写书方式应为:selectfrom dispensary_sick_price_itemwhere operation_time >= to_date('2005-11-15','yyyy-mm-dd')and operation_time < to_date('2005-11-16','yyyy-mm-dd');b.特别要注意对于字符型字段与数值参数关联(或反过来数值型字段与字符参数关联),一定要把参数先转化为与字段同样的类型,否则即使字段有建索引也没办法用到,因为Oracle分析SQL语法时会自动把字段加上相应的函数处理以匹配参数;即所有参数类型定义应与所关联字段匹配,或对类型转化要显示在参数中处理;c.多表关联时,尽可能使用主键列;d.尽可能用exists/not exists语法,而不是in/not in语法;一般若子查询数据量较小可用in语法,若子查询行数可能会超过100条,则必须使用exists语法,且Oracle的in语法有最多999行限制;e.尽量使用绑定变量,主要是动态执行的SQL语法(用动态游标),这样可在SQL执行预处理时省却语法分析阶段所占的时间,特别是在循环语句中;f.char和varchar2字段类型关连:i.char与char:不论两字段长度定义如何,都能利用索引;ii.varchar2与varchar2:也与其长度定义无关,但要注意要么后面都没空格,要么空格数量要一致才能用到索引;iii.char与varchar2:除非varchar2字段空格补足到与char定义长度一样,否则没办法用到索引;g.对于大数据量表新建索引时,一定要记得分析索引analyze index comm.PK_IC_CARD_DEPOSIT(索引名) compute statistics;5、判断SQL执行情况的方法:可通过在SQLPlus设置以下命令,然后执行所要分析的SQL语法,就可以得到其执行路径与执行时间等信息set autotrace on/set autotrace traceonly(不显示所检索的数据)set timing on6、大幅提高批量数据处理效率的方法——后台包,如床位计价、每日报表基表数据生成等;对于一些医院业务高峰常用模块(如住院摆药、单据扣费等)也常把这类业务写在后台包中处理;7、数据库连接接口:正常情况下都是使用PB原生Oracle接口,且按其客户端配置尽可能用高版本的Oracle客户端;六、数据库操作安全问题1、不准在PB的数据库管理窗口中执行SQL更新语法,必须在sqlplus执行,这样才能判断执行结果,防止更新语法写错(如where条件写漏了),以决定提交(commit)还是回滚(rollback);2、更新数据前先用相同条件的select语法查看,且把检索出的数据导出备份(用PB或程序员助手),以便出错时恢复数据(很有中能SQL语法没错,但需求是错的);3、除非是清库才使用truncate table语法(直接提交,无法回滚,且无数据库日志),否则删除所有数据只能使用delete from 语法;七、数据库管理相关1、Oracle数据库文件a.初始化文件:initzhis4.ora与spfilezhis4.ora(Oracle9i才有)b.密码文件:可用命令orapwd创建c.控制文件:control filed.数据文件:Oracle系统文件、临时表空间文件、回滚段数据文件、用户数据文件e.日志文件:在线日志与归档日志2、手工启动/关闭数据库实例a.启动实例(初始化文件):startup nomount->alter database mountb.启动实例(控制文件):startup mount->alter database openc.启动实例(数据文件):startup/startup opend.关闭实例:shutdown immediate3、数据库备份机制:a.[硬件]双机热备b.[软件]文件备份(在线热备/离线冷备)c.[软件]导出备份(全库导出/增量导出)4、重建数据库相关(详细步骤参见创建数据库步骤.txt)a.修改数据库实例名:创建实例,init文件实例参数修改,重建控制文件b.数据库文件路径修改:init文件控制文件路径修改,重建控制文件c.实例名与数据库文件路径都不变:拷到相同目录,直接启动。
oracle数据库安装及配置规范_v1.0
Oracle数据库系统安装及配置规范2015-10目录1. 数据库物理设计原则 (5)1.1. 数据库环境配置原则 (5)1.1.1. 操作系统环境 (5)1.1.2. 内存要求 (5)1.1.3. 交换区设计 (5)1.1.4. 其他 (6)1.2. 数据库设计原则 (6)1.2.1. 数据库SID (6)1.2.2. 数据库全局名 (6)1.2.3. 数据库类型选择 (6)1.2.4. 数据库连接类型选择 (7)1.2.5. 数据库SGA配置 (7)1.2.6. 数据库字符集选择 (8)1.2.7. 数据库其他参数配置 (9)1.2.8. 数据库控制文件配置 (9)1.2.9. 数据库日志文件配置 (10)1.2.10. 数据库回滚段配置 (10)1.2.11. 数据库临时段表空间配置 (11)1.2.12. 数据库系统表空间配置 (11)1.3. 数据库表空间设计原则 (11)1.3.1. 表空间大小定义原则 (11)1.3.2. 表空间扩展性设计原则 (12)1.4. 裸设备的使用 (12)2. 数据库逻辑设计原则 (13)2.1. 命名规范 (13)2.1.1. 表属性规范 (13)2.1.2. 索引 (14)2.1.3. 视图 (15)2.1.4. 实体化视图 (15)2.1.5. 存储过程 (15)2.1.6. 触发器 (15)2.1.7. 函数 (16)2.1.8. 数据包 (16)2.1.9. 序列 (16)2.1.10. 表空间 (16)2.1.11. 数据文件 (16)2.1.12. 普通变量 (16)2.1.13. 游标变量 (17)2.1.14. 记录型变量 (17)2.1.15. 表类型变量 (17)2.2. 命名 (17)2.2.1. 语言 (17)2.2.2. 大小写 (18)2.2.3. 单词分隔 (18)2.2.4. 保留字 (18)2.2.5. 命名长度 (18)2.2.6. 字段名称 (18)2.3. 数据类型 (18)2.3.1. 字符型 (18)2.3.2. 数字型 (19)2.3.3. 日期和时间 (19)2.3.4. 大字段 (19)2.3.5. 唯一键 (19)2.4. 设计 (20)2.4.1. 范式 (20)2.4.2. 表设计 (20)2.4.3. 索引设计 (23)2.4.4. 视图设计 (24)2.4.5. 包设计 (24)2.4.6. 安全性设计 (25)2.5. SQL编写 (26)2.5.1. 字符类型数据 (26)2.5.2. 复杂sql (27)2.5.3. 高效性 (27)2.5.4. 健壮性 (28)2.5.5. 安全性 (29)2.5.6. 完整性 (30)3. 备份恢复设计原则 (30)3.1. 数据库exp/imp备份恢复 (30)3.1.1. 数据库级备份原则 (30)3.1.2. 用户级备份原则 (30)3.1.3. 表级备份原则 (31)3.2. 数据库冷备份原则 (31)3.3. Rman备份恢复原则 (31)3.3.1. Catalog数据库 (31)3.3.2. Archive Log (33)3.3.3. 全备份策略 (33)3.3.4. 增量备份策略 (33)3.3.5. 恢复原则 (33)3.4. 备用数据库原则 (34)3.5. 一些小经验 (34)3.6. 系统调优知识 (35)3.6.1. 生成状态报表(statspack的使用) (35)3.6.3. 内存调整 (37)3.6.4. 排序的优化 (40)3.6.5. 统计信息 (41)4. 设计工具 (42)1.数据库物理设计原则1.1.数据库环境配置原则1.1.1.操作系统环境对于中小型数据库系统,采用linux操作系统比较合适,对于数据库冗余要求负载均衡能力要求较高的系统,可以采用Oracle10gRAC 的集群数据库的方法,集群节点数范围在2—64个。
Toad for Oracle标准操作指南(规范开发流程)v2.5
Toad for Oracle标准操作指南(规范开发流程)Quest Software2012版本信息目录1序 (5)2开发流程剖析 (5)2.1标准开发流程描述 (5)2.2Toad推荐流程 (5)3标准操作指南 (7)3.1准备开发环境 (7)3.1.1准备 (7)3.1.2目的 (7)3.1.3操作 (7)3.2PL/SQL业务逻辑设计 (8)3.2.1准备 (8)3.2.2目的 (9)3.2.3操作 (9)3.3测试用例设计 (9)3.3.1准备 (9)3.3.2目的 (9)3.3.3操作 (10)3.4PL/SQL程序编写 (12)3.4.1准备 (12)3.4.2目的 (13)3.4.3操作 (13)3.5PL/SQL格式化 (14)3.5.1准备 (14)3.5.2目的 (14)3.5.3操作 (14)3.6PL/SQL编译 (16)3.6.1准备 (16)3.6.2目的 (16)3.6.3操作 (16)3.7PL/SQL代码规范性检查 (17)3.7.1准备 (17)3.7.2目的 (17)3.7.3操作 (17)3.8PL/SQL单元测试 (19)3.8.1准备 (19)3.8.2目的 (19)3.8.3操作 (19)3.9PL/SQL调试 (21)3.9.1准备 (21)3.9.2目的 (22)3.9.3操作 (22)3.10PL/SQL代码规范性第二次检查 (23)3.11PL/SQL代码性能检查 (23)3.11.1准备 (23)3.11.2目的 (23)3.11.3操作 (23)3.12PL/SQL性能优化 (24)3.12.1准备 (24)3.12.2目的 (24)3.12.3操作 (24)3.13SQL与PL/SQL代码可扩展性测试 (26)3.14数据库对象发布 (27)3.14.1准备 (27)3.14.2目的 (27)3.14.3操作 (27)1序通过实际案例描述Toad的标准操作,目的是使两个项目组的每一位开发者(包括测试者)都可以使用Toad完成所有常规操作。
Oracle数据库安全配置规范
Oracle数据库安全配置规范Oracle数据库安全配置规范1概述1.1目的本规范明确了oracle数据库安全配置方面的基本要求。
为了提高oracle数据库的安全性而提出的。
1.2范围本规范适用于XXXXX适用的oracle数据库版本。
2配置标准2.1账号管理及认证授权2.1.1按照用户分配账号[目的]应按照用户分配账号,避免不同用户共享账号。
[具体配置]create user abc1 identified by password1;create user abc2 identified by password2;建立role,并给role授权,把role赋给不同的用户删除无关账号。
[检测操作]2.1.2删除无用账号[目的]应删除或锁定与数据库运行、维护等工作无关的账号。
[具体配置]alter user username lock;drop user username cascade;[检测操作]2.1.3限制DBA远程登入[目的]限制具备数据库超级管理员(SYSDBA)权限的用户远程登录。
[具体配置]1.在spfile中设置REMOTE_LOGIN_PASSWORDFILE=NONE来禁止SYSDBA用户从远程登陆。
2.在sqlnet.ora中设置SQLNET.AUTHENTICATION_SERVICES=NONE来禁用SYSDBA角色的自动登入。
[检测操作]1.以Oracle用户登入到系统中。
2.以sqlplus ‘/as sysdba’登入到sqlplus环境中。
3.使用show parameter 命令来检查参数REMOTE_LOGIN_PASSWORDFILE是否设置为NONE。
Show parameter REMOTE_LOGIN_PASSWORDFILE4.检查在$ORACLE_HOME/network/admin/sqlnet.ora文件参数SQLNET.AUTHENTICATION_SERVICES是否被设置成NONE.2.1.4最小权限[目的]在数据库权限配置能力内,根据用户的业务需要,配置其所需的最小权限。
oracle数据库标准
oracle数据库标准Oracle数据库标准。
Oracle数据库是全球领先的企业级关系数据库管理系统,被广泛应用于各种规模的企业和组织中。
作为数据库管理员或开发人员,了解和遵循Oracle数据库的标准是至关重要的。
本文将介绍Oracle数据库的标准,并对其重要性进行探讨。
首先,Oracle数据库标准涵盖了数据库设计、数据存储、查询优化、安全性和可靠性等方面。
在数据库设计阶段,应该遵循Oracle的设计规范,包括表的范式化、索引的创建和外键约束的应用。
此外,数据存储方面需要考虑到表空间的管理、数据文件的组织和存储结构的优化。
在查询优化方面,需要根据实际业务需求设计合适的查询语句,并利用索引、分区等技术提升查询性能。
同时,数据库的安全性和可靠性也是Oracle数据库标准中不可或缺的部分,包括用户权限管理、数据备份和恢复策略等。
其次,遵循Oracle数据库标准的重要性不言而喻。
首先,遵循标准可以提高数据库系统的性能和稳定性。
通过合理的设计和优化,可以降低数据库的响应时间,提升系统的吞吐量,从而提高业务处理效率。
其次,遵循标准可以降低系统维护成本。
规范的数据库设计和管理可以减少系统故障和数据损坏的风险,降低维护成本和风险。
最后,遵循标准可以提升开发人员的工作效率。
规范的数据库结构和查询优化可以减少开发人员的工作量,提升开发效率,缩短系统上线时间。
在实际应用中,我们应该如何遵循Oracle数据库标准呢?首先,需要充分理解Oracle数据库的设计原则和最佳实践,包括官方文档、技术博客和培训课程等。
其次,需要结合实际业务需求进行数据库设计和优化,避免盲目套用标准,应用灵活性和创新性。
同时,需要建立完善的数据库管理和监控体系,及时发现和解决数据库性能和安全问题。
最后,需要不断学习和更新数据库技术知识,跟随Oracle数据库的发展和变化,不断优化和改进数据库系统。
综上所述,Oracle数据库标准是数据库设计和管理的重要指导原则,遵循标准可以提高数据库系统的性能和稳定性,降低维护成本,提升开发效率。
- 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。