Oracle后台数据库设计规范_第1页
Oracle后台数据库设计规范_第2页
Oracle后台数据库设计规范_第3页
Oracle后台数据库设计规范_第4页
Oracle后台数据库设计规范_第5页
已阅读5页,还剩168页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

年4月19日Oracle后台数据库设计规范文档仅供参考目录TOC\o"2-5"\h\z\u1 前言 51.1 编写目的 51.2 预期读者 61.3 数据库部署模式 61.4 单机模式 61.5 HA热备模式 71.6 RAC模式 81.7 DATAGUARD模式 91.8 RAC+DATAGUARD模式 92 数据库部署模式选择建议 102.1 部署模式的选择建议 102.2 各部署模式应用建议 102.3 RAC部署模式应用建议 112.4 操作系统参数建议 122.4.1 AIX 122.4.2 HP 133 数据库设计考虑的因素 143.1 数据库类型特点分析 143.1.1 OLTP(联机事务处理) 153.1.2 OLAP(联机分析处理) 153.1.3 BATCH(批处理系统) 153.1.4 DSS(决策支持系统) 153.1.5 Hybrid(混合类型系统) 163.2 数据库规模 164 数据库部署前提建议 164.1 数据库产品选择建议 164.2 磁盘阵列布局原则 165 数据库物理结构设计 175.1 软件安装路径及环境变量 175.2 数据库实例的命名规则 185.3 表空间设计 185.3.1 业务数据量的估算 185.3.2 表空间的使用规则 19 表空间的类型 20 表空间及其文件的命名规则 215.3.3 表空间的物理使用规则 24 表空间的物理分布 24 表空间的存储参数的设置 245.3.4 表空间的参数设置原则 26 Extent的管理 26 Segemnt的管理 27 Autoextend_Clause 295.3.5 表的参数设置原则 29 Undo/temp表空间的估算 305.3.6 索引的使用原则 305.4 文件设计 325.4.1 RAC配置文件 325.4.2 参数文件 32 参数文件命名规则 325.4.3 控制文件 33 控制文件命名规则 345.4.4 重做日志文件 34 日志文件命名规则 356 数据库应用 366.1 数据库用户设计 366.1.1 数据库用户的权限 36 用户权限控制原则 36 用户及其权限规范 37 各用户类型的角色命名规范 386.1.2 数据库用户安全的实现 39 数据库特权 39 角色 39 授予权限和角色 41 数据库默认用户 43 数据库用户密码 446.2 数据库分区 446.2.1 数据库分区介绍 446.2.2 逻辑分割 446.2.3 物理分割 456.2.4 分区后对数据库管理的好处 456.2.5 分区对数据库规划、创立带来的负面影响 456.2.6 Oracle分区技术 456.2.7 分区使用选择 466.2.8 分区索引 47 全局索引(GLOBALindex) 47 本地索引(LOCALindex) 476.3 数据库实例配置 486.3.1 数据库字符集 486.3.2 数据库版本和补丁集 496.4 数据库参数设置 496.4.1 必须修改的初始化参数 49 DB_CACHE_SIZE 49 SHARED_POOL_SIZE 50 LARGE_POOL_SIZE 51 DB_BLOCK_SIZE 51 SP_FILE 52 PGA_AGGREGATE_TARGET 52 PROCESSES 52 OPEN_CURSORS 53 MAX_DUMP_FILE_SIZE 530 RECOVERY_PARALLELISM 531 PARALLEL_EXECUTION_MESSAGE_SIZE 532 INSTANCE_GROUPS(RAC) 543 PARALLEL_INSTANCE_GROUP(RAC) 544 与DRM有关的隐藏参数(RAC) 556.4.2 系统优化建议修改的初始化参数 55 SESSION_CACHED_CURSORS 55 BACKUP_TAPE_IO_SLAVES 55 JAVA_POOL_SIZE 56 OPTIMIZER_INDEX_COST_ADJ 566.4.3 不得修改的初始化参数 56 COMPATIBLE 56 CURSOR_SHARING 57 SGA_TARGET 57 SGA_MAX_SIZE 576.4.4 建议不修改的初始化参数 58 UNDO_RETENTION 58 SESSIONS 58 TRANSACTIONS 58 DB_KEEP_CACHE_SIZE 59 LOCK_SGA 59 DB_FILES 60 DB_FILE_MULTIBLOCK_READ_COUNT 60 LOG_BUFFER 60 FAST_START_MTTR_TARGET 616.4.5 与并行操作有关的参数 616.5 数据库连接服务 626.5.1 专用服务器连接 626.5.2 共享服务器连接 636.5.3 连接服务建议 63 专用服务器连接 636.6 数据库安全建议 646.6.1 采用满足需求的最小安装 646.6.2 安装时的安全 64 删除或修改默认的用户名和密码 64 安装最新的安全补丁 646.7 数据库备份和恢复 656.7.1 RMAN备份 656.7.2 Export/import备份 656.7.3 存储级备份—虚拟带库 666.7.4 数据库恢复 66 实例故障的一致性恢复 66 介质故障或文件错误的不一致恢复 666.8 ORACLENETWORK配置 676.8.1 监听器的使用配置原则 676.8.2 TNSNAMES的使用配置原则 676.8.3 RAC环境下TNSNAMES的配置 68 各节点启用负载均衡 68 各节点不启用负载均衡 697 数据库开发建议 697.1 数据库模型设计规范 697.1.1 命名规则 697.1.2 表 71 建表的参数设置 71 主外键设计 71 列设计 72 临时表 727.1.3 索引 727.1.4 视图 727.1.5 存储过程、函数和包 737.1.6 触发器 737.1.7 序列 737.1.8 Directory 737.1.9 别名 737.1.10 DatabaseLink 747.2 PLSQL开发规则 747.2.1 总体开发原则 747.2.2 程序编写规则 74 在PL/SQL中使用SQL 74 变量声明原则 76 游标 77 集合 81 动态PL/SQL 86 对象 89 大对象类型(LOB) 92 包(PACKAGE) 1017.2.3 故障处理规则 1027.3 SQL语句编写规则 1047.3.1 查询语句的使用原则 104 索引的正确使用 104 使用连接方式的原则 107 进行复杂查询的原则 1117.3.2 DML语句的调整原则 115 Oracle存储参数的影响 115 大数据类型的影响 116 DML执行时约束的开销 117 DML执行时维护索引所需的开销 117前言编写目的为总结我XXXX建设的成果,加强XXXX平台建设工作的规范化管理,我们梳理了XXXX平台基础设施设计的相关文档,并进行了深化、细化,力求结合实际的设计、实施工作,对设计、实施起到规范、指导作用。本指南主要从一个设计者的角度进行阐述,相关章节也按此思路编写。作为一个设计者,首先要了解产品可实现的部署模式,如何选择部署模式,其次要考虑设计涉及到的因素,有针对性地做好数据库的设计等;为提高数据库的性能,对程序开发提出了的要求。在界线的划分上,基础产品只涉及本产品的设计,上层应用产品对基础产品的需求放在应用产品中,例如,ORACLE部署对AIX的要求,放在ORACLE设计指导中。在编写过程中,特别关注可操作性,不但仅是要求,而是提出建议,尽量覆盖设计工作中涉及的工作要点。本指南中参数建议值是对系统设计时的指导,是合理的经验值,但由于应用系统的复杂性,每个系统有自己的特点,建议按建议值进行系统的初始配置,在压力测试和系统上线后根据实际需要做相应的调整。附件中列出了ERP/CLPM/CCBSBS/EBANK四个系统的oracle数据库配置参数以及相应的AIX、HP系统配置参数,作为系统设计的参考。预期读者项目基础设施可行性研究、设计和实施人员,项目组应用系统设计人员,相关运行维护技术人员。数据库部署模式单机模式数据库服务器采用单服务器模式,满足对可用性和性能要求不高的应用,具备以下特点:硬件成本低。单节点,硬件投入较低,满足非重要系统的需求。安装配置简单。由于是单节点、单实例,因此安装配置比较简单。管理维护成本低。单实例,维护成本低。对应用设计的要求较低。由于是单实例,不存在RAC系统应用设计时需要注意的事项,因此应用设计的要求较低。可用性不高。由于是单服务器、单实例,因此服务器和实例的故障都会导致数据库的不可用。扩展性差。无法进行横向扩展,只能进行纵向扩展。当应用对性能有更高的要求时,该模式的数据库服务器无法进行增加节点、实例等横向扩展,只能进行增加硬件配置等纵向扩展,且扩展性有局限。根据该模式的特点有如下要求:硬件配置方面预留扩展量。由于该模式无法进行横向扩展,因此在选择硬件配置时要为以后的纵向扩展预留扩展量,避免硬件无法满足性能需求的情况。充分考虑该模式是否满足应用未来一段时间的需求。需要考虑应用在未来一段时间是否会发生变化,该模式是否满足应用变化的需求。HA热备模式数据库服务器采用HA热备模式,能够满足对可用性有一定要求的应用,具备以下特点:需要冗余的服务器设备。该模式需要有冗余的服务器硬件,以满足一备一或者一备多的需求。硬件成本较高。需要HA软件的支持。该模式需要配合HA软件才能够实现。安装配置相对简单。该模式比单节点、单实例的模式配置复杂一些,需要更多的配置步骤,但相比较RAC、DATAGUARD等模式要简单。管理维护成本低。单实例,对维护人员的要求较低,维护成本低。对应用设计的要求较低。由于是单实例,不存在RAC系统应用设计时需要注意的事项,因此应用设计的要求较低。具备一定的高可用性。由于是多服务器、单实例,因此服务器和实例有故障时会发生实例在不同服务器上的切换,导致数据库的暂时不可用。无法满足对可用性有严格要求的应用类型。扩展性差。无法进行横向扩展,只能进行纵向扩展。当应用对性能有更高的要求时,该模式的数据库服务器无法进行增加节点、实例等横向扩展,只能进行增加硬件配置等纵向扩展,且扩展性有局限。根据该模式的特点有如下要求:硬件配置方面预留扩展量。由于该模式无法进行横向扩展,因此在选择硬件配置时要为以后的纵向扩展预留扩展量,避免硬件无法满足性能需求的情况。充分考虑该模式是否满足应用未来一段时间的需求。需要考虑应用在未来一段时间是否会发生变化,该模式是否满足应用变化的需求。RAC模式数据库服务器采用RAC模式,满足对高可用性要求高的应用类型,具备以下特点:需要多个硬件服务器。根据节点的个数,相应的需要多个硬件服务器。硬件成本较高。某些数据库版本需要HA软件的支持。该模式下,某些数据库版本需要配合HA软件才能够实现。安装配置复杂。该模式比起单实例模式,安装配置相对复杂,安装配置周期长。管理维护成本高。该模式的管理维护,对管理维护人员的要求较高,管理维护成本较高。对应用设计的要求较高。需要充分考虑业务的逻辑性,以避免在多节点之间的信息交换和全局锁的产生。具备较高的高可用性。由于是多服务器、多实例,单服务器和实例有故障不会影响数据库的可用性。能够满足对可用性有严格要求的应用类型。扩展性好。既能够进行横向扩展,也能够进行纵向扩展。当应用对性能有更高的要求时,该模式的数据库能够经过增加节点的方式进行横向扩展,也能够经过增加硬件配置等纵向扩展,具备良好的扩展性。根据该模式的特点有如下要求:硬件配置方面预留扩展量。预留一定的硬件扩展量,能够更灵活的进行扩展。在应用设计时,充分考虑业务逻辑,减少多节点间的信息交换量,更好的发挥RAC的优点。DATAGUARD模式数据库服务器采用DATAGUARD灾备模式,能够满足对可用性有特殊需求的应用,具备以下特点:需要冗余的服务器设备。该模式需要有冗余的服务器硬件。硬件成本较高。需要冗余的存储设备。主机和备机都需要同样的存储空间,成本较高。安装配置比较复杂。该模式比单节点、单实例的模式配置复杂一些,需要更多的配置步骤。管理维护成本高。该模式对维护人员的要求较高,维护成本高。具备一定的容灾特性。当主机整个数据库系统不可用并短期内无法恢复时,能够把数据库系统切换到备机上,具备容灾的功能。备机能够用作只读查询。备机能够切换到只读状态供报表之类的查询操作,减轻主机的压力。根据该模式的特点有如下要求:主机与备机在物理上要分开。为了实现容灾的特性,需要在物理上分割主机和备机。进行合理的设计,充分实现DATAGUARD的功能。RAC+DATAGUARD模式数据库服务器采用RAC+DATAGUARD模式,能够满足对可用性和容灾都有特定需求的应用,具备以下特点:需要冗余的服务器设备。该模式需要有冗余的服务器硬件。硬件成本较高。需要冗余的存储设备。主机和备机都需要同样的存储空间,成本较高。安装配置比较复杂。该模式既需要配置RAC又需要配置DATAGUARD,配置过程比较复杂,配置周期长。管理维护成本高。该模式对维护人员的要求较高,维护成本高。具备很高的可用性和容灾性。该模式既满足高可用性也满足容灾的需求。备机能够用作只读查询。备机能够切换到只读状态供报表之类的查询操作,减轻主机的压力。根据该模式的特点有如下要求:主机与备机在物理上要分开。为了实现容灾的特性,需要在物理上分割主机和备机。进行合理的设计,充分实现DATAGUARD的功能。数据库部署模式选择建议部署模式的选择建议在设计数据库时必须考虑系统的可用性、业务连续性要求,针对系统的可用性需求,采用不同的数据库部署模式:对RTO=0、RPO=0的系统,建议数据库采用RAC或RAC+DataGuard模式,数据库单台设备故障时对业务没有影响,并考虑灾备系统的设计。对RTO<=4小时,RPO<15分钟的系统,建议数据库采用HA热备或DataGuard的模式,设备故障时经过HA技术切换到备用设备,保证系统的可用性,对重要的系统要考虑灾备的设计。对4小时<RTO<8小时,RPO<15分钟的系统,数据库可采用冷备的模式,在系统故障时,启动设备,保障系统的可用性。对8小时<RTO,RPO<15分钟的系统,数据库可考虑1备多的模式或不考虑设备的冗余。对行内非关键系统,建议采用PC服务器、冷备或单机的处理模式。各部署模式应用建议应用必须使用绑定变量(特别是OLTP型应用);对于aix系统,建议在操作系统配置文件.profile中设置exportAIXTHREAD_SCOPE=S;频繁使用的小表要放入库缓存中;频繁使用的index需要放入库缓存的keep池中;不使用select*fromxxxxxforupdate;如果可能的话,考虑使用select*fromxxxxxforupdatenowait替代;对于表空间,建议使用自动段空间管理(ASSM);对于存储频繁更新的数据的表空间或者表,建议设置较大的pctfree,以避免行迁移和行链接;如果使用rawdevice,建议使用AIO,各个平台的配置稍有不同;RAC部署模式应用建议尽可能主要是根据应用访问的数据进行划分,主要是减少不同数据库节点之间数据的交互;连接方式上,最好手工指定连接到特定节点,取消负载均衡,并打开failover;在RAC环境下使用sequence,sequence的cache属性不建议使用缺省值(20),需要增加cachesize,如cachesize100000(能够根据业务需求定,如使用较频繁的设置为更多)。常见的sequence相关bug:Note:395314.1-RACHangsduetosmallcachesizeonSYS.AUDSES$;(以前,SYS.AUDSES$的CACHE_SIZE默认为20,而在以后,则修改为10000)内部互连的连接方式:RAC之间的内部通讯网络(inter-connect)建议不使用交叉直连(crosscable),Oracle不支持这种模式,一定要使用SAN(switch)的连接方式(如,交换机),直连方式的稳定性差,在网络故障时,两个节点都会down或hang;需要使用千兆网线(光纤)连接千兆网卡(光纤卡);关闭操作系统CLUSTER软件中网卡的failover功能,如HACMP中的IPfailover功能,MCSERVERSGUARD如果有类似功能也建议关闭。能够采用网卡绑定的方式实现网卡的failover功能;对于较小的表或者访问较快的表,不使用parallel且不设置degree;对于一般的并行操作,经过设置并行参数(instance_groups和parallel_instance_group)将不同节点发起的请求设计在一个节点完成;(ALTERSYSTEMSETinstance_groups='sjzzw1','sjzzw11'SCOPE=SPFILESID='sjzzw11';ALTERSYSTEMSETinstance_groups='sjzzw1','sjzzw12'SCOPE=SPFILESID='sjzzw12';ALTERSYSTEMSETparallel_instance_group='sjzzw11'SCOPE=BOTHSID='sjzzw11';ALTERSYSTEMSETparallel_instance_group='sjzzw12'SCOPE=BOTHSID='sjzzw12';)10g设置CSSdiagwait参数为13以便在OSCPU资源紧张重启主机前有足够的时间导出trace文件。设置办法:在所有RAC节点关闭,且CRS各进程都退出后,运行#crsctlsetcssdiagwait13–force,确认办法:#crsctlgetcssdiagwait。设置正确返回值13,未设置时,返回信息“Configurationparameterdiagwaitisnotdefined”RAC的private、publicIP严格要求要在不同网段,两个IP都要求进行网卡绑定:HP使用APA,AIX使用EthernetChannel,按主备方式进行,需要保证网卡绑定后从ORACLE看到的是一个固定的逻辑设备。操作系统参数建议AIX以下是建议的网络参数配置:#/usr/sbin/no-r-orfc1323=1#/usr/sbin/no-r-oipqmaxlen=512#/usr/sbin/no-r-osb_max=4*10485764M#/usr/sbin/no-r-oudp_sendspace=10485761M#/usr/sbin/no-r-oudp_recvspace=10485761M能够使用netstat-s命令检查是否有‘socketbufferoverflows’信息,如果有,则可能需要调整上述参数。打开对文件大小等的限制:fsize=-1cpu=-1data=-1stack=-1core=2097151rss=-1nofiles=-1fsize_hard=-1cpu_hard=-1data_hard=-1stack_hard=-1rss_hard=-1nofiles_hard=-1HP 参数名称HP默认值ORACLE要求值参数说明oracle计算公式MAX_THREAD_PROC2561024定义每个进程允许的最大线程数量,此值必须设置为64-nkthread之间MAXSSIZ8388608(8MB)设定32位系统堆栈段大小的最大值MAXSSIZ_64BIT(256MB)设定64位系统堆栈段大小的最大值NPROC42008192设定系统支持的进程的最大数量,此值须设置为:100-60000之间NINODE此值根据系统内存大小初定默认值,当内存<=1G时默认为4880;当内存>1G时默认为819267584设定打开索引节点的最大数量,此值最小值为14,最大值则限于系统内存大小。(8*NPROC+2048)MAXUPRC2567374设定用户进程数量的最大值,此值必须设置为:3到nproc-5之间((NPROC*9)/10)+1MSGMNI5128192设定系统允许消息队列标识符的最大数,必须设置为:1到1000000之间(NPROC)MSGTQL10248192设定系统允许消息的最大数,此值必须设置为:1到之间(NPROC)NCSIZE897668608设定索引节点所需的目录名查找高速缓存(DNLC)空间(NINODE+1024)NFLOCKS此值根据系统内存大小初定默认值,当内存<=1G时默认为1200;当内存>1G时默认为40968192设定系统上可用文件锁的最大数量。此值须设置为50-16777216(NPROC)SEMMNI20488192设定整个系统信号量集的最大数量。此值须设置为:2到semmns之间,(NPROC)SEMMNS409616384设定整个系统信号量的数量.此值须设置为:semmni到之间(SEMMNI*2)SEMMNU2568188设定信号量undo结构的数量。此值须设置为:1到nproc-4之间。(NPROC-4)SHMMAX1G可用内存数量设定一个共享内存段的最大允许尺寸。SHMMAX设定值应足够大,以便在一个共享内存段中装下整个SGA。设置过低的结果是创立多个共享内存段,这样会降低性能。此值须设置为:2k到4TB之间,此值的设定请根据系统内存容量以及应用需要综合考虑设置。SHMMNI400512设定整个系统中共享内存段的最大数量。此值须设置为:3到32768之间VPS_CEILING16(KB)64设定由系统选择的页面的最大尺寸,以KB为单位。此值须设定为4(KB)到4194304(KB)之间。以上参数针对HP11.31数据库设计考虑的因素数据库类型特点分析在创立和规划一个Oracle数据库之前,首要任务应确定将来投产的数据库属于何种业务类型。当前的应用业务有以下类型:OLTP(OnlineTransactionProcessing)OLAP(OnlineAnalytiaclProcessing)BATCHDSS(DecisionSupportSystem)HybridOLTP(联机事务处理)OLTP数据库支持某种特定的操作,OLTP系统是一个包含繁重及频繁执行的DML应用,其面向事务的活动主要包括更新,同时也包括一些插入和删除。经典的例子是预定系统或在线时时交易系统,例如网上银行和ATM自动取款机系统。OLTP系统能够允许有很高的并发性(在这种情况下,高并发性一般表示许多用户能够同时使用一个数据库系统)。OLAP(联机分析处理)OLAP系统可提供分析服务。这意味着数学、统计学、集合以及大量的计算,一个OLAP系统并不永远适合OLTP或DSS模型,有时它是两者之间的交叉。另外,也能够把OLAP看作是在OLTP系统或DSS之上的一个扩展或一个附加的功能层次。一般,地理信息系统或有关空间的数据库和OLAP数据库相集成,提供图表的映射能力。用于社会统计的人口统计数据库就是一个很好的例子。BATCH(批处理系统)批作业处理系统是作用于数据库的非交互性的自动应用。它一般含有繁忙DML语句并有较低的并发性(在这种情况下,较低的并发性一般表示少数几个用户能够同时使用一个数据库系统),该业务系统会在某一时段,大批量数据(少则几万,多则几十万,几百万条数据)更新/插入/删除该数据库。事务查询的比率决定了如何物理地设计它,经典的例子是与DW有关的成品数据库和可操作数据库,如:操作型数据存储系统(ODS)。DSS(决策支持系统)DSS系统一般是一个大型的、包含历史性内容的只读数据库,一般见于简单的固定查询或特别查询。DSS常常按某种方式变成一个VLDB(VeryLargeDatabase)或DW(DataWarehouse)。VLDB的例子如:企业资源管理财务系统(ERP)数据库,该数据库是一个长期存储数据库的历史数据库;DM的例子如:整个集团的工资和人事数据库。Hybrid(混合类型系统)同时数据库系统的应用类型可能是OLTP、OLAP、BATCH等的混合体。也意味着同时拥有上述业务类型特征,这就要求数据库管理员、应用系统分析员、操作系统管理员整体统筹考虑各种业务性能需求及功能需求,对这个系统制定出满足各种业务类型需求的规划,如:企业客户信息整合(ECIF)系统。数据库规模对于数据库的规模,仅从数据量来衡量其规模的大小。因为数据量的规模是反映数据库规模的主要指标。具体如下:数据库业务数据量小于100GB属小规模数据库数据库业务数据量100GB-600GB属中等规模数据库数据库业务数据量600GB-1TB属大规模数据库数据库业务数据量大于1TB属超大规模数据库数据库部署前提建议数据库产品选择建议Oracle数据库产品推出新的主要版本后,要经历一个版本不稳定期。在此期间新版的数据库产品存在较多的bug。在安装和运行过程中,会存在数据库部署安装困难和运行出现不稳定现象。因此在选择版本时,要选择成熟稳定的版本。具体安装要求须参照‘Oracle版本策略最新版’。磁盘阵列布局原则随着硬件技术的发展,当前磁盘阵列的使用变得越来越普遍,由于磁盘阵列和单个磁盘具有较大的不同,故此在数据库的物理划分上也有较大的不同。对于磁盘阵列系统,由于RAID的划分,不存在一个个真实的物理盘,对应的是物理卷(PV),逻辑卷组(VG),逻辑卷(LV)。在这种情况下Oracle推荐使用SAME技术,即全部镜像和条带化(StripeAndMirrorEverything)。在对磁盘阵列做SAME处理后,所有的逻辑卷都分布在所有的物理磁盘上,每个逻辑卷的读写都能够利用的到所有的物理磁盘的吞吐能力,同时获得较高的可靠性。同时我们在使用磁盘设备的时候不需要考虑各个不同文件的IO情况,因为它们都使用同样的全部磁盘的吞吐能力,这进一步简化了数据库系统的文件管理工作,避免一些意外的操作。对较重要、而且效率要求较高的系统推荐使用RAID0+1的磁盘配置而不使用RAID5,因为RAID5的校验技术会降低应用数据库系统的效率。但使用RAID0+1,比RAID5需要更多物理磁盘。不同的类型对象,尽量分布在不同的卷组上,建议:表对应的数据和索引分别放置在不同的物理磁盘上;控制文件的多个备份分别放置在不同的物理磁盘上;REDO日志组的多个成员放置在不同的物理磁盘上;建议将Oracle文件、SYSTEM表空间、TEMPORARY表空间、UNDO表空间放置在不同的物理磁盘上;数据库物理结构设计软件安装路径及环境变量建立单独的文件系统来安装数据库软件,且文件系统的mount点不要直接建立在根目录下。安装路径:/home/db/oracle各种环境变量设置:ORACLE_BASE=/home/db/oracleCRS_HOME=/home/db/oracle/crs/{数据库release版本},如/home/db/oracle/crs/10.2.0ORACLE_HOME=/home/db/oracle/product/{数据库release版本},如/home/db/oracle/product/10.2.0当前(.3)推荐版本为10gR2,写为10.2.0,下一个版本(计划从.5开始推荐)为11gR2,写为11.2.0,数据库实例的命名规则普通使用模式的Oracle数据库的服务名和实例名(SID)是相同的;RAC模式下的Oracle数据库的服务名与实例名不同。数据库服务名的命名格式为:XXXYYdb{m}数据库的SID的命名格式为:XXXYYdb{m}{n}说明:其中XXX表示长度为3个字符的应用项目缩写,具体的见相关设计文档。YY:代表数据库用途,pd代表生产库,hi代表历史库,rp代表报表库,cf代表配置库;m表示数据库序号,从0-9,根据项目的数据库数量进行编号。n表示RAC节点实例序号1,2,3……。用以区分多节点的RAC数据库的不同实例。对于普通模式的数据库,该位不指定。表空间设计业务数据量的估算估算所有业务SCHEMA下的所有table的尺寸。数据量估算的前提:数据库的物理表结构已经确定,而且设计已凝固。用户方提供较为准确的估算依据,例如业务变动的频率、数据需要保存的周期等。该表是一个示例,可根据业务的不同有所变化。序号表名增长量(/小时/天/周)增长量(/月/半年)年数据量数据库生命周期内的总计 合计 新上线或扩容时,对所申请的存储不得全部一次性挂上,应该预留出30%左右的空间用于追加,以防止出现业务发展和预期不一致时剩余空间多寡不均,调整困难。操作系统上应该预先做好几个合适大小的lv备用,包括用于system/sysaux等表空间的小尺寸的lv和用于数据表空间、索引表空间的大尺寸lv,这些lv要求在HA两边主机都可见,不必单纯因为数据库增加数据文件而需要重新同步HA。表空间的使用规则当前多数数据库系统采用数据“大集中”原则,对数据库的性能要求较高。这就要求对数据库进行必要的优化配置。表现在表空间的配置上,应遵循以下原则:最小化磁盘I/O。在不同的物理磁盘设备上,分配数据。尽可能使用本地管理表空间。多数系统采用RAID1+0或RAID0+1,该技术很好的解决了最小化磁盘I/O。基本不必考虑在不同的物理磁盘设备上,分配数据的原则。表空间的类型按照表空间所包含的数据文件类型,Oracle表空间类型有三类:数据表空间(permanencetablespace)-用来保存永久数据,包含永久数据文件。强烈建议在永久表空间内创立永久数据文件,不要创立临时数据文件。临时表空间(temporarytablespace)-用来保存临时数据,多用于数据的磁盘排序。强烈建议在临时表空间内创立临时数据文件,不要创立永久数据文件。回滚表空间(rollback/undotablespace)-仅用来保存回退信息。不能在该表空间创立其它类型的段(如表、索引等)。为了更好的管理表空间,同时提高Oracle数据库系统性能,在上述三类基础上,针对数据的业务功能,进一步对其加以分类。因此Oracle数据库的表空间划分为基本表空间和应用表空间。如下表:基本表空间:是指Oracle数据库系统为其自身运行而使用的表空间。表空间类别表空间名称存储内容说明数据表空间SYSTEM表空间存储oracle数据库系统数据字典对象Oracle数据库系统自身生成的和使用—基本表空间数据表空间SYSAUX存储SYSAUX数据Oracle数据库系统自身生成的和使用—基本表空间回滚表空间UNDO表空间容纳回滚数据如果UNDO表空间是自动管理,则Oracle数据库系统自身生成的。生产数据库不得有如TOOLS、XDB、EXAMPLE等oracle默认安装表空间。应用表空间:是指业务应用数据保存在此类表空间中。它由DBA或相关的数据库规划设计人员创立和规划。表空间类别表空间名称存储内容说明临时表空间TEMP表空间容纳排序数据由DBA设定—应用表空间数据表空间TABLES表空间存储小数据表公用业务数据由DBA设定—应用表空间数据表空间TABLESPARTITION表空间存储巨型表数据由DBA设定—应用表空间数据表空间INDEXS表空间存储小数据表的索引由DBA设定—应用表空间数据表空间INDEXSPARTITION表空间存储巨型数据表的索引由DBA设定—应用表空间数据表空间LOB表空间存储LOB的数据由DBA设定—应用表空间表空间及其文件的命名规则数据文件都使用裸设备方式,使用固定大小,不得设置为自动扩展。基本表空间及其文件的使用规则基本表空间及其文件命名规范如下表表空间名称裸设备连接文件名普通文件名说明SYSTEMrsystem_nn_sizesystemnn.dbf总空间大小设置为2GSYSAUXrsysaux_nn_sizesysauxnn.dbfOracle10g中必须有的表空间。总空间大小设置为4G,如果空间非常紧张,可设置为2GUNDOTBS1rundotbs_nn_sizeundotbsnn.dbf总空间不小于8GTEMPrtemp_nn_sizetempnn.dbf总空间不小于4G说明:裸设备连接文件名nn为从01开始计数的序号,表示文件的个数。如:01,02,03,04。。。。。。size表示了设备的大小,由数字部分和单位部分组成:XU。其中,X是一个正整数,取值范围从1~1023,U是单位标识位,是1位的字符,取值范围为k、m、g、t,分别表示了KByte、MByte、GByte、TByte,size的值应该根据设备的数据大小指定。普通文件名(即创立在文件系统上的文件)nn为从01开始计数的两位整数序号。如:01,02,03,04。。。。。。各表空间根据需求在建库时确定。数据文件路径:/home/db/oracle/oradata/{DB_NAME}/数据文件的使用方式:裸设备:适用于RAC及共享磁盘双机热备数据库架构。创立数据库前,在指定的目录下创立指向裸设备的软连接文件。命令如下:ln-s/dev/rxxxxx/home/db/oracle/oradata/{DB_NAME}/xxxxx.dbf应用表空间及其文件使用规则应用表空间及其文件命名规范:应用表空间分为如下种类:参见节-(2)应用表空间表空间种类表空间命名规则裸设备连接文件名普通文件名TABLES公用表空间D_<功能模块名称>_nnr+表空间名称_nn_size表空间名称_nn.dbfTABLESPARTITION分区表空间D_<数据表名>_nnr+表空间名称_nn_size表空间名称_nn.dbfINDEXS公用索引表空间I_<功能模块名称>_nnr+表空间名称_nn_size表空间名称_nn.dbfINDEXSPARTITION大表索引空间I_<数据表名>_nnr+表空间名称_nn_size表空间名称_nn.dbfLOB表空间B_<功能模块名称>_nnr+表空间名称_nn_size表空间名称_nn.dbfTEMP表空间T_<功能模块名称>_nnr+表空间名称_nn_size表空间名称_nn.dbf说明:表空间的命名规则nn为从01开始计数的两位整数序号,表示表空间的数目。如:01,02,03,04。。。。。。裸设备连接文件名nn为从01开始计数的两位整数序号,表示数据文件的数目。如:01,02,03,04。。。。。。size表示了设备的大小,由数字部分和单位部分组成:XU。其中,X是一个正整数,取值范围从1~1023,U是单位标识位,是1位的字符,取值范围为k、m、g、t,分别表示了KByte、MByte、GByte、TByte,size的值应该根据设备的数据大小指定。普通文件名(即创立在文件系统上的文件)nn为从01开始计数的两位整数,表示数据文件的数目。如:01,02,03,04。。。。。。各表空间根据需求在建库时确定。数据文件路径:/home/db/oracle/oradata/{DB_NAME}/数据文件的使用方式:裸设备:适用于RAC及共享磁盘双机热备数据库架构。创立数据库前,在指定的目录下创立指向裸设备的连接文件。命令如下:ln-s/dev/rxxx/home/db/oracle/oradata/{DB_NAME}/r+表空间名称_nn_size其中:xxx为裸设备的名称。该名规则相关命名规范。表空间的物理使用规则表空间的物理分布对于小规模数据库,I/O不是主要的性能瓶颈,能够不考虑物理分布的问题。对于中规模数据库及大规模数据库,应当考虑:尽可能把应用数据表空间、应用的索引表空间以及相应得分区表空间分布在独立的物理卷上。其次把UNDO、TEMP、REDOLOG分布在不同的物理卷上。对于hp-ux系统,应该为不同用途的数据建立独立的卷组。表空间的存储参数的设置在规范表空间存储参数之前有必要澄清关于数据块(datablock)、区(extent)、段(segment)的概念及其之间的关系。如下图:数据块(datablock):Oracle存储数据最细粒度是数据块,它是操作系统文件块的整数倍(有时也称逻辑块,Oracle块,或页)。一个数据块大小有2k、4k、8k、16k等,并以此单位大小保存在物理磁盘中。区(extent):是由一序列相邻连续的数据块组成的区域叫区。区存储特定类型的数据。它比数据块高一级别。段(segment):比区(extent)高一逻辑存储级别的称作段(segment)。段是由一系列区组成。用来存储一个特定的数据结构,而且该段只能分配在同一表空间中,不能跨越表空间。如:每个表(table)的数据保存在自己的数据段中;而每个索引保存在自己的索引段中;如果表或索引是分区的,则每个分区拥有自己的段。表空间的参数设置原则对于数据库的存储空间管理Oracle有以下的选择:Extent的管理对Extent的管理有两种方式。一般情况下,我们推荐数据库管理员使用本地管理中的指定大小(UniformSize)的方式创立表空间。数据字典管理(DictionaryManagement)在数据字典的管理方式中,数据库使用数据字典来跟踪数据对象的存储分配,这样当出现数据对象的存储变化时,数据库需要更新数据字典以保证系统能够跟踪数据库对象的存储变化,这在某种程度上会造成系统性能的下降。本地管理(LocalManagement)在本地管理方式中,数据库使用每一个数据文件的前面8个数据块中的每一位来代表数据块的占用方式。由于这种方式跟踪数据对象的存储分配不需要访问数据字典,这在一定程度上避免了递归调用的出现,提高了系统存储管理的效率。对于本地的Extent管理有两种方式:自动分配(Autoallocate)自动分配的方式指由数据库系统按照数据对象的大小决定该对象的每一个EXNENT的大小。一般情况下,由于数据库系统并不能预先的确定该对象的总的大小,数据库总是倾向于在初始的几个Extent使用较小的值,然后按照8-128-1024-8192个数据块的方式急剧的增大。这一般会造成系统过多的碎片和较低的存储空间的利用效率。指定大小(UniformSize)指定大小的方式指由数据库管理员在创立表空间时间指定该表空间的所有的EXNENT的大小,这样该表空间的所有的Extent具有同样的大小。一般情况下,由于数据库管理员能够预先的估计出该表空间的数据对象的大小,因此数据库管理员一般能够确定合适的UNIFORMSIZE来创立数据表空间。经过指定合适的数据表空间,能够避免系统出现过多的碎片和提高存储空间的利用效率。一般情况下,建议数据库管理员能够使用指定大小的方式来创立表空间,除非明确知道表空间中仅仅存储较小的数据对象,否则不要使用自动的EXTENT管理方式。Segemnt的管理对Segment的管理可分为两种。我们推荐使用ASSM方式。手工管理方式(Manual)手工管理方式是指用户创立表空间时使用手工指定参数Freelist,FreelistGroup来控制表空间的段的空闲块。手工的管理管理能够带来更多的灵活性。自动管理方式(ASSM)自动的管理方式指数据库系统使用BITMAP的方式来管理空闲块。在这种情况下如果多个对象需要分配空间,可能会造成对某一块的竞争。数据表空间的存储参数(Oracle9i/10g)数据表空间的区(extent)管理:表空间是以区为单位进行分配空间的。自从9i及以后版本推荐使用本地管理表空间,而且本地管理表空间是默认的。对应的createtablespace语句子句为EXTENTMANAGEMENTLOCAL。Oracle已不推荐使用字典管理的表空间。如下图:如果表空间包含各种不同大小的数据库对象,而这些对象拥有不同尺寸的区,则选择AUTOALLOCATE是最好的选择。即字句EXTENTMANAGEMENTLOCALAUTOALLOCATE。让Oracle来管理EXTENT的分配。如下例:CREATETABLESPACEtestDATAFILE'/u02/oracle/data/test01.dbf'SIZE50MEXTENTMANAGEMENTLOCALAUTOALLOCATE;如果能够预先估算出单个对象或一系列对象的所分配的空间及EXTENTS的尺寸,则选择UNIFORM是个比较好的选择。即字句UNFORMSIZE<integer>M。如下例:CREATETABLESPACEtestDATAFILE'/u02/oracle/data/test01.dbf'SIZE50MEXTENTMANAGEMENTLOCALUNIFORMSIZE128K;表空间的段(segment)管理:段管理分为自动段空间管理(缺省参数)和手动段空间管理,对应的子句如下图:自动段管理是一种相对简单而有效的段空间的管理方式。该方式完全摒除了PCTUSED,FREELISTS,FREELISTSGROUPS等物理存储参数的设置。即使这些参数被指定,Oracle依然会忽略它。自动段管理可根据用户数和实例数自动调整,对于大多数标准负载和应用性能来说,要比手动调整管理段要更好。因此多数情况下推荐使用段管理。如下列:CREATETABLESPACEtestDATAFILE'/u02/oracle/data/test01.dbf'SIZE50MEXTENTMANAGEMENTLOCALSEGMENTSPACEMANAGEMENTAUTO;下面是完整的例子:例1:本地管理表空间+自动段空间管理sql(ORACLE9i/10g)CREATETABLESPACETESTDATAFILE'/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL\TEST.DBF'SIZE5MEXTENTMANAGEMENTLOCALSEGMENTSPACEMANAGEMENTAUTO;例2:本地管理表空间+自动统一尺寸段空间管理sql(ORACLE9i/10g)CREATETABLESPACETESTDATAFILE'/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL\TEST.DBF'SIZE5MEXTENTMANAGEMENTLOCALUNIFORMSIZE2MSEGMENTSPACEMANAGEMENTAUTO;临时表空间的存储参数(Oracle9i/10g)Oracle9i/10g推荐使用本地表空间管理+统一区尺寸管理1M,分别对应得子句是EXTENTMANAGEMENTLOCAL和UNIFORMSIZE1M。例:SQL(Oracle10.2)CREATETEMPORARYTABLESPACETEMP1TEMPFILE'/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/temp1.dbf'SIZE5MEXTENTMANAGEMENTLOCALUNIFORMSIZE1M;Autoextend_Clause自动扩展语句会造成数据文件的自动增长,在使用裸设备的情况下可能造成文件越界,在使用文件系统的情况下可能造成文件系统无空闲空间。不应使用自动扩展的功能。表的参数设置原则Pctfree、Pctused存储参数pctfree和pctused决定了一个数据块在不同的数据库操作下的可用性,它与数据对象的操作性质密切相关。对于主要操作为insert的数据对象,能够考虑设定较小pctfree和较大的pctused,如pctfree=5Pctused=60。对于更新较为频繁的系统,能够设定较大的pctfree和较小的pctused来避免行的迁移,如pctfree=20Pctused=40。对于银行系统,由于数据的保留时间较长,同时数据的删除较少能够考虑设定较小的pctfree和较大的pctused,如:Pctfree=10Pctused=50。Initrans、Maxtrans存储参数initrans和maxtrans决定了数据对象的同一个数据块中能够并发进行的事务数。由于当前的数据块由逐步变大的趋势,故此同一个数据块中发生并发事务的几率在上升。对于db_Block_Size=8192的OLTP系统,能够设定initrans=4,Maxtrans=10Undo/temp表空间的估算Undo设置原则oracle9i以后的版本,推荐使用UNDOTABLESPACE,让系统自动管理回滚段。须考虑以下几个问题:系统并发事务数有多少?系统是否存在大查询或者大是事务?频繁与否?能提供给系统的回滚段表空间的磁盘空间是多少?Temp设置原则可创立缺省临时表空间temp,取数据库的缺省参数。一般情况下,生产数据库系统的临时表空间不是用缺省的。应另外创立临时表空间,以供较大的排序事务使用。可设置每个Transaction类别用户,对应一个临时表空间。索引的使用原则基本使用原则当查询的行数占整个表总行数的比例<=5%时,建立b*树索引效果比较明显。(普通索引就是b*数索引)在频繁进行排序或分组(即进行groupBy或orderBy操作)的列上建立索引。在频繁使用distinct关键字进行查询的列上面建立索引。进行表连接时,在连接字段上面建立索引。对于键值频繁更新的索引,需要定期的进行重建。基本存储参数设置原则物理属性子句(Physical_Attributes_Clause)参见表的物理属性参数设置原则Storage_Clause参见表空间的存储参数设置原则Blevel索引的blevel代表了索引中从根节点到叶节点的深度,对于索引来说,由于索引键值的频繁更新可能造成该索引的节点的过度分裂,使得索引的层次较多。因此系统管理人员应该定期的对索引进行分析,对索引深度较深的的索引进行重建工作。复合索引的使用原则一般情况下,对于经常同时使用多个数据项进行查询的对象能够创立复合索引,使用复合索引时特别要考虑的各个数据项在索引中的相对位置。一般情况下,我们把最常见的列放在第一位而不太常见的列放在稍后面的位置。在复合索引创立后,我们要求用户在查询数据的时候也遵循同样的方式来使用索引。虽然当前的Oracle数据库版本能够使用复合索引中的后面的数据项,可是按序使用复合索引能够给我们带来较高的效率。函数索引的使用原则在使用函数索引(Function-basedINDEX)时,需要设置初始化参数QUERY_REWRITE_ENABLED=TRUE,创立该索引的用户需要有CREATEINDEX和QUERYREWRITE权限。对于经常进行运算比较的一些列,能够考虑建立函数索引,可是也能够经过在表中使用原来的列的函数形式来实现在OLTP系统中,一般情况下我们不建议使用函数索引。B树索引的使用原则当查询的行数占整个表总行数的比例<=5%时,建立B*树索引效果比较明显。否则,就要慎重考虑是否需要建立B*索引。索引列包含的不同值很多时,应该建立B*树索引。使用B*树索引时候应该注意的是,它对AND/OR等条件逻辑组合查询的效率很低。位图索引的使用原则索引列包含的不同值很少时,应该建立位图索引。位图索引对AND/OR等条件逻辑组合查询的效率很高。修改表的代价很大,适用于只读性,或更新很少的表文件设计如果使用裸设备作为数据库设备,则在该目录下建立到相应的裸设备的链接文件。如果使用文件作为数据库设备,则根据存储空间的需求,建立独立的文件系统,挂接到该目录下。RAC配置文件srvconfig_SizeSize表示了文件/设备的大小,由数字部分和单位部分组成:XU,其中,X是一个正整数,取值范围从1~1023,U是单位标识位,是1位的字符,取值范围为k、m、g、t,分别表示了KByte、MByte、GByte、TByte,Size的值应该根据文件/设备的数据大小指定。参数文件对于共享磁盘的双机热备的系统,发生失效接管(failover)时,应使用pfile参数文件设置;在没有发生失效接管情况下,使用spfile参数文件。对于单机或RAC方式的系统,可使用共享的spfile参数文件设置;参数文件命名规则Oracle数据库系统在启动时,先读取初始化参数文件,根据该文件的设置,系统才能启动成功。从Oracle9i以后的版本,Oracle系统使用spfile文件和pfile参数文件。数据库系统启动时,首先查找$ORACLE_HOME/dbs/目录的spfile文件,如果无此文件,系统在查找pfile文件。spfile文件是二进制文件,而pfile文件是ASCII文件。pfile初始化参数文件:该文件是ASCII码文件,可用文本编辑器编辑(注:在编辑前,一定要先备份)。文件命名:init{SID}.ora文件路径:/home/db/{OS_oracle_user}/admin/{DB_NAME}/pfile/以及$ORACLE_HOME/dbs/spfile初始化参数文件:该文件是二进制文件,不能够直接编辑。只能经过OracleSQL语句进行创立。方法如下(注:在创立前,一定预先备份spfile及pfile):SQL〉showparameterspfileSQL〉createspfilefrompfile;spfile的两种使用方式:文件系统:spfile{DB_NAME}.ora裸设备:rspfile{DB_NAME}_size保存路径:/home/db/oracle/oradata/{DB_NAME}/;缺省路径:$ORACLE_HOME/dbs/size表示了文件/设备的大小,由数字部分和单位部分组成:XU,其中,X是一个正整数,取值范围从1~1023,U是单位标识位,是1位的字符,取值范围为k、m、g、t,分别表示了KByte、MByte、GByte、TByte,Size的值应该根据文件/设备的数据大小指定。控制文件每个数据库实例应至少有两个控制文件,且每个文件存储在独立的物理磁盘上。如果有一个磁盘失效而导致控制文件不可用,与其相关的数据库实例必须关闭。一旦失效的磁盘得到修复,能够把保存在另一磁盘上的控制文件复制到该盘上。这样数据库实例可重新启动。并经过非介质恢复操作使数据库得到恢复。因此,为了使整个系统的高可靠地运行,建议系统设置2-3个控制文件。控制文件命名规则保存路径:/home/db/oracle/oradata/{DB_NAME}/控制文件的使用方式:裸设备:创立数据库前,在指定的目录下创立指向裸设备的连接文件。rcontrol_n_size其中:n为从1开始计数的整数,表示控制文件序号。如:1,2……size表示了文件/设备的大小,由数字部分和单位部分组成:XU,其中,X是一个正整数,取值范围从1~1023,U是单位标识位,是1位的字符,取值范围为k、m、g、t,分别表示了KByte、MByte、GByte、TByte,Size的值应该根据文件/设备的数据大小指定。文件系统:controlnn.ctl其中:nn为从01开始计数的两位整数,表示控制文件序号。如:01,02,03……控制文件数量:为2-3个。如果控制文件所在存储已作镜像,建议2个控制文件。如果没有做镜像,建议3个控制文件。控制文件大小裸设备:一个物理分区大小,一般为256MB。文件系统:系统缺省大小。重做日志文件重做日志文件的尺寸会对数据库的性能产生重要影响,因为它的尺寸大小决定着数据库的写进程(DBWn)和日志归档进程(ARCn)。一般情况下,较大的日志文件提供较好的数据库性能,较小的重做日志文件会增加核查点(checkpoint)的活动,从而导致性能的降低。当然为了防止I/O争用,还应把各个重做日志文件分布到不同的物理磁盘上。不可能为重做日志文件提供特定大小的建议,重做日志文件在几百兆字节到几GB字节都被认为是合理的。欲确定数据库重做日志文件的大小,应根据该系统产生重做日志的数量,并依据最多每二十分钟发生一次日志切换这个大致原则来决定。在系统运行后,我们从alert文件获取日志的切换时间,并根据切换的间隔来调整重组日志的大小。初始大小建议不低于50M,小于1G。日志文件命名规则归档日志(archivelog)文件,建议放在独立物理磁盘上。重做日志保存路径:/home/db/oracle/oradata/{DB_NAME}/归档日志保存路径:/home/db/oracle/orarch##表示实例号,1,2,3,……一般要求归档日志备份文件系统大小能够保证容纳2天产生的归档日志。AIX操作系统还要求该文件系统设置rbrw属性,以避免归档日志被放入操作系统内存。日志文件的使用方式:裸设备创立数据库前,在指定的目录下创立指向裸设备的连接文件。rlog#_n_m_size(单机)rlog#_n_m_size(RAC)文件系统redon_m.log#表示实例号,1,2,3,……n表示日志组的编号,取值范围为01-06m表示日志组成员的编号,取值范围为01-02size表示了设备的大小,由数字部分和单位部分组成:XU,其中,X是一个正整数,取值范围从1~1023,U是单位标识位,是1位的字符,取值范围为k、m、g、t,分别表示了KByte、MByte、GByte、TByte,size的值应该根据设备的数据大小指定。日志组数量:为3-6,具体日志组数量根据各项目情况确定,每个日志组包括2个成员。日志文件大小:为512,1024,2048M,……根据各项目情况选择此区间值。数据库应用数据库用户设计数据库用户的权限用户权限控制原则业务功能的安全分配是指开发团队定义的用户、角色、特权,它是面向应用程序和开发的。它在数据库部署是几乎是不可修改的。数据库用户安全分配往往取自前台应用设计开发团队的交付生产时的定义。这种安全定义了用户、角色、系统特权、对象特权分配等等。它往往是面向开发的,没有细致考虑用户权限的控制。在数据库系统上线时,才发现有不妥之处。而这种用户安全分配多数情况下不能修改,否则对前台应用造成运行错误。但在交付生产时,投产方和用户方必须对其安全性进行审计。因为这时提供的用户安全往往是面向开发的,而不是面向末端用户的。主要检查一下几个方面:每个业务用户不得授予DBA角色。取消一些系统特权。但必须之前征询开发者的意见,否则可能对前台应用运行带来不可预测的错误。坚持最小化特权原则。用户及其权限规范根据数据库管理、数据维护、开发、功能等方面分为以下类型用户:序号用户类型描述DBA该类用户拥有DBA角色,只有数据库管理员能够使用。其它用户不要授予该角色。DATAOWNER该类用户拥有数据库业务schema对象,特别是tables及其它对象。不对末端用户开放。只有经过对象授权和系统授权,Transaction类型用户才可访问DATAOWNER类型用户;表空间的使用,要经过空间授权配额,才可访问;CREATESESSION特权使用时方可临时授权,使用完毕后,取消授权。Transaction该类型用户拥有数据库最小权限。只有经过明确的系统和对象授权才可访问DATAOWNER中的对象(如CREATESESSION,ALTERSESSION等)。一般用于末端用户的访问。Monitor该类型用户一般用于监控数据库性能,或者是第三方工具使用。作为监控软件,如QUEST监控软件、patrol、statspack、rman等;其它作为普通用户使用,使用权限严格限制,并服从DBA管理。如执行一般的查询sql语句等。为非DBA用户使用。对象(如:表、索引、触发器、过程等)管理权限归数据中心,应用(属记录级别,创立临时表权限)权限归项目组用户命名规则DBA类型命名格式:<XXX>DBA注:XXX为长度为3个字符的项目英文简称DATAOWNER类型的命名格式:<X>DB注:X为长度为2-4个字符的业务功能简称.Transaction类型命名格式:<X>T注:X为长度为4-8个字符的业务功能简称Monitor类型命名注:监控软件用户应按照第三方的供应商提供的方式命名。其它类型命名格式:<XXX>SQL注:XXX为长度3个字符的功能英文简称。用户权限分配方式对于一个IT数据库项目,在应用系统开发过程中,就开始对数据库用户权限进行严格的控制。即按照该系统未来生产时的方式进行分配,尽管此时数据库还处在开发服务器之中,尽管给开发项目的控制带来更多的工作,但数据库的安全性大大提高了。对数据库用户(user)的授权,应经过数据库角色(role)进行分配。而不要把对象特权和系统特权直接授权给数据库用户。其带来的优势参见小结“5.3.2数据库用户安全的实现”。具体授权特权参见:各用户类型的角色命名规范DATAOWNER类型用户分配的角色命名规则:R_<X>_DB注:X为长度为2-4个字符的业务功能简称。Transaction类型用户分配的角色命名规则:R_<X>_T注:X为长度为4-8个字符的业务功能简称。Monitor类型用户分配的角色命名规则:注:应按照第三方厂商提供的方式命名。其它类型用户分配的角色命名规则:R_<XXX>_SQL。注:XXX为长度为三个字符的业务功能简称。数据库用户安全的实现数据库特权Oracle数据库是经过“特权”(Privilege)这个概念来实现数据安全的。所谓特权指用一种指定的方式访问xxx数据库数据对象的一个许可,如查询一个数据表的许可等。这个特权能够被授予某个实体,因此这个授予实体特权(privilege)的过程,称之为“授权”(Grant)。涉及Oracle数据库系统安全的实体有两个,分别是系统特权(SystemPrivileges)和对象特权(ObjectPrivileges)。系统特权系统特权是指登录到ORACLE数据库系统的用户,执行数据库系统级别的某种操作或者是某一数据库对象的创立、修改、删除。在ORACLE数据库系统中有一系列的系统内置预定义特权,系统用这些特权去控制数据的安全。不得授予普通用户额外的全局权限,如selectany/deleteany/executeany等,应用有特殊需求的除外。对象特权对象特权是指登录到ORACLE数据库系统的用户,有权执行数据库对象级别的某种操作。例如表的INSERT,DELETE,UPDATE操作等。同样,在ORACLE数据库系统中有一系列的对象内置预定义特权,系统用这些特权去控制数据的安全。角色由于ORACLE数据库系统业务处理的复杂性,对ORACLE数据库的系统特权和对象特权的分配也就变得十分复杂。因此,为了方便管理系统特权和对象特权,需要引入角色这个基本概念。所谓角色是指系统特权和对象特权的集合。经过对角色的管理,使得ORACLE数据库的系统特权和对象特权管理变得更加方便和容易。基于角色的安全管理主要有以下几点优势:减少授权工作量:能够经过授权给与一组用户相关联的角色,再由该角色授权给该用户组的成员用户。动态特权管理:如果授权给某个xxx用户的特权需要改变,只须修改相关角色的授权,那么与这个角色相关的用户的特权会自动改变,不须修改授权给用户特权。设置特权的可用性:当某个被授予用户的角色,需要取消,只须对相应的角色设置禁用(DISABLED)。因此,在任何特定的情况下,都可对用户的授权进行必要的控制。应用程序级的设置可用性:前台应用程序在试图以某个数据库用户的身份与后台数据库相连接时,能够对角色设置可用性。这种做法能够把非应用程序例如SQL*PLUS或第三方的数据库操作工具等,屏蔽在数据库系统之外,以保证数据库的安全。角色能够根据业务的需求自由定义,系统特权和对象特权能够授权给角色,角色也可授权给另外的角色,角色也可授权给用户。基于上面描述的角色安全管理的优点和特点,ORACLE数据库系统选择角色来实施数据库用户的授权管理,并根据ORACLE的业务需求从不同的角度实现业务的权限分配。根据需求,设置不同级别的角色,某一级别体现对某一项业务的特权。各角色级别之间或是子集关系,或是交集关系;同一级别的角色之间,或是交集,或是互为独立集合的关系。随着对业务需求的增加或变化,不断增加、完善访问控制的粒度,并坚持最小化特权原则。如下图:经过存储过程管理特权(storedprocedures)使用存储过程(storedprocedures)来限制数据库的操作,客户端用户只需有权执行存储过程,并经过存储过程来实现对数据库表的访问。因而就屏蔽了用户直接对数据库表的操作。经过视图(VIEWS)管理特权经过视图(VIEWS)来控制ORACLE数据库系统的安全。即只分配给用户查询视图的特权,而对基表(定义视图的相关的数据表)则进行屏蔽,禁止对数据表的直接操作。视图能够实现以下两种安全级别:使用视图能够限制对数据表中的特定的列的访问。使用视图能够限制对数据表中的特定的行的访问。如:对于某一基表,要求只显示部分行,则可经过创立实体的WHERE子句来控制行的显示。授予权限和角色授予系统权限和角色能够用SQL语句GRANT来授予系统权限和角色给其它角色和用户。有GRANTANYROLE系统权限的任何用户能够授予数据库里的任何角色。下面的语句授予系统权限CREATESESSION和角色ACCTS_PAY给用户JWARD:GRANTCREATESESSION,ACCTS_PAYTOJWARD;注意:对象权限不能跟系统权限和角色在同一句GRANT语句里授予。当一个用户创立一个角色,会把自动这个角色带关键字ADMINOPTION地授予给它的创立者。一个带有关键字ADMINOPTION的被授予者有几项扩展性能:被授予者能够对数据库的其它用户或角色进行授予或撤销系统权限或角色的操作。(用户不能够撤销它本身的角色。)被授予者能够进一步授予有关键字ADMINOPTION系统或角色。拥有一个角色的被授予者能够改变或卸载这个角色。在下面的语句中,安全管理员把NEW_DBA角色授予给MICHAEL:GRANTNEW_DBATOMICHAELWITHADMINOPTION;用户MICHAEL不但能够使用隐含在角色NEW_DBA里的所有权限,当有需要时还能够授予,撤销或卸载NEW_DBA角色。只有在对安全管理员进行相关权限和角色授予时,才允许带有关键字ADMINOPTION。授予对象权限和角色同样能够使用GRANT语句来授予对象权限给角色和用户。要授予对象权限,必须要具备下面任意一个条件:拥有被授予的对象被授予过有关键字GRANTOPTION的对象权限。注意:系统权限和角色不能和对象权限在同一句GRANT语句中授予。下面的语句授予了对应EMP表所有列的SELECT,INSERT和DELETE的对象权限给用户JFEE和TSMITH: GRANTSELECT,INSERT,DELETEONEMPTOJFEE,TSMITH;要授予只对应EMP表的ENAME列和JOB列的INSERT的对象权限给用户JFEE和TSMITH,声明下面的句子: GRANTINSERT(ENAME,JOB)ONEMPTOJFEE,TSMITH;要把对应于SALARY视图的所有对象权

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论