1、目录1 前言 .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(联机分析处理) .
2、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 表空间的使用规则 .195.3.2.1 表空间的类型 .205.3.2.2 表空间及其文件的命名规则 .215.3.3 表空间的物理使用规则 .245.3.3.1 表空
3、间的物理分布 .245.3.3.2 表空间的存储参数的设置 .245.3.4 表空间的参数设置原则 .265.3.4.1 Extent的管理 265.3.4.2 Segemnt的管理 275.3.4.3 Autoextend_Clause .295.3.5 表的参数设置原则 .295.3.5.1 Undo/temp表空间的估算 305.3.6 索引的使用原则 .305.4 文件设计 .325.4.1 RAC 配置文件 325.4.2 参数文件 .325.4.2.1 参数文件命名规则 .325.4.3 控制文件 .335.4.3.1 控制文件命名规则 .345.4.4 重做日志文件 .345.4
4、.4.1 日志文件命名规则 .356 数据库应用 .366.1 数据库用户设计 .366.1.1 数据库用户的权限 .366.1.1.1 用户权限控制原则 .366.1.1.2 用户及其权限规范 .376.1.1.3 各用户类型的角色命名规范 .386.1.2 数据库用户安全的实现 .396.1.2.1 数据库特权 .396.1.2.2 角色 .396.1.2.3 授予权限和角色 .416.1.2.4 数据库默认用户 .436.1.2.5 数据库用户密码 .446.2 数据库分区 .446.2.1 数据库分区介绍 .446.2.2 逻辑分割 .446.2.3 物理分割 .456.2.4 分区后
5、对数据库管理的好处 .456.2.5 分区对数据库规划、创建带来的负面影响 .456.2.6 Oracle 分区技术 456.2.7 分区使用选择 .466.2.8 分区索引 .476.2.8.1 全局索引(GLOBAL index ) 476.2.8.2 本地索引(LOCAL index) .476.3 数据库实例配置 .486.3.1 数据库字符集 .486.3.2 数据库版本和补丁集 .496.4 数据库参数设置 .496.4.1 必须修改的初始化参数 .496.4.1.1 DB_CACHE_SIZE496.4.1.2 SHARED_POOL_SIZE 506.4.1.3 LARGE_P
6、OOL_SIZE .516.4.1.4 DB_BLOCK_SIZE516.4.1.5 SP_FILE 526.4.1.6 PGA_AGGREGATE_TARGET .526.4.1.7 PROCESSES .526.4.1.8 OPEN_CURSORS.536.4.1.9 MAX_DUMP_FILE_SIZE536.4.1.10 RECOVERY_PARALLELISM 536.4.1.11 PARALLEL_EXECUTION_MESSAGE_SIZE.536.4.1.12 INSTANCE_GROUPS(RAC ) 546.4.1.13 PARALLEL_INSTANCE_GROUP(RA
7、C) .546.4.1.14 与 DRM 有关的隐藏参数(RAC) 556.4.2 系统优化建议修改的初始化参数 .556.4.2.1 SESSION_CACHED_CURSORS 556.4.2.2 BACKUP_TAPE_IO_SLAVES556.4.2.3 JAVA_POOL_SIZE 566.4.2.4 OPTIMIZER_INDEX_COST_ADJ566.4.3 不得修改的初始化参数 .566.4.3.1 COMPATIBLE566.4.3.2 CURSOR_SHARING576.4.3.3 SGA_TARGET576.4.3.4 SGA_MAX_SIZE576.4.4 建议不修改
8、的初始化参数 .586.4.4.1 UNDO_RETENTION .586.4.4.2 SESSIONS.586.4.4.3 TRANSACTIONS.586.4.4.4 DB_KEEP_CACHE_SIZE596.4.4.5 LOCK_SGA 596.4.4.6 DB_FILES .606.4.4.7 DB_FILE_MULTIBLOCK_READ_COUNT 606.4.4.8 LOG_BUFFER606.4.4.9 FAST_START_MTTR_TARGET616.4.5 与并行操作有关的参数 .616.5 数据库连接服务 .626.5.1 专用服务器连接 .626.5.2 共享服务器
9、连接 .636.5.3 连接服务建议 .636.5.3.1 专用服务器连接 .636.6 数据库安全建议 .646.6.1 采用满足需求的最小安装 .646.6.2 安装时的安全 .646.6.2.1 删除或修改默认的用户名和密码 .646.6.2.2 安装最新的安全补丁 .646.7 数据库备份和恢复 .656.7.1 RMAN 备份 .656.7.2 Export/import 备份 656.7.3 存储级备份 虚拟带库 .666.7.4 数据库恢复 .666.7.4.1 实例故障的一致性恢复 .666.7.4.2 介质故障或文件错误的不一致恢复 .666.8 ORACLE NETWORK
10、 配置 676.8.1 监听器的使用配置原则 .676.8.2 TNSNAMES 的使用配置原则 .676.8.3 RAC 环境下 TNSNAMES 的配置 .686.8.3.1 各节点启用负载均衡 .686.8.3.2 各节点不启用负载均衡 .697 数据库开发建议 .697.1 数据库模型设计规范 .697.1.1 命名规则 .697.1.2 表 .717.1.2.1 建表的参数设置 .717.1.2.2 主外键设计 .717.1.2.3 列设计 .727.1.2.4 临时表 .727.1.3 索引 .727.1.4 视图 .727.1.5 存储过程、函数和包 .737.1.6 触发器 .
11、737.1.7 序列 .737.1.8 Directory737.1.9 别名 .737.1.10 Database Link 747.2 PLSQL开发规则 747.2.1 总体开发原则 .747.2.2 程序编写规则 .747.2.2.1 在 PL/SQL中使用 SQL 747.2.2.2 变量声明原则 .767.2.2.3 游标 .777.2.2.4 集合 .817.2.2.5 动态 PL/SQL 867.2.2.6 对象 .897.2.2.7 大对象类型(LOB) .927.2.2.8 包(PACKAGE ) .1017.2.3 故障处理规则 .1027.3 SQL语句编写规则 104
12、7.3.1 查询语句的使用原则 .1047.3.1.1 索引的正确使用 .1047.3.1.2 使用连接方式的原则 .1077.3.1.3 进行复杂查询的原则 .1117.3.2 DML 语句的调整原则 .1157.3.2.1 Oracle存储参数的影响 1157.3.2.2 大数据类型的影响 .1167.3.2.3 DML执行时约束的开销 1177.3.2.4 DML执行时维护索引所需的开销 1171 前言1.1 编写目的为总结我 XXXX建设的成果,加强 XXXX平台建设工作的规范化管理,我们梳理了 XXXX平台基础设施设计的相关文档,并进行了深化、细化,力求结合实际的设计、实施工作,对设
13、计、实施起到规范、指导作用。本指南主要从一个设计者的角度进行阐述,相关章节也按此思路编写。作为一个设计者,首先要了解产品可实现的部署模式,如何选择部署模式,其次要考虑设计涉及到的因素,有针对性地做好数据库的设计等;为提高数据库的性能,对程序开发提出了的要求。在界线的划分上,基础产品只涉及本产品的设计,上层应用产品对基础产品的需求放在应用产品中,例如,ORACLE 部署对 AIX的要求,放在 ORACLE设计指导中。在编写过程中,特别关注可操作性,不仅仅是要求,而是提出建议,尽量覆盖设计工作中涉及的工作要点。本指南中参数建议值是对系统设计时的指导,是合理的经验值,但由于应用系统的复杂性,每个系统
14、有自己的特点,建议按建议值进行系统的初始配置,在压力测试和系统上线后根据实际需要做相应的调整。附件中列出了 ERP/CLPM/CCBSBS/EBANK四个系统的 oracle数据库配置参数以及相应的 AIX、HP 系统配置参数,作为系统设计的参考。1.2 预期读者项目基础设施可行性研究、设计和实施人员,项目组应用系统设计人员,相关运行维护技术人员。1.3 数据库部署模式1.4 单机模式数据库服务器采用单服务器模式,满足对可用性和性能要求不高的应用,具备以下特点:1、 硬件成本低。单节点,硬件投入较低,满足非重要系统的需求。2、 安装配置简单。由于是单节点、单实例,所以安装配置比较简单。3、 管
15、理维护成本低。单实例,维护成本低。4、 对应用设计的要求较低。由于是单实例,不存在 RAC系统应用设计时需要注意的事项,所以应用设计的要求较低。5、 可用性不高。由于是单服务器、单实例,所以服务器和实例的故障都会导致数据库的不可用。6、 扩展性差。无法进行横向扩展,只能进行纵向扩展。当应用对性能有更高的要求时,该模式的数据库服务器无法进行增加节点、实例等横向扩展,只能进行增加硬件配置等纵向扩展,且扩展性有局限。7、 根据该模式的特点有如下要求:1)硬件配置方面预留扩展量。由于该模式无法进行横向扩展,所以在选择硬件配置时要为以后的纵向扩展预留扩展量,避免硬件无法满足性能需求的情况。2)充分考虑该
16、模式是否满足应用未来一段时间的需求。需要考虑应用在未来一段时间是否会发生变化,该模式是否满足应用变化的需求。1.5 HA热备模式数据库服务器采用 HA热备模式,可以满足对可用性有一定要求的应用,具备以下特点:1、 需要冗余的服务器设备。该模式需要有冗余的服务器硬件,以满足一备一或者一备多的需求。硬件成本较高。2、 需要 HA软件的支持。该模式需要配合 HA软件才可以实现。3、 安装配置相对简单。该模式比单节点、单实例的模式配置复杂一些,需要更多的配置步骤,但相比较 RAC、DATAGUARD 等模式要简单。4、 管理维护成本低。单实例,对维护人员的要求较低,维护成本低。5、 对应用设计的要求较
17、低。由于是单实例,不存在 RAC系统应用设计时需要注意的事项,所以应用设计的要求较低。6、 具备一定的高可用性。由于是多服务器、单实例,所以服务器和实例有故障时会发生实例在不同服务器上的切换,导致数据库的暂时不可用。无法满足对可用性有严格要求的应用类型。7、 扩展性差。无法进行横向扩展,只能进行纵向扩展。当应用对性能有更高的要求时,该模式的数据库服务器无法进行增加节点、实例等横向扩展,只能进行增加硬件配置等纵向扩展,且扩展性有局限。根据该模式的特点有如下要求:1)硬件配置方面预留扩展量。由于该模式无法进行横向扩展,所以在选择硬件配置时要为以后的纵向扩展预留扩展量,避免硬件无法满足性能需求的情况
18、。2)充分考虑该模式是否满足应用未来一段时间的需求。需要考虑应用在未来一段时间是否会发生变化,该模式是否满足应用变化的需求。1.6 RAC模式数据库服务器采用 RAC模式,满足对高可用性要求高的应用类型,具备以下特点:1、 需要多个硬件服务器。根据节点的个数,相应的需要多个硬件服务器。硬件成本较高。2、 某些数据库版本需要 HA软件的支持。该模式下,某些数据库版本需要配合 HA软件才可以实现。3、 安装配置复杂。该模式比起单实例模式,安装配置相对复杂,安装配置周期长。4、 管理维护成本高。该模式的管理维护,对管理维护人员的要求较高,管理维护成本较高。5、 对应用设计的要求较高。需要充分考虑业务
19、的逻辑性,以避免在多节点之间的信息交换和全局锁的产生。6、 具备较高的高可用性。由于是多服务器、多实例,单服务器和实例有故障不会影响数据库的可用性。可以满足对可用性有严格要求的应用类型。7、 扩展性好。既可以进行横向扩展,也可以进行纵向扩展。当应用对性能有更高的要求时,该模式的数据库可以通过增加节点的方式进行横向扩展,也可以通过增加硬件配置等纵向扩展,具备良好的扩展性。根据该模式的特点有如下要求:1、 硬件配置方面预留扩展量。预留一定的硬件扩展量,可以更灵活的进行扩展。2、 在应用设计时,充分考虑业务逻辑,减少多节点间的信息交换量,更好的发挥 RAC的优点。1.7 DATAGUARD模式数据库
20、服务器采用 DATAGUARD灾备模式,可以满足对可用性有特殊需求的应用,具备以下特点:1、 需要冗余的服务器设备。该模式需要有冗余的服务器硬件。硬件成本较高。2、 需要冗余的存储设备。主机和备机都需要同样的存储空间,成本较高。3、 安装配置比较复杂。该模式比单节点、单实例的模式配置复杂一些,需要更多的配置步骤。4、 管理维护成本高。该模式对维护人员的要求较高,维护成本高。5、 具备一定的容灾特性。当主机整个数据库系统不可用并短期内无法恢复时,可以把数据库系统切换到备机上,具备容灾的功能。6、 备机可以用作只读查询。备机可以切换到只读状态供报表之类的查询操作,减轻主机的压力。根据该模式的特点有
21、如下要求:1、 主机与备机在物理上要分开。为了实现容灾的特性,需要在物理上分割主机和备机。2、 进行合理的设计,充分实现 DATAGUARD的功能。1.8 RAC+DATAGUARD模式数据库服务器采用 RAC+DATAGUARD模式,可以满足对可用性和容灾都有特定需求的应用,具备以下特点:1、 需要冗余的服务器设备。该模式需要有冗余的服务器硬件。硬件成本较高。2、 需要冗余的存储设备。主机和备机都需要同样的存储空间,成本较高。3、 安装配置比较复杂。该模式既需要配置 RAC又需要配置 DATAGUARD,配置过程比较复杂,配置周期长。4、 管理维护成本高。该模式对维护人员的要求较高,维护成本
22、高。5、 具备很高的可用性和容灾性。该模式既满足高可用性也满足容灾的需求。6、 备机可以用作只读查询。备机可以切换到只读状态供报表之类的查询操作,减轻主机的压力。根据该模式的特点有如下要求:1、 主机与备机在物理上要分开。为了实现容灾的特性,需要在物理上分割主机和备机。2、 进行合理的设计,充分实现 DATAGUARD的功能。2 数据库部署模式选择建议2.1 部署模式的选择建议在设计数据库时必须考虑系统的可用性、业务连续性要求,针对系统的可用性需求,采用不同的数据库部署模式:1、 对 RTO=0、RPO=0 的系统,建议数据库采用 RAC或 RAC+DataGuard 模式,数据库单台设备故障
23、时对业务没有影响,并考虑灾备系统的设计。2、 对 RTO1G 时默认为8192MAXUPRC 256 7374设定用户进程数量的最大值,此值必须设置为:3 到 nproc-5之间(NPROC*9)/10)+1MSGMNI 512 8192设定系统允许消息队列标识符的最大数,必须设置为:1 到 1000000之间(NPROC) MSGTQL 1024 8192设定系统允许消息的最大数,此值必须设置为:1 到 2147483647之间(NPROC) NCSIZE 8976 68608设定索引节点所需的目录名查找高速缓存(DNLC)空间(NINODE+1024)NFLOCKS此值根据系统内存大小初定
24、默认值,当内存 1G 时默认为40968192设定系统上可用文件锁的最大数量。此值须设置为 50-16777216(NPROC) SEMMNI 2048 8192设定整个系统信号量集的最大数量。此值须设置为:2 到 semmns之间,(NPROC)SEMMNS 4096 16384设定整个系统信号量的数量.此值须设置为:semmni 到 335534080之间(SEMMNI*2)SEMMNU 256 8188设定信号量 undo 结构的数量。此值须设置为:1 到 nproc-4 之间。(NPROC - 4) SHMMAX 1G 可用内存数量设定一个共享内存段的最大允许尺寸。SHMMAX设定值应
25、足够大,以便在一个共享内存段中装下整个 SGA。设置过低的结果是创建多个共享内存段,这样会降低性能。此值须设置为:2k 到 4TB之间,此值的设定请根据系统内存容量以及应用需要综合考虑设置。SHMMNI 400 512设定整个系统中共享内存段的最大数量。此值须设置为:3 到 32768之间 VPS_CEILING 16(KB) 64设定由系统选择的页面的最大尺寸,以KB 为单位。此值须设定为 4(KB)到4194304(KB)之间。以上参数针对 HP 11.313 数据库设计考虑的因素3.1 数据库类型特点分析在创建和规划一个 Oracle数据库之前,首要任务应确定将来投产的数据库属于何种业务
26、类型。目前的应用业务有以下类型:1、 OLTP(Online Transaction Processing)2、 OLAP(Online Analytiacl Processing)3、 BATCH 4、 DSS(Decision Support System)5、 Hybrid3.1.1OLTP(联机事务处理)OLTP数据库支持某种特定的操作,OLTP系统是一个包含繁重及频繁执行的DML应用,其面向事务的活动主要包括更新,同时也包括一些插入和删除。经典的例子是预定系统或在线时时交易系统,例如网上银行和ATM自动取款机系统。OLTP系统可以允许有很高的并发性(在这种情况下,高并发性通常表示许多
27、用户可以同时使用一个数据库系统)。3.1.2OLAP(联机分析处理)OLAP系统可提供分析服务。这意味着数学、统计学、集合以及大量的计算,一个OLAP系统并不永远适合OLTP或DSS模型,有时它是两者之间的交叉。另外,也可以把OLAP看作是在OLTP系统或DSS之上的一个扩展或一个附加的功能层次。通常,地理信息系统或有关空间的数据库和OLAP数据库相集成,提供图表的映射能力。用于社会统计的人口统计数据库就是一个很好的例子。3.1.3BATCH(批处理系统)批作业处理系统是作用于数据库的非交互性的自动应用。它通常含有繁忙DML语句并有较低的并发性(在这种情况下,较低的并发性通常表示少数几个用户能
28、够同时使用一个数据库系统),该业务系统会在某一时段,大批量数据(少则几万,多则几十万,几百万条数据)更新/插入/删除该数据库。事务查询的比率决定了如何物理地设计它,经典的例子是与DW有关的成品数据库和可操作数据库,如:操作型数据存储系统(ODS)。3.1.4DSS(决策支持系统)DSS系统通常是一个大型的、包含历史性内容的只读数据库,通常用于简单的固定查询或特别查询。DSS常常按某种方式变成一个VLDB(Very Large Database)或DW(Data Warehouse)。VLDB的例子如:企业资源管理财务系统(ERP)数据库,该数据库是一个长期存储数据库的历史数据库;DM的例子如:
29、整个集团的工资和人事数据库。3.1.5Hybrid(混合类型系统)同时数据库系统的应用类型可能是 OLTP、OLAP、BATCH 等的混合体。也意味着同时拥有上述业务类型特征,这就要求数据库管理员、应用系统分析员、操作系统管理员整体统筹考虑各种业务性能需求及功能需求,对这个系统制定出满足各种业务类型需求的规划,如:企业客户信息整合(ECIF)系统。3.2 数据库规模对于数据库的规模,仅从数据量来衡量其规模的大小。因为数据量的规模是反映数据库规模的主要指标。具体如下:1、 数据库业务数据量小于 100GB 属小规模数据库2、 数据库业务数据量 100GB-600GB属中等规模数据库3、 数据库业
30、务数据量 600GB-1TB 属大规模数据库4、 数据库业务数据量大于 1TB 属超大规模数据库4 数据库部署前提建议4.1 数据库产品选择建议Oracle数据库产品推出新的主要版本后,要经历一个版本不稳定期。在此期间新版的数据库产品存在较多的 bug。在安装和运行过程中,会存在数据库部署安装困难和运行出现不稳定现象。因此在选择版本时,要选择成熟稳定的版本。具体安装要求须参照Oracle 版本策略最新版 。4.2 磁盘阵列布局原则随着硬件技术的发展,目前磁盘阵列的使用变得越来越普遍,由于磁盘阵列和单个磁盘具有较大的不同,故此在数据库的物理划分上也有较大的不同。对于磁盘阵列系统,由于 RAID的
31、划分,不存在一个个真实的物理盘,对应的是物理卷(PV),逻辑卷组(VG),逻辑卷(LV)。在这种情况下 Oracle推荐使用 SAME技术,即全部镜像和条带化(Stripe And Mirror Everything)。在对磁盘阵列做 SAME处理后,所有的逻辑卷都分布在所有的物理磁盘上,每个逻辑卷的读写都能够利用的到所有的物理磁盘的吞吐能力,同时获得较高的可靠性。同时我们在使用磁盘设备的时候不需要考虑各个不同文件的 IO情况,因为它们都使用同样的全部磁盘的吞吐能力,这进一步简化了数据库系统的文件管理工作,避免一些意外的操作。对较重要、并且效率要求较高的系统推荐使用 RAID0+1的磁盘配置而
32、不使用RAID5,因为 RAID5的校验技术会降低应用数据库系统的效率。但使用 RAID0+1,比 RAID5需要更多物理磁盘。不同的类型对象,尽量分布在不同的卷组上,建议:1、 表对应的数据和索引分别放置在不同的物理磁盘上;2、 控制文件的多个备份分别放置在不同的物理磁盘上;3、 REDO日志组的多个成员放置在不同的物理磁盘上;4、 建议将 Oracle文件、SYSTEM 表空间、TEMPORARY 表空间、UNDO 表空间放置在不同的物理磁盘上;5 数据库物理结构设计5.1 软件安装路径及环境变量建立单独的文件系统来安装数据库软件,且文件系统的 mount点不要直接建立在根目录下。安装路径
33、: /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当前(2010.3)推荐版本为 10gR2,写为 10.2.0,下一个版本(计划从 2011.5开始推荐)为 11gR2,写为 11.2.0, 5.2 数据库实例的命名规则普通使用模式的 Or
34、acle数据库的服务名和实例名(SID)是相同的;RAC模式下的 Oracle数据库的服务名与实例名不同。数据库服务名的命名格式为:XXXYYdbm数据库的 SID的命名格式为:XXXYYdbmn说明:1、 其中 XXX表示长度为 3个字符的应用项目缩写,具体的见相关设计文档。2、 YY:代表数据库用途,pd 代表生产库,hi 代表历史库,rp 代表报表库,cf代表配置库;3、 m表示数据库序号,从 0-9,根据项目的数据库数量进行编号。4、 n表示 RAC节点实例序号 1,2,3。用以区分多节点的 RAC数据库的不同实例。对于普通模式的数据库,该位不指定。5.3 表空间设计5.3.1业务数据
35、量的估算估算所有业务 SCHEMA下的所有 table的尺寸。数据量估算的前提: 数据库的物理表结构已经确定,并且设计已凝固。 用户方提供较为准确的估算依据,例如业务变动的频率、数据需要保存的周期等。该表是一个示例,可根据业务的不同有所变化。序号 表名 增长量(/小时/天/周)增长量(/月/半年)年数据量 数据库生命周期内的总计1.2.3.4.5.6.7.8.9.10.11.合计新上线或扩容时,对所申请的存储不得全部一次性挂上,应该预留出 30左右的空间用于追加,以防止出现业务发展和预期不一致时剩余空间多寡不均,调整困难。操作系统上应该预先做好几个合适大小的 lv备用,包括用于 system/
36、sysaux等表空间的小尺寸的 lv和用于数据表空间、索引表空间的大尺寸 lv,这些 lv要求在 HA两边主机都可见,不必单纯因为数据库增加数据文件而需要重新同步HA。5.3.2表空间的使用规则目前多数数据库系统采用数据“大集中”原则,对数据库的性能要求较高。这就要求对数据库进行必要的优化配置。表现在表空间的配置上,应遵循以下原则:1、 最小化磁盘 I/O。2、 在不同的物理磁盘设备上,分配数据。3、 尽可能使用本地管理表空间。多数系统采用 RAID1+0 或 RAID0+1,该技术很好的解决了最小化磁盘I/O。基本不必考虑在不同的物理磁盘设备上,分配数据的原则。5.3.2.1表空间的类型按照
37、表空间所包含的数据文件类型,Oracle 表空间类型有三类:1、 数据表空间(permanence tablespace)-用来保存永久数据,包含永久数据文件。强烈建议在永久表空间内创建永久数据文件,不要创建临时数据文件。2、 临时表空间(temporary tablespace)-用来保存临时数据,多用于数据的磁盘排序。强烈建议在临时表空间内创建临时数据文件,不要创建永久数据文件。3、 回滚表空间(rollback/undo tablespace)-仅用来保存回退信息。不能在该表空间创建其他类型的段(如表、索引等) 。为了更好的管理表空间,同时提高 Oracle数据库系统性能,在上述三类基础
38、上,针对数据的业务功能,进一步对其加以分类。因此 Oracle数据库的表空间划分为基本表空间和应用表空间。如下表:(1) 基本表空间:是指 Oracle数据库系统为其自身运行而使用的表空间。表空间类别 表空间名称 存储内容 说明数据表空间 SYSTEM表空间 存储 oracle数据库系统数据字典对象Oracle数据库系统自身生成的和使用基本表空间数据表空间 SYSAUX 存储 SYSAUX数据 Oracle数据库系统自身生成的和使用基本表空间回滚表空间 UNDO表空间 容纳回滚数据 如果 UNDO表空间是自动管理,则 Oracle数据库系统自身生成的。生产数据库不得有如 TOOLS、XDB、E
39、XAMPLE 等 oracle默认安装表空间。(2) 应用表空间:是指业务应用数据保存在此类表空间中。它由 DBA或相关的数据库规划设计人员创建和规划。表空间类别 表空间名称 存储内容 说明临时表空间 TEMP表空间 容纳排序数据 由 DBA设定应用表空间数据表空间 TABLES表空间 存储小数据表公用业务数据由 DBA设定应用表空间数据表空间 TABLES PARTITION表空间存储巨型表数据 由 DBA设定应用表空间数据表空间 INDEXS表空间 存储小数据表的索引 由 DBA设定应用表空间数据表空间 INDEXS PARTITION表空间存储巨型数据表的索引 由 DBA设定应用表空间数
40、据表空间 LOB表空间 存储 LOB的数据 由 DBA设定应用表空间5.3.2.2表空间及其文件的命名规则数据文件都使用裸设备方式,使用固定大小,不得设置为自动扩展。5.3.2.2.1 基本表空间及其文件的使用规则(1) 基本表空间及其文件命名规范如下表表空间名称 裸设备连接文件名 普通文件名 说明SYSTEM rsystem_nn_size systemnn.dbf 总空间大小设置为 2GSYSAUX rsysaux_nn_size sysauxnn.dbf Oracle10g中必须有的表空间。总空间大小设置为 4G,如果空间非常紧张,可设置为 2GUNDOTBS1 rundotbs_nn_
41、size undotbsnn.dbf 总空间不小于 8G TEMP rtemp_nn_size tempnn.dbf 总空间不小于 4G说明: 裸设备连接文件名 nn为从 01开始计数的序号,表示文件的个数。如:01,02,03,04。 。 。 。 。 。 size表示了设备的大小,由数字部分和单位部分组成:XU。其中,X是一个正整数,取值范围从 11023,U 是单位标识位,是 1位的字符,取值范围为 k、m、g、t,分别表示了KByte、MByte、GByte、TByte,size 的值应该根据设备的数据大小指定。 普通文件名(即创建在文件系统上的文件) nn为从 01开始计数的两位整数序
42、号。如:01,02,03,04。 。 。 。 。 。 各表空间根据需求在建库时确定。(2) 数据文件路径:/home/db/oracle/oradata/DB_NAME/(3) 数据文件的使用方式:裸设备:适用于 RAC及共享磁盘双机热备数据库架构。创建数据库前,在指定的目录下创建指向裸设备的软连接文件。命令如下:ln -s /dev/rxxxxx /home/db/oracle/oradata/DB_NAME/xxxxx.dbf5.3.2.2.2 应用表空间及其文件使用规则(1) 应用表空间及其文件命名规范:应用表空间分为如下种类:参见节 5.2.2.1- (2)应用表空间表空间种类 表空间
43、命名规则 裸设备连接文件名 普通文件名TABLES公用表空间 D_nn r+表空间名称_nn_size 表空间名称_nn.dbfTABLES PARTITION分区表空间D_nn r+表空间名称_nn_size 表空间名称_nn.dbfINDEXS公用索引表空间I_nn r+表空间名称_nn_size 表空间名称_nn.dbfINDEXS PARTITION大表索引空间I_nn r+表空间名称_nn_size 表空间名称_nn.dbfLOB表空间 B_nn r+表空间名称_nn_size 表空间名称_nn.dbfTEMP表空间 T_nn r+表空间名称_nn_size 表空间名称_nn.dbf
44、说明: 表空间的命名规则nn为从 01开始计数的两位整数序号,表示表空间的数目。如:01,02,03,04。 。 。 。 。 。 裸设备连接文件名 nn为从 01开始计数的两位整数序号,表示数据文件的数目。如:01,02,03,04。 。 。 。 。 。 size表示了设备的大小,由数字部分和单位部分组成:XU。其中,X是一个正整数,取值范围从 11023,U 是单位标识位,是 1位的字符,取值范围为 k、m、g、t,分别表示了KByte、MByte、GByte、TByte,size 的值应该根据设备的数据大小指定。 普通文件名(即创建在文件系统上的文件) nn为从 01开始计数的两位整数,表
45、示数据文件的数目。如:01,02,03,04。 。 。 。 。 。 各表空间根据需求在建库时确定。(2) 数据文件路径:/home/db/oracle/oradata/DB_NAME/(3) 数据文件的使用方式: 裸设备:适用于 RAC及共享磁盘双机热备数据库架构。创建数据库前,在指定的目录下创建指向裸设备的连接文件。命令如下:ln -s /dev/rxxx /home/db/oracle/oradata/DB_NAME/r+表空间名称_nn_size其中:xxx 为裸设备的名称。该名规则相关命名规范。5.3.3表空间的物理使用规则5.3.3.1表空间的物理分布对于小规模数据库,I/O 不是主
46、要的性能瓶颈,可以不考虑物理分布的问题。对于中规模数据库及大规模数据库,应当考虑:1、 尽可能把应用数据表空间、应用的索引表空间以及相应得分区表空间分布在独立的物理卷上。 2、 其次把 UNDO、TEMP、REDOLOG 分布在不同的物理卷上。3、 对于 hp-ux 系统,应该为不同用途的数据建立独立的卷组。5.3.3.2表空间的存储参数的设置在规范表空间存储参数之前有必要澄清关于数据块(data block) 、区(extent) 、段(segment)的概念及其之间的关系。如下图:数据块(data block):Oracle 存储数据最细粒度是数据块,它是操作系统文件块的整数倍(有时也称逻
47、辑块,Oracle 块,或页) 。一个数据块大小有2k、4k、8k、16k 等,并以此单位大小保存在物理磁盘中。区(extent):是由一序列相邻连续的数据块组成的区域叫区。区存储特定类型的数据。它比数据块高一级别。段(segment):比区(extent)高一逻辑存储级别的称作段(segment) 。段是由一系列区组成。用来存储一个特定的数据结构,并且该段只能分配在同一表空间中,不能跨越表空间。如:每个表(table)的数据保存在自己的数据段中;而每个索引保存在自己的索引段中;如果表或索引是分区的,则每个分区拥有自己的段。5.3.4表空间的参数设置原则对于数据库的存储空间管理 Oracle有
48、以下的选择:5.3.4.1 Extent的管理对 Extent的管理有两种方式。一般情况下,我们推荐数据库管理员使用本地管理中的指定大小(Uniform Size)的方式创建表空间。1. 数据字典管理(Dictionary Management)在数据字典的管理方式中,数据库使用数据字典来跟踪数据对象的存储分配,这样当出现数据对象的存储变化时,数据库需要更新数据字典以保证系统可以跟踪数据库对象的存储变化,这在某种程度上会造成系统性能的下降。2. 本地管理(Local Management)在本地管理方式中,数据库使用每一个数据文件的前面 8个数据块中的每一位来代表数据块的占用方式。由于这种方式
49、跟踪数据对象的存储分配不需要访问数据字典,这在一定程度上避免了递归调用的出现,提高了系统存储管理的效率。对于本地的 Extent管理有两种方式:(1)自动分配(Autoallocate)自动分配的方式指由数据库系统按照数据对象的大小决定该对象的每一个EXNENT的大小。一般情况下,由于数据库系统并不能预先的确定该对象的总的大小,数据库总是倾向于在初始的几个 Extent使用较小的值,然后按照812810248192 个数据块的方式急剧的增大。这通常会造成系统过多的碎片和较低的存储空间的利用效率。(2)指定大小(Uniform Size)指定大小的方式指由数据库管理员在创建表空间时间指定该表空间的所有的EXNENT的大小,这样该表空间的所有的 Extent具有同样的大小。一般情况下,由于数据库管理员能够预先的估计出该表空间的数据对象的大小,所以数据库管理员通常能够确定合适的 UNIFORM SIZE来创建数据表空间。通过指定合适的数据表空间,可以避免系统出现过多的碎片和提高存储空间的利用效率。一般情况下,建议数据库管理员能够使用指定大小的方式来创建表空间,除非明确知道表空间中仅仅存储较小的数据对象,否则不要使用自动的 EXTENT管理方式。5.3.4.2 Segem