第三章:数据库系统的规划
点击数:966发布日期:2020-04-19 14:39:40 来源:老鹰
第三章:数据库系统的规划
3.1前言
系统的成败取决于优秀的规划和实施。我们决定要使用Oracle数据库,接下来,就要规划这个服务系统。我是建议要从成熟度和稳定性上重点考虑。保证服务系统能照客户的计划和要求提供服务。别到时候三天两头的down机。即使要求7*24小时的服务能力,系统也能轻松应对。
操作系统也很重要,操作系统软件控制和协调计算机及外部设备,支持应用软件开发和运行的系统,主要功能是调度,监控和维护计算机系统;负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。系统软件使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是如何工作的。系统软件的选型也要考虑可扩展性,将来资源不够用,我们可以横向加硬件。
总之将速度充分的体现在桌面上,让OLTP终端的使用者,不用等待介面的弹出,让OLAP的使用者,尽快的拿到结果报表。
3.2项目的考虑
充足的资源
稳健的服务系统,资源充足是关键,不能跑着跑着没内存了,CPU满了。但现在我们新买的硬件一般都配置较高,老的硬件跑新的软件有时候就资源不够了。CPU利用率高峰时期最好别超过70%。各CPU之间利用率应该负载均衡。
Oracle是很占内存的,11g RAC比10g更占内存,有时候我们为了让速度更快,需要把整张表放在内存里面,减少I/O压力或根除I/O瓶颈。这时候更需要充足的内存资源。一般来说,内存大于8GB,我们就建议使用linux或unix操作系统了。有的用户买了64GB的内存,我们巡检的时候发现实际上才用了4GB,浪费了资源,充足的资源也没体现到速度上去。也有的就8GB内存装11g RAC,CPU内存经常满,参数已经设置的很合理了,但资源不够用,只能迁走一部分应用,把压力降下来。具体用多大的内存多少个CPU还是取决于系统的繁忙程度,并发数,这方面提前要计算好。
存储的考虑
存储的方式可以采用较成熟的文件系统,ASM。ASM是10g推出的技术,10g的时候可以用祼设备,也可以用ASM。10g的vote和OCR盘不能放在ASM上,所以如果还用10g ASM,就得单独做2个或6个裸设备给vote和OCR用。11g就完全解决了这个问题,况且11gR2抛弃了裸设备,只能用ASM或文件系统。当然了数据库的redo的日志最好不要放在RAID5或RAID6上,最好放在RAID1,或RAID10上,提高频繁的写速度。存储级别划的lun给ASM用的时候,大小不能大于2TB,大于2TB的时候,Oracle软件容易出问题。一般我们买的物理盘也都小于2TB.在存储级别和数据库级别结合起来考虑I/O的分散。
生产库磁盘最好采用SAS2.0接口,转速15000转/分的做为存储硬盘,充分保证I/O速度。以前在做调优项目的时候,有的瓶颈就是在I/O上,换高速盘提高I/O速度是一个解决思路,将常用的表和索引cache到内存里减少物理I/O也是一个解决思路。
存储使用两个存储,一个生产存储,一个备份存储。备份存储要求容量大,速度要求没有生产存储那么苛刻,可以采用SATA盘。
软件的版本
安装较成熟稳定的数据库版本,升级应用最新的patch。操作系统补丁要打齐,数据库补丁也一定要打全,最好补丁升级到最新,以保障系统的稳定性,也减少了再次升级补丁给系统带来的隐患。上次在联通做升级时,升级后发现速度提高了很多,看来升级不仅治bug,还能提高速度。数据库版本当然是在一开始在从零开始的时候就安装到最后的一个补丁,一开始就做的很好,不要弄到出事了再各种处理各种升级,亡羊补牢成本很高,风险也大。
数据库的版本这里也列一下,我们要安装这样的版本,数据库才能健康不出事少出事。
Oracle 8i要安装至8.1.7.4。
Oracle9i要安装到9.2.0.8.7。
Oracle10g要升级至10.2.0.5.12。
Oracle11g安装11.2.0.4,然后打补丁至11.2.0.4.6。
Oracle12c安装12.1.0.2.3,windows是12.1.0.2.4。
11g的补丁还要更新,最新的补丁,在安装的时候去https://support.oracle.com上去下载。当然了下载补丁要有一个账号和密码,Oracle也是通过控制补丁来控制正版化。11g现在已经是很稳定的版本,目前新上的系统主要都是11g。
12c因为是最新的大版本,目前上生产的还比较少,可能bug很多。如果思想比较超前上了12c,遇到新的问题,你要提交给Oracle去处理,成为bug的践行者。
实施的人员,一定要用这方面的技术专家,据我观察,大部分的安装实施由于工程师水平或责任心问题是不给客户安装小补丁的,甚至就装一个10.2.0.1就应付了事。甲方在项目规划期间也要强调版本补丁这个事儿。所以要考核实施人员的技术水平,杜绝选择了好的软件,而因为实施技术水平导致信息系统问题的发生。况且在实施的过程中,就必须完成系统调优的部分工作。把各个地方都设计的非常优化,到后期运维的时候,调优就省去或减少这些问题了。所以在设计规划期,就有调优的内容了。
在计算机软件中最基本的就是操作系统(OS)。它是最底层的软件,它控制所有计算机运行的程序并管理整个计算机的资源,是计算机裸机与应用程序及用户之间的桥梁。没有它,用户也就无法使用某种软件或程序。 操作系统是计算机系统的控制和管理中心,从资源角度来看,它具有处理机、存储器管理、设备管理、文件管理等功能。
刚才说过,如果内存大于8GB,建议采用linux或unix操作系统,原因是:对于Oracle数据库来说,windows为单线程服务模式,而linux为多进程服务模式。进程比线程速度要快,进程比线程可控制性强。用户可以独享一个进程,一个用户进程就有一个操作系统进程对它专门服务,而线程我们就无法控制。进程比线程内存使利用率高,我们可以观察一下内存的利用率,有时候你内存再大,windows似乎用不上。再者说,人家银行业电信业用的全是unix至少是linux做关键服务。windows肯定有它的局限之处。有的用户买了96GB内存,安装一个windows操作系统,很难发挥它内存大的效能。windows实际占用内存只有8GB。windows上跑Oracle数据库出了故障有时候也不好定位处理。服务器主流操作系统还是linux,unix。
从稳定性上分析,unix也更胜一筹,巡检的时候,运行5年没有重启的unix都常见。运行5年不重启的wondows确实不常见。稳定性unix强于linux,linux强于windows。
Oracle RAC的节点数
Oracle RAC理论上可以支持很多节点,10GB第二版可以支持100个节点,11g也一样。讨论理论上的最多可以支持的节点数已经没有太大的意义。实际上我们认为节点越多出故障的几率越大,管理维护成本越大。RAC用两个节点的用户最多,也有的用户使用4个节点或6个节点,甚至8个节点。再多的话,除了原厂,就没人建议用了,肯定不太好用。
RAC本身又不能防止存储损坏,只能防止主机损坏。如果考虑横向扩展的话,负载均衡也有是条件的,不是随便拿一个应用连到RAC里面去,就可以实现负载均衡,负载均衡的条件是分开应用,几个节点各跑各的应用,各跑各的表,避免或减少交叉访问。如果就一个应用,必须交叉访问,那也行,但是你的压力不能太大,太大了就可能出现gc开头的等待事件,就又要做相应的调整。话又说回来,即然又压力不能太大,应用又很难分开,那做更多的节点就更没有必要了。所以说,RAC肯定不是节点越多越好。RAC的主要功能一是防止主机坏,二是解决CPU不够用的问题。
如果单机够用就用单机,然后做一个物理DataGuard,即防主机坏又防存储坏,还可以应急容灾,11g DataGuard备库还可以当查询库。如果单机CPU不够用就做2个节点的RAC,尽量把应用分开,减少心跳线网络的压力。如果用户财力足,技术人员多,水平高,应用也多,又想集中管理,那可以做成4个或6个节点,节点多了也是对运维人员的一个煅炼与考验。
备份和容灾
数据库备份是必需的,不备份一旦出现问题,我们将无法或很难找回原来的数据,对企业的影响重大,损失可谓惨重,甚至是致命的。就算是我们个人的笔记本或台式机电脑,我也买两个2TB的大硬盘,养成定期备份的习惯,万一磁盘坏了,或笔记本坏了,我可以快速的再买一个电脑,将大硬盘里的关键数据拷回新买的电脑里,很快的就可以恢复工作,我多年积累的工作经验记录,方案,脚本,视频都还在,心里踏实。
企业级的数据就更重要了,有可能重要到关乎企业生死,不但要备份,还要容灾,就算地震来了,火灾来了,洪水来了也不能毁坏我们的数据。我们要根据数据的重要程度,选择不同的备份和容灾方式。
带用的备份方式:1、RMAN备份,可以不用停机,可以恢复至数据库损坏的那一刻,做到一条数据也不丢。是我们最常用的备份恢复方式。2、exp,imp或expdp,impdp逻辑备份,特点是操作简单,只能恢复至开始备份的那一刻,对于备份之后变化的数据无能为力。常常做为数据迁移的方法。3、冷备,方法是关闭数据库,将数据文件,控制文件,redo日志,spfile,pfile,密码文件拷贝至另一个地方,恢复的方法是再拷贝回来,也可以做为数据库迁移的方法,实际备份中不常用。4、利用备份软件,使用nbu、commvault等第三方软件调用RMAN命令,实现备份,第三方软件不仅可以备份数据库,还可以备操作系统,应用程序,介于综合备份的考虑,有的企业就选择备份软件了。
制定备份策略,主要考虑下面几个方面,1、数据的重要程度,2、数据能不能再造,3、数据每天或每周的变化量有多大,4、数据的总量有多大,5、其它简单备份方式够不够用。以上几个问题搞清楚了,我们就知道了数据需要什么级别的备份容灾。省钱的备份办法就是RMAN定时做备份,其它重要可再造的程序定期手工拷贝走。操作系统,应用软件,数据库软件,都可以再造,重新安装就行了,不用备份也没关系,我们只备份核心的重要数据。对于变化量不大的应用程序,不做实时备份。
3.3项目的规划
下面我们就一个两节点RAC数据库系统,做一个规划。
3.3.1 硬件拓扑图
业务系统名称 |
数据库服务器 |
操作系统或软件 |
Linux |
操作类型 |
Redhat Linux Enterprise Server 5.8 |
内核版本 |
2.6.18-308.el5 |
系统工具及服务需求 |
应用服务器中间件weblogic10 |
系统补丁包需求 |
参见官方安装文档 |
JDK |
java version "1.6.0_22" |
程序安装目录、数据空间目录 |
40GB |
CPU个数 |
4颗8核 |
内存大小 |
64GB |
数据库安装目录挂载点 |
/u01 大小为100GB |
启动目录 |
/boot/ 大小为1GB |
Swap分区 |
32GB |
备份存储挂载 |
/backup 大小为6TB |
操作系统核心参数规划
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 34359738368
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
说明:kernel.shmall是很重要的参数,一般等于或大于物理内存的一半。
IP规划
主机 |
主机名 |
服务器型号 |
IP地址 |
VIP |
Private IP |
数据库服务器1 |
YS_DB_1 |
X3850 |
172.128.0.121 |
172.128.0.123 |
192.168.0.1 |
数据库服务器2 |
YS_DB_2 |
X3850 |
172.128.0.122 |
172.128.0.124 |
192.168.0.2 |
采用单逻辑盘100GB。ASM管理数据库文件。
lun |
用途 |
lun大小 |
RAID设置 |
设备类型 |
YS-lun01-01 |
rote,OCR |
10GB |
RAID6 |
ASM |
YS-lun01-02 |
rote,OCR |
10GB |
RAID6 |
ASM |
YS-lun01-03 |
rote,OCR |
10GB |
RAID6 |
ASM |
YS-lun01-04 |
redo log |
1000GB |
RAID1 |
ASM |
YS-lun01-05 |
data |
1000GB |
RAID6 |
ASM |
YS-lun01-06 |
data |
1000GB |
RAID6 |
ASM |
YS-lun01-07 |
data |
1000GB |
RAID6 |
ASM |
YS-lun01-08 |
data |
1000GB |
RAID6 |
ASM |
YS-lun01-09 |
index |
1000GB |
RAID6 |
ASM |
YS-lun01-10 |
index |
1000GB |
RAID6 |
ASM |
YS-lun01-11 |
index |
1000GB |
RAID6 |
ASM |
YS-lun01-12 |
备用 |
1000GB |
RAID6 |
ASM |
YS-lun01-13 |
备用 |
1000GB |
RAID6 |
ASM |
3.3.4 数据库安装规划
业务系统名称 |
核心生产 |
Oracle数据库版本 |
Oracle 11g企业版. 11.2.0.4.6 |
PSU |
p20299013 (11.2.0.4.6) |
GI PSU |
p20485808 (11.2.0.4.6) |
SPU(CPU) |
p20299015_112040_Linux-x86-64.zip |
Oracle安装基本目录ORACLE_BASE |
/u01/app |
数据库安装目录ORACLE_HOME |
/u01/app/oracle/11.2.0.4 |
数据库名ORACLE_SID |
ysdb |
实例名1 |
ysdb1 核心生产应用使用 |
实例名2 |
ysdb2人力资源应用使用,财务应用使用 |
数据库字符集 |
ZHS16GBK |
Process设置 |
1500 |
flash recovery area回闪区 |
不使用回闪区 |
enterprise manager企业管理器 |
不使用IE企业管理器em |
数据文件自动扩展功能 |
关闭数据文件自动扩展功能,手工管理数据文件大小 |
数据存储格式,归档日志位置 |
dgdata,dgarch |
db_block_size |
8KB |
内存管理方式 |
关闭自动内存管理功能,手工管理内存大小 |
统计信息收集 |
关闭,定期手工收集统计信息 |
不安装数据库选件 |
Oracle JVM,Oracle XML DB,Oracle Multimedia, |
不安装数据库选件 |
Oracle Application Eepress,Oracle Text, Oracle OLAP |
不安装数据库选件 |
Oracle Spatial, Enterprise Manager Repository |
Redo日志组数大小 |
每个thread 4组,合计8组,每个组员400MB. |
数据文件大小 |
system,sysaux,user表空间,每个数据文件4GB |
数据文件大小 |
temp,undo,和其它所有数据文件每个16GB |
归档模式 |
打开,归档日志放在ASM中的arch磁盘组。 |
重要数据库参数设置如下:
参数 |
参数值 |
db_cache_size |
26GB |
shared_pool_size |
4GB |
java_pool_size |
40MB |
large_pool_size |
200MB |
log_buffer |
60MB |
pga_aggregate_target |
4GB |
sga_max_size |
40GB |
sga_target |
0 |
session_cached_cursors |
200 |
processes |
1500 |
undo_management |
AUTO |
undo_retention |
18000 |
db_writer_processes |
16 |
open_cursors |
1000 |
具体的安装步聚请参照官方文档:
Oracle® Grid Infrastructure
Installation Guide
11g Release 2 (11.2) for Linux
E17212-08
和
Oracle® Database
Installation Guide
11g Release 2 (11.2) for Linux
E16763-06
DBA要会使用官方文档,快速的查资料,查命令。
3.3.4数据库备份策略
在归档模式下,数据库采取每天全备的方式。
备份路径
|
此挂载点需要200GB空间,并且不和其它数据文件同在一个vg。/backup/ysdb/rmanbak |
备份策略, 每周全备。 backup_dbfull.rcv
|
将以下脚本加到定时任务中,实现每天全备。 run { backup database include current controlfile; backup archivelog all delete all input; } |
RMAN备份 的参数设置。
|
configure backup optimization on; configure channel device type disk format '/backup/ysdb/rmanbak/db_%u'; configure controlfile autobackup on; configure controlfile autobackup format for device type disk to '/backup/ysdb/rmanbak/cf_%f'; configure retention policy to recovery window of 21 days; configure default device type to disk; configure device type disk backup type to compressed backupset; |
定时任务 设置 |
crontab –l每天零晨1点钟全备。 0 1 * * * sh /home/oracle/backupfull.sh |
Backupfull.sh 脚本 |
set NLS_LANG=american >/dev/null 2>&1 export ORACLE_SID=ysdb1 >/dev/null 2>&1 rman target / nocatalog @backup_dbfull.rcv log /backup/ysdb/rmanbak/backup_dbfull_`date -u +%Y%m%d`.log >/dev/null 2>&1 |
下一篇:第四章:完美安装oracle RAC数据库
上一篇:第一章:数据库体系结构
图文推荐
序言
2020-04-19 查看:2377
第十五章:Oracle 12c介绍
2020-04-19 查看:2297
第十四章:常用Oracle工具
2020-04-19 查看:2032
第十三章:Oracle Golde...
2020-04-19 查看:2289
第十二章:DataGuard
2020-04-19 查看:1892