数据库设计规范(初稿)v1.0_第1页
数据库设计规范(初稿)v1.0_第2页
数据库设计规范(初稿)v1.0_第3页
数据库设计规范(初稿)v1.0_第4页
数据库设计规范(初稿)v1.0_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

数据库设计文档 李伟 2010-12-25

目录1. 数据库物理设计原那么 51.1. 数据库环境配置原那么 51.1.1. 操作系统环境 51.1.2. 内存要求 51.1.3. 交换区设计 51.1.4. 其他 61.2. 数据库设计原那么 61.2.1. 数据库SID 61.2.2. 数据库全局名 61.2.3. 数据库类型选择 61.2.4. 数据库连接类型选择 71.2.5. 数据库SGA配置 71.2.6. 数据库字符集选择 81.2.7. 数据库其他参数配置 91.2.8. 数据库控制文件配置 91.2.9. 数据库日志文件配置 101.2.10. 数据库回滚段配置 101.2.11. 数据库临时段表空间配置 11. 数据库系统表空间配置 111.3. 数据库表空间设计原那么 111.3.1. 表空间大小定义原那么 111.3.2. 表空间扩展性设计原那么 121.4. 裸设备的使用 122. 数据库逻辑设计原那么 132.1. 命名标准 132.1.1. 表属性标准 132.1.2. 索引 142.1.3. 视图 152.1.4. 实体化视图 152.1.5. 存储过程 152.1.6. 触发器 152.1.7. 函数 162.1.8. 数据包 162.1.9. 序列 162.1.10. 表空间 162.1.11. 数据文件 162.1.12. 普通变量 162.1.13. 游标变量 17. 记录型变量 172.1.15. 表类型变量 172.1.16. 数据库链 172.2. 命名 172.2.1. 语言 172.2.2. 大小写 182.2.3. 单词分隔 182.2.4. 保存字 182.2.5. 命名长度 182.2.6. 字段名称 182.3. 数据类型 182.3.1. 字符型 182.3.2. 数字型 192.3.3. 日期和时间 192.3.4. 大字段 192.3.5. 唯一键 192.4. 设计 202.4.1. 范式 202.4.2. 表设计 202.4.3. 索引设计 232.4.4. 视图设计 242.4.5. 包设计 242.4.6. 平安性设计 252.5. SQL编写 262.5.1. 字符类型数据 262.5.2. 复杂sql 272.5.3. 高效性 272.5.4. 健壮性 282.5.5. 平安性 292.5.6. 完整性 303. 备份恢复设计原那么 303.1. 数据库exp/imp备份恢复 303.1.1. 数据库级备份原那么 303.1.2. 用户级备份原那么 303.1.3. 表级备份原那么 313.2. 数据库冷备份原那么 313.3. Rman备份恢复原那么 313.3.1. Catalog数据库 313.3.2. ArchiveLog 333.3.3. 全备份策略 333.3.4. 增量备份策略 333.3.5. 恢复原那么 333.4. 备用数据库原那么 343.5. 一些小经验 343.6. 系统调优知识 353.6.1. 生成状态报表〔statspack的使用〕 353.6.2. sql追踪 363.6.3. 内存调整 373.6.4. 排序的优化 403.6.5. 统计信息 414. 设计工具 42

数据库物理设计原那么数据库环境配置原那么操作系统环境对于中小型数据库系统,采用linux操作系统比拟适宜,对于数据库冗余要求负载均衡能力要求较高的系统,可以采用Oracle10gRAC的集群数据库的方法,集群节点数范围在2—64个。对于大型数据库系统,可以采用SunSolarisSPARC64位小型机系统或HP9000系列小型机系统。RAD5适合只读操作的数据库,RAD1适合OLTP数据库。内存要求对于linux操作系统下的数据库,由于在正常情况下Oracle对SGA的管理能力不超过1.7G。所以总的物理内存在4G以下。SGA的大小为物理内存的50%—75%。对于64位的小型系统,Oracle数据库对SGA的管理超过2G的限制,SGA设计在一个适宜的范围内:物理内存的50%—70%,当SGA过大的时候会导致内存分页,影响系统性能。交换区设计当物理内存在2G以下的情况下,交换分区swap为物理内存的3倍,当物理内存>2G的情况下,swap大小为物理内存的1—2倍。其他其他环境变量参考Oracle相关的安装文档和随机文档。数据库设计原那么数据库SID数据库SID是唯一标志数据库的符号,命名长度不能超过5个字符。对于单节点数据库,以字符开头的5个长度以内字串作为SID的命名。对于集群数据库,当命名SID后,各节点SID自动命名为SIDnn,其中nn为节点号:1,2,…,64。例如rac1、rac2、rac24。数据库全局名数据库全局名称:<sid>.domain数据库类型选择对于海量数据库系统,采用datawarehouse的类型。对于小型数据库或OLTP类型的数据库,采用TransactionProcessing类型。数据库连接类型选择Oracle数据库有专用效劳器连接类型和多线程效劳器MTS连接类型。对于批处理效劳,需要专用效劳器连接方式,而对于OLTP效劳那么MTS的连接方式比拟适宜。由于采用MTS后,可以通过配置网络效劳实现某些特定批处理效劳采用专用效劳器连接方式,所以数据库设计时一般采用MTS类型。数据库SGA配置数据库SGA可以采用手工配置或按物理内存比例配置,在数据库初始设计阶段采用按比例配置方式,在实际应用中按系统调优方式修改SGA。数据库字符集选择为了使数据库能够正确支持多国语言,必须配置适宜的数据库字符集,采用UTF8字符集。注意:如果没有大对象,在使用过程中进行语言转换没有什么影响,具体过程如下〔切记设定的字符集必须是ORACLE支持,不然不能start〕SQL>shutdownimmediate;SQL>startupmount;SQL>altersystemenablerestrictedsession;SQL>altersystemsetjob_queue_processes=0;SQL>alterdatabaseopen;SQL>alterdatabasecharactersetinternal_usewe8iso8859p1;SQL>shutdownimmediate;SQL>startup数据库其他参数配置DB_FILESDb_files是数据库能够同时翻开的文件数量,默认值是200个。当数据库规划时文件数量FILES接近或超过200个时候,按以下估计值配置:DB_FILES=FILES*1.5Db_block_size一个extent要是5个blocks的倍数为好,如:一个blocks是4096字节,那一个extent就是2M、4M或8M为好。Db_block_size是数据库最小物理单元,一旦数据库创立完成,该参数无法修改,db_block_size按以下规那么调整:数据仓库类型:db_block_size尽可能大,采用8192或16384OLTP类型:db_block_size用比拟小的取值范围:2048或4096Blocks推荐是系统操作的块倍数〔裸设备块大小是512字节,NTFS是4K,使用8K的方式在大局部系统上通用〕。数据库控制文件配置控制文件镜象多个控制文件存放在不同的物理位置。控制文件配置控制文件中参数设置,最大的数据文件数量不能小于数据库参数db_files。数据库日志文件配置日志文件大小日志文件的大小由数据库事务处理量决定,在设计过程中,确保每20分钟切换一个日志文件。所以对于批处理系统,日志文件大小为几百M到几G的大小。对于OLTP系统,日志文件大小为几百M以内。日志文件组数量对于批处理系统,日志文件组为5—10组;对于OLTP系统,日志文件组为3—5组,每组日志大小保持一致;对于集群数据库系统,每节点有各自独立的日志组。日志成员数量为了确保日志能够镜象作用,每日志组的成员为2个。数据库回滚段配置在Oracle9i数据库中,设计Undo表空间取代以前版本的回滚段表空间。Undo表空间大小的设计标准由以下公式计算:Undospace=UR*UPS*db_block_size+冗余量UR:表示在undo中保持的最长时间数〔秒〕,由数据库参数UNDO_RETENTION值决定。UPS:表示在undo中,每秒产生的数据库块数量。例如:在数据库中保存2小时的回退数据,假定每小时产生200个数据库块。那么Undospace=2*3600*200*4K=5.8G。数据库临时段表空间配置数据库临时段表空间根据实际生产环境情况调整其大小,表空间属性为自动扩展。数据库系统表空间配置系统表空间大小1G左右,除了存放数据库数据字典的数据外,其他数据不得存储在系统表空间。数据库表空间设计原那么表空间大小定义原那么当表空间大小小于操作系统对最大文件限制时,表空间由一个文件组成。如果表空间大小大于操作系统对最大文件限制时,该表空间由多个数据文件组成,表空间的总大小为估算为:Tablespace+sum(数据段+索引段)*150%。表空间扩展性设计原那么表空间数据文件采用自动扩展的方式,扩展容量快大小按2的整数倍〔1M、2M、4M、8M、16M、32M、64M〕进行扩展,创立表空间时尽量采用nologing选项。表空间的最大限制一般采用unlimited,除非确切知道表空间数据文件的最大使用范围。〔一般windows32位系统的文件最大2G,64位的unix系统系统文件最大128G,但也要注意文件格式设定的文件大小〕,建议最大为2G。表空间采用local管理方式,例如:CREATETABLESPACETBS_USERINFODATAFILE‘/oradata/tbs_userinfo.dbf’SIZE8M REUSEAUTOEXTENDONNEXT2MMAXSIZEUNLIMITEDNOLOGGINGEXTENTMANAGEMENTLOCALAUTOALLOCATESEGMENTSPACEMANAGEMENTAUTO;裸设备的使用一个scsi设备可以14个分区,unix操作系统256个分区,性能比文件系统方式高15%左右,空间大于要小于(实际分区大小减两个ORACLE的数据块),比方100M,大于为100000K,推荐在unix使用软连接(ln)方式把裸设备形成文件,用参加表空间时加resue选项,当然也可只接把设备参加表空间,移动裸设备使用dd命令。对于windows平台,oracle提供软连接工具,实现裸设备的使用,计算一条记录的长度。数据库逻辑设计原那么命名标准表属性标准表名前缀为Tbl_。数据表名称必须以有特征含义的单词或缩写组成,中间可以用“_”分割,例如:tbl_pstn_detail。表名称不能用双引号包含。表分区名前缀为p。分区名必须有特定含义的单词或字串。例如:tbl_pstn_detail的分区p2004100101表示该分区存储2004100101时段的数据。字段名字段名称必须用字母开头,采用有特征含义的单词或缩写,不能用双引号包含。主键名前缀为PK_。主键名称应是前缀+表名+构成的字段名。如果复合主键的构成字段较多,那么只包含第一个字段。表名可以去掉前缀。外键名前缀为FK_。外键名称应是前缀+外键表名+主键表名+外键表构成的字段名。表名可以去掉前缀。索引普通索引前缀为IDX_。索引名称应是前缀+表名+构成的字段名。如果复合索引的构成字段较多,那么只包含第一个字段,并添加序号。表名可以去掉前缀。主键索引前缀为IDX_PK_。索引名称应是前缀+表名+构成的主键字段名,在创立表时候用usingindex指定主键索引属性。唯一索引前缀为IDX_UK_。索引名称应是前缀+表名+构成的字段名。外键索引前缀为IDX_FK_。索引名称应是前缀+表名+构成的外键字段名。函数索引前缀为IDX_func_。索引名称应是前缀+表名+构成的特征表达字符。蔟索引前缀为IDX_clu_。索引名称应是前缀+表名+构成的簇字段。视图前缀为V_。按业务操作命名视图。实体化视图前缀为MV_。按业务操作命名实体化视图。存储过程前缀为Proc_。按业务操作命名存储过程。触发器前缀为Trig_。触发器名应是前缀+表名+触发器名。函数前缀为Func_。按业务操作命名函数。数据包前缀为Pkg_。按业务操作集合命名数据包。序列前缀为Seq_。按业务属性命名。表空间公用表空间前缀为Tbs_。根据存储的特性命名,例如:tbs_parameter。专用表空间Tbs_<表名称>_nn。该表空间专门存储指定的某一个表,或某一表的假设干个分区的数据。数据文件<表空间名>nn.dbf。nn=1,2,3,4,…等。普通变量前缀为Var_。存放字符、数字、日期型变量。游标变量前缀为Cur_。存放游标记录集。记录型变量前缀为Rec_。存放记录型数据。表类型变量前缀为Tab_。存放表类型数据。数据库链前缀为dbl_。表示分布式数据库外部链接关系。命名语言命名应该使用英文单词,防止使用拼音,特别不应该使用拼音简写。命名不允许使用中文或者特殊字符。英文单词使用用对象本身意义相对或相近的单词。选择最简单或最通用的单词。不能使用毫不相干的单词来命名。当一个单词不能表达对象含义时,用词组组合,如果组合太长时,采用用简或缩写,缩写要根本能表达原单词的意义。当出现对象名重名时,是不同类型对象时,加类型前缀或后缀以示区别。大小写名称一律大写,以方便不同数据库移植,以及防止程序调用问题。单词分隔命名的各单词之间可以使用下划线进行分隔。保存字命名不允许使用SQL保存字。命名长度表名、字段名、视图名长度应限制在20个字符内(含前缀)。字段名称同一个字段名在一个数据库中只能代表一个意思。比方telephone在一个表中代表“号码”的意思,在另外一个表中就不能代表“号码”的意思。不同的表用于相同内容的字段应该采用同样的名称,字段类型定义。数据类型字符型固定长度的字串类型采用char,长度不固定的字串类型采用varchar。防止在长度不固定的情况下采用char类型。如果在数据迁移等出现以上情况,那么必须使用trim()函数截去字串后的空格。数字型数字型字段尽量采用number类型,要注意精度。日期和时间系统时间由数据库产生的系统时间首选数据库的日期型,如DATE类型。外部时间由数据导入或外部应用程序产生的日期时间类型采用varchar类型,数据格式采用:YYYYMMDDHH24MISS。大字段如无特别需要,防止使用大字段(blob,clob,long,text,image等)。唯一键对于数字型唯一键值,尽可能用系列sequence产生。设计范式如无性能上的必须原因,应该使用关系数据库理论,到达较高的范式,防止数据冗余,但是如果在数据量上与性能上无特别要求,考虑到实现的方便性可以有适当的数据冗余,但根本上要到达3NF.如非确实必要,防止一个字段中存储多个标志的做法。如11101表示5个标志的一种取值。这往往是增加复杂度,降低性能的地方。表设计逻辑段设计原那么Tablespace每个表在创立时候,必须指定所在的表空间,不要采用默认表空间以防止表建立在系统表空间上导致性能问题。对于事务比拟繁忙的数据表,必须存放在该表的专用表空间中。Pctused默认pctused导致数据库物理空间利用率非常低40%左右;对于update比拟少或update不导致行增大的表,pctused可设置在60—85之间;对于update能够导致行增大的表,update设置在40—70之间。Initrans对于需要并行查询或者在RAC数据库中需要并行处理的表,initrans设置为2的倍数,否那么,不设该值。StorageInitial尽量减少表数据段的extents数量,initial的大小尽量接近数据段的大小64K,128K,…,1M,2M,4M,8M,16M,…,等按2的倍数进行圆整。例如表或分区数据段大小为28M,那么initial取32M。Next表或分区扩展extents的大小,按上述方法进行圆整。当表或分区数据段无法按Initial接近值进行圆整的情况下,其大小可以按Initial+Next进行圆整。此时,必须设置Minextents=2。例如:表或分区数据段大小为150M,那么Initial=128M;Next=32M,Minextents=2。Minextents该参数表示表创立时候Extents的初始数量,一般取1—2。Pctincrease表示每个扩展Extents的增长率,设置pctincrease=0能够获得较好的存储性能。特殊表设计原那么分区表对于数据量比拟大的表,根据表数据的属性进行分区,以得到较好的性能。如果表按某些字段进行增长,那么采用按字段值范围进行范围分区;如果表按某个字段的几个关键值进行分布,那么采用列表分区;对于静态表,那么采用hash分区或列表分区;在范围分区中,如果数据按某关键字段均衡分布,那么采用子分区的复合分区方法。聚蔟表如果某几个静态表关系比拟密切,那么可以采用聚蔟表的方法。完整性设计原那么主键约束关联表的父表要求有主健,主健字段或组合字段必须满足非空属性和唯一性要求。对于数据量比拟大的父表,要求指定索引段。外键关联对于关联两个表的字段,一般应该分别建立主键、外键。实际是否建立外键,根据对数据完整性的要求决定。为了提高性能,对于数据量比拟大的标要求对外健建立索引。对于有要求级联删除属性的外键,必须指定ondeletecascade。NULL值对于字段能否null,应该在sql建表脚本中明确指明,不应使用缺省。由于NULL值在参加任何运算中,结果均为NULL。所以在应用程序中必须利用nvl()函数把可能为NULL值得字段或变量转换为非NULL的默认值。例如:NVL〔sale,0〕。Check条件对于字段有检查性约束,要求指定check规那么。触发器触发器是一种特殊的存储过程,通过数据表的DML操作而触发执行,起作用是为确保数据的完整性和一致性不被破坏而创立,实现数据的完整约束。触发器的before或after事务属性的选择时候,对表操作的事务属性必须与应用程序事务属性保持一致,以防止死锁发生。在大型导入表中,尽量防止使用触发器。注释表、字段等应该有中文名称注释,以及需要说明的内容。索引设计对于查询中需要作为查询条件的字段,可以考虑建立索引。最终根据性能的需要决定是否建立索引。对于复合索引,索引字段顺序比拟关键,把查询频率比拟高的字段排在索引组合的最前面。在分区表中,尽量采用local分区索引以方便分区维护。除非时分区local索引,否那么在创立索引段时候必须指定指定索引段的tablespace、storage属性,具体参考内容。视图设计视图是虚拟的数据库表,在使用时要遵循以下原那么:从一个或多个库表中查询局部数据项;为简化查询,将复杂的检索或字查询通过视图实现;提高数据的平安性,只将需要查看的数据信息显示给权限有限的人员;视图中如果嵌套使用视图,级数不得超过3级;由于视图中只能固定条件或没有条件,所以对于数据量较大或随时间的推移逐渐增多的库表,不宜使用视图;可以采用实体化视图代替;除特殊需要,防止类似Select*from[TableName]而没有检索条件的视图;视图中尽量防止出现数据排序的SQL语句。包设计存储过程、函数、外部游标必须在指定的数据包对象PACKAGE中实现。存储过程、函数的建立如同其它语言形式的编程过程,适合采用模块化设计方法;当具体算法改变时,只需要修改需要存储过程即可,不需要修改其它语言的源程序。当和数据库频繁交换数据是通过存储过程可以提高运行速度,由于只有被授权的用户才能执行存储过程,所以存储过程有利于提高系统的平安性。存储过程、函数必须检索数据库表记录或数据库其他对象,甚至修改〔执行Insert、Delete、Update、Drop、Create等操作〕数据库信息。如果某项功能不需要和数据库打交道,那么不得通过数据库存储过程或函数的方式实现。在函数中防止采用DML或DDL语句。在数据包采用存储过程、函数重载的方法,简化数据包设计,提高代码效率。存储过程、函数必须有相应的出错处理功能。平安性设计管理默认用户在生产环境中,必须严格管理sys和system用户,必须修改其默认密码,禁止用该用户建立数据库应用对象。删除或锁定数据库测试用户scott。数据库级用户权限设计必须按照应用需求,设计不同的用户访问权限。包括应用系统管理用户,普通用户等,按照业务需求建立不同的应用角色。用户访问另外的用户对象时,应该通过创立同义词对象synonym进行访问。角色与权限确定每个角色对数据库表的操作权限,如创立、检索、更新、删除等。每个角色拥有刚好能够完成任务的权限,不多也不少。在应用时再为用户分配角色,那么每个用户的权限等于他所兼角色的权限之和。应用级用户设计应用级的用户帐号密码不能与数据库相同,防止用户直接操作数据库。用户只能用帐号登陆到应用软件,通过应用软件访问数据库,而没有其它途径操作数据库。用户密码管理用户帐号的密码必须进行加密处理,确保在任何地方的查询都不会出现密码的明文。SQL编写字符类型数据SQL中的字符类型数据应该统一使用单引号。特别对纯数字的字串,必须用单引号,否那么会导致内部转换而引起性能问题或索引失效问题。利用trim(),lower()等函数格式化匹配条件。复杂sql对于非常复杂的sql(特别是有多层嵌套,带子句或相关查询的),应该先考虑是否设计不当引起的。对于一些复杂SQL可以考虑使用程序实现。USER_TAB_COMMENTS数据字典Commenton可加注解高效性防止In子句使用In或notIn子句时,特别是当子句中有多个值时,且查询数据表数据较多时,速度会明显下降。可以采用连接查询或外连接查询来提高性能。Char比varchar查询时高效。在进行查询及建立索引时,char比varchar的效率要高,当然varchar在存储上比char要好。防止嵌套的Select子句这个实际上是In子句的特例。防止使用Select*语句如果不是必要取出所有数据,不要用*来代替,应给出字段列表,注:不含selectcount(*)。防止不必要的排序不必要的数据排序大大的降低系统性能。健壮性Insert语句使用Insert语句一定要给出要插入值的字段列表,这样即使更改了表结构加了字段也不会影响现有系统的运行。Count(*)、Count(id)、count(distinctid)的区别Selectcount(*)fromtesttab得到表testtab的记录数selectcount(id)fromtesttab得到表testtabid字段非空记录数selectcount(distinctid)fromtesttab得到表testtabid字段值非相同记录数Notnull为字段类型性质的约束本约束功能在后期无语法使期失效,可使用修改字段类型方式。altertablemodify字段名类型notnullaltertablemodify字段名类型外键值可用null的问题外键列如没有明确说明notnull,可插入null记录〔而null是在外部表的记录中没有的〕,如无可插null记录的想法,要对外键字段加notnull约束。序列sequence跳号的问题sequence因回滚,系统崩溃〔使用cache内的值将认为已用〕,多表引用都将使其跳号,所以不能用于为连续序号utl_row.cast_to_rowunicn\intersect\minus使用ordeyby的考前须知以上语句进行连表操作,而表同表的字段顺序的类型相同但字段标题名可不同,使用ordeyby时后面如果是字段名,要求所有的表的字段标题名相同,否那么用字段的顺序号selectid,name,yearfromuser1unionselectno,name,to_number(null)yearfromuser2orderby1,name,year平安性无论在使用Select,还是使用破坏力极大的Update和Delete语句时,一定要检查Where条件判断的完整性,不要在运行时出现数据的重大丧失。如果不确定,最好先用Select语句带上相同条件来验证一下结果集,来检验条件是否正确。完整性有依赖关系的表,例如主外键关系表,在删除父表时必须级联删除其子表相应数据,或那么按照某种业务规那么转移该数据。9I中表中字段缩小及变类型,字段为空或表空,varchar和char长度不变可任意改,字段名和表名可字段可用ALTERTABLEtableSETUNUSED(column)设定为不可用,注意无命令再设为可用。备份恢复设计原那么数据库exp/imp备份恢复Oracle数据库的Exp、Imp提供了数据快速的备份和恢复手段,提供了数据库级、用户级和表级的数据备份恢复方式。这种方法一般作为数据库辅助备份手段。数据库级备份原那么在数据库的数据量比拟小,或数据库初始建立的情况下采用。不适合7*24的在线生产环境数据库备份。用户级备份原那么在用户对象表数据容量比拟小、或那么用户对象初始建立的情况下使用。表级备份原那么主要在以下场合采用的备份方式:参数表备份、静态表备份、分区表的分区备份。数据库冷备份原那么数据库冷备份必须符合以下原那么:数据库容量比拟小。数据库允许关闭的情况。Rman备份恢复原那么这种方式适用于7*24环境下的联机热备份情形。Catalog数据库单独建立备份恢复用的数据库实例,尽可能与生产环境的数据库分开,确保catalog与生产数据库的网络连接良好。在9I系统使用良好的备份策略以可,支持完全使用控制文件保存catalog信息,备份策略如下:backupspfileformat'/data/backup/%d_SPFILE_%T_%s_%p.bak';sql"altersystemarchivelogcurrent";backuparchivelogallformat'/data/backup/%d_ARC_%T_%s_%p.bak'deleteallinput;backupcurrentcontrolfileformat'/data/backup/%d_CTL_%T_%s_%p.bak';在spfile、控制文件、数据库全丢的情况下可通过下面的方式恢复RMAN>connecttargetconnectedtotargetdatabase(notstarted)RMAN>startupRMAN>restorespfilefrom'/data/backup/COMMDB_SPFILE_20030411_9_1.bak';SQL>startupORA-00205:errorinidentifyingcontrolfile,checkalertlogformoreinfoRMAN>restorecontrolfilefrom'd:\DB92_CTL_20031113_9_1.BAK';Moutdatabase:RMAN>recoverdatabase;RMAN>alterdatabaseopenresetlogs;注意:对数据库设定控制文件保存备份信息为365天,具体语句如下。altersystemsetcontrol_file_record_keep_time=365SCOPE=BOTH;ArchiveLog设置ArchiveLog的位置,确保存储介质有足够的空间来保存指定时间内archivelog的总量。建设定期对RMAN进行全备份,删除冗余归档日志文件。全备份策略对于小容量数据库,可以采用全备份策略。对于大容量数据库,必须制定全备份策略方案,备份时对archivelog进行转储,同时冷备份catalog数据库。增量备份策略对于大容量数据库,必须制定增量备份、累积备份和全备份的周期,备份时对archivelog进行转储,同时冷备份catalog数据库。恢复原那么采用Rman脚本进行数据库恢复。数据库恢复有以下几种:局部恢复主要用于恢复表空间、数据文件,一般不影响数据库其他操作。完全恢复数据库恢复到故障点,由catalog当前数据库决定。不完全恢复恢复到数据库的某一时间点或备份点。恢复catalog数据库。恢复数据库controlfile。恢复到数据库某一时间点。重设日志序列。备用数据库原那么数据库系统在以下情况下可以考虑采用备用数据库dataguard原那么:数据库容量适中。数据库严格要求7*24不间断,或间断时间要求控制在最小范围内。数据库要求有异地备份冗余。一些小经验使用oemc的oms时,首选项要求是节点和数据库分别参加系统用户〔如:administrator〕和数据库DBA用户(system)。节点的系统用户必须有批处理作业登录的权限。agent不能启动,lisnter修改后都要手动删除oracle\ora9\network\agent中的*.q文件。oracle\admin\my9i\bdump中是用户的出错日志。改变表的空间的方式altertablehr.ssssmoveTABLESPACEexample〔要重建索引〕;或用imp导入时,设定导入用户只有某一表空间的使用权,无RESOURCE角色和UNLIMITEDTABLESPACE权限。aletersystemsetlog_checkpoint_to_alter=true,后可报警文件发现checkpoint的起动和结束时间。系统调优知识生成状态报表〔statspack的使用〕使用〔存放位置@?\rdbms\admin\〕的文件生成报表用户。@?\rdbms\admin\Spcreate.sql建表。将timed_statistics设定true。使用生成的perfstat用户登录,执行以下语句手动收集信息。Exexstatspack.snapExecstatspack.snap(I_SNAP_LEVEL=>0,I_MODEFY_PRAMETER=>TRUE)0级,最少10最大。使用下面的语句生成状态报表:@?\rdbms\admin\Spreport.sql其他相关文件deletestats$snapshot;清原来记录数据@?\rdbms\admin\Saputo.sqlselectjobfromuser_jobs取用户作业号execdbms_remove(作业号)timed_statistics=true要求@?\rdbms\admin\spdrop.sql;sql追踪设定全部用户跟踪altersystemsetsql_trace=true;用户级别跟踪altersessionsetsql_trace=true;用户的跟踪文件生成在admin\{pid}\udump\{pid}_ora_{SPID}.trc中,spid从下面语句得到SELECTbkpr,s.username,p.spid,s.sid,s.serial#FROMv$bgprocessb,v$sessions,v$processpWHEREp.addr=b.paddr(+)ANDp.addr=s.paddrands.username=user;DBA对特定用户跟踪execdbms_system_set_Sql_trace_in_session(sid,serial#,true)信息从下面得到SELECTbkpr,s.username,p.spid,s.sid,s.serial#,osuser,gramFROMv$bgprocessb,v$sessions,v$processpWHEREp.addr=b.paddr(+)ANDp.addr=s.paddr;/*p.spid用于sql_trace时日志编号,dbms_system.set_sql_trace_in_session(sid,erial#,true)*/用户的跟踪文件生成在admin\{pid}\udump中系统的跟踪文件生成在admin\{pid}\bdump\alert_{pid}.logtkprof.exe将log文件生成格式化文本在avRd(ms)20以上说明表空间使用过用频繁,考虑将表分开其他表空间上系统变量fast_start_mttr_target的值要大到不产生log等待,当然也可通过加log组使其不等待reaolog大小应为每30分钟切换一次建议表空间的利用率不超80%bufferhit要达80%以上为好内存调整一般的内存分配原那么SGA50%〔其中80%DATABUFFER,15%SHAREPOOL,5其他〕PGA30%OS20%例如:2G的WINDOWS的平台,OS300M,SAG1.2G,PGA500M内存分配的根本单位SGA《=128M4MSGA》128M64位系统16M,32M系统8M动态分配时总值不可大于sga_max_size通过V$SGA_DYNAMIC_FREE_MEMORY取空闲内存空间在缩小时如果内存空间实际在应用中,CPU利用率将达100%,最后将语句出错。V$SGASTAT可看实际的使用情况Redologbuffer一般在5M内,可通过v$sessuon_wait看是否等,v$sysstat可也通过报警文件看是否等切换,方法可加组。可通过nologging〔数据库也要设定支持nologging〕方法减少日志文件产生量。java_pool没有设定时,使用shared_pool_sizeshared_pool本缓冲区用于sql语句,plsql等的对象保存Cursor_sharing{Exact|Similar|force}游标共享设定Force方式适用OLTP数据库,Exact方式适合数据仓库,similar为智能方式hardparses硬SQL语句分析,每秒要底于100次,小要加大shared_poolsoftparse软SQL语句分析,OLTP要达90%以上,小要加大shared_pool不建议用无命名PLSQL段如果有大PLSQL(存储过程)对象可强制保存于内存,也可加大SHARED_POOL_RESERVED_SIZE,大小不可过SHARED_POOL_SIZE的50%,不然实例不能起动db_cache本缓冲区用于数据库数据对象保存db_cache_advice为on,可以提出通过企业管理器看到系统建议通过select*fromv$system_event进行系统查看。发现存在freebufferwaits

温馨提示

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

评论

0/150

提交评论