Oracle 11G R2 RAC安装手册一、基础知识1.RAC是什么RAC,全称real application clusters,译为“实时应用集群”,是Oracle新版数据库中采用的一项新技术,是高可用性的一种,也是Oracle数据库支持网格计算环境的核心技术。
2.RAC的优缺点●优点Oracle RAC支持Oracle9i、10g、11g版本,可以支持24 x 7 有效的数据库应用系统,在低成本服务器上构建高可用性数据库系统,并且自由部署应用,无需修改代码。
在Oracle RAC环境下,Oracle集成提供了集群软件和存储管理软件,为用户降低了应用成本。
当应用规模需要扩充时,用户可以按需扩展系统,以保证系统的性能。
(1)多节点负载均衡;(2)提供高可用:故障容错和无缝切换功能,将硬件和软件错误造成的影响最小化;(3)通过并行执行技术提高事务响应时间----通常用于数据分析系统;(4)通过横向扩展提高每秒交易数和连接数----通常对于联机事务系统;(5)节约硬件成本,可以用多个廉价PC服务器代替昂贵的小型机或大型机,同时节约相应维护成本;(6)可扩展性好,可以方便添加删除节点,扩展硬件资源。
●缺点(1)相对单机,管理更复杂,要求更高;(2)可能会增加软件成本3.Oracle RAC原理在一个应用环境当中,所有的服务器使用和管理同一个数据库,目的是为了分散每一台服务器的工作量,硬件上至少需要两台以上的服务器,而且还需要一个共享存储设备。
同时所有服务器上的OS都应该是同一类OS,根据负载均衡的配置策略,当一个客户端发送请求到某一台服务的listener后,这台服务器根据我们的负载均衡策略,会把请求发送给本机的RAC组件处理也可能会发送给另外一台服务器的RAC组件处理,处理完请求后,RAC会通过集群软件来访问共享存储设备.逻辑结构上看:●每一个参加集群的节点有一个独立的instance,这些instance访问同一个数据库。
●每一个节点的linstance都有自己的SGA。
●每一个节点的linstance都有自己的background process。
●每一个节点的linstance都有自己的redo logs。
●每一个节点的instance都有自己的undo表空间。
●所有节点都共享一份datafiles和controlfiles。
三类Resource:●VIP - 虚拟IP地址(Virtual IP)●OCR - Oracle Cluster Registry(集群注册文件),记录每个节点的相关信息●Voting Disk,仲裁机制用于仲裁多个节点向共享节点同时写的行为,这样做是为了避免发生冲突。
二、RAC环境设计1.服务器配置2.用户组规划3.用户规划4.IP规划5.存储规划三、Oracle RAC搭建1.配置共享存储(ASM依赖)方法一:vmware workstation 9虚拟共享存储(1)在VM安装目录\VMware Workstation下执行命令:(2)修改rac1和rac2下的.vmx文件,在最后一行添加如下内容:(3)重新打开虚拟机,并启动。
(4)磁盘分区,在rac1执行Device Boot Start End Blocks Id SystemCommand (m for help): nCommand actione extendedp primary partition (1-4)pPartition number (1-4): 1First cylinder (1-1000, default 1):Using default value 1Last cylinder or +size or +sizeM or +sizeK (1-1000, default 1000): Using default value 1000Command (m for help): wThe partition table has been altered!Calling ioctl() to re-read partition table.Syncing disks.#fdisk /dev/sdc …重复上面操作#fdisk /dev/sdd …重复上面操作#fdisk /dev/sde …重复上面操作#fdisk /dev/sdf …重复上面操作方法二:Linux mount挂载(待解决)2.安装依赖包3.查看依赖包安装状况glibc-headers \ksh \libaio \libaio-devel \libgcc \libstdc++ \libstdc++-devel \make \pdksh \sysstat \unixODBC \unixODBC-devel执行结果…binutils-2.17.50.0.6-26.el5(x86_64) elfutils-libelf-0.137-3.el5(x86_64) elfutils-libelf-0.137-3.el5(i386)elfutils-libelf-0.137-3.el5(x86_64) elfutils-libelf-0.137-3.el5(i386)expat-1.95.8-11.el5_8(x86_64)expat-1.95.8-11.el5_8(i386)gcc-4.1.2-54.el5(x86_64)gcc-c++-4.1.2-54.el5(x86_64)glibc-2.5-118.el5_10.2(i686)glibc-2.5-118.el5_10.2(x86_64)glibc-common-2.5-118.el5_10.2(x86_64) glibc-devel-2.5-118.el5_10.2(x86_64) glibc-devel-2.5-118.el5_10.2(i386) glibc-headers-2.5-118.el5_10.2(x86_64) ksh-20100621-18.el5(x86_64)libaio-0.3.106-5(x86_64)libaio-0.3.106-5(i386)libaio-devel-0.3.106-5(i386)libaio-devel-0.3.106-5(x86_64)libgcc-4.1.2-54.el5(x86_64)libgcc-4.1.2-54.el5(i386)libstdc++-4.1.2-54.el5(x86_64)libstdc++-4.1.2-54.el5(i386)libstdc++-devel-4.1.2-54.el5(x86_64) libstdc++-devel-4.1.2-54.el5(i386) make-3.81-3.el5(x86_64)pdksh-5.2.14-37.el5_8.1(x86_64) sysstat-7.0.2-12.el5(x86_64) unixODBC-2.2.11-10.el5(i386) unixODBC-2.2.11-10.el5(x86_64)4.网络配置(1)修改rac1和rac2的network(2)修改rac1和rac2的hosts(3)重启rac1和rac2网络服务(4)配置虚拟IP5.配置NTPD服务NTPD服务为Grid的检查项,提供时间同步服务。
(1)修改NTPD参数文件(rac1,rac2)(2)修改rac1的ntpd.conf文件,删除原有内容录入以下内容(3)清空rac1的ntpservers原有内容(4)编辑rac1的step-tickers,添加一行(5)修改rac2的ntpd.conf文件,删除原有内容录入以下内容(6)清空rac2的ntpservers原有内容(7)编辑rac2的step-tickers,添加一行(8)rac1节点重启NTPD服务(9)rac2节点停止NTPD服务,rac1重启NTPD服务后5、6分钟再执行(10)NTPD启用自动加载(rac1,rac2)6.关闭服务关闭rac1和rac2无用的sendmail和cups服务,加快开机速度。
7.用户、用户组(1)创建用户和用户组(2)修改用户密码8.文件夹及权限9.修改系统参数(1)修改rac1和rac2的limits.conf(2)修改rac1和rac2的/etc/pam.d/login(3)修改rac1和rac2的/etc/sysctl.conf(4)执行命令(rac1、rac2)(5)修改rac1和rac2的profile,在末尾添加(6)执行命令(rac1、rac2)(7)修改rac1和rac2的/etc/csh.login(8)修改grid用户的环境变量#su - grid$cd /home/grid/$vi .bash_profileTMP=/tmp; export TMPTMPDIR=$TMP; export TMPDIRORACLE_SID=+ASM1; export ORACLE_SIDORACLE_BASE=/u01/app/grid; export ORACLE_BASEORACLE_HOME=/u01/app/11.2.0/grid/product/db_1; export ORACLE_HOME NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"; export NLS_DATE_FORMAT THREADS_FLAG=native; export THREADS_FLAGPATH=$ORACLE_HOME/bin:$PATH; export PATHTHREADS_FLAG=native; export THREADS_FLAGPATH=$ORACLE_HOME/bin:$PATH; export PATHif [ $USER = "oracle" ] || [ $USER = "grid" ]; thenif [ $SHELL = "/bin/ksh" ]; thenulimit -p 16384ulimit -n 65536elseulimit -u 16384 -n 65536fiumask 022fi#su - grid$cd /home/grid/$vi .bash_profileTMP=/tmp; export TMPTMPDIR=$TMP; export TMPDIRORACLE_SID=+ASM2; export ORACLE_SID(9)执行命令(rac1、rac2)(10)修改oracle用户的环境变量#su - oracle$cd /home/oracle/$vi .bash_profile# Oracle Settings oracleTMP=/tmp; export TMPTMPDIR=$TMP; export TMPDIRORACLE_BASE=/u01/app/oracle; export ORACLE_BASEORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1; export ORACLE_HOME ORACLE_SID=orcl1; export ORACLE_SIDORACLE_TERM=xterm; export ORACLE_TERMPATH=/usr/sbin:$PATH; export PATHPATH=$ORACLE_HOME/bin:$PATH; export PATHLD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATHNLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"; export NLS_DATE_FORMATNLS_LANG=AMERICAN_AMERICA.ZHS16GBK;export NLS_LANGif [ $USER = "oracle" ] || [ $USER = "grid" ]; thenif [ $SHELL = "/bin/ksh" ]; thenulimit -p 16384ulimit -n 65536elseulimit -u 16384 -n 65536fiumask 022fi#su - grid$cd /home/grid/$vi .bash_profile# Oracle Settings oracleTMP=/tmp; export TMPTMPDIR=$TMP; export TMPDIRORACLE_BASE=/u01/app/oracle; export ORACLE_BASEORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1; export ORACLE_HOME ORACLE_SID=orcl2; export ORACLE_SIDORACLE_TERM=xterm; export ORACLE_TERMPATH=/usr/sbin:$PATH; export PATHPATH=$ORACLE_HOME/bin:$PATH; export PATHLD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATHNLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"; export NLS_DATE_FORMATNLS_LANG=AMERICAN_AMERICA.ZHS16GBK;export NLS_LANGif [ $USER = "oracle" ] || [ $USER = "grid" ]; thenif [ $SHELL = "/bin/ksh" ]; thenulimit -p 16384ulimit -n 65536elseulimit -u 16384 -n 65536fiumask 022fi(11)执行命令(rac1、rac2)10.配置用户等效性(1)使用Oracle用户,在所有节点执行(2)使用Oracle用户,在节点rac1执行(3)验证Oracle用户等效性,在所有节点执行(4)使用grid用户,在所有节点执行(5)使用grid用户,在节点rac1执行(6)验证grid用户等效性,在所有节点执行(7)重启rac1、rac211.安装ASM(1)检查系统及内核版本(2)下载与系统及内核版本对应的ASM(3)安装asm包,按顺序安装(4)初始化asmlib,在所有节点执行(5)ASMlib加载到内核,在所有节点执行(6)创建asm 磁盘,在节点rac1执行(7)rac2节点执行12.安装Oracle Grid(1)安装cvuqdisk(rac1,rac2)(2)使用grid用户,进行oracle grid 安装前检查(3)更改DISPLAY设置(4)更改SELinxu设置# system-config-securitylevel(5)执行安装Grid➢安装方式➢安装类型➢产品语言➢集群信息➢节点信息➢指定网络接口用法➢存储选项信息➢创建ASM磁盘组➢指定ASM口令,使用统一口令:Nortek123➢故障隔离支持➢角色分配➢指定安装路径➢创建产品清单➢安装检测➢安装概要➢正在安装➢以root用户在rac1和rac2运行脚本#chcon -t texrel_shlib_t /u01/app/11.2.0/grid/product/db_1/lib/libclntsh.so.11.1➢Oracle Cluster Verification Utility失败可以忽略➢Oracle Grid安装完成➢确认安装成功$crs_stat -t -v13.配置ASM磁盘组(1)启动ASM磁盘组创建向导,点击新建;(2)创建DATA磁盘组(3)创建BACK磁盘组(4)创建完成14.安装Oracle11G (1)启动oracle安装程序(2)仅安装数据库软件(3)选择两个节点(4)添加简体中文(5)选择企业版(6)默认安装目录(7)默认用户分配(8)安装前检查(9)安装概要(10)执行安装(11)用户root在rac1和rac2执行脚本(12)Oracle软件安装成功15.创建数据库(1)启动数据库创建向导$dbca(2)创建数据库(3)安装一般用途数据库(4)填写数据库名称,选择两个节点(5)使用默认选项(6)使用统一口令(orcl)(7)选择数据文件存储路径(8)选择+DATA(9)输入ASM口令(Nortek123)(10)选择归档模式,添加归档参数(11)添加参数“+BACK/”(12)使用默认设置(13)设置数据库参数SGA(注:SGA不可大于/dev/shm)(14)选择数据库字符集(utf8,根据需求)(15)安装概述(16)点击Finish设置完毕(17)点击OK,开始安装(18)正在安装(19)数据库创建成功16.创建表空间17.创建用户并指定默认表空间18.用户分权19.日常维护➢RAC的启停⏹关闭⏹启动➢RAC检查运行状态➢DATABASE检查实例状态➢检查节点应用状态及配置➢查看数据配置➢检查ASM状态及配置➢检查TNS的状态及配置➢检查SCAN状态及配置➢检查VIP状态及配置四、RAC负载均衡配置1.RAC负载均衡概述RAC的负载均衡主要是指新会话连接到RAC数据库时,如何判定这个新的连接要连到哪个节点进行工作。