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

问题描述

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

 强制数据库中创建的每一个表空间都必须是本地管理的。本地管理表空间能比已经被弃用的字典管理技术提供更好的性能。 
 确保数据库为每个用户自动分配一个默认的永久表空间。这可以保证在创建用户时,自动分配一个默认的表空间,而不是SYSTEM系统表空间。由于有延迟段(Deferred Segment Feature,后面还会详述),如果一个用户具有CREATE TABLE的权限,即使其在SYSTEM表空间中没有空间配额,也能在其中创建对象。这并不可取。当然,用户不会向没有空间配额的表中插入数据,但他们可以创建对象,从而可能在不经意间使SYSTEM表空间变得很杂乱。 
 确保数据库会为每个用户自动分配一个默认的临时表空间。这可以保证在创建用户时,如果没有显式指定,自动分配一个临时表空间。 
解决方案

可以使用两种不同的工具来创建Oracle数据库:

 在SQL*Plus中使用CREATE DATABASE语句; 
 dbca(Database Configuration Assistant,数据库配置助手)。 
下面的小节中将分别讨论这两种方法。

SQL*Plus

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

enter image description here enter image description here

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

 通过EXTENT MANAGEMENT LOCAL子句,将SYSTEM表空间定义为本地管理表空间。这确保了数据库中创建的所有表空间都是本地管理的。从Oracle 12c版本开始,SYSTEM表空间总是创建为本地管理表空间。为创建时没有显式定义默认表空间的用户,定义一个默认的表空间USERS。这可以防止为用户分配SYSTEM系统表空间作为默认表空间。 
 为所有用户定义一个默认临时表空间,名为TEMP。这可以防止为用户分配SYSTEM表空间作为默认的临时表空间。创建将SYSTEM作为默认临时表空间的用户,对性能有负面影响,因为这会造成SYSTEM表空间中的资源争夺。 
良好的性能始于正确的数据库配置。以上推荐的这些配置有助于为表数据创建一个可靠的基础构造。

dbca

Oracle的dbca工具具有图形界面和命令行模式,可以用来创建和配置数据库。图形工具使用非常简单,具有很直观的界面。在Linux/Unix环境下通过图形化模式使用dbca,需要正确安装X软件,然后提交xhost +命令,并且确保设置了DISPLAY变量,例如:

enter image description here enter image description here

像下面这样来从操作系统中调用dbca:

enter image description here

这将会给出一系列让用户可以选择配置项的页面。可以选择“高级模式”选项,以便更好地控制文件位置和多个在线重做日志等方面。

默认地,dbca将会创建一个具有以下特点的数据库:

 将SYSTEM表空间定义为本地管理表空间; 
 对没有显式定义默认表空间的用户,定义一个名为USERS的默认表空间; 
 为所有用户创建一个名为TEMP的临时表空间。 
与SQL*Plus方法类似,这都是一些好的特性,为在其上创建应用打下了良好基础。

dbca工具还允许不使用图形组件,直接通过静默模式来创建数据库。在静默模式下,通过响应文件来使用dbca,是一种以一致的、可重复的方式来创建数据库的高效方法。当在网络连接较慢或者没有安装相应的X软件的远程服务器上进行安装时,这也是一种很好的方法。

还可以通过一个响应文件来在静默模式下运行dbca。在某些情况下,可能由于网速较慢或者没有适当的X软件,导致图形模式不可用。按照下面的步骤在静默模式下使用dbca来创建数据库:

(1) 找到dbca.rsp文件;

(2) 将dbca.rsp文件复制一份;

(3)根据实际环境修改dbca.rsp文件;

(4) 在静默模式下运行dbca工具。

首先,打开Oracle数据库安装文件所在的文件夹,使用find命令来查找dbca.rsp文件所在的位置:

enter image description here

复制该文件,以避免修改原始文件(这样做,可以保持原始文件的完好):

enter image description here

现在,编辑mydb.rsp文件。至少需要修改下面这些参数:GDBNAME、SID、 SYSPASSWORD、 SYSTEMPASSWORD、SYSMANPASSWORD、DBSNMPPASSWORD、DATAFILEDESTINATION、 STORAGETYPE、CHARACTERSET以及NATIONALCHARACTERSET。下面是一个修改mydb.rsp文件中值的例子:

enter image description here

enter image description here

如果查看日志文件,注意dbca工具使用rman工具来存储数据库所使用的数据文件。然后,将会创建实例,并进行安装后的步骤。在Linux系统中,还会为新数据库在/etc/oratab文件中创建一条新记录。

许多数据库管理员在图形模式下调用dbca工具和配置数据库,但很少有人会选择使用响应文件。有效使用响应文件,可以使数据库创建过程保持自动化。可以修改响应文件,以在ASM上创建数据库,甚至创建RAC环境下的数据库。此外,几乎能够控制响应文件的所有方面,就像在图形模式中调用dbca一样。

提示 可以通过帮助参数dbca –help来查看dbca的所有选项。

工作原理

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

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

 创建一个自动的UNDO表空间(自动撤销管理通过设置UNDO_MANAGEMENT和UNDO_TABLESPACE初始化参数来启用)。这使Oracle可以自动管理回滚段,你也就不必定期进行监控和微调了。 
 按照环境中的一定标准,将数据文件放到相应文件夹中。这有助于维护和管理,从而使数据库具备更好的长期可用性,从而获得更好的性能。 
 将数据库管理员(DBA)相关用户的密码设置为非默认值。这可以进一步确保数据库的安全性,从长远来看也会影响到性能(如果有攻击者入侵数据库并删除数据,那么性能也将会受到损害)。 
 创建三组联机重做日志文件,每组两个成员,大小适合事务加载。重做日志文件的大小直接影响切换的频率。如果重做日志切换太过频繁,就会导致性能下降。要记住的是,在初始创建新数据库的时候,可能并不知道这些文件的确切大小,只能以后再进行调整。 
你应该花点时间确认每一个数据库都是按照广泛认可的标准创建的,这有助于保证数据库具有坚实的性能基础。

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

enter image description here

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

目录