在本章开始之前,先来看一个小案例。某客户反映数据库从PC 服务器迁移至小型机后,业务程序响应一直较缓慢,甚至会出现间歇性卡死现象,且性能下降厉害,于是只好请求帮助。在接到客户的反映之后,首先登录到服务器查看资源消耗情况,发现系统内存交换和I/O阻塞都比较严重,其中主机内存配置为7744MB,如下所示:
# vmstat 1 100
System configuration: lcpu=8 mem=7744MB
kthr memory page faults cpu
----- ----------- ------------------------ ------------ -----------
r b avm fre re pi po fr sr cy in sy cs us sy id wa
0 116 2830457 5273 0 757 259 2214 8013 0 1274 6187 3237 25 2 35 39
2 109 2830576 5095 0 509 221 795 2963 0 841 8473 2093 55 1 14 30
4 116 2830607 5308 0 488 147 1287 5421 0 849 6053 2177 34 1 16 49
由于交换空间建立在本地硬盘上,频繁的交换导致本地硬盘异常繁忙,这也成了系统 I/O阻塞比较严重的原因。如下所示:
Disks: % tm_act Kbps tps Kb_read Kb_wrtn
hdisk1 99.7 2638.4 276.9 1320 3416
hdisk0 99.7 2776.6 289.1 1416 3568
hdisk2 0.0 0.0 0.0 0 0
hdisk5 0.0 0.0 0.0 0 0
hdisk4 0.0 0.0 0.0 0 0
hdisk3 45.7 2215.0 134.3 3524 452
cd0 0.0 0.0 0.0 0 0
现象就描述到这里,有经验的工程师估计能判断出故障的原因了——很可能是系统内存紧张,产生大量交换,从而引起了系统性能下降。于是进一步检查Oracle SGA相关的Oracle参数,发现在有限的7744MB内存中,SGA和PGA的大小竟然分别被设置为了7136MB和1500MB。在这样的数据库参数配置下,系统不出现性能问题才不正常呢!
找到原因之后,解决起来就很简单了,只要调整Oracle相关内存参数即可。事实也证明,经过参数调整之后,业务性能得到了极大的提升。事后调查发现,这个数据库上线之后,Oracle参数从未进行过调整,也就是说在安装数据库的时候,参数配置就存在问题,安装数据库的工程师过大地设置了Oracle SGA参数。看到这里,也许很多DBA朋友会有这样的疑惑:创建数据库时,我应该注意什么才能避免出现类似的问题呢?
简单地讲,Oracle的安装分两大块:一块是Oracle软件的安装,另一块是数据库的安装。在Oracle软件安装好之后,接下来就是安装数据库了。安装数据库通常有2种方法:一种是绝大部分DBA采用的图形界面安装,即通过DBCA安装。还有一种就是通过字符界面命令行安装。本章主要讲述命令行安装数据库的一些知识以及注意事项。命令行安装比DBCA建库更加可控,也适用于图形界面无法启动的主机环境,研究命令行安装能比较清楚地知道创建数据库的来龙去脉。
Oracle软件license主要包括两种版本,即标准版(Standard Edition)和企业版(Enterprise Edition),在安装完Oracle软件之后,就可以通过命令行来创建数据库了,简单地讲创建数据库主要分以下几个步骤:
- 检查操作系统环境。
- 规划数据库文件系统。
- 创建Oracle日志文件目录。
- 创建Oracle密码文件。
- 创建Oracle参数文件。
- 创建Oracle数据库。
- 刷新数据字典和编译无效对象。
- 配置相关文件,如在oratab文件中增加实例条目。
- 根据需要开启归档模式或者闪回模式。
- 根据需要配置监听相关配置文件,如在listener.ora中配置静态注册。