Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7099432
  • 博文数量: 3857
  • 博客积分: 6409
  • 博客等级: 准将
  • 技术积分: 15948
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-02 16:48
个人简介

迷彩 潜伏 隐蔽 伪装

文章分类

全部博文(3857)

文章存档

2017年(5)

2016年(63)

2015年(927)

2014年(677)

2013年(807)

2012年(1241)

2011年(67)

2010年(7)

2009年(36)

2008年(28)

分类: Oracle

2013-03-14 10:38:06

攻略1-1 创建具有最优性能的数据库

问题描述

你认识到,最初创建数据库时,有一些属性(如果启用了的话)将会对数据库中表的性能和可用性产生长远的影响。具体来说,创建数据库时,需要做下面这些事情:

 强制数据库中创建的每一个表空间都必须是本地管理的。本地管理表空间能比已经被弃用的字典管理技术提供更好的性能。

确保数据库为每个用户自动分配一个默认的永久表空间。这可以保证在创建用户时,自动分配一个默认的表空间,而不是SYSTEM系统表空间。你不能让用户总是将对象建在SYSTEM表空间中,因为这样会对性能和可用性产生负面影响。

确保数据库会为每个用户自动分配一个默认的临时表空间。这可以保证在创建用户时,自动分配一个临时表空间,不是SYSTEM表空间。你不能总是让用户使用SYSTEM表空间作为排序运算的临时表空间,因为这样会对性能和可用性产生负面影响。

解决方案

使用类似下面这样的脚本创建遵循合理标准的数据库,这就为数据库的高性能打下了良好的基础:


上面这段CREATE DATABASE脚本通过实现下列功能,为数据库的性能打下良好基础。

通过EXTENT MANAGEMENT LOCAL子句,将SYSTEM系统表空间定义为本地管理表空间。这确保了数据库中创建的所有表空间都是本地管理的。在Oracle Database11gR2或更高版本中,EXTENT MANAGEMENT DICTIONARY子句已经被弃用了。

为创建时没有显式定义默认表空间的用户,定义一个默认的表空间USERS。这可以防止为用户分配SYSTEM系统表空间作为默认表空间。创建将SYSTEM作为默认表空间的用户,对性能有负面影响。

为所有用户定义一个默认临时表空间,名为TEMP。这可以防止为用户分配SYSTEM表空间作为默认的临时表空间。创建将SYSTEM作为默认临时表空间的用户,对性能有负面影响,因为这会造成SYSTEM表空间中的资源争夺。

良好的性能始于正确的数据库配置。以上推荐的这些配置有助于为表数据创建一个可靠的基础构造。

工作原理

合理地配置并创建数据库有助于保证数据库的优良性能。尽管确实可以在创建数据库之后再来修改其功能,但是,通常的情况是,写得很差的CREATE DATABASE脚本将会对数据库性能产生永久的影响。生产环境中,数据库有时很难有机会停机,对配置不恰当的地方进行重新配置。如果可能的话,最好是从创建数据库开始,在创建环境的每一步都仔细考虑性能问题。

创建数据库时,还需要考虑影响可维护性的功能。容易维护的数据库能正常运行更长时间,而这也正是总体性能的一个重要部分。“解决方案”部分的CREATE DATABASE语句同时还考虑了下面这些可维护性方面的特性。

创建一个自动的UNDO表空间(自动撤销管理通过设置UNDO_MANAGEMENTUNDO_TABLESPACE初始化参数来启用)。这使Oracle可以自动管理回滚段,你也就不必定期进行监控和微调了。

按照环境中的一定标准,将数据文件放到相应文件夹中。这有助于维护和管理,从而使数据库具备更好的长期可用性,从而获得更好的性能。

将数据库管理员(DBA)相关用户的密码设置为非默认值。这可以进一步确保数据库的安全性,从长远来看也会影响到性能(如果有攻击者入侵数据库并删除数据,那么性能也将会受到损害)。

创建三组联机重做日志文件,每组两个成员,大小适合事务加载。重做日志文件的大小直接影响切换的频率。如果重做日志切换太过频繁,就会导致性能下降。

你应该花点时间确认每一个数据库都是按照广泛认可的标准创建的,这有助于保证数据库具有坚实的性能基础。

如果你接手了一个数据库,并且想检查一下默认的永久表空间设置,可以使用类似下面的查询:

如果你需要修改默认的永久表空间,按照下面这样来做:

要检验默认临时表空间的设置,使用这个查询:

要修改临时表空间的设置,可以像下面这样来做:

可以通过下面这个查询来检验UNDO表空间的设置:

如果你需要修改重做(undo)表空间,首先创建一个新的重做表空间,然后使用ALTER SYSTEM SET UNDO_TABLESPACE语句。

阅读(435) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~