前言Oracle RAC是什么?
特点:
那么,如何部署一套RAC数据库环境呢? 大致步骤如下:
更多更详细的脚本使用方式可以订阅专栏:Oracle一键安装脚本。 一、安装前配置本文主机配置为
注意: 以下标题中(rac01&rac02)代表节点一和节点二都需要执行,(rac01)代表只需要节点一执行。 1、Linux主机安装(rac01&rac02)安装 Linux 服务器可选择:Centos,Redhat,Oracle Linux。
📢 注意: 上述 Linux 安装包 和 Oracle 安装包 可点击链接跳转获取:
或者 可以获取 百度网盘下载链接 以及博主的联系方式 2、配置yum源并安装依赖包(rac01&rac02)Linux远程连接工具:
Parallels Desktop挂载Linux主机镜像: 挂载镜像源: mount /dev/cdrom /mnt##配置yum源cat <<EOF>>/etc/yum.repos.d/local.repo[local]name=localbaseurl=file:///mntgpgcheck=0enabled=1EOF 安装依赖包: yum groupinstall -y "Server with GUI"yum install -y bc \binutils \compat-libcap1 \compat-libstdc++-33 \gcc \gcc-c++ \elfutils-libelf \elfutils-libelf-devel \glibc \glibc-devel \ksh \libaio \libaio-devel \libgcc \libstdc++ \libstdc++-devel \libxcb \libX11 \libXau \libXi \libXtst \libXrender \libXrender-devel \make \net-tools \nfs-utils \smartmontools \sysstat \e2fsprogs \e2fsprogs-libs \fontconfig-devel \expect \unzip \openssh-clients \readline* \tigervnc* \psmisc --skip-broken 手动上传并安装依赖包: rpm -ivh compat-libstdc++-33-3.2.3-72.el7.x86_64.rpmrpm -e ksh-20120801-142.el7.x86_64rpm -ivh pdksh-5.2.14-37.el5.x86_64.rpm 检查依赖包安装情况: rpm -q bc binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ elfutils-libelf elfutils-libelf-devel glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libxcb libX11 libXau libXi libXtst libXrender libXrender-devel make net-tools nfs-utils smartmontools sysstat e2fsprogs e2fsprogs-libs fontconfig-devel expect unzip openssh-clients readline | grep "not installed"
3、网络配置Linux 7 版本可以使用 rac01: ##配置Public IPnmcli connection modify eth0 ipv4.addresses 192.168.56.10/24 ipv4.gateway 192.168.56.1 ipv4.method manual autoconnect yes##配置Private IPnmcli connection modify eth1 ipv4.addresses 172.0.0.1/24 ipv4.method manual autoconnect yes##生效nmcli connection up eth0 nmcli connection up eth1 rac02: ##配置Public IPnmcli connection modify eth0 ipv4.addresses 192.168.56.11/24 ipv4.gateway 192.168.56.1 ipv4.method manual autoconnect yes##配置Private IPnmcli connection modify eth1 ipv4.addresses 172.0.0.2/24 ipv4.method manual autoconnect yes##生效nmcli connection up eth0 nmcli connection up eth1 最后,配置好网络后,输入命令 4、存储配置(rac01&rac02)Windows 下配置 ISCSI 共享存储可参考:
配置好共享存储后,在 Linux 主机连接共享存储: ##iscsi识别共享存储yum install -y iscsi-initiator-utils*##输出targetname,10.211.55.18为iscsi共享存储设备IP地址iscsiadm -m discovery -t st -p 10.211.55.18##连接共享存储iscsiadm -m node -T iqn.2008-08.com.starwindsoftware:10.211.55.18-lucifer -p 10.211.55.18 -l lsblk 安装 yum install -y device-mapper* mpathconf --enable --with_multipathd y##查看共享盘的scsi_id/usr/lib/udev/scsi_id -g -u /dev/sdb /usr/lib/udev/scsi_id -g -u /dev/sdc /usr/lib/udev/scsi_id -g -u /dev/sdd /usr/lib/udev/scsi_id -g -u /dev/sde /usr/lib/udev/scsi_id -g -u /dev/sdf /usr/lib/udev/scsi_id -g -u /dev/sdg 配置 multipath 文件: cat <<EOF>/etc/multipath.conf defaults { user_friendly_names yes} blacklist { devnode "^sda"}multipaths { multipath { wwid "27e2b3ddbd14752bb" alias ocr_1 } multipath { wwid "27e2b3ddb87ff88ee" alias ocr_2 } multipath { wwid "27e2b3ddb39fd2463" alias ocr_3 } multipath { wwid "2852b96c1283206bf6" alias data_1 } multipath { wwid "2852b96c12e8449cb9" alias data_2 } multipath { wwid "2852b96c12fc938e95" alias data_3 }}EOF 📢 注意: wwid的值为上面获取的scsi_id,alias可自定义,这里配置3块OCR盘,3块DATA盘! 激活multipath多路径: multipath -F multipath -v2 multipath -ll 配置UDEV绑盘: for i in ocr_* data_*; doprintf "%s %s\n" "$i" "$(udevadm info --query=all --name=/dev/mapper/"$i" | grep -i dm_uuid)" >>/dev/mapper/udev_infodonewhile read -r line; dodm_uuid=$(echo "$line" | awk -F'=' '{print $2}')disk_name=$(echo "$line" | awk '{print $1}')echo "KERNEL==\"dm-*\",ENV{DM_UUID}==\"${dm_uuid}\",SYMLINK+=\"asm_${disk_name}\",OWNER=\"grid\",GROUP=\"asmadmin\",MODE=\"0660\"" >>/etc/udev/rules.d/99-oracle-asmdevices.rulesdone </dev/mapper/udev_info##重载udevudevadm control --reload-rules udevadm trigger --type=devices 确认配置完成后,分别在两个节点输入命令 5、hosts 文件配置(rac01&rac02)cat <<EOF>>/etc/hosts#Public IP192.168.56.10 rac01192.168.56.11 rac02#Private IP172.0.0.1 rac01-priv172.0.0.2 rac02-priv#Vip IP192.168.56.20 rac01-vip192.168.56.21 rac02-vip#Scan IP192.168.56.110 rac-scan EOF 6、防火墙配置(rac01&rac02)systemctl stop firewalld.service systemctl disable firewalld.service systemctl status firewalld.service 7、selinux 配置(rac01&rac02)配置 selinux 临时生效: ##重启后生效sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0##重启后检查getenforce
8、时间同步配置(rac01&rac02)首先需要禁用 chronyd 和 ntpd 服务: ##禁用chronydyum install -y chrony timedatectl set-timezone Asia/Shanghai systemctl stop chronyd.service systemctl disable chronyd.service##禁用ntpdyum install -y ntpdate 配置计划任务,定时刷新系统时间: ##10.211.55.200为时间服务器IP,每天12点同步系统时间cat <<EOF>>/var/spool/cron/root 00 12 * * * /usr/sbin/ntpdate -u 10.211.55.200 && /usr/sbin/hwclock -w EOF##查看计划任务crontab -l##手动执行/usr/sbin/ntpdate -u 10.211.55.200 && /usr/sbin/hwclock -w 9、关闭透明大页和 NUMA(rac01&rac02)Linux 7 配置内核文件,关闭透明大页和numa: sed -i 's/quiet/quiet transparent_hugepage=never numa=off/' /etc/default/grub grub2-mkconfig -o /boot/grub2/grub.cfg##重启后检查是否生效cat /sys/kernel/mm/transparent_hugepage/enabledcat /proc/cmdline
10、avahi-daemon 配置(rac01&rac02)有些主机安装选择最小化安装,没有安装 avahi-daemon 功能,建议安装之后禁用,防止以后误操作导致出问题: yum install -y avahi* systemctl stop avahi-daemon.socket systemctl stop avahi-daemon.service pgrep -f avahi-daemon | awk '{print "kill -9 "$2}' 配置 NOZEROCONF: cat <<EOF>>/etc/sysconfig/networkNOZEROCONF=yes EOF 11、系统参数配置(rac01&rac02)安装 Oracle 数据库需要配置系统参数,以下使用脚本命令一键式配置: ##配置参数文件memTotal=$(grep MemTotal /proc/meminfo | awk '{print $2}')totalMemory=$((memTotal / 2048))shmall=$((memTotal / 4))if [ $shmall -lt 2097152 ]; thenshmall=2097152fishmmax=$((memTotal * 1024 - 1))if [ "$shmmax" -lt 4294967295 ]; thenshmmax=4294967295ficat <<EOF>>/etc/sysctl.conf fs.aio-max-nr = 1048576fs.file-max = 6815744kernel.shmall = $shmallkernel.shmmax = $shmmaxkernel.shmmni = 4096kernel.sem = 250 32000 100 128net.ipv4.ip_local_port_range = 9000 65500net.core.rmem_default = 262144net.core.rmem_max = 4194304net.core.wmem_default = 262144net.core.wmem_max = 1048576net.ipv4.conf.eth0.rp_filter = 1net.ipv4.conf.eth1.rp_filter = 2EOF##生效sysctl -p 12、系统资源限制配置(rac01&rac02)##配置limits.confcat <<EOF>>/etc/security/limits.conf oracle soft nofile 1024oracle hard nofile 65536oracle soft stack 10240oracle hard stack 32768oracle soft nproc 2047oracle hard nproc 16384oracle hard memlock 134217728oracle soft memlock 134217728grid soft nofile 1024grid hard nofile 65536grid soft stack 10240grid hard stack 32768grid soft nproc 2047grid hard nproc 16384EOF##配置pam.d/logincat <<EOF>>/etc/pam.d/login session required pam_limits.so session required /lib64/security/pam_limits.so EOF
13、用户及组、目录创建(rac01&rac02)创建安装 Oracle 数据库所需的用户、组以及安装目录: ##组创建/usr/sbin/groupadd -g 54321 oinstall /usr/sbin/groupadd -g 54322 dba /usr/sbin/groupadd -g 54323 oper /usr/sbin/groupadd -g 54324 backupdba /usr/sbin/groupadd -g 54325 dgdba /usr/sbin/groupadd -g 54326 kmdba /usr/sbin/groupadd -g 54327 asmdba /usr/sbin/groupadd -g 54328 asmoper /usr/sbin/groupadd -g 54329 asmadmin /usr/sbin/groupadd -g 54330 racdba##用户创建/usr/sbin/useradd -u 11012 -g oinstall -G asmadmin,asmdba,asmoper,dba,racdba,oper grid /usr/sbin/useradd -u 54321 -g oinstall -G asmdba,dba,backupdba,dgdba,kmdba,racdba,oper oracle##修改用户密码为oracleecho "oracle" |passwd oracle --stdinecho "oracle" |passwd grid --stdin##创建软件目录mkdir -p /u01/app/11.2.0/gridmkdir -p /u01/app/gridmkdir -p /u01/app/oracle/product/11.2.0/dbmkdir -p /u01/app/oraInventorymkdir -p /backupmkdir -p /home/oracle/scriptschown -R oracle:oinstall /backupchown -R oracle:oinstall /home/oracle/scriptschown -R grid:oinstall /u01chown -R grid:oinstall /u01/app/gridchown -R grid:oinstall /u01/app/11.2.0/gridchown -R grid:oinstall /u01/app/oraInventorychown -R oracle:oinstall /u01/app/oraclechmod -R 775 /u01 14、环境变量配置(rac01&rac02)提前配置 profile 文件: grid 用户: cat <<EOF>>/home/grid/.bash_profile################OracleBegin#########################umask 022export TMP=/tmpexport TMPDIR=\$TMPexport NLS_LANG=AMERICAN_AMERICA.AL32UTF8export ORACLE_BASE=/u01/app/gridexport ORACLE_HOME=/u01/app/11.2.0/gridexport ORACLE_TERM=xtermexport TNS_ADMIN=\$ORACLE_HOME/network/adminexport LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/libexport ORACLE_SID=+ASM1export PATH=/usr/sbin:\$PATHexport PATH=\$ORACLE_HOME/bin:\$ORACLE_HOME/OPatch:\$PATHalias sas='sqlplus / as sysasm'export PS1="[\`whoami\`@\`hostname\`:"'\$PWD]\$ ' EOF 📢 注意: 每个节点的 ORACLE_SID 不一样(+ASM1/+ASM2),需要自行修改! oracle 用户: cat <<EOF>>/home/oracle/.bash_profile################OracleBegin#########################umask 022export TMP=/tmpexport TMPDIR=\$TMPexport NLS_LANG=AMERICAN_AMERICA.AL32UTF8export ORACLE_BASE=/u01/app/oracleexport ORACLE_HOME=\$ORACLE_BASE/product/11.2.0/dbexport ORACLE_HOSTNAME=rac01export ORACLE_TERM=xtermexport TNS_ADMIN=\$ORACLE_HOME/network/adminexport LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/libexport ORACLE_SID=orcl1export PATH=/usr/sbin:\$PATHexport PATH=\$ORACLE_HOME/bin:\$ORACLE_HOME/OPatch:\$PATHalias sas='sqlplus / as sysdba'export PS1="[\`whoami\`@\`hostname\`:"'\$PWD]\$ '################OracleEnd#########################EOF 📢 注意: 每个节点的 ORACLE_HOSTNAME(rac01/rac02)和 ORACLE_SID(orcl1/orcl2)不一样,需要自行修改! 15、安装介质上传解压(rac01)安装包使用 XFTP 工具进行上传,只需要上传至一节点 /soft 目录下: ##创建安装介质存放目录mkdir /soft##上传安装介质到/soft目录p13390677_112040_Linux-x86-64_1of7.zip p13390677_112040_Linux-x86-64_2of7.zip p13390677_112040_Linux-x86-64_3of7.zip##解压安装介质cd /softunzip -q p13390677_112040_Linux-x86-64_1of7.zipunzip -q p13390677_112040_Linux-x86-64_2of7.zipunzip -q p13390677_112040_Linux-x86-64_3of7.zip##授权目录chown -R oracle:oinstall /soft/databasechown -R grid:oinstall /soft/grid##root用户下,cvuqdisk安装(rac01&rac02)cd /soft/grid/rpmrpm -ivh cvuqdisk-1.0.9-1.rpm ##传输到节点二安装scp cvuqdisk-1.0.9-1.rpm rac2:/tmprpm -ivh /tmp/cvuqdisk-1.0.9-1.rpm 📢 注意: 安装包只需要在节点一上传解压即可! 至此,准备工作已经完成。 二、安装 Grid 软件(rac01)关于
配置 grid 用户 vnc 图形界面: ##root用户下切换到grid用户su - grid##执行vncserver,按提示输入密码即可vncserver##在vnc客户端界面输入192.168.56.10:1,输入刚才输入的密码即可连接。
##应用环境变量source ~/.bash_profile##进入安装目录cd /soft/grid##执行安装程序开始安装,加上jar包防止弹窗不显示问题./runInstaller -jreLoc /etc/alternatives/jre_1.8.0
配置 grid 用户节点间互信: 点击Test测试互信: 填写 ASM 实例 SYS 用户密码为 oracle: https://pan.baidu.com/s/1f1nCwZxfeqsdWGKN1DiI9Q 18370031 补丁安装:(rac01&rac02) ##上传补丁包p18370031_112040_Linux-x86-64.zip##解压补丁包cd /softunzip -q p18370031_112040_Linux-x86-64.zip##授权补丁包chown -R grid:oinstall /soft/18370031##开始安装补丁,两个节点都需要执行opatch napply -oh $ORACLE_HOME -local /soft/18370031 -silent
打好补丁后,开始执行 root.sh 脚本:(rac01&rac02) ##root用户下执行/u01/app/oraInventory/orainstRoot.sh /u01/app/11.2.0/grid/root.sh
由于我们没有配置 DNS 解析,因此下方的错误忽略即可: 注意: 如果需要安装 以 Grid PSU 补丁 ##解压补丁包cd /softunzip -q p31718723_112040_Linux-x86-64.zip##切换到root用户执行,需要拷贝到2节点也执行一次opatch auto /soft/31718723 -oh $GRID_ORACLE_HOME 📢 注意: 需要先替换 grid 和 oracle 软件的 OPatch 包为最新版本,否则无法成功安装补丁! 三、创建 ASM 数据盘 DATA这里创建的 DATA 磁盘组主要用于存放数据文件、日志文件等数据库文件! 这里我们可以使用静默创建或者图形化方式创建: 1、静默创建 asmca -silent -sysAsmPassword oracle -asmsnmpPassword oracle -oui_internal -configureASM -diskString '/dev/asm*' -diskGroupName DATA -diskList /dev/asm_data_1,/dev/asm_data_2,/dev/asm_data_3 -redundancy NORMAL -au_size 1 2、图形化创建 asmca
四、安装Oracle软件配置 oracle 用户 vnc 图形界面: ##root用户下切换到grid用户su - oracle##执行vncserver,按提示输入密码即可vncserver##在vnc客户端界面输入192.168.56.10:2,输入刚才输入的密码即可连接。
##应用环境变量source ~/.bash_profile##进入安装目录cd /soft/database##执行安装程序开始安装,加上jar包防止弹窗不显示问题./runInstaller -jreLoc /etc/alternatives/jre_1.8.0
两个节点都执行以下命令,然后点击继续:(rac01&rac02) sed -i 's/^\(\s*\$(MK_EMAGENT_NMECTL)\)\s*$/\1 -lnnz11/g' "$ORACLE_HOME/sysman/lib/ins_emagent.mk 执行 root.sh 脚本:(rac01&rac02) 注意: 如果需要安装 以 Grid PSU 补丁 ##解压补丁包cd /softunzip -q p31718723_112040_Linux-x86-64.zip##切换到root用户执行,需要拷贝到2节点也执行一次opatch auto /soft/31718723 -oh $ORACLE_ORACLE_HOME 📢 注意: 需要先替换 grid 和 oracle 软件的 OPatch 包为最新版本,否则无法成功安装补丁! 五、创建数据库实例在确保 grid 和 oracle 软件和补丁都已安装成功后,即可开始创建数据库实例! dbca 选择rac模式: 填写数据库实例 ID: block 默认 六、数据库优化配置(rac01)1、开启数据库归档模式关于开启归档模式,具体可参考文章:
##关闭数据库实例srvctl stop database -d orcl##开启单个节点到mount模式srvctl start instance -d orcl -i orcl1 -o mount##开启归档alter database archivelog;##设置归档路径ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=+DATA';##重启数据库实例srvctl stop instance -d orcl -i orcl1 srvctl start database -d orcl##检查归档archive log list 2、配置定期删除归档计划任务关于归档日志删除,具体可参考文章:
##进入oracle用户su - oracle##写入脚本{echo '#!/bin/bash' echo 'source ~/.bash_profile' echo 'deltime=`date +"20%y%m%d%H%M%S"`' echo "rman target / nocatalog msglog /home/oracle/scripts/del_arch_\${deltime}.log<<EOF" echo 'crosscheck archivelog all;' echo "delete noprompt archivelog until time 'sysdate-7';" echo "delete noprompt force archivelog until time 'SYSDATE-10';" echo 'EOF'} >>/home/oracle/scripts/del_arch.sh##写入计划任务cat <<EOF>>/var/spool/cron/oracle12 00 * * * /home/oracle/scripts/del_arch.sh EOF##手动执行测试/home/oracle/scripts/del_arch.sh 3、设置密码永不过期sqlplus / as sysdba ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; Oracle 11GR2 版本需要手动设置密码永不过期,12CR2 版本之后已经默认设置为永不过期了! |
|
来自: LuciferLiu > 《待分类》