Oracle RAC主要支持Oracle9i、10g、11g版本,可以支持24 x 7有效的数据库应用系统,在低成本服务器上构建高可用性数据库系统,并且自由部署应用,无需修改代码。在Oracle RAC环境下,Oracle集成提供了集群软件和存储管理软件,为用户降低了应用成本。当应用规模需要扩充时,用户可以按需扩展系统,以保证系统的性能。
(1)多节点负载均衡;
(2)提供高可用:故障容错和无缝切换功能,将硬件和软件错误造成的影响最小化;
(3)通过并行执行技术提高事务响应时间----通常用于数据分析系统;
(4)通过横向扩展提高每秒交易数和连接数----通常对于联机事务系统;
(5)节约硬件成本,可以用多个廉价PC服务器代替昂贵的小型机或大型机,同时节约相应维护成本;
(6)可扩展性好,可以方便添加删除节点,扩展硬件资源。
以上都是百度介绍.
RAC,全称Real ApplicationClusters,译为“实时应用集群”
RAC 专业人士直接字母读音, 非专业人士读成"锐卡"。
RAC 对于我们DBA来说 只是一项技能。我们只要会如下就OK啦
一安装RAC
二 排错RAC
三调优RAC
四 管理RAC
一安装说难也不难,普通人士苦练一周就会了,反正百度大把文章都有介绍,关键没有一篇是全的。呵呵!说难,其实不能说难,应该说是烦,麻烦的烦。当然如果是在Windows平台来说就容易多些,可我们谈的自然是Linux平台,X86PC服务器上。这个麻烦的事安装过的人才有心理体会,基本上像我这种懒惰之人,只要安装好了,就不想再安装第二次了。比方说ZABBIX 安装可麻烦很了,在恒波搞了一次,在新公司自己虚拟机搞了一次,本来想再线上再搞一次,结果装了个MYSQL 就暂停了,到现在都快两个月了。没动力。没心力。安装这东西简直是折磨人。上个月好不容易在自己今年3月份买的7千的台式电脑上,安装RAC,前前后后装了两周。安装GI后面执行ROOT.SH命令时候跑了1个小时,后面安装数据库软件和数据库跑了2个多小时。什么叫坚持,就是老是逼自己做自己不想做,而且必须做的事情。记住是自己逼自己去做哦!
二排错 11G的RAC 错误百出啊,日志都有几十个文件,分布在不同深度的目录中。这跟单实列就一个ALETR.ORA告警文件,那么简单!而且错误日志文件带有很深的JAVA日志的痕迹,说白了这日志非常适合牛逼的JAVA开发人员看的。对于我们DBA来说简直是折磨,因为里面有大量的没有必要的信息,放在里面,反而阻碍了DBA查错!呃另外再说下 日志涉及到RAC众多的进程和相互之间复杂的联系,关系和潜规则。什么网络,什么集群重组,什么实例重组。还有那些复杂的GCS GES CGS GRD 各种奇怪的新名词,CRS,CSS。
三调优 就比较简单了 除了内存融合造成性能问题外,基本上都能沿用过去的经验,再说内存融合已经发展了10年之久,相关的性能也有经验可学。不是难事!
四管理 RAC 管理 大的就是添加和删除实例,估计这工作量非常少,百年难遇到一次。然后就是添加服务,添加备用库,启动和关闭资源。最后就是给ASM磁盘组添加磁盘或者更换磁盘,然后是REBLANNCE。
OK DBA工作在RAC 上重点就是排除和调优 学习GI 就是一大项目工程。
ORACLE RAC 讲解二 历史
RAC,全称Real ApplicationClusters,译为“实时应用集群”
RAC 专业人士直接字母读音, 非专业人士读成"锐卡"。
今天我想稍微讲下历史.
8I 也有RAC 那只是RAC的雏形!叫作OPS 并行处理系统
9I的RAC集群软件是构建别人上面的集群,比如LINUX下的LVS,或者IBM上的HA软件。9I的RAC好像都把数据文件存在裸设备。
10G RAC比较成熟了,开始有自己的GI和ASM。 ASM存放数据文件,其他文件存放在本地,而OCR和表决磁盘文件存放在裸设备上。
11G RAC 就比较完善了 GI和ASM 所有的文件都存放在ASM磁盘组上。另外内存融合的性能也得到大部分提高
12C的RAC 就进步发展成了主集群和子集群模式,另外什么租户概念出来了啦。
内存融合历史这个本来跟版本搭配的,只是我忘记了具体。一开始是没有内存融合的,两个实例和多个实例,其中一个实例要读该块,而该数据块在另外个实例手上,并且已经修改,那么就要去它把修改的数据块写回磁盘上,然后再读到自己内存中。显然这样的方式极大地限制了性能。不过当时为了实现高可用的RAC,同时也要保证数据一致性,这样的方式还是可取得。毕竟人家ORACLE公司没有很强的开发实力,跟我们小公司样,先开发出来能满足市场或者客户业务要求的先,先把钱赚回来。日后再完善。
然后出现了内存融合技术,也就是说,我们不必经过磁盘这种缓慢的IO中间商吧。如果你要数据块的话,我直接通过私网发给你就是了。
然后再进一步完善,私网发来发去还是挺影响性能的,这里主要是网络传输时间啊,那我搞个DRM 动态主节点。就是说这个数据块,你的B实例这段时间用的多,那我A实例把这个数据块的所有权转让给你的B实例,日后你的B实例每次再读它的时候,就别向我A实例申请!
ORACLE RAC 三 DNS 配置
Linux搭建DNS服务器简要步骤:
1
简要步骤:
0 配置CENTOS 网易YUM源 并且配置解析地址
1.在bind的主配置文件中添加该域
2.在/var/named中创建该域的zone文件
3.编辑zone文件,添加需要的信息
4.检测防火墙或selinux设置
5.启动bind服务,重启网络服务
6.用户端测试域名解析
0 配置CENTOS 网易YUM源 并且配置解析地址
[root@zabbix-mysql-apache ~]# cat/etc/resolv.conf
# Generated by NetworkManager
# No nameservers found; try putting DNSservers into your
# ifcfg files in/etc/sysconfig/network-scripts like so:
#
# DNS1=xxx.xxx.xxx.xxx
# DNS2=xxx.xxx.xxx.xxx
# DOMAIN=lab.foo.com bar.foo.com
nameserver 202.96.134.133
nameserver202.96.128.68
nameserver202.96.154.8
nameserver202.96.154.15
[root@zabbix-mysql-apache ~]# cat/etc/yum.repos.d/CentOS6-Base-163.repo
# CentOS-Base.repo
#
# The mirror system uses the connecting IPaddress of the client and the
# update status of each mirror to pickmirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking othermirrors.
#
# If the mirrorlist= does not work for you,as a fall back you can try the
# remarked out baseurl= line instead.
#
#
[base]
name=CentOS-$releasever - Base - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
#released updates
[updates]
name=CentOS-$releasever - Updates - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/updates/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/extras/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
#additional packages that extendfunctionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/centosplus/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/contrib/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
1、安装DNS服务器组件
安装bind
yum install -y bind bind-chroot bind-utils
2、编辑DNS主配置文件
vi etc/named.conf修改主配置文件 红色字体
options {
listen-on port 53 { any; };
//listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; };
recursion yes;
3、接着修改named.rfc1912.zones文件,我们为sharkdb.rac.com进行域名解析
vi etc/named.rfc1912.zones 添加
-----配置正向解析zone
zone "sharkdb.rac.com" IN { <<-域名
type master;
file "sharkdb.rac.com.zone"; <<正向域名解析文件
};
-----配置反向解析zone
zone "2.168.192.in-addr.arpa" IN{ <<-网段反写
type master;
file "sharkdb.rac.com.local"; <<--反向域名文件
allow-update { none;};
};
4、添加设置DNS正向解析文件
修改zone配置文件,正向解析:
cd var/named/
-----配置正向解析zone
cp -p named.localhost sharkdb.rac.com.zone
vi sharkdb.rac.com.zone 清空里面内容 然后添加下面的内容 注意域名后面跟点号
$TTL 86400
@ IN SOA localhost root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D) ; minimum
IN NS sharkdb.rac.com.
sharkdb.rac.com. IN A 192.168.2.200
sharkdb.rac.com. IN A 192.168.2.201
sharkdb.rac.com. IN A 192.168.2.202
-----配置反向解析zone
cp -p named.localhost sharkdb.rac.com.local
vi sharkdb.rac.com.local 清空里面内容 然后添加下面的内容 注意域名后面跟点号
$TTL 86400
@ IN SOA localhost. root.localhost. (
1997022700; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400) ; Minimum
IN NS sharkdb.rac.com.
200 IN PTR sharkdb.rac.com.
5 验证权限
-rw-r----- 1 root named 442 9月 26 17:13sharkdb.rac.com.local
-rw-r----- 1 root named 152 6月 21 2007 sharkdb.rac.com.zone
6 启动bind服务
[root@zabbix-mysql-apache named]# servicenamed start
启动 named: [确定]
7 检验语法
[root@zabbix-mysql-apache named]#named-checkconf etc/named.conf
[root@named]# named-checkzonesharkdb.rac.com var/named/sharkdb.rac.com.zone
zone sharkdb.rac.com/IN: loaded serial 0
OK
8 实例配置 客户端设置
实例1
vi etc/hosts
192.168.2.200 sharkdb.rac.com rac-scan
编辑resolv.conf文件,添加内容:
vi etc/resolv.conf
nameserver 192.168.2.100 <<-DNS IP
9 客户端测试 获得3个IP地址 客户端一般取第一个
[root@zabbix-mysql-apache named]# nslookupsharkdb.rac.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: sharkdb.rac.com
Address: 192.168.2.200
Name: sharkdb.rac.com
Address: 192.168.2.201
Name: sharkdb.rac.com
Address: 192.168.2.202
10 配置DNS轮询机制
vi etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
rrset-order {
class IN type A name "sharkdb.rac.com" order random;
order cyclic;
};
};
[root@zabbix-mysql-apache named]# nslookupsharkdb.rac.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: sharkdb.rac.com
Address: 192.168.2.202
Name: sharkdb.rac.com
Address: 192.168.2.200
Name: sharkdb.rac.com
Address: 192.168.2.201
[root@zabbix-mysql-apache named]# nslookupsharkdb.rac.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: sharkdb.rac.com
Address: 192.168.2.201
Name: sharkdb.rac.com
Address: 192.168.2.202
Name: sharkdb.rac.com
Address: 192.168.2.200
ORACLE RAC 四 虚机硬件
其实搭建一个RAC 会了其实很简单,不过也很麻烦地,又很多细节要注意.
现在我们使用ORACLE公司的虚拟机VBOX软件来搭建个ORACLE 11G 11.2.0.1.0的RAC。采用ORACLE LINUX 6.5 系统。
需要2G内存,两个物理内核,15G磁盘,两个网卡。
先我们来个IP地址规划
本机电脑
IP地址
DNS-100
192.168.2.100
scan ip
PUB ip
VIP
priv ip
ORACLE RAC 1
192.168.2.200
192.168.2.203
192.168.0.206
192.168.3.203
ORACLE RAC 2
192.168.2.201
192.168.2.204
192.168.0.207
192.168.3.204
ORACLE RAC 3
192.168.2.202
192.168.2.205
192.168.0.208
192.168.3.205
OK 虽然格式不太好,我们打算搞4台虚拟机,最后一台为了将来进行实列添加而已。第一台DNS已经搞定了。接下来谈两台数据库如何搞。
使用VBOX 搞其实非常简单,只是注意点存储问题,比如说本地磁盘我们用IDE控制器来做本地硬盘大约15-20G 大小动态分配。
共享磁盘我们使用下面的STAT控制器,当必须是固定大小
网卡1为桥接,网卡2为内部网络
装好了一个数据库的操作系统后,可通过复制出另外一台就行了。唯独复制的时候不要重新MAC地址。日后手工去修改。
第二台数据库虚拟机网卡设置上按下绿色按钮,然后记下MAC地址。
进入了操作系统后,修改两个网卡的IP地址,MAC地址,机器名字。
STAT磁盘的共享设置
然后第二台数据库虚拟机通过添加方式,把共享磁盘添加过来。
共享磁盘设置
OCR+VF 约1.5G 三块磁盘正常冗余。
DATA 约10个G 做存放数据和归档日志,控制文件和SPFILE文件。
这样我们的硬件环境以及搭建好了
ORACLE 11G RAC 五 GI 安装GI 是RAC 的集群软件,
1 创建组
groupadd -g 501 oinstall
groupadd -g 502 dba
groupadd -g 504 asmadmin
groupadd -g 506 asmdba
groupadd -g 507 asmoper
2 用户
useradd -u 501 -g oinstall -Gdba,asmadmin,asmdba,asmoper grid
useradd -u 502 -g oinstall -G dba,asmdba oracle
3 etc/hosts
192.168.2.200 sharkdb.rac.com
192.168.2.203 sharkdb1
192.168.2.206 sharkdb1-vip
192.168.3.203 sharkdb1-prt
192.168.2.204 sharkdb2
192.168.2.207 sharkdb2-vip
192.168.3.204 sharkdb2-prt
4 etc/sysctl.conf
照抄ORACLE安装文档
5 etc/security/limits.conf
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
6 etc/pam.d/login
session required pam_limits.so
7 etcd/profile
if [ $USER = "oracle"] || [ $USER = "grid" ] ; then
if [ $SHELL = "/bin/ksh" ] ;then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
8 目录
mkdir -p u01/app/oracle
chown -R oracle:oinstall u01
chmod -R 775 u01
mkdir -p g01/app/grid
chown -R grid:oinstall
chmod -R 775 g01
9 环境变量
grid
export ORACLE_SID=+ASM1
export ORACLE_BASE=/g01/app/grid
exportORACLE_HOME=/g01/app/grid/11.2.0.1
export PATH=$ORACLE_HOME/bin:$PATH
oracle
export ORACLE_SID=sharkdb1
export ORACLE_BASE=/u01/app/oracle
exportORACLE_HOME=/u01/app/oracle/11.2.0.1
export PATH=$ORACLE_HOME/bin:$PATH
10 删除NTP服务器
rm etc/ntp.conf
service ntpd stop
11 添加域名解析服务器
/etc/resovf.conf
nameserver 192.168.2.100
12 关闭防火墙和SELIUNX
13 安装软件包
可以在安装目录下有个RPM 可以把所有的包都安装上去,当然可以在图形界面上安装.
14 使用UDEV 搞定ASM磁盘
ORACLE RAC 共享存储设备 UDEV
vi asmd.sh
#!/bin/sh
ls -l dev/sd*
if [ -f /etc/udev/rules.d/99-oracle-asmdevices.rules ]; then
rm-f /etc/udev/rules.d/99-oracle-asmdevices.rules
fi
if [ ! -f /etc/udev/rules.d/99-oracle-asmdevices.rules ]; then
touch/etc/udev/rules.d/99-oracle-asmdevices.rules
fi
for i in c d e f g h i j k;
do
echo "KERNEL==\"sd*\",BUS==\"scsi\", PROGRAM==\"/sbin/scsi_id --whitelisted --replace-whitespace--device=/dev/\$name\",RESULT==\"`/sbin/scsi_id --whitelisted--replace-whitespace --device=/dev/sd$i`\"NAME=\"asm-disk$i\",OWNER=\"grid\",GROUP=\"asmadmin\", MODE=\"0660\"" >>/etc/udev/rules.d/99-oracle-asmdevices.rules
done
/sbin/start_udev
ls -l dev/asm*
15 切换到GRID 用户下进行图形安装
./runInstall
16 在图形界面上安装SSH认证
17 注意事项
1 CLUSTER NAME 可能图形界面没读好
2 GRID 主目录图形界面也没读好
一般建议GRID目录/g01 ORACLE目录/u01
3 ASM磁盘组,这个时候图形界面是安装OCR+VF 图形界面显示的是DATA, 所以要改过了, 更改目录路径,/dev/asm* .
18 最后难关就是执行ROOT.SH 脚本这个脚本要执行很长时间,如果CPU不给力的话, 这个脚本如果配置不正常很容易出错,出了错比较难搞.
七 重新安装在0 解决办法是在db02上删除之前的crs配置信息,然后重新运行root.sh脚本即可。/u01/crs_home/product/crs/install/rootcrs.pl -verbose -deconfig -force
如果此步不行的话执行下面的步骤
1清理OCR盘dd if=/dev/zeroof=/dev/sdb
2 删除安装文件
cd u01/crs_home
rm –rf base
rm –rf produc
rm –rf oraInventory
mkdir base
3 重启shutdown -h now
如果本号文对你有意义可以下我打赏,金额多少无所谓!
理科精华
RAC crs_stat 命令结果完整显示
归档日志比在线日志小
分区表
INDEX肥胖化
OracleDG 备库 STANDBY 日志传输小结
ORACLE索引名称矫情
ASM中的几个概念
抓取性能不错的脚本
RMAN duplicate 方式做个备库
direct path read
共享池内存三维
PGA内存
一个性能优化案例INSERT
SGA内存
Linux 64 页表,进程内存,大页
Linux_x86_64BIT内存管理与分布
部分SWAP 内存知识
理解队列锁
ORACLE闪回之闪回查询
ORACLE 闪回之闪回删除
ORACLE闪回之闪回表
ORACL 闪回功能之闪回数据库
ORACLE 索引全扫描逻辑读
解析过程中的软软解析
ORACLE索引范围扫描逻辑读ARRAY
文史经典
纸版书和电子书
爱情是什么
IT界程序员泡妞《葵花宝典》
读书日谈读书
反对道德恐怖主义
论当今的婚介公司如何赚钱
失眠三重天
明朝灭亡真想
祖仙曰:万事皆亡
活见鬼
IT界人员提高智商
财经经典
西帝和东帝谈判成果
岁月静好-两场战争
熊案--马后炮
税收制度是穷人在交税养富人
房价再次限购后资金的流向?
加息的马后炮
P2P和换汇的生意