RAC 搭建步骤--转载
https://blog.51cto.com/dbprofessional/7134479 ASM
https://blog.51cto.com/dbprofessional/7135001 RAC
https://blog.51cto.com/dbprofessional/7137954 oracle
https://blog.51cto.com/dbprofessional/7139848 asm & dbca
01
[root@node01 ~]# groupadd -g 1200 dba
[root@node01 ~]# groupadd -g 1201 oinstall
[root@node01 ~]# groupadd -g 1202 asmadmin
[root@node01 ~]# groupadd -g 1203 asmdba
[root@node01 ~]# useradd -u 1100 -g oinstall -G asmadmin,asmdba,dba grid
[root@node01 ~]# echo grid | passwd --stdin grid
Changing password for user grid.
passwd: all authentication tokens updated successfully.
[root@node01 ~]# id grid
uid=1100(grid) gid=1201(oinstall) groups=1201(oinstall),1200(dba),1202(asmadmin),1203(asmdba)
[root@node01 ~]# yum install -y kmod-oracleasm
[root@node01 ~]# rpm -ivh oracleasmlib-2.0.12-1.el7.x86_64.rpm
[root@node01 ~]# rpm -ivh oracleasm-support-2.1.11-2.el7.x86_64.rpm
[root@node01 ~]# /usr/sbin/oracleasm configure -i
Configuring the Oracle ASM library driver.
This will configure the on-boot properties of the Oracle ASM library
driver. The following questions will determine whether the driver is
loaded on boot and what permissions it will have. The current values
will be shown in brackets ('[]'). Hitting <ENTER> without typing an
answer will keep that current value. Ctrl-C will abort.
Default user to own the driver interface []: grid
Default group to own the driver interface []: asmadmin
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done
[root@node01 ~]# /usr/sbin/oracleasm init
Creating /dev/oracleasm mount point: /dev/oracleasm
Loading module "oracleasm": oracleasm
Configuring "oracleasm" to use device physical block size
Mounting ASMlib driver filesystem: /dev/oracleasm
[root@node01 ~]# /usr/sbin/oracleasm createdisk disk1 /dev/sdb1
Writing disk header: done
Instantiating disk: done
[root@node01 ~]# /usr/sbin/oracleasm createdisk disk2 /dev/sdc1
Writing disk header: done
Instantiating disk: done
[root@node01 ~]# /usr/sbin/oracleasm createdisk disk3 /dev/sdd1
Writing disk header: done
Instantiating disk: done
[root@node01 ~]# /usr/sbin/oracleasm createdisk disk4 /dev/sde1
Writing disk header: done
Instantiating disk: done
[root@node01 ~]# /usr/sbin/oracleasm createdisk disk5 /dev/sdf1
Writing disk header: done
Instantiating disk: done
[root@node01 ~]# /usr/sbin/oracleasm createdisk disk6 /dev/sdg1
Writing disk header: done
Instantiating disk: done
[root@node01 ~]# /usr/sbin/oracleasm createdisk disk7 /dev/sdh1
Writing disk header: done
Instantiating disk: done
[root@node01 ~]# /usr/sbin/oracleasm createdisk disk8 /dev/sdi1
Writing disk header: done
Instantiating disk: done
[root@node01 ~]# /usr/sbin/oracleasm createdisk disk9 /dev/sdj1
Writing disk header: done
Instantiating disk: done
[root@node01 ~]# /usr/sbin/oracleasm createdisk disk10 /dev/sdk1
Writing disk header: done
Instantiating disk: done
[root@node01 ~]# /usr/sbin/oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...
[root@node01 ~]# /usr/sbin/oracleasm listdisks
DISK1
DISK10
DISK2
DISK3
DISK4
DISK5
DISK6
DISK7
DISK8
DISK9
[root@node02 ~]# groupadd -g 1200 dba
[root@node02 ~]# groupadd -g 1201 oinstall
[root@node02 ~]# groupadd -g 1202 asmadmin
[root@node02 ~]# groupadd -g 1203 asmdba
[root@node02 ~]# useradd -u 1100 -g oinstall -G asmadmin,asmdba,dba grid
[root@node02 ~]# echo grid | passwd --stdin grid
Changing password for user grid.
passwd: all authentication tokens updated successfully.
[root@node02 ~]# id grid
uid=1100(grid) gid=1201(oinstall) groups=1201(oinstall),1200(dba),1202(asmadmin),1203(asmdba)
[root@node02 ~]# yum install -y kmod-oracleasm
[root@node02 ~]# rpm -ivh oracleasmlib-2.0.4-1.el6.x86_64.rpm
[root@node02 ~]# rpm -ivh oracleasm-support-2.1.8-1.el6.x86_64.rpm
[root@node02 ~]# /usr/sbin/oracleasm configure -i
Configuring the Oracle ASM library driver.
This will configure the on-boot properties of the Oracle ASM library
driver. The following questions will determine whether the driver is
loaded on boot and what permissions it will have. The current values
will be shown in brackets ('[]'). Hitting <ENTER> without typing an
answer will keep that current value. Ctrl-C will abort.
Default user to own the driver interface []: grid
Default group to own the driver interface []: asmadmin
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done
[root@node02 ~]# /usr/sbin/oracleasm init
Creating /dev/oracleasm mount point: /dev/oracleasm
Loading module "oracleasm": oracleasm
Configuring "oracleasm" to use device physical block size
Mounting ASMlib driver filesystem: /dev/oracleasm
[root@node02 ~]# /usr/sbin/oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...
Instantiating disk "DISK1"
Instantiating disk "DISK2"
Instantiating disk "DISK3"
Instantiating disk "DISK4"
Instantiating disk "DISK5"
Instantiating disk "DISK6"
Instantiating disk "DISK7"
Instantiating disk "DISK8"
Instantiating disk "DISK9"
Instantiating disk "DISK10"
[root@node02 ~]# /usr/sbin/oracleasm listdisks
DISK1
DISK10
DISK2
DISK3
DISK4
DISK5
DISK6
DISK7
DISK8
DISK9
[root@node01 ~]# /usr/sbin/oracleasm deletedisk disk1 [root@node01 ~]# dd if=/dev/zero of=/dev/sdb1 bs=8192 count=256 [root@node01 ~]# /usr/sbin/oracleasm createdisk disk1 /dev/sdb1
02
[root@node01 ~]# cat >> /etc/hosts <<EOF # Public Network - (eth0) 192.168.1.101 node01 192.168.1.102 node02 # Public Virtual IP (VIP) addresses - (eth0:1) 192.168.1.111 node01-vip 192.168.1.112 node02-vip EOF [root@node01 ~]# yum -y install gcc gcc-c++ glibc glibc-common ksh make sysstat \ binutils elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static \ glibc-devel glibc-headers libaio libaio-devel libstdc++ libstdc++-devel \ compat-libcap1 compat-libstdc++-33 libXext unixODBC unixODBC-devel [root@node01 ~]# CVUQDISK_GRP=oinstall [root@node01 ~]# export CVUQDISK_GRP [root@node01 ~]# yum install -y smartmontools [root@node01 ~]# rpm -ivh cvuqdisk-1.0.9-1.rpm [root@node01 ~]# yum install -y ntp [root@node01 ~]# vim /etc/ntp.conf # Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). server ntp1.aliyun.com iburst server ntp2.aliyun.com iburst server ntp3.aliyun.com iburst server ntp4.aliyun.com iburst [root@node01 ~]# vim /etc/sysconfig/ntpd # Command line options for ntpd OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid -g" [root@node01 ~]# systemctl start ntpd.service [root@node01 ~]# systemctl enable ntpd.service [root@node01 ~]# systemctl status ntpd.service [root@node01 ~]# ntpstat synchronised to NTP server (203.107.6.88) at stratum 3 time correct to within 961 ms polling server every 64 s [root@node01 ~]# cat >> /etc/sysctl.conf <<EOF kernel.shmmax = 2141192192 kernel.shmmni = 4096 kernel.shmall = 2097152 kernel.sem = 250 32000 100 128 fs.file-max = 6815744 fs.aio-max-nr=1048576 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=1048576 net.ipv4.conf.default.rp_filter = 0 net.ipv4.conf.all.rp_filter = 0 EOF [root@node01 ~]# sysctl -p [root@node01 ~]# cat >> /etc/security/limits.conf <<EOF grid soft nproc 2047 grid hard nproc 16384 grid soft nofile 1024 grid hard nofile 65536 EOF [root@node01 ~]# mkdir -p /u01/app/grid [root@node01 ~]# mkdir -p /u01/app/11.2.0.4/grid [root@node01 ~]# chown -R grid:oinstall /u01 [grid@node01 ~]$ vi .bash_profile export ORACLE_SID=+ASM1 export ORACLE_BASE=/u01/app/grid export ORACLE_HOME=/u01/app/11.2.0.4/grid export PATH=$ORACLE_HOME/bin:$PATH export DISPLAY=192.168.1.100:0 stty erase ^H
[root@node02 ~]# cat >> /etc/hosts <<EOF 192.168.1.101 node01 192.168.1.102 node02 # Public Virtual IP (VIP) addresses - (eth0:1) 192.168.1.111 node01-vip 192.168.1.112 node02-vip EOF [root@node02 ~]# yum -y install gcc gcc-c++ glibc glibc-common ksh make sysstat \ binutils elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static \ glibc-devel glibc-headers libaio libaio-devel libstdc++ libstdc++-devel \ compat-libstdc++-33 compat-libcap1 libXext unixODBC unixODBC-devel [root@node01 ~]# CVUQDISK_GRP=oinstall [root@node01 ~]# export CVUQDISK_GRP [root@node01 ~]# yum install -y smartmontools [root@node01 ~]# rpm -ivh cvuqdisk-1.0.9-1.rpm [root@node01 ~]# yum install -y ntp [root@node01 ~]# vim /etc/ntp.conf # Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). server ntp1.aliyun.com iburst server ntp2.aliyun.com iburst server ntp3.aliyun.com iburst server ntp4.aliyun.com iburst [root@node01 ~]# vim /etc/sysconfig/ntpd # Command line options for ntpd OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid -g" [root@node01 ~]# systemctl start ntpd.service [root@node01 ~]# systemctl enable ntpd.service [root@node01 ~]# systemctl status ntpd.service [root@node02 ~]# ntpstat synchronised to NTP server (203.107.6.88) at stratum 3 time correct to within 21 ms polling server every 64 s [root@node02 ~]# cat >> /etc/sysctl.conf <<EOF kernel.shmmax = 2141192192 kernel.shmmni = 4096 kernel.shmall = 2097152 kernel.sem = 250 32000 100 128 fs.file-max = 6815744 fs.aio-max-nr = 1048576 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 = 1048576 net.ipv4.conf.default.rp_filter = 0 net.ipv4.conf.all.rp_filter = 0 EOF [root@node02 ~]# sysctl -p [root@node02 ~]# cat >> /etc/security/limits.conf <<EOF grid soft nproc 2047 grid hard nproc 16384 grid soft nofile 1024 grid hard nofile 65536 EOF [root@node02 ~]# mkdir -p /u01/app/grid [root@node02 ~]# mkdir -p /u01/app/11.2.0.4/grid [root@node02 ~]# chown -R grid:oinstall /u01 [root@node02 ~]# su - grid [grid@node02 ~]$ vi .bash_profile export ORACLE_SID=+ASM2 export ORACLE_BASE=/u01/app/grid export ORACLE_HOME=/u01/app/11.2.0.4/grid export PATH=$ORACLE_HOME/bin:$PATH export DISPLAY=192.168.1.100:0 stty erase ^H
[grid@node01 ~]$ ssh-keygen [grid@node01 ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub grid@node01 [grid@node01 ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub grid@node02 [grid@node01 ~]$ (ssh node01 "date;hostname";ssh node02 "date;hostname") Fri Aug 18 14:45:13 CST 2023 node01 Fri Aug 18 13:33:48 CST 2023 node02 [grid@node02 ~]$ ssh-keygen [grid@node02 ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub grid@node01 [grid@node02 ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub grid@node02 [grid@node02 ~]$ (ssh node01 "date;hostname";ssh node02 "date;hostname") Fri Aug 18 14:45:24 CST 2023 node01 Fri Aug 18 13:34:00 CST 2023 node02
[grid@node01 ~]$ unzip p13390677_112040_Linux-x86-64_3of7.zip
[grid@node01 ~]$ unzip p19404309_112040_Linux-x86-64.zip
[grid@node01 ~]$ cp b19404309/grid/cvu_prereq.xml /home/grid/grid/stage/cvu/
[grid@node01 ~]$ cd grid
[grid@node01 grid]$ ./runcluvfy.sh stage -pre crsinst -n node01,node02 -fixup -verbose >precheck.txt
[grid@node01 grid]$ ./runInstaller
[root@node01 ~]# /u01/app/oraInventory/orainstRoot.sh [root@node02 ~]# /u01/app/oraInventory/orainstRoot.sh [grid@node01 ~]$ unzip p18370031_112040_Linux-x86-64.zip [grid@node01 ~]$ cd $ORACLE_HOME/OPatch [grid@node01 OPatch]$ ./opatch napply -local /home/grid/18370031 [root@node01 ~]# /u01/app/11.2.0.4/grid/root.sh [grid@node02 ~]$ unzip p18370031_112040_Linux-x86-64.zip [grid@node02 ~]$ cd $ORACLE_HOME/OPatch [grid@node02 OPatch]$ ./opatch napply -local /home/grid/18370031 [root@node02 ~]# /u01/app/11.2.0.4/grid/root.sh
[grid@node01 ~]$ crsctl check cluster -all
**************************************************************
node01:
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
**************************************************************
node02:
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
**************************************************************
[grid@node01 ~]$ crsctl status res -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
ONLINE ONLINE node01
ONLINE ONLINE node02
ora.OCR_VF.dg
ONLINE ONLINE node01
ONLINE ONLINE node02
ora.asm
ONLINE ONLINE node01 Started
ONLINE ONLINE node02 Started
ora.gsd
OFFLINE OFFLINE node01
OFFLINE OFFLINE node02
ora.net1.network
ONLINE ONLINE node01
ONLINE ONLINE node02
ora.ons
ONLINE ONLINE node01
ONLINE ONLINE node02
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE node02
ora.LISTENER_SCAN2.lsnr
1 ONLINE ONLINE node01
ora.LISTENER_SCAN3.lsnr
1 ONLINE ONLINE node01
ora.cvu
1 ONLINE ONLINE node01
ora.node01.vip
1 ONLINE ONLINE node01
ora.node02.vip
1 ONLINE ONLINE node02
ora.oc4j
1 ONLINE ONLINE node01
ora.scan1.vip
1 ONLINE ONLINE node02
ora.scan2.vip
1 ONLINE ONLINE node01
ora.scan3.vip
1 ONLINE ONLINE node01
03
[root@node01 ~]# useradd -u 1101 -g oinstall -G dba,asmdba oracle [root@node01 ~]# echo oracle | passwd --stdin oracle Changing password for user oracle. passwd: all authentication tokens updated successfully. [root@node01 ~]# id oracle uid=1101(oracle) gid=1201(oinstall) groups=1201(oinstall),1200(dba),1203(asmdba) [root@node01 ~]# cat >> /etc/profile <<EOF 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 EOF [root@node01 ~]# cat >> /etc/security/limits.conf <<EOF oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 EOF [root@node01 ~]# cat >> /etc/pam.d/login <<EOF session required pam_limits.so EOF [root@node01 ~]# mkdir -p /u01/app/oracle [root@node01 ~]# chown oracle:oinstall /u01/app/oracle [oracle@node01 ~]$ vi .bash_profile export ORACLE_SID=core1 export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1 export PATH=$ORACLE_HOME/bin:$PATH export DISPLAY=192.168.1.100:0 stty erase ^H
[root@node02 ~]# useradd -u 1101 -g oinstall -G dba,asmdba oracle [root@node02 ~]# echo oracle | passwd --stdin oracle Changing password for user oracle. passwd: all authentication tokens updated successfully. [root@node02 ~]# id oracle uid=1101(oracle) gid=1201(oinstall) groups=1201(oinstall),1200(dba),1203(asmdba) [root@node02 ~]# cat >> /etc/profile <<EOF 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 EOF [root@node02 ~]# cat >> /etc/security/limits.conf <<EOF oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 EOF [root@node02 ~]# cat >> /etc/pam.d/login <<EOF session required pam_limits.so EOF [root@node02 ~]# mkdir -p /u01/app/oracle [root@node02 ~]# chown oracle:oinstall /u01/app/oracle [oracle@node02 ~]$ vi .bash_profile export ORACLE_SID=core2 export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1 export PATH=$ORACLE_HOME/bin:$PATH export DISPLAY=192.168.1.100:0 stty erase ^H
[oracle@node01 ~]$ ssh-keygen [oracle@node01 ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub oracle@node01 [oracle@node01 ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub oracle@node02 [oracle@node01 ~]$ (ssh node01 "date;hostname";ssh node02 "date;hostname") Fri Aug 18 15:06:55 CST 2023 node01 Fri Aug 18 13:57:18 CST 2023 node02 [oracle@node02 ~]$ ssh-keygen [oracle@node02 ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub oracle@node01 [oracle@node02 ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub oracle@node02 [oracle@node02 ~]$ (ssh node01 "date;hostname";ssh node02 "date;hostname") Fri Aug 18 15:07:54 CST 2023 node01 Fri Aug 18 13:58:22 CST 2023 node02 [oracle@node01 ~]$ unzip p13390677_112040_Linux-x86-64_1of7.zip [oracle@node01 ~]$ unzip p13390677_112040_Linux-x86-64_2of7.zip [oracle@node01 ~]$ cd database/ [oracle@node01 database]$ ./runInstaller
[oracle@node01 ~]$ vim $ORACLE_HOME/sysman/lib/ins_emagent.mk
将$(MK_EMAGENT_NMECTL)修改为:$(MK_EMAGENT_NMECTL) -lnnz11
[root@node01 ~]# /u01/app/oracle/product/11.2.0/db_1/root.sh [root@node02 ~]# /u01/app/oracle/product/11.2.0/db_1/root.sh
04
[grid@node01 ~]$ asmca
[oracle@node01 ~]$ dbca
[grid@node01 ~]$ crsctl status res -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
ONLINE ONLINE node01
ONLINE ONLINE node02
ora.FRA.dg
ONLINE ONLINE node01
ONLINE ONLINE node02
ora.LISTENER.lsnr
ONLINE ONLINE node01
ONLINE ONLINE node02
ora.OCR_VF.dg
ONLINE ONLINE node01
ONLINE ONLINE node02
ora.asm
ONLINE ONLINE node01 Started
ONLINE ONLINE node02 Started
ora.gsd
OFFLINE OFFLINE node01
OFFLINE OFFLINE node02
ora.net1.network
ONLINE ONLINE node01
ONLINE ONLINE node02
ora.ons
ONLINE ONLINE node01
ONLINE ONLINE node02
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE node01
ora.LISTENER_SCAN2.lsnr
1 ONLINE ONLINE node02
ora.LISTENER_SCAN3.lsnr
1 ONLINE ONLINE node02
ora.core.db
1 ONLINE ONLINE node01 Open
2 ONLINE ONLINE node02 Open
ora.cvu
1 ONLINE ONLINE node02
ora.node01.vip
1 ONLINE ONLINE node01
ora.node02.vip
1 ONLINE ONLINE node02
ora.oc4j
1 ONLINE ONLINE node02
ora.scan1.vip
1 ONLINE ONLINE node01
ora.scan2.vip
1 ONLINE ONLINE node02
ora.scan3.vip
1 ONLINE ONLINE node02