环境描述

Lenovo X270, Win 10,VirtualBox 5.2.12
所有的虚拟机安装在移动硬盘上,操作系统为Oracle Linux 7.2
数据库为 12.2.0.1.0,从官网下载,由于是RAC,因此需要下载 linuxx64_12201_database.zip和 linuxx64_12201_grid_home.zip两个安装包
两个虚拟机的主机名分别为ol7-122-rac1.localdomain和ol7-122-rac2.localdomain,分配配置3块网卡:NAT,Host Only和Internal,分别用于上网,对外服务和RAC内部通讯

配置第一个虚机

扩容root disk到40G空间

我的虚拟机模板是已制作好的,但根盘只有24G,比较小,因此需要扩容到40G。
我的磁盘是VMDK格式的,不能直接扩展(当然你也可以添加新的磁盘来扩展),因此先转换为VDI格式。转换前必须将磁盘从VM detach。

"c:\Program Files\Oracle\VirtualBox\VBoxManage" clonemedium disk --format VDI rootdisk1.vmdk rootdisk1.vdi
"c:\Program Files\Oracle\VirtualBox\VBoxManage" modifyhd --compact rootdisk1.vdi
"c:\Program Files\Oracle\VirtualBox\VBoxManage" modifyhd --compact rootdisk1.vdi

clonemedium命令较慢,其它都很快,完成后再retach到VM。
可以看到我们的盘以及扩到40G,不过文件系统还没有扩

# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0   40G  0 disk
├─sda1        8:1    0  500M  0 part /boot
└─sda2        8:2    0 23.5G  0 part ├─ol-root 252:0    0 21.1G  0 lvm  /└─ol-swap 252:1    0  2.4G  0 lvm  [SWAP]
sr0          11:0    1 1024M  0 rom
# df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/mapper/ol-root   22G  3.4G   18G  16% /
devtmpfs             1.8G     0  1.8G   0% /dev
tmpfs                1.9G  140K  1.9G   1% /dev/shm
tmpfs                1.9G  8.8M  1.8G   1% /run
tmpfs                1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda1            497M  211M  287M  43% /boot
tmpfs                370M   24K  370M   1% /run/user/0

所以先利用新增的16G的容量建立一个分区:

# fdisk /dev/sda
Welcome to fdisk (util-linux 2.23.2).Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.Command (m for help): n
Partition type:p   primary (2 primary, 0 extended, 2 free)e   extended
Select (default p):
Using default response p
Partition number (3,4, default 3):
First sector (50331648-83886079, default 50331648):
Using default value 50331648
Last sector, +sectors or +size{K,M,G} (50331648-83886079, default 83886079):
Using default value 83886079
Partition 3 of type Linux and of size 16 GiB is setCommand (m for help): w
The partition table has been altered!Calling ioctl() to re-read partition table.WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

创建PV:

# fdisk -l /dev/sdaDisk /dev/sda: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0005ec3bDevice Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    50331647    24652800   8e  Linux LVM
/dev/sda3        50331648    83886079    16777216   83  Linux
# partprobe /dev/sda
# pvcreate /dev/sda3Physical volume "/dev/sda3" successfully created

扩展VG:

# vgdisplay--- Volume group ---VG Name               olSystem ID             Format                lvm2Metadata Areas        1Metadata Sequence No  3VG Access             read/writeVG Status             resizableMAX LV                0Cur LV                2Open LV               2Max PV                0Cur PV                1Act PV                1VG Size               23.51 GiBPE Size               4.00 MiBTotal PE              6018Alloc PE / Size       6008 / 23.47 GiBFree  PE / Size       10 / 40.00 MiBVG UUID               yOD2tO-qDZe-d19l-1P6J-cSA4-VN0I-BXxChX# vgextend ol /dev/sda3Volume group "ol" successfully extended

扩展LV:

# vgdisplay | grep FreeFree  PE / Size       4105 / 16.04 GiB
# lvdisplay--- Logical volume ---LV Path                /dev/ol/swapLV Name                swapVG Name                olLV UUID                13PRF3-7Qwt-ssrv-eQNV-7LZw-dgDH-dyCjhYLV Write Access        read/writeLV Creation host, time localhost, 2016-10-22 21:25:09 +0800LV Status              available# open                 2LV Size                2.40 GiBCurrent LE             615Segments               1Allocation             inheritRead ahead sectors     auto- currently set to     8192Block device           252:1--- Logical volume ---LV Path                /dev/ol/rootLV Name                rootVG Name                olLV UUID                rir5ib-Qrhd-e0e3-pEw6-1ffE-fXH2-5VRrF3LV Write Access        read/writeLV Creation host, time localhost, 2016-10-22 21:25:09 +0800LV Status              available# open                 1LV Size                21.07 GiBCurrent LE             5393Segments               1Allocation             inheritRead ahead sectors     auto- currently set to     8192Block device           252:0
# lvextend -l +4105 /dev/ol/rootSize of logical volume ol/root changed from 21.07 GiB (5393 extents) to 37.10 GiB (9498 extents).Logical volume root successfully resized.

最后扩展文件系统:

# df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/mapper/ol-root   22G  3.3G   18G  16% /
devtmpfs             1.8G     0  1.8G   0% /dev
tmpfs                1.9G  140K  1.9G   1% /dev/shm
tmpfs                1.9G  8.8M  1.8G   1% /run
tmpfs                1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda1            497M  211M  287M  43% /boot
tmpfs                370M   28K  370M   1% /run/user/0
# xfs_growfs /
meta-data=/dev/mapper/ol-root    isize=256    agcount=4, agsize=1380608 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=0        finobt=0
data     =                       bsize=4096   blocks=5522432, imaxpct=25=                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=2696, version=2=                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 5522432 to 9725952
# df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/mapper/ol-root   38G  3.3G   34G   9% /
devtmpfs             1.8G     0  1.8G   0% /dev
tmpfs                1.9G  140K  1.9G   1% /dev/shm
tmpfs                1.9G  8.8M  1.8G   1% /run
tmpfs                1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda1            497M  211M  287M  43% /boot
tmpfs                370M   28K  370M   1% /run/user/0

配置虚拟机网络

配置3块网卡:NAT,Host Only和Internal,分别用于上网,对外服务和RAC内部通讯。设备名分别为enp0s3,enp0s8和enp0s9
网络配置信息如下:

hostname: ol7-122-rac1.localdomain
enp0s3 (eth0): DHCP (Connect Automatically)
enp0s8 (eth1): IP=192.168.56.101, Subnet=255.255.255.0
enp0s9 (eth2): IP=192.168.1.101, Subnet=255.255.255.0

首先修改主机名为ol7-122-rac1.localdomain:

# echo ol7-122-rac1.localdomain > /etc/hostname
# cat /etc/hostname
ol7-122-rac1.localdomain

然后通过GUI在system tools|settings|network中配置,NAT网卡enp0s3只需启用,即可自动配置/etc/resolv.conf并连接互联网。
配置完成后,显示如下:

# ifconfig -a
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255inet6 fe80::a00:27ff:fe56:6319  prefixlen 64  scopeid 0x20<link>ether 08:00:27:56:63:19  txqueuelen 1000  (Ethernet)RX packets 60  bytes 13212 (12.9 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 203  bytes 17576 (17.1 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.56.101  netmask 255.255.255.0  broadcast 192.168.56.255inet6 fe80::a00:27ff:fe6c:93cb  prefixlen 64  scopeid 0x20<link>ether 08:00:27:6c:93:cb  txqueuelen 1000  (Ethernet)RX packets 49  bytes 7446 (7.2 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 44  bytes 6501 (6.3 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0enp0s9: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.1.101  netmask 255.255.255.0  broadcast 192.168.1.255inet6 fe80::a00:27ff:fe59:828e  prefixlen 64  scopeid 0x20<link>ether 08:00:27:59:82:8e  txqueuelen 1000  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 52  bytes 7705 (7.5 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 0  (Local Loopback)RX packets 8  bytes 624 (624.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 8  bytes 624 (624.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255ether 52:54:00:21:c4:37  txqueuelen 0  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 5  bytes 931 (931.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0virbr0-nic: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500ether 52:54:00:21:c4:37  txqueuelen 500  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

稍微修改一下网络配置文件:

# cd /etc/sysconfig/network-scripts/
# ls ifcfg-*
ifcfg-enp0s3  ifcfg-enp0s8  ifcfg-enp0s9  ifcfg-lo
# cat ifcfg-enp0s3
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=enp0s3
UUID=2531730c-a7b8-4e0c-b415-072ed3aac9dc
DEVICE=enp0s3
ONBOOT=no
# cat ifcfg-enp0s8
TYPE=Ethernet
BOOTPROTO=none
IPADDR=192.168.56.101
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=enp0s8
UUID=c29fe81b-3e1b-4bcd-9794-96ca5337ee90
ONBOOT=yes# echo "DEVICE=enp0s8" >> ifcfg-enp0s8
# echo "DEVICE=enp0s9" >> ifcfg-enp0s9
# systemctl restart network

准备Oracle安装环境

如果你已建立oracle用户,请将其删除

# userdel -r oracle

然后利用oracle提供的RPM即可:

# yum install oracle-database-server-12cR2-preinstall -y
# passwd oracle

此包在安装过程中自动建立用户和组,配置系统参数等:

# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54330(racdba)
# more /etc/sysctl.conf
# System default settings live in /usr/lib/sysctl.d/00-system.conf.
# To override those settings, enter new settings here, or in an /etc/sysctl.d/<name>.conf file
#
# For more information, see sysctl.conf(5) and sysctl.d(5).# oracle-database-server-12cR2-preinstall setting for fs.file-max is 6815744
fs.file-max = 6815744# oracle-database-server-12cR2-preinstall setting for kernel.sem is '250 32000 100 128'
kernel.sem = 250 32000 100 128
......

创建目录和设置环境变量

mkdir -p /u01/app/12.2.0.1/grid
mkdir -p /u01/app/oracle/product/12.2.0.1/db_1
chown -R oracle:oinstall /u01
chmod -R 775 /u01/

在~oracle/.bash_profile中添加以下:

# Oracle Settings
export TMP=/tmp
export TMPDIR=$TMPexport ORACLE_HOSTNAME=ol7-122-rac1.localdomain
export ORACLE_UNQNAME=CDBRAC
export ORACLE_BASE=/u01/app/oracle
export GRID_HOME=/u01/app/12.2.0.1/grid
export DB_HOME=$ORACLE_BASE/product/12.2.0.1/db_1
export ORACLE_HOME=$DB_HOME
export ORACLE_SID=cdbrac1
export ORACLE_TERM=xterm
export BASE_PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$BASE_PATHexport LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlibalias grid_env='. /home/oracle/grid_env'
alias db_env='. /home/oracle/db_env'

创建文件db_env和db_env:

$ cat db_env
export ORACLE_SID=cdbrac1
export ORACLE_HOME=$DB_HOME
export PATH=$ORACLE_HOME/bin:$BASE_PATHexport LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
$ cat grid_env
export ORACLE_SID=+ASM1
export ORACLE_HOME=$GRID_HOME
export PATH=$ORACLE_HOME/bin:$BASE_PATHexport LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

配置DNS解析

这主要是为SCAN VIP使用。首先添加以下文本到/etc/hosts:

# Public
192.168.56.101   ol7-122-rac1.localdomain        ol7-122-rac1
192.168.56.102   ol7-122-rac2.localdomain        ol7-122-rac2
# Private
192.168.1.101   ol7-122-rac1-priv.localdomain   ol7-122-rac1-priv
192.168.1.102   ol7-122-rac2-priv.localdomain   ol7-122-rac2-priv
# Virtual
192.168.56.103   ol7-122-rac1-vip.localdomain    ol7-122-rac1-vip
192.168.56.104   ol7-122-rac2-vip.localdomain    ol7-122-rac2-vip
# SCAN
#192.168.56.105   ol7-122-cluster-scan.localdomain ol7-122-cluster-scan
#192.168.56.106   ol7-122-cluster-scan.localdomain ol7-122-cluster-scan
#192.168.56.107   ol7-122-cluster-scan.localdomain ol7-122-cluster-scan

然后使用BIND配置DNS,参见过程:

# yum install bind-libs bind bind-utils

修改文件/etc/named.conf如下,其中zone部分指明了解析文件为localdomain.zone:

options {
......
allow-query     { localhost; 192.168.0.0;};
......
};
......
zone "localdomain." IN {type master;file "localdomain.zone";allow-update { none; };
};
.......

新建解析文件/var/named/localdomain.zone如下:

$TTL    86400
@               IN SOA  localhost root.localhost (42              ; serial (d. adams)3H              ; refresh15M             ; retry1W              ; expiry1D )            ; minimumIN NS           localhost
localhost       IN A            127.0.0.1
ol7-122-rac1            IN A    192.168.56.101
ol7-122-rac2            IN A    192.168.56.102
ol7-122-rac1-priv       IN A    192.168.1.101
ol7-122-rac2-priv       IN A    192.168.1.102
ol7-122-rac1-vip        IN A    192.168.56.103
ol7-122-rac2-vip        IN A    192.168.56.104
ol7-122-cluster-scan        IN A    192.168.56.105
ol7-122-cluster-scan        IN A    192.168.56.106
ol7-122-cluster-scan        IN A    192.168.56.107

现在可以禁止NAT网卡enp0s3了,以免Network Manager重启时修改/etc/resolv.conf文件

# ifdown enp0s3
# cat /etc/resolv.conf
search localdomain
nameserver 127.0.0.1
# systemctl restart network
# 确认resolv.conf文件没有变化

启动DNS服务:

# systemctl enable named
Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.
# systemctl start named
# systemctl status named
● named.service - Berkeley Internet Name Domain (DNS)Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; vendor preset: disabled)Active: active (running) since Thu 2018-08-23 17:19:27 CST; 6s agoProcess: 13449 ExecStop=/bin/sh -c /usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID (code=exited, status=0/SUCCESS)Process: 13460 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS (code=exited, status=0/SUCCESS)Process: 13457 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS)Main PID: 13462 (named)CGroup: /system.slice/named.service└─13462 /usr/sbin/named -u named -c /etc/named.confAug 23 17:19:27 ol7-122-rac1.localdomain named[13462]: managed-keys-zone: loaded serial 2
Aug 23 17:19:27 ol7-122-rac1.localdomain named[13462]: zone 0.in-addr.arpa/IN: loaded serial 0
Aug 23 17:19:27 ol7-122-rac1.localdomain named[13462]: zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
Aug 23 17:19:27 ol7-122-rac1.localdomain named[13462]: zone localdomain/IN: loaded serial 42
Aug 23 17:19:27 ol7-122-rac1.localdomain named[13462]: zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0
Aug 23 17:19:27 ol7-122-rac1.localdomain named[13462]: zone localhost.localdomain/IN: loaded serial 0
Aug 23 17:19:27 ol7-122-rac1.localdomain named[13462]: zone localhost/IN: loaded serial 0
Aug 23 17:19:27 ol7-122-rac1.localdomain named[13462]: all zones loaded
Aug 23 17:19:27 ol7-122-rac1.localdomain named[13462]: running
Aug 23 17:19:27 ol7-122-rac1.localdomain systemd[1]: Started Berkeley Internet Name Domain (DNS).

验证:

# nslookup ol7-122-rac1
Server:     127.0.0.1
Address:    127.0.0.1#53Name:   ol7-122-rac1.localdomain
Address: 192.168.56.101# nslookup ol7-122-rac2-priv
Server:     127.0.0.1
Address:    127.0.0.1#53Name:   ol7-122-rac2-priv.localdomain
Address: 192.168.1.102# nslookup ol7-122-cluster-scan
Server:     127.0.0.1
Address:    127.0.0.1#53Name:   ol7-122-cluster-scan.localdomain
Address: 192.168.56.107
Name:   ol7-122-cluster-scan.localdomain
Address: 192.168.56.105
Name:   ol7-122-cluster-scan.localdomain
Address: 192.168.56.106

禁用 SELINUX和防火墙

虽然不是必需,但这样方便很多。
编辑/etc/selinux/config即可,重启生效。用sestatus确认修改成功。

# systemctl stop firewalld
# systemctl disable firewalld
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.

创建安装介质共享目录

此共享目录供RAC两个虚拟机一起访问介质用,以免将介质拷到每一个主机中。
记得勾选make permanent和Auto-mount。
将数据库安装文件解压到共享目录下,将Grid安装文件拷贝到共享目录下,但不解压。因为grid的安装即解压。
最后将vboxsf添加到用户oracle的辅助组中,使oracle用户可以访问共享目录

# usermod -a -G vboxsf oracle
# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),983(vboxsf),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54330(racdba)

创建RAC共享磁盘

有UDEV和ASMLIB两种方式,此处使用的是前者。
总容量需超过40G,为节省时间,创建2个20G磁盘。

"c:\Program Files\Oracle\VirtualBox\VBoxManage" createhd --filename asm1.vdi --size 20480 --format VDI --variant Fixed
"c:\Program Files\Oracle\VirtualBox\VBoxManage" createhd --filename asm2.vdi --size 20480 --format VDI --variant Fixed

停止虚机,然后attach磁盘:

"c:\Program Files\Oracle\VirtualBox\VBoxManage" storageattach ol7-122-rac1 --storagectl "SATA" --port 1 --device 0 --type hdd --medium asm1.vdi --mtype shareable
"c:\Program Files\Oracle\VirtualBox\VBoxManage" storageattach ol7-122-rac1 --storagectl "SATA" --port 2 --device 0 --type hdd --medium asm2.vdi --mtype shareable

启动虚机

# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0   40G  0 disk
├─sda1        8:1    0  500M  0 part /boot
├─sda2        8:2    0 23.5G  0 part
│ ├─ol-root 252:0    0 37.1G  0 lvm  /
│ └─ol-swap 252:1    0  2.4G  0 lvm  [SWAP]
└─sda3        8:3    0   16G  0 part └─ol-root 252:0    0 37.1G  0 lvm  /
sdb           8:16   0   20G  0 disk
sdc           8:32   0   20G  0 disk
sr0          11:0    1 1024M  0 rom
# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x70762ef1.Command (m for help): n
Partition type:p   primary (0 primary, 0 extended, 4 free)e   extended
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039):
Using default value 41943039
Partition 1 of type Linux and of size 20 GiB is setCommand (m for help): w
The partition table has been altered!Calling ioctl() to re-read partition table.
Syncing disks.
# 对sdc执行系统操作
# fdisk /dev/sdc
Welcome to fdisk (util-linux 2.23.2).Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x6de98a4b.Command (m for help): n
Partition type:p   primary (0 primary, 0 extended, 4 free)e   extended
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039):
Using default value 41943039
Partition 1 of type Linux and of size 20 GiB is setCommand (m for help): w
The partition table has been altered!Calling ioctl() to re-read partition table.
Syncing disks.
# ls -l /dev/sdb* /dev/sdc*
brw-rw---- 1 root disk 8, 16 Aug 23 21:09 /dev/sdb
brw-rw---- 1 root disk 8, 17 Aug 23 21:09 /dev/sdb1
brw-rw---- 1 root disk 8, 32 Aug 23 21:10 /dev/sdc
brw-rw---- 1 root disk 8, 33 Aug 23 21:10 /dev/sdc1

新建以下文件:

# cat /etc/scsi_id.config
options=-g

查看此两设备的SCSI ID,并新建文件如下:

# /usr/lib/udev/scsi_id -g -u -d /dev/sdb
1ATA_VBOX_HARDDISK_VB6e537b29-59f0029b
# /usr/lib/udev/scsi_id -g -u -d /dev/sdc
1ATA_VBOX_HARDDISK_VB6547abe2-0b36cd13
# cat /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="sd?1", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VB6e537b29-59f0029b", SYMLINK+="asm-disk1", OWNER="oracle", GROUP="dba", MODE="0660"
KERNEL=="sd?1", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VB6547abe2-0b36cd13", SYMLINK+="asm-disk2", OWNER="oracle", GROUP="dba", MODE="0660"
#

更新并测试:

# /sbin/partprobe /dev/sdb1
# /sbin/partprobe /dev/sdc1# udevadm test /block/sdb/sdb1

重启udev设备:

# udevadm control --reload-rules
# ll /dev/asm*
lrwxrwxrwx 1 root root 4 Aug 23 21:18 /dev/asm-disk1 -> sdb1
lrwxrwxrwx 1 root root 4 Aug 23 21:17 /dev/asm-disk2 -> sdc1

配置时间同步

可以使用NTP或CHRONY,此处使用后者,没有配置完全,之后的报错可以忽略

# systemctl enable chronyd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/chronyd.service to /usr/lib/systemd/system/chronyd.service.
# systemctl start chronyd.service

通过克隆配置第二个RAC节点

shutdown第一台虚机,并由其克隆第二台虚机。

"c:\Program Files\Oracle\VirtualBox\VBoxManage" clonehd "E:\RACLab\node1\rootdisk1.vdi" "E:\RACLab\node2\rootdisk1.vdi"

创建虚机ol7-122-rac2,并attach克隆盘,然后添加共享盘。另外记得和第一台虚机一样添加3块网卡,分别为NAT,Host Only和Internal。

E:\>cd RACLab\ShardDisksE:\RACLab\ShardDisks>"c:\Program Files\Oracle\VirtualBox\VBoxManage" storageattach ol7-122-rac2 --storagectl "SATA" --port 1 --device 0 --type hdd --medium asm1.vdi --mtype shareableE:\RACLab\ShardDisks>"c:\Program Files\Oracle\VirtualBox\VBoxManage" storageattach ol7-122-rac2 --storagectl "SATA" --port 2 --device 0 --type hdd --medium asm2.vdi --mtype shareableE:\>tree /F RACLab
卷 Xiaoyu 2016 Drive 的文件夹 PATH 列表
卷序列号为 82EB-274D
E:\RACLAB
├─Node1
│      rootdisk1.vdi
│
├─Node2
│      rootdisk1.vdi
│
└─ShardDisksasm1.vdiasm2.vdi

调整主机名和网络IP地址

启动第二台虚机并进行调整,调整的项目包括修改主机名,网络和相关配置文件:

# echo ol7-122-rac2.localdomain > /etc/hostname
[root@ol7-122-rac2 ~]# cd /etc/sysconfig/network-scripts/
[root@ol7-122-rac2 network-scripts]# vi ifcfg-enp0s8 修改101到102
[root@ol7-122-rac2 network-scripts]# vi ifcfg-enp0s9 修改101到102
[root@ol7-122-rac2 network-scripts]# systemctl restart network
[root@ol7-122-rac2 network-scripts]# ifconfig -a
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500ether 08:00:27:d4:4d:2d  txqueuelen 1000  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.56.102  netmask 255.255.255.0  broadcast 192.168.56.255inet6 fe80::a00:27ff:fe62:32d  prefixlen 64  scopeid 0x20<link>ether 08:00:27:62:03:2d  txqueuelen 1000  (Ethernet)RX packets 2  bytes 303 (303.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 51  bytes 7529 (7.3 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0enp0s9: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.1.102  netmask 255.255.255.0  broadcast 192.168.1.255inet6 fe80::a00:27ff:fe56:ce13  prefixlen 64  scopeid 0x20<link>ether 08:00:27:56:ce:13  txqueuelen 1000  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 47  bytes 7115 (6.9 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 0  (Local Loopback)RX packets 168  bytes 13560 (13.2 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 168  bytes 13560 (13.2 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255ether 52:54:00:21:c4:37  txqueuelen 0  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 7  bytes 1378 (1.3 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0virbr0-nic: flags=4098<BROADCAST,MULTICAST>  mtu 1500ether 52:54:00:21:c4:37  txqueuelen 500  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

重启虚机。

检查并修正配置

确保resolv.conf如下:

# cat /etc/resolv.conf
search localdomain
nameserver 127.0.0.1

如果不是请执行以下:

ifdown enp0s3
systemctl restart network
修改resolv.conf文件,使其与第一台主机一致

修改~oracle目录下的db_env和grid_env文件,将其中的1替换为2,例如ASM1到ASM2。
验证DNS工作正常:

$ nslookup ol7-122-cluster-scan
Server:     127.0.0.1
Address:    127.0.0.1#53Name:   ol7-122-cluster-scan.localdomain
Address: 192.168.56.107
Name:   ol7-122-cluster-scan.localdomain
Address: 192.168.56.105
Name:   ol7-122-cluster-scan.localdomain
Address: 192.168.56.106

确保共享设备正常:

$ ls -l /dev/asm*
lrwxrwxrwx 1 root root 4 Aug 23 21:49 /dev/asm-disk1 -> sdb1
lrwxrwxrwx 1 root root 4 Aug 23 21:49 /dev/asm-disk2 -> sdc1

启动第一台主机,确保以下的ping在两台主机上执行正常,也就是对外服务网络和私网可以互通:

ping -c 3 ol7-122-rac1
ping -c 3 ol7-122-rac1-priv
ping -c 3 ol7-122-rac2
ping -c 3 ol7-122-rac2-priv

仿照第一台主机建立共享目录,因为我发现没有克隆过来

安装Grid Infrastructure

在节点1采用GUI安装。

$ ll /media/sf_share/
total 2924505
drwxrwx--- 1 root vboxsf       4096 Jan 27  2017 database
-rwxrwx--- 1 root vboxsf 2994687209 Aug 22 11:55 linuxx64_12201_grid_home.zip

解压安装包,需要一些时间:

export SOFTWARE_LOCATION=/media/sf_share/
cd /u01/app/12.2.0.1/grid
unzip -q $SOFTWARE_LOCATION/linuxx64_12201_grid_home.zip

以root用户在两个节点安装GI软件:

su -
# Local node.
cd /u01/app/12.2.0.1/grid/cv/rpm
rpm -Uvh cvuqdisk*# Remote node.
scp ./cvuqdisk* root@ol7-122-rac2:/tmp
ssh root@ol7-122-rac2 rpm -Uvh /tmp/cvuqdisk*

然后使用oracle用户开始GUI安装

cd /u01/app/12.2.0.1/grid
./gridSetup.sh

就不上图了。

  1. Configure Oracle Grid Infrastructure for a New Cluster
  2. Configure an Oracle Standalone Cluster
  3. cluster name=ol7-122-cluster,scan name=ol7-122-cluster-scan,port=1521
  4. 添加节点2到GI,并配置SSH 联通性
  5. 网卡部分,enp0s8为public,enp0s9为ASM & Private
  6. 磁盘部分,选择之前建立的两个共享盘,并设置external redundancy
  7. oracle base使用默认的/u01/app/oracle
  8. 先决条件检查 - NTP的错误可忽略。而avahi-daemon的错误可以修复
  9. 忽略这些警告,开始安装
  10. 执行root脚本比较耗时
  11. 最后一步会报错,查看日志是chrony的错,没有关系,继续

验证GI安装成功

安装完成后,较晚,就关机了,不过没关系。重启后GI也会自动起来

[oracle@ol7-122-rac1 ~]$ grid_env
[oracle@ol7-122-rac1 ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnrONLINE  OFFLINE      ol7-122-rac1             STABLEONLINE  ONLINE       ol7-122-rac2             STABLE
ora.DATA.dgONLINE  OFFLINE      ol7-122-rac1             STABLEONLINE  ONLINE       ol7-122-rac2             STABLE
ora.LISTENER.lsnrONLINE  OFFLINE      ol7-122-rac1             STABLEONLINE  INTERMEDIATE ol7-122-rac2             Not All Endpoints Registered,STABLE
ora.chadONLINE  OFFLINE      ol7-122-rac1             STABLEONLINE  OFFLINE      ol7-122-rac2             STABLE
ora.net1.networkONLINE  ONLINE       ol7-122-rac1             STABLEONLINE  ONLINE       ol7-122-rac2             STABLE
ora.onsONLINE  OFFLINE      ol7-122-rac1             STABLEONLINE  ONLINE       ol7-122-rac2             STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr1        ONLINE  INTERMEDIATE ol7-122-rac2             Not All Endpoints Registered,STABLE
ora.LISTENER_SCAN2.lsnr1        ONLINE  INTERMEDIATE ol7-122-rac2             Not All Endpoints Registered,STABLE
ora.LISTENER_SCAN3.lsnr1        ONLINE  INTERMEDIATE ol7-122-rac2             Not All Endpoints Registered,STABLE
ora.MGMTLSNR1        ONLINE  ONLINE       ol7-122-rac2             169.254.27.15 192.168.1.102,STABLE
ora.asm1        ONLINE  OFFLINE                               STABLE2        ONLINE  ONLINE       ol7-122-rac2             Started,STABLE3        OFFLINE OFFLINE                               STABLE
ora.cvu1        ONLINE  ONLINE       ol7-122-rac2             STABLE
ora.mgmtdb1        ONLINE  OFFLINE      ol7-122-rac2             STARTING
ora.ol7-122-rac1.vip1        ONLINE  INTERMEDIATE ol7-122-rac2             FAILED OVER,STABLE
ora.ol7-122-rac2.vip1        ONLINE  ONLINE       ol7-122-rac2             STABLE
ora.qosmserver1        ONLINE  ONLINE       ol7-122-rac2             STABLE
ora.scan1.vip1        ONLINE  ONLINE       ol7-122-rac2             STABLE
ora.scan2.vip1        ONLINE  ONLINE       ol7-122-rac2             STABLE
ora.scan3.vip1        ONLINE  ONLINE       ol7-122-rac2             STABLE
--------------------------------------------------------------------------------

安装数据库

以oracle用户用GUI安装

$ cd /media/sf_share/database
$ ./runInstaller
  1. Install database software only
  2. Oracle Real Application Clusters database installation
  3. 选择两个节点
  4. 选择Enterprise Edition(7.5G)
  5. 接受默认的”/u01/app/oracle” as the Oracle base”和”/u01/app/oracle/product/12.2.0.1/db_1”
  6. 接受默认的group
  7. 先决条件检查,有NTP的警告,可以忽略
  8. 开始安装
  9. 最后在两个主机上执行脚本,很快。
  10. 成功 2018/8/24日9:27

空间使用情况

节点1

[oracle@ol7-122-rac1 ~]$ df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/mapper/ol-root   38G   21G   17G  56% /
devtmpfs             2.8G  8.0K  2.8G   1% /dev
tmpfs                2.8G  645M  2.2G  23% /dev/shm
tmpfs                2.8G  9.1M  2.8G   1% /run
tmpfs                2.8G     0  2.8G   0% /sys/fs/cgroup
/dev/sda1            497M  211M  287M  43% /boot
share                100G   89G   12G  89% /media/sf_share
tmpfs                572M  8.0K  572M   1% /run/user/54321

节点2

[oracle@ol7-122-rac2 ~]$ df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/mapper/ol-root   38G   20G   18G  53% /
devtmpfs             2.8G  8.0K  2.8G   1% /dev
tmpfs                2.8G  216K  2.8G   1% /dev/shm
tmpfs                2.8G  9.1M  2.8G   1% /run
tmpfs                2.8G     0  2.8G   0% /sys/fs/cgroup
/dev/sda1            497M  211M  287M  43% /boot
share                100G   89G   12G  89% /media/sf_share
tmpfs                572M  8.0K  572M   1% /run/user/54321

开始安装前是3.3G,因此安装GI和数据库软件使用了17-18G左右。

参考

  • Oracle Database 12c Release 2 (12.2) RAC On Oracle Linux 7 Using VirtualBox
  • DEPLOYING ORACLE RAC DATABASE 12C RELEASE 2 ON RED HAT ENTERPRISE LINUX 7
  • ASMFD: Implementing ASM Filter Driver after 12.2 GI Installation (文档 ID 2305707.1)
  • https://oracle-base.com/articles/10g/asm-using-asmlib-and-raw-devices
  • http://www.oracle.com/technetwork/topics/linux/index-101839.html

在VirtualBox Linux 7u2 中安装Oracle RAC 12.2.0.1.0相关推荐

  1. Linux系统中安装Oracle 数据库操作

    我的centos7是在virtualbox下安装的,安装Oracle安装了好久好久,现将详细操作步骤写下来. 一.安装的硬件要求 1.内存: 要求:内存最小1G,推荐2G或者更高.呃呃呃 查看命令:# ...

  2. ESX上ORACLE 10.2RAC(4.在REHAT4.7中安装ORACLE RAC)

    四. 安装CRS软件 上传cluster软件到rac1,rac2的/home/oracle目录下 [root@rac1 ~]# cd /home/oracle [root@rac1 oracle]# ...

  3. 如何在linux操作系统中安装oracle数据库,并设置开机自启动

    1. ping www.baidu.com 查看是否联网成功 2. 不能联网,就将ip修改为动态dhcp模式使之能链接成功. 3. Vi /etc/hosts 写上ip地址与主机名 4. yum in ...

  4. 在Oracle Linux 7U5上安装Oracle Database 12.2.0.1

    环境准备 硬件准备 在VirtualBox上安装一台OL7u5的虚机,8G内存,一个vCPU,一块网卡(NAT,以便从公网下载包).我是从现成的模板导入的. # cat /etc/oracle-rel ...

  5. oracle中-1002,安装Oracle RAC时, 碰到到了PRKC-1002错误

    在VMWare Server 1.0.8中安装Oracle RAC时, 碰到到了PRKC-1002错误: WARNING: Error while copying directory /u01/ora ...

  6. 使用 VMware Server 在 Linux 上安装 Oracle RAC 10g

    如下文档摘自oracle官方网. 作者:Vincent Chan 2007 年 1 月发表 于 10 月份 Oracle OpenWorld 2006 上推介的 Oracle 坚不可摧的 Linux ...

  7. 使用 VMware Server 在 Oracle Enterprise Linux 上安装 Oracle RAC 10g

    DBA:Linux   下载 VMware Server 1.0.1 Oracle Enterprise Linux 4,Kernel 2.6.9-42.0.0.0.1.ELsmp 适用于 Linux ...

  8. linux的增强文件夹,在linux系统中安装virtualbox增强功能(增强包)的详细步骤是什么...

    在linux系统中安装virtualbox增强功能(增强包)的详细步骤是什么 1. 点击菜单栏 设备 –> 分配光驱 –> 选择一个虚拟光盘,找到VirtualBox安装目录下的`VBox ...

  9. 指南:在 linux 下的 Oracle Database 11g 中安装 Oracle Enterprise Manager 10g Grid Control 第 5 版

    原文地址:http://www.oracle.com/technetwork/cn/articles/revitt-oem-096363-zhs.html 作者:Mike Revitt 逐步详解如何针 ...

  10. 安装Oracle RAC数据库前的准备工作

    安装Oracle RAC数据库 1. 安装前的系统配置需求 安装Oracle Rac数据库需要的组件可以分为软硬件两部分,下面是一个软硬件推荐配置: 为了方便安装RAC数据库,在安装操作系统时,建议选 ...

最新文章

  1. Linux那些事儿 之 戏说USB(26)设备的生命线(九)
  2. Python基础学习1(Python的Windows和Linux的安装及简单学习)
  3. Omad群组部署、依赖部署一键解决
  4. 序数是什么意思_序数与基数
  5. 高斯课堂数电讲义笔记_学技树
  6. JDK源码解析之 Java.lang.AbstractStringBuilder
  7. 序列每天从0开始_【算法打卡】分割数组为连续子序列
  8. 单片机中如何将BCD码拆开_单片机bcd码转换
  9. 分布式系统关注点——99%的人都能看懂的「熔断」以及最佳实践
  10. java连接达梦数据库_java连接达梦数据库的简单代码
  11. 漫画 | 前端发展史的江湖恩怨情仇~
  12. python按照绝对值排序_尝试使用python中的绝对值,按最接近零的值对列表进行排序...
  13. win10系统开启扫描仪服务器,win10怎么安装扫描仪 win10扫描仪怎么扫描
  14. 正则的replace方法详解
  15. 深入探索JVM垃圾收集器 — 经典垃圾收集器之Parallel Scavenge收集器、Serial Old收集器、Parallel Old收集器
  16. 清华操作系统实验ucore_lab2
  17. linux pki目录,Linux目录结构和常用命令
  18. 你说啥什么?注解你还不会?
  19. mysql数据自增ID为2的解决办法
  20. JQData提供哪些数据

热门文章

  1. 用css制作网站首页
  2. 多组两两比较用什么检验方法_SPSS教程:多个组比较(Fisher精确检验)及组间两两比较...
  3. Hadoop 3.x 的组成 完整使用 (月薪过万 第三章)
  4. 由java导入excel表格数据引发的一个惨案…(黑眼圈又重了,头发又白了)
  5. gmssl服务端和客户端程序、吉大正元身份认证网关、吉大正元SDK+USBkey 两两之间双证书双向认证数据通信测试
  6. App、小程序、H5的区别
  7. 第五章 多元函数微分学
  8. 软件测试周刊(第24期):最不重要的素质就是智商
  9. 【计量经济学】工具变量估计与两阶段最小二乘法
  10. 投影html连接电脑,投影仪怎么连接电脑 电脑与投影仪的连接方法