理清思路先文章源自运维生存时间-https://www.ttlsa.com/oracle/oraclerac-description/
文章源自运维生存时间-https://www.ttlsa.com/oracle/oraclerac-description/
设备,一个笔记本,两台redhat5的虚拟机(32bit),两个虚拟机都安装过oracle,配置好一些安装的必要条件了,需要的包官网下。文章源自运维生存时间-https://www.ttlsa.com/oracle/oraclerac-description/
文章源自运维生存时间-https://www.ttlsa.com/oracle/oraclerac-description/
1。选择2台主机,同平台的,保证网络互通文章源自运维生存时间-https://www.ttlsa.com/oracle/oraclerac-description/
2。设计和配置ip地址,每台主机3个ip,配置2个,预留一个文章源自运维生存时间-https://www.ttlsa.com/oracle/oraclerac-description/
私有IP:在独立的网段,双机内部通信 10.10.10.1文章源自运维生存时间-https://www.ttlsa.com/oracle/oraclerac-description/
公有IP:维护的IP,在工作网段 192.168.1.11文章源自运维生存时间-https://www.ttlsa.com/oracle/oraclerac-description/
虚IP:一定和公有IP在相同的网段,在crs启动后由oracle管理 192.168.1.101文章源自运维生存时间-https://www.ttlsa.com/oracle/oraclerac-description/
3。时间同步和双机对等关系(AB互相执行脚本,登录无缝)文章源自运维生存时间-https://www.ttlsa.com/oracle/oraclerac-description/
4。配置iscsi存储,2个100m的,一个2g的文章源自运维生存时间-https://www.ttlsa.com/oracle/oraclerac-description/
5。安装crs,验证:crs_stat -t文章源自运维生存时间-https://www.ttlsa.com/oracle/oraclerac-description/
6。安装数据库的软件文章源自运维生存时间-https://www.ttlsa.com/oracle/oraclerac-description/
7。建立并行的集群asm实例,dbca文章源自运维生存时间-https://www.ttlsa.com/oracle/oraclerac-description/
8。建立磁盘组文章源自运维生存时间-https://www.ttlsa.com/oracle/oraclerac-description/
9。建立集群数据库,在asm磁盘组文章源自运维生存时间-https://www.ttlsa.com/oracle/oraclerac-description/
10。管理维护rac,配置网络,备份,恢复,建立表空间文章源自运维生存时间-https://www.ttlsa.com/oracle/oraclerac-description/
文章源自运维生存时间-https://www.ttlsa.com/oracle/oraclerac-description/
文章源自运维生存时间-https://www.ttlsa.com/oracle/oraclerac-description/
文章源自运维生存时间-https://www.ttlsa.com/oracle/oraclerac-description/
1。2。配置网络
两台虚拟机,rac1 rac2
rac1:
rac1.ting.com
私有IP:10.10.58.1
公有IP:192.168.58.1
/etc/hosts
10.10.58.1 rac1
10.10.58.2 rac2
192.168.58.1 rac1-priv
192.168.58.2 rac2-priv
192.168.58.100 rac1-vip
192.168.58.200 rac2-vip
rac2:
rac2.ting.com
私有IP:10.10.58.2
公有IP:192.168.58.2
/etc/hosts
10.10.58.1 rac1
10.10.58.2 rac2
192.168.58.1 rac1-priv
192.168.58.2 rac2-priv
192.168.58.100 rac1-vip
192.168.58.200 rac2-vip
3。时间同步
rac1,rac2 打开time-stream服务 /etc/xinet.d/time-stream
rac2
crontab -e
*/1 * * * * rdate -s 10.10.58.1
建立等效用户
rac1:
groupadd oinstall
groupadd dba
useradd -G oinstall -g dba oracle
passwd oracle
rac2:
groupadd oinstall
groupadd dba
useradd -G oinstall -g dba oracle
passwd oracle
双机对等
rac1:
su - oracle
[oracle@rac1 ~]$ mkdir ~/.ssh
[oracle@rac1 ~]$ chmod 700 ~/.ssh
[oracle@rac1 ~]$ ssh-keygen -t rsa
[oracle@rac1 ~]$ ssh-keygen -t dsa
rac2:
su - oracle
[oracle@rac2 ~]$ mkdir ~/.ssh
[oracle@rac2 ~]$ chmod 700 ~/.ssh
[oracle@rac2 ~]$ ssh-keygen -t rsa
[oracle@rac2 ~]$ ssh-keygen -t dsa
切换回 rac1,接着执行:
[oracle@raw1 ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[oracle@raw1 ~]$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
提示:下列命令会提示你输入 rac2 的 oracle 密码,按照提示输入即可,如果
失败可重新尝试执行命令。
Rac1 节点:
[oracle@rac1 ~]$ scp ~/.ssh/authorized_keys rac2:~/.ssh/authorized_keys
Rac2 节点:
[oracle@rac2 ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[oracle@rac2 ~]$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
[oracle@rac2 ~]$ scp ~/.ssh/authorized_keys rac1:~/.ssh/authorized_keys
4) 确保 2 个 node 都有相互的结点信息。两机相互执行。
[oracle@rac1 ~]$ ssh rac1 date
[oracle@rac1~]$ ssh rac2 date
[oracle@rac1 ~]$ ssh rac1-priv date
[oracle@rac1 ~]$ ssh rac2-priv date
切换至 rac2 执行
[oracle@rac2 ~]$ ssh rac1 date
[oracle@rac2~]$ ssh rac2 date
[oracle@rac2 ~]$ ssh rac1-priv date
[oracle@rac2 ~]$ ssh rac2-priv date
配置 hangcheck-timer 模块,2 个节点都要执行Hangcheck-timer 是 Linux 提供的一个内核级的 IO-Fencing 模块, 这个模块会监控 Linux 内核运行状态, 如果长时间挂起,
这个模块会自动重启系统。 这个模块在 Linux 内核空间运行, 不会受系统负载的影响。 这个模块会使用 CPU 的 Time Stamp Counter(TSC) 寄存器,这个寄存器的值会在每个时钟
周期自动增加, 因此使用的是硬件时间,所以精度更高。 配置这个模块需要 2 个参数: hangcheck_tick 和 hangcheck_margin。 hangcheck_tick 用于定义多长时间检查一次,缺省值是 30 秒。
有可能内核本身很忙, 导致这个检查被推迟, 该模块还允许定义一个延迟上限,就是 hangcheck_margin, 它的缺省值是 180 秒。 Hangcheck-timer 模块会根据 hangcheck_tick 的设置,
定时检查内核。只要 2 次检查的时间间隔小于 hangcheck_tick + hangchec_margin, 都会认为内核运行正常,否则就意味着运行异常,这个模块会自动重启系统。CRS 本身还有一个 MissCount 参数,
可以通过 crsctl get css miscount 命令查看。
当 RAC 结点间的心跳信息丢失时, Clusterware 必须确保在进行重构时,故障结点确实是 Dead 状态,否则结点仅是临时负载过高导致心跳丢失,然后其他结点开始重构,但是结点没有重启,
这样会损坏数据库。 因此 MissCount 必须大于 hangcheck_tick+hangcheck_margin 的和。
1) 查看模块位置:
[root@rac1 ~]# find /lib/modules -name "hangcheck-timer.ko"
/lib/modules/2.6.18-164.el5/kernel/drivers/char/hangcheck-timer.ko
/lib/modules/2.6.18-164.el5xen/kernel/drivers/char/hangcheck-timer.ko
2) 配置系统启动时自动加载模块,在/etc/rc.d/rc.local 中添加如下内容
[root@rac1 ~]# modprobe hangcheck-timer
[root@rac1 ~]# vi /etc/rc.d/rc.local
modprobe hangcheck-timer
3) 配置 hangcheck-timer 参数, 在/etc/modprobe.conf 中添加如下内容:
[root@rac1 ~]# vi /etc/modprobe.conf
options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
4) 确认模块加载成功:
[root@rac1 ~]# grep Hangcheck /var/log/messages | tail -2
Sep 7 19:53:03 rac1 kernel: Hangcheck: starting hangcheck timer 0.9.
0 (tick is 180 seconds, margin is 60 seconds).
Sep 7 19:53:03 rac1 kernel: Hangcheck: Using monotonic_clock().
4。配置iscsi
用本机作存储:
192.168.58.58
2个100m的,一个2g的
本机target端:
yum install scsi-target-utils
vim /etc/tgt/targets.conf
<target iqn.20111215.com.ting:server.sda5>
backing-store /dev/sda5
vendor_id sda5
product_id disk1_100m
</target>
<target iqn.20111215.com.ting:server.sda6>
backing-store /dev/sda6
vendor_id sda6
product_id disk2_100m
</target>
<target iqn.20111215.com.ting:server.sda7>
backing-store /dev/sda7
vendor_id sda7
product_id disk3_2G
</target>
服务:
chkconfig tgtd on
/etc/init.d/tgtd start
tgtadm --lld iscsi --mode target --op show 并写入rc.local中
rac1:
yum install iscsi-initiator-utils
chkconfig iscsid on
chkconfig iscsi on
/etc/init.d/iscsid start
iscsiadm -m discovery -t st -p 192.168.58.58
/etc/init.d/iscsi start
fdisk -l ---> 发现设备
vim /etc/udev/scripts/iscsidev.sh
----------------------------------------
#!/bin/bash
BUS=${1}
HOST=${BUS%%:*}
[ -e /sys/class/iscsi_host ] || exit 1
file="/sys/class/iscsi_host/host${HOST}/device/session*/iscsi_session*/targetname"
target_name=$(cat ${file})
if [ -z "${target_name}" ] ; then
exit 1
fi
echo "${target_name##*:}"
----------------------------------------
chmod +x /etc/udev/scripts/iscsidev.sh
vi /etc/udev/rules.d/55-openiscsi.rules --服务器和客户端的该文件内容要一致!
-----------------------------------------------
KERNEL=="sd*",BUS=="scsi",PROGRAM="/etc/udev/scripts/iscsidev.sh %b",SYMLINK+="iscsi/%c"
rac2:
yum install iscsi-initiator-utils
chkconfig iscsid on
chkconfig iscsi on
/etc/init.d/iscsid start
iscsiadm -m discovery -t st -p 192.168.58.58
/etc/init.d/iscsi start
fdisk -l ---> 发现设备
vim /etc/udev/scripts/iscsidev.sh
----------------------------------------
#!/bin/bash
BUS=${1}
HOST=${BUS%%:*}
[ -e /sys/class/iscsi_host ] || exit 1
file="/sys/class/iscsi_host/host${HOST}/device/session*/iscsi_session*/targetname"
target_name=$(cat ${file})
if [ -z "${target_name}" ] ; then
exit 1
fi
echo "${target_name##*:}"
----------------------------------------
chmod +x /etc/udev/scripts/iscsidev.sh
vi /etc/udev/rules.d/55-openiscsi.rules --服务器和客户端的该文件内容要一致!
-----------------------------------------------
KERNEL=="sd*",BUS=="scsi",PROGRAM="/etc/udev/scripts/iscsidev.sh %b",SYMLINK+="iscsi/%c"
rac1:
分区:sdb1 sdc1 sdd1
partprobe /dev/sdb /dev/sdc /dev/sdd
vi /etc/udev/rules.d/60-raw.rules
ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdc1", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdd", RUN+="/bin/raw /dev/raw/raw3 %N" ----> 指定的是大的
KERNEL=="raw[1]", MODE="0660", GROUP="oinstall", OWNER="oracle"
KERNEL=="raw[2]", MODE="0660", GROUP="oinstall", OWNER="oracle"
KERNEL=="raw[3]", MODE="0660", GROUP="oinstall", OWNER="oracle"
start_udev
ls /dev/raw/ ---> 有raw1,2,3
rac2:
分区:sdb1 sdc1 sdd1
partprobe /dev/sdb /dev/sdc /dev/sdd -----> rac1执行后,rac2也要执行
vi /etc/udev/rules.d/60-raw.rules
ACTION=="add", KERNEL=="sdb", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdd", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdc", RUN+="/bin/raw /dev/raw/raw3 %N"
KERNEL=="raw[1]", MODE="0660", GROUP="oinstall", OWNER="oracle"
KERNEL=="raw[2]", MODE="0660", GROUP="oinstall", OWNER="oracle"
KERNEL=="raw[3]", MODE="0660", GROUP="oinstall", OWNER="oracle"
start_udev
ls /dev/raw/ ---> 有raw1,2,3
注意:解决节点无法关机
target端:
vim /etc/tgt/targets.conf
<target iqn.20111216.com.ting:server.sda5>
backing-store /dev/sda5
vendor_id sda5
write-cache off
</target>
强制关:
tgt-admin --update ALL --force
设置环境变量:
rac1:
mkdir -p /u01/app/oracle
chown -R oracle:oinstall /u01
chmod -R 777 /u01
vim /etc/sysctl.conf
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_max = 262144
kernel.shmall = 131072000
kernel.shmmax = 544288000 -官网提供的 524288000. 这个值小了。检查时通不过
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
sysctl -p
设置用户资源限制,2 个节点都要执行
vi /etc/sysconfig/limits.conf
oracle soft memlock 5242880
oracle hard memlock 524280
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 65536
oracle hard nofile 65536
将下面一行添加到/etc/pam.d/login 文件中:
session required /lib/security/pam_limits.so
在每个 node 上配置 Oracle 的 profile 文件
vim .bash_profile
export PATH
unset USERNAME
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db
export ORA_CRS_HOME=$ORACLE_BASE/product/crs
export NLS_LANG=AMERICAN_AMERICA.UTF8
export ORACLE_SID=rac1
export ORACLE_TERM=xterm
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export PATH=$CRS_HOME/bin:$ORACLE_HOME/bin:$PATH
软件包检查
for i in binutils compat-gcc-34 compat-libstdc++-296 control-center \
gcc gcc-c++ glibc glibc-common glibc-devel libaio libgcc \
libstdc++ libstdc++-devel libXp make openmotif22 setarch
do
rpm -q $i &>/dev/null || F="$F $i"
done ;echo $F;unset F
rac2:
mkdir -p /u01/app/oracle
chown -R oracle:oinstall /u01
chmod -R 777 /u01
vim /etc/sysctl.conf
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_max = 262144
kernel.shmall = 131072000
kernel.shmmax = 544288000 -官网提供的 524288000. 这个值小了。检查时通不过
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
sysctl -p
设置用户资源限制,2 个节点都要执行
vi /etc/sysconfig/limits.conf
oracle soft memlock 5242880
oracle hard memlock 524280
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 65536
oracle hard nofile 65536
将下面一行添加到/etc/pam.d/login 文件中:
session required /lib/security/pam_limits.so
在每个 node 上配置 Oracle 的 profile 文件
vim .bash_profile
export PATH
unset USERNAME
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db
export ORA_CRS_HOME=$ORACLE_BASE/product/crs
export NLS_LANG=AMERICAN_AMERICA.UTF8
export ORACLE_SID=rac2
export ORACLE_TERM=xterm
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export PATH=$CRS_HOME/bin:$ORACLE_HOME/bin:$PATH
软件包检查
for i in binutils compat-gcc-34 compat-libstdc++-296 control-center \
gcc gcc-c++ glibc glibc-common glibc-devel libaio libgcc \
libstdc++ libstdc++-devel libXp make openmotif22 setarch
do
rpm -q $i &>/dev/null || F="$F $i"
done ;echo $F;unset F
5。安装crs,验证:crs_stat -t
使用CVU校验集群安装可行性:(要在两个节点上都通过)
1>
rac1作验证:
su - oracle
/home/oracle/clusterware/cluvfy/runcluvfy.sh stage -pre crsinst -n rac1,rac2 -verbose
如果报错如下:
执行 群集服务设置 的预检查
正在检查节点的可访问性...
rac1.ting.com: rac1.ting.com
检查: 节点 "null" 的节点可访问性
目标节点 是否可访问?
------------------------------------ ------------------------
rac2 否
rac1 否
结果:节点 "null" 的节点可访问性检查失败。
ERROR:
无法访问任何节点。
验证无法继续。
在所有节点上预检查 群集服务设置 失败。
修改:hostname 和 /etc/hosts中主机名一致
找相对应的不通过原因修正
同样rac2也作验证:
2>
rac1:
/home/oracle/clusterware/runInstaller.sh
注意:修改程序安装路径db_1 ==> crs_1
如果:报错缺少模块就安装模块
界面显示不正常,安装:ttfonts-zh_CN-2.14-6.noarch
图形安装:添加 rac2 添加裸设备
提示要执行脚本时:
先更改:
/home/oracle/oracle/product/10.2.0/crs/bin/vipca
在123行 fi 后新添加一行:
unset LD_ASSUME_KERNEL
/home/oracle/oracle/product/10.2.0/crs/bin/srvctl
在export LD_ASSUME_KERNEL这一行后加
unset LD_ASSUME_KERNEL
执行:提示的两个脚本:
/home/oracle/oraInventory/orainstRoot.sh
/home/oracle/oracle/product/10.2.0/crs/root.sh
在最后一个节点运行root.sh如果出现下面错误,请按下面蓝色字体部分解决!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Running vipca(silent) for configuring nodeapps
Error 0(Native: listNetInterfaces:[3])
[Error 0(Native: listNetInterfaces:[3])]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
以上纯属自己按文档搭建的,可能中间可能会遇到我没有碰到的问题,希望多多提提哦~~~~
1F
这个文档写的一点都不细致啊,我粗略的看啦,感觉不容易看懂啊,不是尔等能领悟的啊
B1
@ 小杨 退群的小杨?
B2
@ 邓贇 是啊,株洲-小杨