大数据库安装及配置要求规范_第1页
大数据库安装及配置要求规范_第2页
大数据库安装及配置要求规范_第3页
大数据库安装及配置要求规范_第4页
大数据库安装及配置要求规范_第5页
免费预览已结束,剩余36页可下载查看

下载本文档

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

文档简介

1、实用文档Oracle数据库系统安装及配置规范目录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. 数据库SG纳已置 71.2.6. 数据库字符集选择 81.2.7. 数据库其他参数配置 91.2.8. 数据库控制文件配置 91.2.9. 数据库日志文件配置 101.2.10. 数据库回滚段配置 101.2.11

2、. 数据库临时段表空间配置 111.2.12. 数据库系统表空间配置 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

3、.1.13. 游标变量 172.1.14. 记录型变量 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.

4、包设计 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. Archive Log 333.3.3. 全备份策略 333.3.

5、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. 设计工具 421 .数据库物理设计原则1.1. 数据库环境配置原则1.1.1. 操作系统环境对于中小型数据库系统,采用linux操作系统比较合适,对于数 据库冗余要求负载均衡能力要求较高的系统, 可以采用Oracle10gRAC 的集群数据库的方法,集群节点数范围在264个。对

6、于大型数据库 系统,可以采用Sun Solaris SPARC 64位小型机系统或HP 9000系 列小型机系统。RAD5适合只读操作的数据库,RAD1适合OLTP数据 库。1.1.2. 内存要求对于linux操作系统下的数据库,由于在正常情况下 Oracle对 SGA勺管理能力不超过1.7G。所以总的物理内存在 4G以下。SGA的 大小为物理内存的50V75%对于64位的小型系统,Oracle数据库 对SGA勺管理超过2G的限制,SGA设计在一个合适的范围内:物理 内存的50%-70%当SGA过大的时候会导致内存分页,影响系统性 能。1.1.3. 交换区设计当物理内存在2G以下的情况下,交换

7、分区swap为物理内存的3倍,当物理内存2G的情况下,swap大小为物理内存的12倍1.1.4. 其他其他环境变量参考Oracle相关的安装文档和随机文档。1.2. 数据库设计原则1.2.1. 数据库SID数据库SID是唯一标志数据库的符号,命名长度不能超过5个字 符。对于单节点数据库,以字符开头的5个长度以内字串作为SID的 命名。对于集群数据库,当命名SID后,各节点SID自动命名为SIDnn, 其中 nn 为节点号:1, 2, ,64。例如 rac1、rac2、rac24。1.2.2. 数据库全局名fcnowIng databaEe iFitarm&tJoinAn 0r>c

8、liT9l” wfi如修WHdf l«d by * Global灯>311/ 3 th*form "irii3me.doma:inB。3匕三匕日,虫 Mamta- 卜4。?$什0丁力恒AIs rsfirvncfd bv OnKAvSI instance 9<i *ch cl us t*r d惠ri 由 #. E*chj n.ce ts uniqus-J-yied ty a n Oracle Sy stem ' "& ntjf ier (8口L For -= ach cl usterdIrrhurv:,. the SiD i-.erg,d

9、 o-f a : >mmon nr外、 2 th1- 九,M,七,事$ and i numnar hsr t ach mstan-:e that Is auto mat inzallA id SlD p re 11 ?: haj.been entered for you «h ich you can ec<ept « change to a* value yoo preferSID Pmfi闺:n数据库全局名称:j<sid>.domain1.2.3. 数据库类型选择对于海量数据库系统,采用 data warehouse的类型。对于小型数据库或OLT硬

10、型的数据库,采用Transaction Processing 类型1.2.4. 数据库连接类型选择Oracle数据库有专用服务器连接类型和多线程服务器MTS连接类型。对于批处理服务,需要专用服务器连接方式,而对于OLTPI艮务则MTS勺连接方式比较合适。由于采用MTSW,可以通过配置网络 服务实现某些特定批处理服务采用专用服务器连接方式,所以数据库设计时一般采用MT驶型1.2.5. 数据库SGA配置数据库SGAM以采用手工配置或按物理内存比例配置, 在数据库初始设计阶段采用按比例配置方式,在实际应用中按系统调优方式修改SGA1 - LMiMuTi-orJrlitii »».

11、 1* S*kJiIHxhFFl* Li.m.s由才/旧僧-T* 口 IQI卜if ph.'S i<3l rriern< C1 0 £" ME: " iralstiue Tyu 呼F。iFA-dfrg'% how dHtnbkJtl。”Mpnn?r.Custprn| JHShahiT d Fool:uElr1 CKM:u i BJ.”Lar号始P»bj岳:j 叵三'口 11alik.口I nyr一Pm.,.,, g - - - . , “, -f 1", ,,,-k q卜Total M-mciry lxMTo

12、tui| memory mc|ud-Q-= 4OMB qF 力鼻小口亏 1咨。彘nd thR defa-j. 1fc*tlwnwtve . H .ny.1.2.6. 数据库字符集选择为了使数据库能够正确支持多国语言,必须配置合适的数据库字 符集,采用UTF8字符集。注意:如果没有大对象,在使用过程中进行语言转换没有什么影 响,具体过程如下(切记设定的字符集必须是ORACL皮持,不然不能 start )SQL> shutdown immediate;SQL> startup mount;SQL> alter system enable restricted session;SQ

13、L> alter system set job_queue_processes=0;SQL> alter database open;SQL> alter database character set internal_use we8iso8859P1;SQL> shutdown immediate;SQL> startup1.2.7. 数据库其他参数配置. DB_FILESDb_files是数据库能够同时打开的文件数量,默认值是 200个。 当数据库规划时文件数量FILES接近或超过200个时候,按以下估计 值配置:DB_FILES = FILES

14、 * .2. Db_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字节,NTFSM 4K,使用8K的方式在大部分系统上通用)

15、。1.2.8. 数据库控制文件配置. 控制文件镜象多个控制文件存放在不同的物理位置。. 控制文件配置控制文件中参数设置,最大的数据文件数量不能小于数据库参数 db_files 。1.2.9. 数据库日志文件配置. 日志文件大小日志文件的大小由数据库事务处理量决定,在设计过程中,确保每20分钟切换一个日志文件。所以对于批处理系统,日志文件大小 为几百M到几G的大小。对于OLT陈统,日志文彳大小为几百 M以 内。. 日志文件组数量对于批处理系统,日志文件组为 510组;Xt于OLTP系统,日 志文件组为35组,每组日志大小保持一致;对于集群数

16、据库系统, 每节点有各自独立的日志组。. 日志成员数量为了确保日志能够镜象作用,每日志组的成员为2个。1.2.10. 数据库回滚段配置在Oracle9i数据库中,设计Undo表空间取代以前版本的回滚段 表空间。Undo表空间大小的设计规范由以下公式计算:Undospace = UR * UPS *db_block_size+ 冗余量UR 表示在undo中保持的最长时间数(秒),由数据库参数 UNDO_RETENTlONfe 定。UPS表示在undo中,每秒产生的数据库块数量。例如:在数据库中保留2小时的回退数据,假定每小时产生 200 个数据库块。贝U Undospace = 2

17、 * 3600 * 200 * 4K = 5.8G。1.2.11. 数据库临时段表空间配置数据库临时段表空间根据实际生产环境情况调整其大小,表空间 属性为自动扩展。1.2.12. 数据库系统表空间配置系统表空间大小1G左右,除了存放数据库数据字典的数据外, 其他数据不得存储在系统表空间。1.3. 数据库表空间设计原则1.3.1. 表空间大小定义原则当表空间大小小于操作系统对最大文件限制时, 表空间由一个文 件组成。如果表空间大小大于操作系统对最大文件限制时, 该表空间 由多个数据文件组成,表空间的总大小为估算为:Tablespace + sum (数据段 + 索弓 I段)*150%。1.3.2

18、. 表空间扩展性设计原则表空间数据文件采用自动扩展的方式,扩展容量快大小按2的整 数倍(1M 2M 4M 8M 16M 32M 64M进行扩展,创建表空间时 尽量采用nologing选项。表空间的最大限制一般采用unlimited ,除非确切知道表空间数据文件的最大使用范围。(一般 windows 3 2位系统的文件最大2 G, 6 4位的 unix系统系统文件最大1 2 8 G,但也要注意文件格式设定的文件大小),建议最大为2G表空间采 用local管理方式,例如:CREATE TABLESPACE TBS_USERINFO DATAFILE '/oradata/tbs_userin

19、fo.dbf ' SIZE 8M REUSE AUTOEXTEND ON NEXT2M MAXSIZE UNLIMITEDNOLOGGINGEXTENT MANAGEMENTLOCALAUTOALLOCATESEGMENT SPACE MANAGEMENT AUTO;1.4. 裸设备的使用一个scsi设备可以14个分区,unix操作系统256个分区,性能 比文件系统方式高15%左右,空间大于要小于(实际分区大小减两个 ORACLE勺数据块),比如100M大于为100000K推荐在unix使用 软连接(ln)方式把裸设备形成文件,用加入表空间时加 resue选项,当然也可只接把设备加入表

20、空间,移动裸设备使用dd命令。对于windows平台,oracle提供软连接工具,实现裸设备的使 用,计算一条记录的长度。2 .数据库逻辑设计原则2.3. 命名规范2.3.1. 表属性规范. 表名前缀为Tbl_。数据表名称必须以有特征含义的单词或缩写组成, 中间可以用“_”分割,例如:tbl_pstn_detail 。表名称不能用双引 号包含。. 表分区名前缀为p。分区名必须有特定含义的单词或字串。例如:tbl_pstn_detail 的分区p2004100101表示该分区存储 2004100101时段的数据。. 字段名字段名称必须用字母开头,采用有特

21、征含义的单词或缩写,不能 用双引号包含. 主键名前缀为PK、主键名称应是 前缀+表名+构成的字段名。如果复 合主键的构成字段较多,则只包含第一个字段。表名可以去掉前缀。. 外键名前缀为FK,外键名称应是前缀+外键表名+主键表名+外 键表构成的字段名。表名可以去掉前缀。2.3.2. 索弓. 普通索引前缀为IDX_。索引名称应是 前缀+表名+构成的字段名。如果复 合索引的构成字段较多,则只包含第一个字段,并添加序号。表名可 以去掉前缀。. 主键索引前缀为IDX_PK,索引名称应是前缀+表名+构成的主键字段名, 在创建表时候用using ind

22、ex指定主键索引属性。. 唯一索引前缀为IDXUK。索引名称应是 前缀+表名+构成的字段名. 外键索引前缀为IDX_FK,索引名称应是 前缀+表名+构成的外键字段名。. 函数索引前缀为IDX_func_。索引名称应是 前缀+表名+构成的特征表达 字符。. 藤索引前缀为IDX_clu_。索引名称应是 前缀+表名+构成的簇字段。2.3.3. 视图前缀为V_o按业务操作命名视图。2.3.4. 实体化视图前缀为MV_按业务操作命名实体化视图。2.3.5. 存储过程前缀为Proc_。按业务操作命名存储过程。2.3.6. 触发器前缀为Trig_ 。触

23、发器名应是前缀+表名+触发器名2.3.7. 函数前缀为Func_。按业务操作命名函数。2.3.8. 数据包前缀为Pkg_。按业务操作集合命名数据包。2.3.9. 序列前缀为Seq_。按业务属性命名。2.3.10. 表空间. 公用表空间前缀为Tbs_。根据存储的特性命名,例如:tbs_parameter. 专用表空间Tbs_表名称门。该表空间专门存储指定的某一个表,或某一 表的若干个分区的数据。2.3.11. 数据文件表空间名,nn.dbf 。 nn =1 , 2, 3, 4,等。2.3.12. 普通变量前缀为Var存放字符、数字、日期型变量2.3.13. 游标变

24、量前缀为Cur_。存放游标记录集。2.3.14. 记录型变量前缀为Rec_。存放记录型数据。2.3.15. 表类型变量前缀为Tab_。存放表类型数据。2.3.16. 数据库链前缀为dbl_。表示分布式数据库外部链接关系。2.4. 命名2.4.1. 语言命名应该使用英文单词,避免使用拼音,特别不应该使用拼音简 写。命名不允许使用中文或者特殊字符。英文单词使用用对象本身意义相对或相近的单词。选择最简单或最通用的单词。不能使用毫不相干的单词来命名。当一个单词不能表达对象含义时,用词组组合,如果组合太长时, 采用用简或缩写,缩写要基本能表达原单词的意义。当出现对象名重名时,是不同类型对象时,加类型前缀

25、或后缀以 示区别2.4.2. 大小写名称一律大写,以方便不同数据库移植,以及避免程序调用问题。2.4.3. 单词分隔命名的各单词之间可以使用下划线进行分隔。2.4.4. 保留字命名不允许使用SQL呆留字。2.4.5. 命名长度表名、字段名、视图名长度应限制在 20个字符内(含前缀)。2.4.6. 字段名称同一个字段名在一个数据库中只能代表一个意思。比如 telephone在一个表中代表“电话号码”的意思,在另外一个表中就 不能代表“手机号码”的意思。不同的表用于相同内容的字段应该采用同样的名称,字段类型定义。2.5. 数据类型2.5.1. 字符型固定长度的字串类型采用char,长度不固定的字串

26、类型采用varchar。避免在长度不固定的情况下采用 char类型。如果在数据迁 移等出现以上情况,则必须使用trim()函数截去字串后的空格。2.5.2. 数字型数字型字段尽量采用number类型,要注意精度。2.5.3. 日期和时间1.1.1 .1. 系统时间由数据库产生的系统时间首选数据库的日期型,如DAT嘿型。2.3.32 外部时间由数据导入或外部应用程序产生的日期时间类型采用varchar类型,数据格式采用: YYYYMMDDHH24MISS2.5.4. 大字段如无特别需要,避免使用大字段(blob , clob , long , text , image 等)。2.5.5. 唯一键

27、对于数字型唯一键值,尽可能用系列sequence产生。2.6. 设计2.6.1. 范式如无性能上的必须原因,应该使用关系数据库理论,达到较高的 范式,避免数据冗余,但是如果在数据量上与性能上无特别要求,考 虑到实现的方便性可以有适当的数据冗余,但基本上要达到3NF.如非确实必要,避免一个字段中存储多个标志的做法。如 11101表示5 个标志的一种取值。这往往是增加复杂度,降低性能的地方。2.6.2. 表设计. 逻辑段设计原则.1. Tablespace每个表在创建时候,必须指定所在的表空间,不要采用默认表空 间以防止表建立在系统表空间上导致性能问题。 对于事务比较繁

28、忙的 数据表,必须存放在该表的专用表空间中。.2. Pctused默认pctused导致数据库物理空间利用率非常低 40溢右;对于 update比较少或update不导致行增大的表,pctused可设置在60 85之间;对于update能够导致行增大的表,update设置在4070 之间。.3.Initrans对于需要并行查询或者在RAC数据库中需要并行处理的表,initrans 设置为2的倍数,否则,不设该值。.4. Storage1) Initial尽量减少表数据段的extents数量,initial的大小尽量接近数据段的大小 64K, 128K,

29、,1M 2M 4M 8M 16M ,,等按 2 的倍数进行圆整。例如表或分区数据段大小为28M则initial取32M2) Next表或分区扩展extents的大小,按上述方法进行圆整。当表或分 区数据段无法按Initial接近值进行圆整的情况下,其大小可以按Initial+Next 进行圆整。此时,必须设置 Minextents=2。例如:表 或分区数据段大小为 150M,则Initial=128M ; Next=32M, Minextents=2 。3) Minextents该参数表示表创建时候 Extents的初始数量,一般取12。4) Pctincrease表示每个扩展Extents的

30、增长率,设置pctincrease=0 能够获得 较好的存储性能。2.4.22特殊表设计原则.1. 分区表对于数据量比较大的表,根据表数据的属性进行分区,以得到较 好的性能。如果表按某些字段进行增长,则采用按字段值范围进行范 围分区;如果表按某个字段的几个关键值进行分布,则采用列表分区; 对于静态表,则采用hash分区或列表分区;在范围分区中,如果数 据按某关键字段均衡分布,则采用子分区的复合分区方法。2.4222聚族表如果某几个静态表关系比较密切,则可以采用聚族表的方法。2.423. 完整性设计原则1.1.1. 3.1.主键约束关联表的父表要求有主健,主健字段或组合字段必须满足

31、非空属 性和唯一性要求。对于数据量比较大的父表,要求指定索引段。1.1.2. 32外键关联对于关联两个表的字段,一般应该分别建立主键、外键。 实际是 否建立外键,根据对数据完整性的要求决定。为了提高性能,对于数 据量比较大的标要求对外健建立索引。对于有要求级联删除属性的外 键,必须指定 on delete cascade 。2.423.3.NULL®对于字段能否null ,应该在sql建表脚本中明确指明,不应使 用缺省。由于NULL直在参加任何运算中,结果均为 NULL所以在应 用程序中必须利用nvl()函数把可能为NULL值得字段或变量转换为 非NULL的默认值。例如:NVL (s

32、ale,0 )。2.423.4. Check 条件对于字段有检查性名束,要求指定 check规则。2.423.5. 触发器触发器是一种特殊的存储过程,通过数据表的DMl作而触发执 行,起作用是为确保数据的完整性和一致性不被破坏而创建, 实现数 据的完整约束。触发器的before或after事务属性的选择时候,对表操作的事 务属性必须与应用程序事务属性保持一致,以避免死锁发生。在大型 导入表中,尽量避免使用触发器。2.423.6. 注释表、字段等应该有中文名称注释,以及需要说明的内容。2.4.3. 索引设计对于查询中需要作为查询条件的字段,可以考虑建立索引。最终 根据性能的需要决定是否建立索引。

33、 对于复合索引,索引字段顺序比 较关键,把查询频率比较高的字段排在索引组合的最前面。 在分区表 中,尽量采用local分区索引以方便分区维护。除非时分区local索引,否则在创建索引段时候必须指定指定索 引段的tablespace、storage属性,具体参考 内容。2.4.4. 视图设计视图是虚拟的数据库表,在使用时要遵循以下原则:1)从一个或多个库表中查询部分数据项;2)为简化查询,将复杂的检索或字查询通过视图实现;3)提高数据的安全性,只将需要查看的数据信息显示给权限有 限的人员;4)视图中如果嵌套使用视图,级数不得超过 3级;5)由于视图中只能固定条件或没有条件,所以对

34、于数据量较大 或随时间的推移逐渐增多的库表,不宜使用视图;可以采用 实体化视图代替;6)除特殊需要,避免类似 Select * from TableName 而没有 检索条件的视图;7)视图中尽量避免出现数据排序的 SQL®句。2.4.5. 包设计存储过程、函数、外部游标必须在指定的数据包对象 PACKAGE 实现。存储过程、函数的建立如同其它语言形式的编程过程,适合采 用模块化设计方法;当具体算法改变时,只需要修改需要存储过程即 可,不需要修改其它语言的源程序。当和数据库频繁交换数据是通过 存储过程可以提高运行速度,由于只有被授权的用户才能执行存储过 程,所以存储过程有利于提高系统

35、的安全性。存储过程、函数必须检索数据库表记录或数据库其他对象,甚至 修改(执行 Insert、Delete、Update、Drop、Create 等操作)数据 库信息。如果某项功能不需要和数据库打交道,则不得通过数据库存储过程或函数的方式实现。在函数中避免采用DM或DDL®句。在数据包采用存储过程、函数重载的方法,简化数据包设计,提 高代码效率。存储过程、函数必须有相应的出错处理功能。2.4.6. 安全性设计. 管理默认用户在生产环境中,必须严格管理 sys和system用户,必须修改其 默认密码,禁止用该用户建立数据库应用对象。 删除或锁定数据库测 试用户scott

36、。2.4.62 数据库级用户权限设计必须按照应用需求,设计不同的用户访问权限。包括应用系统管 理用户,普通用户等,按照业务需求建立不同的应用角色。用户访问另外的用户对象时,应该通过创建同义词对象synonym进行访问。2.4.63 角色与权限确定每个角色对数据库表的操作权限,如创建、检索、更新、删 除等。每个角色拥有刚好能够完成任务的权限,不多也不少。在应用 时再为用户分配角色,则每个用户的权限等于他所兼角色的权限之 和。2.4.64 4. 应用级用户设计应用级的用户帐号密码不能与数据库相同, 防止用户直接操作数 据库。用户只能用帐号登陆到应用软件,通过应用软件访问数据库, 而没有其它途径操作

37、数据库。2.4.65 5. 用户密码管理用户帐号的密码必须进行加密处理,确保在任何地方的查询都不 会出现密码的明文。2.5. SQLIi写2.5.1. 字符类型数据SQL中的字符类型数据应该统一使用单引号。特别对纯数字的字 串,必须用单引号,否则会导致内部转换而引起性能问题或索引失效 问题。利用trim(),lower() 等函数格式化匹配条件。2.5.2. 复杂 sql对于非常复杂的sql(特别是有多层嵌套,带子句或相关查询的), 应该先考虑是否设计不当引起的。对于一些复杂SQL可以考虑使用程 序实现。user_tab_commeNTS 字典Comment on可力口注解2.5.3. 高效性

38、. 避免In子句使用In或not In 子句时,特别是当子句中有多个值时,且查 询数据表数据较多时,速度会明显下降。可以采用连接查询或外连接 查询来提高性能。Char比varchar 查询时高效。在进行查询及建立索引时,char 比varchar的效率要高,当然 varchar在存储上比char要好。2.5.32 避免嵌套的Select子句这个实际上是In子句的特例。.避免使用Select * 语句如果不是必要取出所有数据,不要用*来代替,应给出字段列表, 注:不含 select count(*)2.534. 避免不必要的排序不必要的数据排序大大的降低系统性能。2.

39、534.4. 健壮性2.534.4.1. Insert 语句使用Insert语句一定要给出要插入值的字段列表,这样即使更 改了表结构加了字段也不会影响现有系统的运行。2.534.4.2. Count(*)、Count(id)、count(distinct id) 的区别Select count(*) from testtab得到表testtab 的记录数select count(id) from testtab得到表testtab id 字段非空记录数select count(distinct id) from testtab得到表testtab id字段值非相同记录数2.534.4.3. N

40、ot null为字段类型性质的约束本约束功能在后期无语法使期失效,可使用修改字段类型方式。alter table modify 字段名 类型 not nullalter table modify 字段名类型2.534.4.4. 外键值可用null的问题外键列如没有明确说明 not null ,可插入null记录(而null 是在外部表的记录中没有的),如无可插 null记录的想法,要对外 键字段加not null约束。2.534.4.5. 序列sequence跳号的问题sequence因回滚,系统崩溃(使用cache内的值将认为已用), 多表引用都将使其跳号,所以不能用于为连续序号 utl_r

41、ow.cast_to_row2.534.4.6. unicn intersect' minus 使用 ordey by 的注意事项以上语句进行连表操作,而表同表的字段顺序的类型相同但字段 标题名可不同,使用ordey by时后面如果是字段名,要求所有的表 的字段标题名相同,否则用字段的顺序号select id,name,year from useriunionselect no,name,to_number(null) year from user2order by 1,name,year2.534.5. 安全性无论在使用Select,还是使用破坏力极大的Update和Delete语句

42、时,一定要检查Where条件判断的完整性,不要在运行时出现数据的重大丢失。如果不确定,最好先用 Select语句带上相同条件来验 证一下结果集,来检验条件是否正确。2.534.6. 完整性有依赖关系的表,例如主外键关系表,在删除父表时必须级联删 除其子表相应数据,或则按照某种业务规则转移该数据。9I中表中字段缩小及变类型,字段为空或表空,varchar和char长度不变可任意改,字段名和表名可字段可用 ALTER TABLE table SET UNUSED (column)设定为不可用,注意无命令再设为可用。3 .备份恢复设计原则3.1. 数据库exp/imp备份恢复Oracle数据库的Ex

43、p> Imp提供了数据快速的备份和恢复手段, 提供了数据库级、用户级和表级的数据备份恢复方式。 这种方法一般 作为数据库辅助备份手段。3.1.1. 数据库级备份原则在数据库的数据量比较小,或数据库初始建立的情况下采用。 不 适合7*24的在线生产环境数据库备份。3.1.2. 用户级备份原则在用户对象表数据容量比较小、或则用户对象初始建立的情况下使用。3.1.3. 表级备份原则主要在以下场合采用的备份方式:参数表备份、静态表备份、分 区表的分区备份。3.2. 数据库冷备份原则数据库冷备份必须符合以下原则:1)数据库容量比较小。2)数据库允许关闭的情况。3.3. Rman&份恢复原则

44、这种方式适用于7*24环境下的联机热备份情形。3.3.1. Catalog 数据库单独建立备份恢复用的数据库实例,尽可能与生产环境的数据库分开,确保catalog与生产数据库的网络连接良好。在 9I系统使用 良好的备份策略以可,支持完全使用控制文件保存catalog信息,备 份策略如下:backup spfile format'/data/backup/%d_SPFILE_%T_%s_%p.bak'sql "alter system archive 10g current"backup archivelog all format'/data/back

45、up/%d ARC%T%s%p.bak' delete allinput;backup current controlfile format'/data/backup/%d_CTL_%T_%s_%p.bak'在spfile、控制文件、数据库全丢的情况下可通过下面 的方式恢复RMAN> connect targetconnected to target database (not started)RMAN> startupRMAN> restore spfile from7data/backup/COMMDB_SPFILE_20030411_9_1.ba

46、k'SQL> startupORA-00205: error in identifying controlfile, checkalert log for more infoRMAN> restore controlfile from'd:DB92_CTL_20031113_9_1.BAK'Mout database:RMAN> recover database;RMAN> alter database open resetlogs;注意:对数据库设定控制文件保存备份信息为 365天,具体语句如下alter system set control_

47、file_record_keep_time=365 SCOPE=BOTH;3.3.2. Archive Log设置Archive Log的位置,确保存储介质有足够的空间来保留 指定时间内archive log 的总量。建设定期对 RMANJ行全备份,删 除冗余归档日志文件。3.3.3. 全备份策略对于小容量数据库,可以采用全备份策略。对于大容量数据库, 必须制定全备份策略方案,备份时对 archive log进行转储,同时冷 备份catalog数据库。3.3.4. 增量备份策略对于大容量数据库,必须制定增量备份、累积备份和全备份的周 期,备份时对archive log 进行转储,同时冷备份ca

48、talog数据库c3.3.5. 恢复原则采用Rman如本进行数据库恢复。数据库恢复有以下几种:. 局部恢复主要用于恢复表空间、数据文件,一般不影响数据库其他操作。. 完全恢复数据库恢复到故障点,由catalog当前数据库决定。. 不完全恢复恢复到数据库的某一时间点或备份点。恢复catalog数据库。恢复数据库control file 。恢复到数据库某一时间点。重设日志序列。3.4. 备用数据库原则数据库系统在以下情况下可以考虑采用备用数据库data guard原则:数据库容量适中。数据库严格要求7*24不间断,或间断时间要求控制在最小范围 内。数据库要

49、求有异地备份冗余。3.5. 一些小经验使用oemc的oms时,首选项要求是节点和数据库分别加入系统 用户(如:administrator )和数据库 DBA用户(system)。节点的系 统用户必须有批处理作业登录的权限。agent不能启动,lisnter 修改后都要手动删除oracleora9networkagent 中的*q 文件。oracleadminmy9ibdump中是用户的出错日志。改变表的空间的方式 alter table hr.ssss move TABLESPACEexample (要重建索引);或用imp导入时,设定导入用户只有某一表空间的使用权,无RESOURCE色和UN

50、LIMITED TABLESPACE艮。aleter system set log_checkpoint_to_alter=true ,后可报警文件发现checkpoint的起动和结束时间。3.6. 系统调优知识3.6.1. 生成状态报表(statspack 的使用)使用(存放位置)的文件生成报表用户。?rdbmsadminSpcreate.sql 建表。将 timed_statistics 设定 true 。使用生成的perfstat用户登录,执行以下语句手动收集信息。Exex statspack.snapExecstatspack.snap(I_SNAP_LEVEL=>0,I_MOD

51、EFY_PRAMETER=>TRUE0级,最少10最大。使用下面的语句生成状态报表:?rdbmsadminSpreport.sql其他相关文件delete stats$snapshot ;清原来记录数据?rdbmsadminSaputo.sql取用户作业号select job from user_jobsexec dbms_remove(作业号)timed_statistics=true 要求?rdbmsadminspdrop.sql ;3.6.2. sql 追踪设定全部用户跟踪alter system set sql_trace=true;用户级别跟踪alter session set

52、 sql_trace=true;用户 的跟 踪文件 生成在 adminpidudumppid_ora_ SPID.trc 中,spid从下面语句得到SELECT bkpr, s.username, p.spid,s.sid,s.serial# FROM v$bgprocess b, v$session s, v$process p WHERE p.addr = b.paddr(+) AND p.addr = s.paddr and s.username=user;DBA寸特定用户跟踪execdbms_system_set_Sql_trace_in_session(sid,seria

53、l#,true)信息从下面得到SELECTbkpr,s.username,p.spid,s.sid,s.serial#,osuser,gram FROM v$bgprocess b, v$session s, v$process p WHERE p.addr = b.paddr(+)AND p.addr =s.paddr;/*p.spid 用于 sql_trace 时日志编号,dbms_system.set_sql_trace_in_session(sid,erial#,true)*/用户的跟踪文件生成在 adminpidudump 中系统的跟踪文件生成在 adminpi

54、dbdumpalert_pid.logtkprof.exe 将log文件生成格式化文本在av Rd(ms) 20以上说明表空间使用过用频繁,考虑将表分开 其他表空间上系统变量fast_start_mttr_target的值要大到不产生log等待,当然也可通过加10g组使其不等待reao log大小应为每30分钟切换一次建议表空间的利用率不超80%buffer hit 要达80必上为好3.6.3. 内存调整一般的内存分配原则SGA 50%(其中 80% DATA BUFFER15% SHARE POOL5 其他)PGA30%OS 20%例如:2G的 WINDOWS平台,OS 300M SAG 1

55、.2G,PGA 500M内存分配的基本单位SGA=128M 4MSGA128M6 4位系统1 6 M, 3 2 M系统8 M动态分配时总值不可大于 sga_max_size通过 V$SGA_DYNAMIC_FREE_MEMORY内存空间在缩小时如果内存空间实际在应用中,CPU利用率将达100%,最后将语句出错。V$SGASTAT可看实际的使用情况Redo log buffer 一般在 5 M 内,可通过 v$sessuon_wait 看是 否等,v$sysstat可也通过报警文件看是否等切换,方法可加组。可通过nologging (数据库也要设定支持nologging )方法减少日志文件产生量。java_pool 没有设定时,使用 shared_pool_size. shared_pool本缓冲区用于sql语句,pl sql等的对象保存Cursor_sharingExact|Similar|force游标共享设定Force方式适用OLT嗽据库,Exact方式适合数据仓库,similar 为智能方式hard parses 硬SQL语句分析,每秒要底于 100次,小要加大 shared_poolsoft parse 软SQ

温馨提示

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

评论

0/150

提交评论