相信在大家运维的过程中,甲方爸爸的要求那是多种多样的,掌握些经常用到的技术还是必要的,本篇教学是本人在一系列痛苦的煎熬后写出了这篇较为详细的ORACLE 11G RAC文档,根据本篇教程本人也是部署了很多的生产环境。闲话少叙,接下来就是正文了。。。。。 本篇涉及到的oracle grid 等软件包在百度云上,链接直接就是下面这个。 链接:https://pan.baidu.com/s/1uty4loIDZlKdi5rRIbIolA 提取码:n5hw 如果大家在部署的过程中出现问题,可以私信我,不及时回复请见谅,毕竟每天还要上班,为甲方爸爸效力。哈哈哈哈
一,硬件环境 1,1,中标麒麟操作系统、两台虚拟主机。 1,2,IP地址规划:管理ip(ip) 2个 用户管理集群使用的ip 私有ip (privip) 2个 用于双节点间通讯 业务ip(vip) 2个 业务ip,通过访问scanip后访问vip 访问ip(scanip)1个 对外表现为业务ip 1.3,硬盘规划: 一个仲裁磁盘 OCR_VOTE(可选则三个) 数据磁盘 DATA (tyyw搭建时划分了两个data在asmca界面组成一个data组) 闪回磁盘 FRA (700G以下就可以) 1.4 环境配置 物理主机需要进行bond绑定 最好为4块网卡分别两块网卡一组,两块光纤卡需要做冗余bond如下图。 1.5,如物理主机划分存储lun,则需要安装多路径软件(存储厂商提供)。 注:多路径软件会发生fdisk多识别磁盘现象,注意注意 二,软件环境 三,配置hosts 文件 3.1 rac1 注hosts文件不要有大写出现,后期不能识别 3.2 rac2 #eth0 192.168.8.51 rac1.wln.com rac1 192.168.8.52 rac2.wln.com rac2
#viptual 192.168.8.53 rac1-vip.wln.com rac1-vip 192.168.8.54 rac2-vip.wln.com rac2-vip
#eth1 priv 18.1.30.51 rac1-priv.wln.com rac1-priv 18.1.30.52 rac2-priv.wln.com rac2-priv
#scan 192.168.8.55 rac-scan.wln.com rac-scan
建议节点一做完hosts文件后直接scp节点二防止出错 注意:/etc/hosts 文件两节点一定要一致 写全7个ip (2个节点ip(eth0 public)2个vip,2个priv(eth1),scan)写上域名,写上主机名(主机名一定要小写)配置完/etc/hosts不需用重启网卡
四,检查依赖包 4.1配置yum源,批量安装软件包 yum -y install binutils-* compat-libstdc++-* compat-libstdc++-* elfutils-libelf-* elfutils-libelf-devel-* gcc-* gcc-c++-* glibc-* glibc-* glibc-common-* glibc-devel-* glibc-devel-* glibc-headers-* ksh-* libaio-* libaio-* libaio-devel-* libaio-devel-* libgcc-* libgcc-* libstdc++-* libstdc++-* libstdc++-devel* make-* sysstat-* unixODBC-* compat-libcap1
以上操作均在所有节点执行。 五,安装工作 以下配置均在所有节点执行 5.1 修改主机名称 [root@rac1 ~]# vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=rac1
5.2 配置用户,组,目录和权限 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 echo -n qwer1234|passwd --stdin grid echo -n qwer1234|passwd --stdin oracle mkdir -p /u01/app/11.2.0/grid mkdir -p /u01/app/grid mkdir -p /u01/app/oracle chown -R grid:oinstall /u01 chown grid:oinstall /u01/app/11.2.0/grid chown grid:oinstall /u01/app/grid chown -R oracle:oinstall /u01/app/oracle chmod -R 775 /u01/ 注意:两个节点创建的用户,组,目录,权限,一定要一致,做完之后检查,不能有误,否者会引起后续创建数据库找磁盘组识别不出来 5.3 修改系统内核参数 1 sed -i 's/kernel.shmmax/#kernel.shmmax/g' /etc/sysctl.conf 2. sed -i 's/kernel.shmall/#kernel.shmall/g' /etc/sysctl.conf 3.vim /etc/sysctl.conf fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 2097152 kernel.shmmax = 1073741824 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 4.sysctl –p 注意:修改内核参数直接配置文件末尾加入就可以不需要修改原来内核文件 5.4 配置/etc/security/limits.conf 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 5.5 配置/etc/profile 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 #### 六,配置用户环境变量 6.1配置节点1用户 A grid用户 vim /home/grid/.bash_profile export TMP=/tmp export TMPDIR=$TMP export ORACLE_HOSTNAME=rac1.wln.com export ORACLE_SID=+ASM1 export ORACLE_BASE=/u01/app/grid export ORACLE_HOME=/u01/app/11.2.0/grid export NLS_DATE_FORMAT="yy-mm-dd HH24:MI:SS" export PATH=$ORACLE_HOME/bin:$PATH export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK B oracle 用户 vim /home/oracle/.bash_profile export TMP=/tmp export TMPDIR=$TMP export ORACLE_HOSTNAME=rac1.wln.com export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.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 6.2 配置节点2用户 A grid用户 Vim /home/grid/.bash_profile export TMP=/tmp export TMPDIR=$TMP export ORACLE_HOSTNAME=rac2.wln.com export ORACLE_SID=+ASM2 export ORACLE_BASE=/u01/app/grid export ORACLE_HOME=/u01/app/11.2.0/grid export NLS_DATE_FORMAT="yy-mm-dd HH24:MI:SS" export PATH=$ORACLE_HOME/bin:$PATH export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
B oracle用户 Vim /home/oracle/.bash_profile export TMP=/tmp export TMPDIR=$TMP export ORACLE_HOSTNAME=rac2.wln.com export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.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 七. 配置用户等效性 7.1 grid 用户等效性 以下均已grid用户执行 注意:等效性配置与后面grid集群安装有直接关系 按照顺序进行操作,否则会提示没有文件或目录的错误
以grid户执行操作 rac1 ssh-keygen -t rsa ssh-keygen -t dsa
rac2 ssh-keygen -t rsa ssh-keygen -t dsa #以上用默认配置,一路回车即可 rac1 cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys ssh grid@rac2 cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys
rac2 cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys ssh grid@rac1 cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys
#建立等效性 rac1,rac2 双节点执行 ssh rac1 date ssh rac1-priv date ssh rac2 date ssh rac2-priv date
双节点出现下图表示成功 7.2 oracle 用户等效性 一下oracle用户执行操作 rac1 ssh-keygen -t rsa ssh-keygen -t dsa
rac2 ssh-keygen -t rsa ssh-keygen -t dsa #以上用默认配置,一路回车即可 rac1 cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys ssh oracle@rac2 cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys
rac2 cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys ssh oracle@rac1 cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys
#建立等效性 rac1,rac2 双节点执行 ssh rac1 date ssh rac1-priv date ssh rac2 date ssh rac2-priv date 八,配置ntp服务 8.1 节点1 主数据库服务器配置: 如该内网有时间同步服务器则使用内网时间同步服务 编辑/etc/ntp.conf server 127.127.1.0 fudge 127.127.1.0 stratum 8 启动ntpserver service ntpd start 添加到系统自启动 chkconfig --level 12345 ntpd on 8.2 节点2 编辑/etc/ntp.conf server 内网时间同步服务器ip iburst 双节点查看时间同步效果 ntpq -p 九.安装并配置 ASM 驱动或裸设备 9.1 检查内核 [root@rac1 ~]# uname -r 2.6.18-164.el5 Oracle ASMlib 下载地址: 下载以下 rpm 包(注意 rpm 包版本和 Linux 内核版本一致): 9.2 安装 oracleasm 包(双节点执行) 安装以下安装包 按照顺序执行安装否则会导致安装失败 注意:如果没有与内核版本相同的安装包,则采用裸设备安装方式→
1,rpm-ivh oracleasm-support-2.1.7-1.el5.x86_64.rpm 2, rpm -ivh kmod-oracleasm-2.0.6.rh1-3.el6_5.x86_64.rpm 3, rpm -ivh oracleasmlib-2.0.4-1.el5.x86_64.rpm 4,rpm -ivh oracleasm-2.6.18-164.el5-2.0.5-1.el5.x86_64.rpm --force --nodeps 9.2.1初始化 asmlib(在所有节点执行) 节点 2 省略 A [root@rac1 ~]# 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 []: oinstall 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
B [root@rac1 ~]# oracleasm init Creating /dev/oracleasm mount point: /dev/oracleasm Loading module "oracleasm": oracleasm Mounting ASMlib driver filesystem: /dev/oracleasm 9.2.2 磁盘分区(节点 1 执行) [root@rac1 ~]# fdisk /dev/sdb 分区不需要格式化 Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-261, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-261, default 261): Using default value 261
Command (m for help): Command (m for help): w The partition table has been altered! sdb、sdc、sdd执行相同操作
9.2.3 创建 asm 磁盘,在节点 1 执行 A. [root@rac1 ~]# oracleasm createdisk OCR_VOTE /dev/sdb1 Writing disk header: done Instantiating disk: done [root@rac1 ~]# oracleasm createdisk DATA /dev/sdc1 Writing disk header: done Instantiating disk: done [root@rac1 ~]# oracleasm createdisk FRA /dev/sdd1 Writing disk header: done Instantiating disk: done B. [root@rac1 ~]# oracleasm scandisks Reloading disk partitions: done Cleaning any stale ASM disks... Scanning system for ASM disks... [root@rac1 ~]# oracleasm listdisks DATA FRA OCR_VOTE
9.2.4节点 2 扫描识别 ASM 磁盘 [root@rac2 ~]# oracleasm scandisks Reloading disk partitions: done Cleaning any stale ASM disks... Scanning system for ASM disks... Instantiating disk "OCR_VOTE" Instantiating disk "DATA" Instantiating disk "FRA"
[root@rac2 ~]# oracleasm listdisks DATA FRA OCR_VOTE 9.3 制作裸设备 如果没有asm安装包 可以采用裸设备的安装方式 下面采用裸设备的方式进行操作 [root@rac1 ~]# fdisk /dev/sdb 分区不需要格式化 Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-261, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-261, default 261): Using default value 261
Command (m for help): Command (m for help): w The partition table has been altered!
开始用裸设备命令制作裸设备 虚拟机环境下两个节点都需要操作
9.3.1 制作裸设备 [root@rac1 ~]# raw /dev/raw/raw1 /dev/sdb1 /dev/raw/raw1: bound to major 8, minor 17
[root@rac1 ~]# raw /dev/raw/raw2 /dev/sdc1 /dev/raw/raw2: bound to major 8, minor 33
[root@rac1 ~]# raw /dev/raw/raw3 /dev/sdd1 /dev/raw/raw3: bound to major 8, minor 49
[root@rac1 oracle]# raw -qa /dev/raw/raw1: bound to major 8, minor 17 /dev/raw/raw2: bound to major 8, minor 33 /dev/raw/raw3: bound to major 8, minor 49
9.3.2 自动挂载文件 [root@rac1 oracle]# vim /etc/rc.local 添加如下内容: raw /dev/raw/raw1 /dev/sdb1 raw /dev/raw/raw2 /dev/sdc1 raw /dev/raw/raw3 /dev/sdd1
9.3.3 将裸设备文件和分区设备文件进行绑定 [root@rac1 oracle]# vim /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=="sdd1", RUN+="/bin/raw /dev/raw/raw3 %N" ACTION=="add",KERNEL=="raw[1-3]",OWNER=="grid",GROUP=="asmadmin",MODE=="660" 9.3.4重新启动服务器 reboot start_udev 启动裸设备 十. 安装 cvuqdisk 软件包 (双节点执行操作) cvuqdisk软件包用于发现共享存储,在grid 安装软件的rpm目录中,在所有节点执行; [root@rac1 grid]# cd /wln/grid/rpm [root@rac1 grid]# export CVUQDISK_GRP=oinstall [root@rac1 rpm]# rpm -ivh cvuqdisk-1.0.7-1.rpm Preparing... #################################### [100%] 1:cvuqdisk #################################### [100% 注:如集群安装失败,卸载集群时该软件也会被删除需要重新安装。 十一.安装前检查 [grid@rac1 grid]$ pwd /wln/grid [grid@rac1 grid]$ ./runcluvfy.sh stage -post hwos -n rac1,rac2 -verbose 十二. 安装 Grid Infrastructure [grid@rac1 grid]$ pwd /wln/grid [grid@rac1 grid]$ ./runInstaller 12.1 安装 grid
选择跳过更新 为集群安装
高级安装
默认
Configure GNS 对钩去掉,SCAN Name 选择和/etc/hosts 中一致的名字
添加节点2
默认
选择ASM存储 创建磁盘组 选择仲裁磁盘
配置 ASM System 口令(此处用 oracle 会报密码不符合推荐标准的错误)
不使用智能平台管理接口 默认 使用默认的安装位置
选择清单目录
检验,问题忽略即可
安装即可
执行root脚本
以 root 用户按顺序执行 1.[root@rac1 ~]# /u01/app/oraInventory/orainstRoot.sh 2.[root@rac2 ~]# /u01/app/oraInventory/orainstRoot.sh 3.[root@rac1 ~]# /u01/app/11.2.0/grid/root.sh 时间较长,耐心等待 4.[root@rac2 ~]# /u01/app/11.2.0/grid/root.sh 运行完脚本后,点击 ok 完成安装.如果不能 rac-scan,那么会报错 12.2 确认集群软件安装成功 在grid用户下 使用 crs_stat -t 与 crs_stat -t -v [grid@rac1 ~] crs_stat -t [grid@rac1 ~]crs_stat -t -v 十三.创建 ASM 磁盘组 本次任务将创建 2 个 asm 磁盘组,分别为:DATA,FRA。其中 DATA 将存放数据库 文件;FRA 存放闪回文件. 可以选择多个磁盘进行划分组 如:有连个ams磁盘DATA,DATA1 可以选择在创建磁盘组时选择两个 在 grid 用户下,执行 asmca,启动 asm 磁盘组创建向导 点击 create 按钮,在弹出的创建界面中填写磁盘组名称,选择 external(none),并 勾选成员,选择完毕后点击 ok;
创建 FRA 磁盘组和 DATA 操作相同 确认 stat 为 2 of 2 时,退出 asmca 十四.安装 oracle11gr2 database 软件 以 oracle 用户登录到节点一,切换到软件安装目录,执行安装 [oracle@rac1 database]$ ./runInstaller 在弹出的安装界面中,点击 next 跳过软件更新
选择"install software only",点击 next
选择双节点
加入中文 选择企业版,点击 next 使用默认的目录,点击 nex 默认
进入安装过程自动进行安装检查 忽略安装即可 执行脚本以 root 用户,在两个节点上执行脚本 执行顺序: 1.rac1 2.rac 点击完成安装即可 十五.创建数据库 在节点 1 上用 oracle 用户执行 dbca 命令, 选择 rac 数据库点击 next
点击创建数据库 选择一般用途或事务处理,点击 next 填写数据库名称(使用环境变量中 ORACLE_UNQNAME),选择两个节点,点击 next
默认,点击 next 为所有用户设置统一密码:oracle,点击 next
选择 ASM 存储方式,并选择相应的磁盘组, 点击 next 弹出 ASM 用户密码窗口,输入在安装 grid 时设置的密码:oracle 选择闪回磁盘组,取消勾选归档,next
选择 Sample Schemas(用于学习) 选择自动内存管理,内存段 40%
点击字符集选项,选择 ZHS16GBK 类型 显示概览,默认不变,点击 next
点击 确定 十六.集群管理 ###########实际操作是发现root命令下没有crsctl命令############# 16.1 RAC 的启动与关闭 oracle rac 默认会开机自启动,如需维护时可使用以下命令: 关闭: crsctl stop cluster 停止本节点集群服务 crsctl stop cluster –all 停止所有节点服务 开启 crsctl start cluster 开启本节点集群服务 crsctl start cluster –all 开启所有节点服务 注:以上命令需以 root 用户执行 ############################################################ 16.2 RAC 检查运行状况 以 grid 用户运行 [grid@rac1 ~]$ crsctl check cluster CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online 16.3 Database 检查例状态 [oracle@rac1 ~]$ srvctl status database -d prod Instance rac1 is running on node rac1 Instance rac2 is running on node rac2 16.4 检查节点应用状态及配置 [oracle@rac1 ~]$ srvctl status nodeapps VIP rac1-vip is enabled VIP rac1-vip is running on node: rac1 VIP rac2-vip is enabled VIP rac2-vip is running on node: rac2 Network is enabled Network is running on node: rac1 Network is running on node: rac2 GSD is disabled GSD is not running on node: rac1 GSD is not running on node: rac2 ONS is enabled ONS daemon is running on node: rac1 ONS daemon is running on node: rac2 eONS is enabled eONS daemon is running on node: rac1 eONS daemon is running on node: rac2 [oracle@rac1 ~]$ srvctl config nodeapps -a -g -s -l -l option has been deprecated and will be ignored. VIP exists.:rac1 VIP exists.: /rac1-vip/182.168.8.53/255.255.255.0/eth0 VIP exists.:rac2 VIP exists.: /rac2-vip/182.168.8.54/255.255.255.0/eth0 GSD exists. ONS daemon exists. Local port 6100, remote port 6200 Name: LISTENER Network: 1, Owner: grid Home: <CRS home> /u01/app/11.2.0/grid on node(s) rac2,rac1 End points: TCP:1521 16.5 查看数据库配置 [oracle@rac1 ~]$ srvctl config database -d prod -a Database unique name: prod Database name: prod Oracle home: /u01/app/oracle/product/11.2.0/db_1 Oracle user: oracle Spfile: +DATA/prod/spfileprod.ora Domain: Start options: open Stop options: immediate Database role: PRIMARY Management policy: AUTOMATIC Server pools: prod Database instances: prod1,prod2 Disk Groups: DATA,FRA Services: Database is enabled Database is administrator managed
16.6 检查 ASM 状态及配置 [oracle@rac1 ~]$ srvctl status asm ASM is running on rac1,rac2
[oracle@rac1 ~]$ srvctl config asm -a ASM home: /u01/app/11.2.0/grid ASM listener: LISTENER ASM is enabled. 16.7 检查 TNS 的状态及配置 [oracle@rac1 ~]$ srvctl status listener Listener LISTENER is enabled Listener LISTENER is running on node(s): rac1,rac2 [oracle@rac1 ~]$ srvctl config listener -a Name: LISTENER Network: 1, Owner: grid Home: <CRS home> /u01/app/11.2.0/grid on node(s) rac2,rac1 End points: TCP:1521 16.8 检查 SCAN 的状态及配置 [oracle@rac1 ~]$ srvctl status scan SCAN VIP scan1 is enabled SCAN VIP scan1 is running on node rac1 [oracle@rac1 ~]$ srvctl config scan SCAN name: rac-scan, Network: 1/182.168.8.0/255.255.255.0/eth0 SCAN VIP name: scan1, IP: /rac-scan.xl.com/182.168.8.55 16.9 检查 VIP 的状态及配置 [oracle@rac1 ~]$ srvctl status vip -n rac1 VIP rac1-vip is enabled VIP rac1-vip is running on node: rac1 [oracle@rac1 ~]$ srvctl status vip -n rac2 VIP rac2-vip is enabled VIP rac2-vip is running on node: rac2 [oracle@rac1 ~]$ srvctl config vip -n rac1 VIP exists.:rac1 VIP exists.: /rac1-vip/182.168.8.53/255.255.255.0/eth0 [oracle@rac1 ~]$ srvctl config vip -n rac2 VIP exists.:rac2 VIP exists.: /rac2-vip/182.168.8.54/255.255.255.0/eth0 |