家用PC机一台,硬盘空间150G以上,内存8G以上。
每个虚拟机(理论要求)配置4G内存
虚拟化软件:VMware Workstation8 以上版本
操作系统: CentOS6.5/REHL6.5/OEL6.5以上
数据库版本:12C
ASMlib下载:
Oracle.com/technetwork/server-storage/linux/asmlib/index-101839.html
家中机器的IP地址都由无线路由DHCP统一分配IP,网断192.168.1.*。但是考虑到虚拟机后续接入的便利性,故将IP固定,分配IP地址如下。
主机名 PUB Private ip VIP SCANIP 域名
slave1 192.168.1.201 10.10.0.201 192.168.1.211 192.168.1.220 hoptoad.com
slave2 192.168.1.202 10.10.0.202 192.168.1.212
slave2 192.168.1.203 10.10.0.203 192.168.1.213
虚拟机配置:CPU数量2X2
内存:2G
硬盘:30G
网卡: 2个(一个使用VMNET0,一个使用Bridge)
安装操作系统。
安装完一个虚拟机操作系统后,可以直接进行clone.
3.1.1 修改udev文件克隆完毕后需要修改/etc/udev/rules.d/70-persistent-net.rules,
删除
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:42:b0:b9", ATTR{type}=="1", KERNEL=="eth*",
修改第二行NAME=”eth1” 为 NAME=”eth0”
这样克隆的虚拟机网卡看到的都是eth0开头。
也可以直接删除这个文件后重启。
修改/etc/sysconfig/network文件中HOSTNAME=rac1
防止各个机器的主机名字一样。
右键其中任何一个虚拟机->setting…->add…->HardDisk->Next->create a new virtual disk –》勾选independent->next->SCSI选中->next->大小设置10G->next->选择single file->设置文件名字->设置文件存放路径->advanced…->选择虚拟设备节点scsi 1:0->确定。
同样再增加2个虚拟设备节点分别是1G scsi 1:1,scsi 1:2的磁盘。
找到该虚拟机镜像存放的路径,本人放在D盘。
找到其中的.vmx后缀文件,编辑。加入如下变量。(关机设置)
disk.locking = "FALSE"
disk.EnableUUID ="true"
diskLib.dataCacheMaxSize = "0"
scsi1.sharedBus="virtual"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.DataCacheMinReadAheadSize = "0"
diskLib.datacachepagesize=4096
diskLib.maxunsyncedwrites=”0”
scsi1:0.deviceType="disk"
scsi1:1.deviceType="disk"
注意所有虚拟机都需要设置该变量。
右键其中任何一个虚拟机->setting…->add…->HardDisk->Next->using an existing virtual disk->next->选中之前创建的磁盘->选择虚拟设备节点scsi 1:0->确定
同样再增加2个已经存在的磁盘分别是1G scsi 1:1,scsi 1:2的磁盘。
同样处理所有其他节点的虚拟机。
完毕后重启,所有虚拟机可以看到3块共享的磁盘。
通过执行命令fdisk –l查看。
命令如下:
systemctl enable oracleasm.service(RedHat 7之后)
/etc/init.d/oracleasm configure 或/etc/init.d/oracleasm configure –i
配置用户grid, asmdba
配置ASM盘 (错误日志 /var/log/oracleasm)
注:记得关闭SELINUX
如果没有没有UUID,继续格式化一下,如:mkfs.ext4 /dev/sdb
5.1.2 编辑/etc/yum.repos.d/rhel-source.repo
如下:
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=file:///mnt
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[root@slave1 ~]# mount -o loop Red\ Hat\ Enterprise\ 6.5\ x86_64.iso /mnt
5.1.4 同样每个虚拟机都配置YUM环境完毕,这样可以通过本地YUM源来安装相关RPM包。
执行加压命令如下:
[root@slave1 ~]# unzip linuxamd64_12c_database_1of2.zip
同理解压所有压缩包。
binutils-2.17.50.0.6
compat-libstdc++-33-3.2.3
compat-libstdc++-33-3.2.3 (32 bit)
elfutils-libelf-0.125
elfutils-libelf-devel-0.125
gcc-4.1.2
gcc-c++-4.1.2
glibc-2.5-24
glibc-2.5-24 (32 bit)
glibc-common-2.5
glibc-devel-2.5
glibc-devel-2.5 (32 bit)
libaio-0.3.106
libaio-0.3.106 (32 bit)
libaio-devel-0.3.106
libaio-devel-0.3.106 (32 bit)
libgcc-4.1.2
libgcc-4.1.2 (32 bit)
libstdc++-4.1.2
libstdc++-4.1.2 (32 bit)
libstdc++-devel 4.1.2
make-3.81
sysstat-7.0.2
unixODBC-2.2.11 (32-bit) or later
• unixODBC-devel-2.2.11 (64-bit) or later
• unixODBC-2.2.11 (64-bit) or later
我们已经配置了YUM本地源,所以直接进行意见安装即可。
yum install binutils compat-libstdc++* compat-libstdc++*.i686* elfutils-libelf* elfutils-libelf*.i686* gcc* gcc-c++* glibc* glibc*.i686* libaio* libaio*.i686* libgcc* libgcc*.i686* libstdc++* libstdc++*.i686* make sysstat* unixODBC* unixODBC*.i686 oracleasm-support compat-libcap* ksh libXext*i686 libXtst*i686 libX11*i686 libXau*i686 libxcb*i686 libXi*686 libXp.i686 libXp-devel.i686 libXt.i686 libXt-devel.i686 libXtst.i686 libXtst-devel.i686 make.x86_64 gcc.x86_64 libaio.x86_64 glibc-devel.i686 libgcc.i686 glibc-devel.x86_64 compat-libstdc++-33 glibc* gcc* make* compat-db* libstdc* libXp* libXtst* compat-libstdc++* *glibc* java
yum install libXp.x86_64 libXp.i686 elfutils-libelf.x86_64 elfutils-libelf-devel.x86_64 compat-db.i686 compat-db.x86_64 libstdc++-devel.i686 libstdc++-devel.x86_64 openmotif22.i686 openmotif22.x86_64 libaio-devel.i686 libaio-devel.x86_64 control-center.x86_64 make.x86_64 gcc.x86_64 sysstat.x86_64 libaio.i686 gcc-c++.x86_64 compat-libf2c-34.x86_64 compat-libf2c-34.i686 unixODBC.i686 unixODBC.x86_64 unixODBC-devel.i686 unixODBC-devel.x86_64 libgomp.x86_64 compat-libstdc++-33.x86_64 compat-libstdc++-33.i686 glibc.i686 glibc.x86_64 glibc-common.x86_64 glibc-devel.i686 glibc-devel.x86_64 glibc-headers.x86_64 libXmu.i686 libXmu.x86_64 libgcc.i686 libgcc.x86_64 kernel-headers.x86_64 libstdc++.i686 binutils.x86_64 libstdc++.x86_64 compat-libcap1.x86_64 ompat-libcap1.i686 smartmontools iscsi-initiator-utils install nfs-utils *ksh*
安装oracleasmlib 包
启动oracleasm
#service oracleasm start
红帽7.0后启动
#systemctl start oracleasm
安装cvuqdisk程序包(grid压缩包解压得到)
根据网络规划配置网络地址。
配置网络命令
#setup 弹出配置对话框即可进行配置。
也可以编辑/etc/sysconfig/network-scripts/ifcfg-eth0 文件进行配置。
(这里是针对REHL的,SUSE的话略有不同)
每个虚拟机的/etc/hosts文件。
如下:
192.168.1.201 slave1.hoptoad.com slave1
192.168.1.202 slave2.hoptoad.com slave2
192.168.1.203 slave3.hoptoad.com slave3
#Private IP
10.10.0.201 slave1-priv.hoptoad.com slave1-priv
10.10.0.202 slave2-priv.hoptoad.com slave2-priv
10.10.0.203 slave3-priv.hoptoad.com slave3-priv
#Vip
192.168.1.211 slave1-vip.hoptoad.com slave1-vip
192.168.1.212 slave2-vip.hoptoad.com slave2-vip
192.168.1.213 slave3-vip.hoptoad.com slave3-vip
#scanip
192.168.1.220 rac-scan.hoptoad.com rac-scan
编辑/etc/sysctl.conf 文件,增加如下内容
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax=913516544
kernel.panic_on_oops=1
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
执行sysctl –p
使生效
编辑/etc/sysconfig/network
加入NOZEROCONF=yes
groupadd oinstall
groupadd dba
groupadd oper
groupadd asmadmin
groupadd asmdba
groupadd asmoper
useradd -g oinstall -G dba,asmdba,asmadmin,asmoper grid
useradd -g oinstall -G dba,oper,asmdba oracle
mkdir -p /u01/app/12.1.0/grid
mkdir -p /u01/app/grid
mkdir -p /u01/app/oracle
chown grid:oinstall /u01/app/12.1.0/grid
chown grid:oinstall /u01/app/grid
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/
chown -R grid:oinstall /u01
修改用户密码
passwd grid
passwd oracle
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240
#Grid 用户
export TMP=/tmp;
export TMPDIR=$TMP;
export ORACLE_HOSTNAME=slave1.hoptoad.com;
export ORACLE_SID=+ASM1;
export ORACLE_BASE=/u01/app/grid;
export ORACLE_HOME=/u01/app/12.1.0/grid;
export NLS_DATE_FORMAT="yy-mm-dd HH24:MI:SS";
export PATH=$ORACLE_HOME/bin:$PATH;
export LD_LIBRARY_PATH=$ORACLE_HOME/lib64;
#ORACLE 用户
export TMP=/tmp;
export TMPDIR=$TMP;
export ORACLE_HOSTNAME=slave1.hoptoad.com;
export ORACLE_BASE=/u01/app/oracle;
export ORACLE_HOME=$ORACLE_BASE/product/12.1.0/db_1;
export ORACLE_UNQNAME=prod;
export ORACLE_SID=prod1;
export ORACLE_TERM=xterm;
export PATH=/usr/sbin:$PATH;
export PATH=$ORACLE_HOME/bin:$PATH;
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS";
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;
#GRID用户
export TMP=/tmp;
export TMPDIR=$TMP;
export ORACLE_HOSTNAME=slave2.hoptoad.com;
export ORACLE_SID=+ASM2;
export ORACLE_BASE=/u01/app/grid;
export ORACLE_HOME=/u01/app/12.1.0/grid;
export NLS_DATE_FORMAT="yy-mm-dd HH24:MI:SS";
export PATH=$ORACLE_HOME/bin:$PATH;
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;
export LD_LIBRARY_PATH=$ORACLE_HOME/lib64;
#ORACLE 用户
export TMP=/tmp;
export TMPDIR=$TMP;
export ORACLE_HOSTNAME=slave2.hoptoad.com;
export ORACLE_BASE=/u01/app/oracle;
export ORACLE_HOME=$ORACLE_BASE/product/12.1.0/db_1;
export ORACLE_UNQNAME=prod;
export ORACLE_SID=prod2;
export ORACLE_TERM=xterm;
export PATH=/usr/sbin:$PATH;
export PATH=$ORACLE_HOME/bin:$PATH;
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS";
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;
#GRID用户
export TMP=/tmp;
export TMPDIR=$TMP;
export ORACLE_HOSTNAME=slave3.hoptoad.com;
export ORACLE_SID=+ASM2;
export ORACLE_BASE=/u01/app/grid;
export ORACLE_HOME=/u01/app/12.1.0/grid;
export NLS_DATE_FORMAT="yy-mm-dd HH24:MI:SS";
export PATH=$ORACLE_HOME/bin:$PATH;
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;
export LD_LIBRARY_PATH=$ORACLE_HOME/lib64;
#ORACLE 用户
export TMP=/tmp;
export TMPDIR=$TMP;
export ORACLE_HOSTNAME=slave3.hoptoad.com;
export ORACLE_BASE=/u01/app/oracle;
export ORACLE_HOME=$ORACLE_BASE/product/12.1.0/db_1;
export ORACLE_UNQNAME=prod;
export ORACLE_SID=prod3;
export ORACLE_TERM=xterm;
export PATH=/usr/sbin:$PATH;
export PATH=$ORACLE_HOME/bin:$PATH;
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS";
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;
每个节点的GRID 用户执行如下命令
/usr/bin/ssh-keygen -t rsa
/usr/bin/ssh-keygen -t dsa
/bin/cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys
完毕后。
测试
#建立等效性
各2节点执行
$ssh slave1 date
$ssh slave1 -priv date
$ssh slave2 date
$ssh slave2 -priv date