一、 基础知识
1. RAC是什么
RAC,全称realapplicationclusters,译为“实时应用集群”,是Oracle新版数据库中采用的一项新技术,是高可用性的一种,也是Oracle数据库支持网格计算环境的核心技术。 2. RAC的优缺点
优点
OracleRAC支持Oracle9i、10g、11g版本,可以支持24x7有效的数据库应用系统,在低成本服务器上构建高可用性数据库系统,并且自由部署应用,无需修改代码。在OracleRAC环境下,Oracle集成提供了集群软件和存储管理软件,为用户降低了应用成本。当应用规模需要扩充时,用户可以按需扩展系统,以保证系统的性能。
(1) 多节点负载均衡;
(2) 提供高可用:故障容错和无缝切换功能,将硬件和软件错误造成的
影响最小化; (3) 通过并行执行技术提高事务响应时间----通常用于数据分析系统; (4) 通过横向扩展提高每秒交易数和连接数----通常对于联机事务系统; (5) 节约硬件成本,可以用多个廉价PC服务器代替昂贵的小型机或大型
机,同时节约相应维护成本; (6) 可扩展性好,可以方便添加删除节点,扩展硬件资源。 缺点
(1) 相对单机,管理更复杂,要求更高; (2) 可能会增加软件成本 3. OracleRAC原理
在一个应用环境当中,所有的服务器使用和管理同一个数据库,目的是为了分散每一台服务器的工作量,硬件上至少需要两台以上的服务器,而且还需要一个共享存储设备。同时所有服务器上的OS都应该是同一类OS,根据负载均衡的配置策略,当一个客户端发送请求到某一台服务的listener后,这台服务器根据我们的负载均衡策略,会把请求发送给本机的RAC组件处理也可能会发送给另外一台服务器的RAC组件处理,处理完请求后,RAC会通过集群软件来访问共享存储设备.
逻辑结构上看:
每一个参加集群的节点有一个的instance,这些instance访问同
一个数据库。 每一个节点的linstance都有自己的SGA。
每一个节点的linstance都有自己的backgroundprocess。 每一个节点的linstance都有自己的redologs。 每一个节点的instance都有自己的undo表空间。 所有节点都共享一份datafiles和controlfiles。 三类Resource:
VIP-虚拟IP地址(VirtualIP)
OCR-OracleClusterRegistry(集群注册文件),记录每个节点的相关信息 VotingDisk,仲裁机制用于仲裁多个节点向共享节点同时写的行为,这
样做是为了避免发生冲突。
二、 RAC环境设计
1. 服务器配置
操作系统 RedhatEnterpriseLinux5.4 RedhatEnterpriseLinux5.4 主机名 rac1 rac2 内存 2G 2G 网卡 eth0(Public) eth1(Prive) eth0(Public) eth1(Prive) 2. 用户组规划
GroupName oinstall asmadmin asmdba asmopen dba GroupID 501 504 506 507 502 说明 Oracle清单和软件所有者 Oracle自动存储管理组 ASM数据库管理员组 ASM操作员组 数据库管理员 HOST rac1,rac2 rac1,rac2 rac1,rac2 rac1,rac2 rac1,rac2 3. 用户规划
UserID UserName Group oinstall dba asmadmin asmdba asmoper 说明 HOST 口令 501 grid OracleCluster用户 rac1 rac2 grid123 502 oracle oinstall dba asmdba Oracle数据库管理员 rac1 rac2 oracle123 4. IP规划
主机名 rac1 rac2 ScanIP 公用IP 私有IP 虚拟IP 5. 存储规划
存储组件 OCR 数据文件 文件备份 BlockDevice /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf ASMlibName OCR_VOL1 OCR_VOL2 OCR_VOL3 DATA_VOL1 BACK_VOL1 Size 1G 1G 1G 10G 5G 三、
OracleRAC搭建
1. 配置共享存储(ASM依赖)
方法一:vmwareworkstation9虚拟共享存储 (1) 在VM安装目录\\VMwareWorkstation下执行命令:
#vmware-vdiskmanager.exe-c-s1GB-alsilogic-t2D:\\racDisk\\db01.vmdk #vmware-vdiskmanager.exe-c-s1GB-alsilogic-t2D:\\racDisk\\db02.vmdk #vmware-vdiskmanager.exe-c-s1GB-alsilogic-t2D:\\racDisk\\db03.vmdk #vmware-vdiskmanager.exe-c-s10GB-alsilogic-t2D:\\racDisk\\db04.vmdk #vmware-vdiskmanager.exe-c-s5GB-alsilogic-t2D:\\racDisk\\db05.vmdk (2) 修改rac1和rac2下的.vmx文件,在最后一行添加如下内容:
diskLib.dataCacheMaxSize=0 diskLib.dataCacheMaxReadAheadSize=0 diskLib.dataCacheMinReadAheadSize=0 diskLib.dataCachePageSize=4096 diskLib.maxUnsyncedWrites=\"0\" disk.locking=\"FALSE\" scsi1.sharedBus=\"virtual\" scsi1.present=\"TRUE\" scsi1.virtualDev=\"lsilogic\" scsi1:0.mode=\"independent-persistent\" scsi1:0.deviceType=\"disk\" scsi1:0.present=\"TRUE\" scsi1:0.fileName=\"D:\\racDisk\\db01.vmdk\" scsi1:1.mode=\"independent-persistent\" scsi1:1.deviceType=\"disk\" scsi1:1.present=\"TRUE\" scsi1:1.fileName=\"D:\\racDisk\\db02.vmdk\" scsi1:2.mode=\"independent-persistent\" scsi1:2.deviceType=\"disk\" scsi1:2.present=\"TRUE\" scsi1:2.fileName=\"D:\\racDisk\\db03.vmdk\" scsi1:3.mode=\"independent-persistent\" scsi1:3.deviceType=\"disk\" scsi1:3.present=\"TRUE\" scsi1:3.fileName=\"D:\\racDisk\\db04.vmdk\" scsi1:4.mode=\"independent-persistent\" scsi1:4.deviceType=\"disk\" scsi1:4.present=\"TRUE\" scsi1:4.fileName=\"D:\\racDisk\\db05.vmdk\" (3) 重新打开虚拟机,并启动。 (4) 磁盘分区,在rac1执行
#fdisk/dev/sdb
DevicecontainsneitheravalidDOSpartitiontable,norSun,SGIor OSFdisklabel
BuildinganewDOSdisklabel.Changeswillremaininmemoryonly, untilyoudecidetowritethem.Afterthat,ofcourse,theprevious contentwon'tberecoverable.
Warning:invalidflag0x0000ofpartitiontable4willbecorrectedbyw(rite) Command(mforhelp):p
heads,32sectors/track,1000cylinders Units=cylindersof2048*512=1048576bytes DeviceBootStartEndBlocksIdSystem Command(mforhelp):n Commandaction eextended
pprimarypartition(1-4) p
Partitionnumber(1-4):1
Firstcylinder(1-1000,default1): Usingdefaultvalue1
Lastcylinderor+sizeor+sizeMor+sizeK(1-1000,default1000): Usingdefaultvalue1000 Command(mforhelp):w
Thepartitiontablehasbeenaltered! Callingioctl()tore-readpartitiontable.
Syncingdisks. #fdisk/dev/sdc…重复上面操作 #fdisk/dev/sdd…重复上面操作 #fdisk/dev/sde…重复上面操作 #fdisk/dev/sdf…重复上面操作 方法二:Linuxmount挂载(待解决) 2. 安装依赖包
#yuminstall-yexpect*iscsi*binutils*compat-libstdc++*expat*elfutils-libelf*gcc*glibc*ksh*libgcc* #yuminstall-ypdksh*libgomp*compat-db*libXp*libaio*cpp*setarch*sysstat*libstdc++*make-3* #yuminstall-yunixODBC #yuminstall-yunixODBC-devel 3. 查看依赖包安装状况
#rpm-q--qf'%{NAME}-%{VERSION}-%{RELEASE}(%{ARCH})\\n'binutils\\ elfutils-libelf\\ elfutils-libelf\\ expat\\ gcc\\ gcc-c++\\ glibc\\
glibc-common\\ glibc-devel\\ glibc-headers\\ ksh\\ libaio\\
libaio-devel\\ libgcc\\ libstdc++\\
libstdc++-devel\\ make\\ pdksh\\ sysstat\\ unixODBC\\
unixODBC-devel
执行结果…
elfutils-libelf-0.137-3.el5(x86_) elfutils-libelf-0.137-3.el5(i386) elfutils-libelf-0.137-3.el5(x86_) elfutils-libelf-0.137-3.el5(i386) glibc-2.5-118.el5_10.2(i686) glibc-2.5-118.el5_10.2(x86_)
glibc-common-2.5-118.el5_10.2(x86_) glibc-devel-2.5-118.el5_10.2(x86_) glibc-devel-2.5-118.el5_10.2(i386) glibc-headers-2.5-118.el5_10.2(x86_) make-3.81-3.el5(x86_) 4. 网络配置
(1) 修改rac1和rac2的network
#vi/etc/sysconfig/network NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=rac1#此处为主机名 #vi/etc/sysconfig/network NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=rac2 (2) 修改rac1和rac2的hosts
#vi/etc/hosts ###eth0-PublicIP### ###eth1–PRIVATEIP### ###VIP### ###SCAN### (3) 重启rac1和rac2网络服务
#servicenetworkrestart (4) 配置虚拟IP
# # *注:虚拟IP在重启网络服务会被卸载,需要重新设置。 5. 配置NTPD服务
NTPD服务为Grid的检查项,提供时间同步服务。 (1) 修改NTPD参数文件(rac1,rac2)
#vi/etc/sysconfig/ntpd SYNC_HWCLOCK=yes OPTIONS=\"-x-untp:ntp-p/var/run/ntpd.pid\" (2) 修改rac1的ntpd.conf文件,删除原有内容录入以下内容
#vi/etc/ntp.conf server fudge driftfile/var/lib/ntp/drift broadcastdelay0.008 authenticateno keys/etc/ntp/keys (3) 清空rac1的ntpservers原有内容
#cp/etc/ntp/ntpservers/etc/ntp/ntpservers.bak #vi/etc/ntp/ntpservers (4) 编辑rac1的step-tickers,添加一行
#cp/etc/ntp/step-tickers/etc/ntp/step-tickers.bak #vi/etc/ntp/step-tickers (5) 修改rac2的ntpd.conf文件,删除原有内容录入以下内容
#vi/etc/ntp.conf server server fudge driftfile/var/lib/ntp/drift broadcastdelay0.008 authenticateno keys/etc/ntp/keys (6) 清空rac2的ntpservers原有内容
#cp/etc/ntp/ntpservers/etc/ntp/ntpservers.bak #vi/etc/ntp/ntpservers (7) 编辑rac2的step-tickers,添加一行
#cp/etc/ntp/step-tickers/etc/ntp/step-tickers.bak #vi/etc/ntp/step-tickers #rac1的ip地址 (8) rac1节点重启NTPD服务
#servicentpdrestart (9) rac2节点停止NTPD服务,rac1重启NTPD服务后5、6分钟再执行
#servicentpdstop #ntpdaterac1 #servicentpdstart (10) NTPD启用自动加载(rac1,rac2)
#chkconfigntpdon 6. 关闭服务
关闭rac1和rac2无用的sendmail和cups服务,加快开机速度。
#chkconfigsendmailoff #chkconfigcupsoff 7. 用户、用户组 (1) 创建用户和用户组
#groupadd-g501oinstall #groupadd-g502dba #groupadd-g504asmadmin #groupadd-g506asmdba #groupadd-g507asmoper #useradd-u501-goinstall-Gdba,asmadmin,asmdba,asmopergrid #useradd-u502-goinstall-Gdba,asmdbaoracle #idoracle #idgrid (2) 修改用户密码
#passwdoracle #passwdgrid 8. 文件夹及权限
#mkdir-p/u01/app/grid/ # #mkdir-p/u01/app/oraInventory #chown-Rgrid:oinstall/u01/app # #chown-Roracle:oinstall/u01/app/oracle #chmod-R775/u01 9. 修改系统参数
(1) 修改rac1和rac2的limits.conf
#vi/etc/security/limits.conf ###ORACLESETTING gridsoftnproc2047 gridhardnproc16384 gridsoftnofile1024 gridhardnofile65536 oraclesoftnproc2047 oraclehardnproc16384 oraclesoftnofile1024 oraclehardnofile65536 (2) 修改rac1和rac2的/etc/pam.d/login
#vi/etc/pam.d/login ###ORACLESETTING sessionrequiredpam_limits.so (3) 修改rac1和rac2的/etc/sysctl.conf
#vi/etc/sysctl.conf ###ORACLESETTING fs.aio-max-nr=1048576 fs.file-max=6815744 kernel.shmall=2097152 kernel.shmmni=4096 (4) 执行命令(rac1、rac2)
#sysctl-p (5) 修改rac1和rac2的profile,在末尾添加
#vi/etc/profile if[$USER=\"oracle\"]||[$USER=\"grid\"];then if[$SHELL=\"/bin/ksh\"];then ulimit-p16384 ulimit-n65536 else ulimit-u16384-n65536 fi umask022 fi (6) 执行命令(rac1、rac2)
#source/etc/profile (7) 修改rac1和rac2的/etc/csh.login
#vi/etc/csh.login if($USER=\"oracle\"||$USER=\"grid\")then limitmaxproc16384 limitdescriptors65536 endif EOFCSH (8) 修改grid用户的环境变量
#su-grid $cd/home/grid/ $vi.bash_profile
TMP=/tmp;exportTMP
TMPDIR=$TMP;exportTMPDIR
ORACLE_SID=+ASM1;exportORACLE_SID
ORACLE_BASE=/u01/app/grid;exportORACLE_BASE
NLS_DATE_FORMAT=\"yyyy-mm-ddHH24:MI:SS\";exportNLS_DATE_FORMAT THREADS_FLAG=native;exportTHREADS_FLAG PATH=$ORACLE_HOME/bin:$PATH;exportPATH THREADS_FLAG=native;exportTHREADS_FLAG PATH=$ORACLE_HOME/bin:$PATH;exportPATH if[$USER=\"oracle\"]||[$USER=\"grid\"];then if[$SHELL=\"/bin/ksh\"];then ulimit-p16384 ulimit-n65536 else ulimit-u16384-n65536 fi umask022 fi
#su-grid
$cd/home/grid/ $vi.bash_profile
TMP=/tmp;exportTMP
TMPDIR=$TMP;exportTMPDIR
ORACLE_SID=+ASM2;exportORACLE_SID
ORACLE_BASE=/u01/app/grid;exportORACLE_BASE
NLS_DATE_FORMAT=\"yyyy-mm-ddHH24:MI:SS\";exportNLS_DATE_FORMAT THREADS_FLAG=native;exportTHREADS_FLAG PATH=$ORACLE_HOME/bin:$PATH;exportPATH THREADS_FLAG=native;exportTHREADS_FLAG PATH=$ORACLE_HOME/bin:$PATH;exportPATH if[$USER=\"oracle\"]||[$USER=\"grid\"];then if[$SHELL=\"/bin/ksh\"];then ulimit-p16384 ulimit-n65536 else ulimit-u16384-n65536 fi umask022 fi
(9) 执行命令(rac1、rac2)
$source.bash_profile (10) 修改oracle用户的环境变量
#su-oracle
$cd/home/oracle/ $vi.bash_profile
#OracleSettingsoracle TMP=/tmp;exportTMP
TMPDIR=$TMP;exportTMPDIR
ORACLE_BASE=/u01/app/oracle;exportORACLE_BASE ORACLE_SID=orcl1;exportORACLE_SID
ORACLE_TERM=xterm;exportORACLE_TERM PATH=/usr/sbin:$PATH;exportPATH
PATH=$ORACLE_HOME/bin:$PATH;exportPATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;exportLD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;exportCLASSPATH
NLS_DATE_FORMAT=\"yyyy-mm-ddHH24:MI:SS\";exportNLS_DATE_FORMAT NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;exportNLS_LANG if[$USER=\"oracle\"]||[$USER=\"grid\"];then if[$SHELL=\"/bin/ksh\"];then ulimit-p16384 ulimit-n65536 else ulimit-u16384-n65536 fi umask022 fi
#su-grid
$cd/home/grid/ $vi.bash_profile
#OracleSettingsoracle TMP=/tmp;exportTMP
TMPDIR=$TMP;exportTMPDIR
ORACLE_BASE=/u01/app/oracle;exportORACLE_BASE ORACLE_SID=orcl2;exportORACLE_SID
ORACLE_TERM=xterm;exportORACLE_TERM PATH=/usr/sbin:$PATH;exportPATH
PATH=$ORACLE_HOME/bin:$PATH;exportPATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;exportLD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;exportCLASSPATH
NLS_DATE_FORMAT=\"yyyy-mm-ddHH24:MI:SS\";exportNLS_DATE_FORMAT NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;exportNLS_LANG if[$USER=\"oracle\"]||[$USER=\"grid\"];then if[$SHELL=\"/bin/ksh\"];then ulimit-p16384
fi ulimit-n65536 else ulimit-u16384-n65536 fi umask022 (11) 执行命令(rac1、rac2)
$source.bash_profile 10. 配置用户等效性
(1) 使用Oracle用户,在所有节点执行
#su-oracle
$ssh-keygen-trsa
Generatingpublic/privatersakeypair.
Enterfileinwhichtosavethekey(/home/oracle/.ssh/id_rsa): Createddirectory'/home/oracle/.ssh'. Enterpassphrase(emptyfornopassphrase): Entersamepassphraseagain:
Youridentificationhasbeensavedin/home/oracle/.ssh/id_rsa. Yourpublickeyhasbeensavedin/home/oracle/.ssh/id_rsa.pub. Thekeyfingerprintis:
be:8b:34:fd:c9:34:a7:2f:d2:f7:d9:30:1f:2e:48:d6oracle@rac1 $ssh-keygen-tdsa
Generatingpublic/privatedsakeypair.
Enterfileinwhichtosavethekey(/home/oracle/.ssh/id_dsa): Enterpassphrase(emptyfornopassphrase): Entersamepassphraseagain:
Youridentificationhasbeensavedin/home/oracle/.ssh/id_dsa. Yourpublickeyhasbeensavedin/home/oracle/.ssh/id_dsa.pub. Thekeyfingerprintis:
4f:bc:4b:9a:a6:cd:1c:15:e7:67:92:94:a2:cd:50:14oracle@rac1
(2) 使用Oracle用户,在节点rac1执行
$cat/home/oracle/.ssh/*.pub>>/home/oracle/.ssh/authorized_keys $sshrac2cat/home/oracle/.ssh/*.pub>>/home/oracle/.ssh/authorized_keys $scp/home/oracle/.ssh/authorized_keysrac2:/home/oracle/.ssh/authorized_keys (3) 验证Oracle用户等效性,在所有节点执行
$sshrac2date $sshrac1date $sshrac2-vipdate $sshrac1-vipdate $sshrac2-privdate $sshrac1-privdates (4) 使用grid用户,在所有节点执行
#su-grid
$ssh-keygen-trsa
Generatingpublic/privatersakeypair.
Enterfileinwhichtosavethekey(/home/grid/.ssh/id_rsa): Createddirectory'/home/grid/.ssh'.
Enterpassphrase(emptyfornopassphrase): Entersamepassphraseagain:
Youridentificationhasbeensavedin/home/grid/.ssh/id_rsa. Yourpublickeyhasbeensavedin/home/grid/.ssh/id_rsa.pub. Thekeyfingerprintis:
39:1c:f5:9b:76:e1:de:20:40:e0:e8:20:77:fa:cd:97grid@rac1 $ssh-keygen-tdsa
Generatingpublic/privatedsakeypair.
Enterfileinwhichtosavethekey(/home/grid/.ssh/id_dsa): Enterpassphrase(emptyfornopassphrase): Entersamepassphraseagain:
Youridentificationhasbeensavedin/home/grid/.ssh/id_dsa. Yourpublickeyhasbeensavedin/home/grid/.ssh/id_dsa.pub. Thekeyfingerprintis:
08:a4:1b:87::fb:cd:93:3f:5d:f8:7b:f6:67:dd:4cgrid@rac1
(5) 使用grid用户,在节点rac1执行
$cat/home/grid/.ssh/*.pub>>/home/grid/.ssh/authorized_keys $sshrac2cat/home/grid/.ssh/*.pub>>/home/grid/.ssh/authorized_keys $scp/home/grid/.ssh/authorized_keysrac2:/home/grid/.ssh/authorized_keys (6) 验证grid用户等效性,在所有节点执行
$sshrac2date $sshrac1date $sshrac2-vipdate $sshrac1-vipdate $sshrac2-privdate $sshrac1-privdates (7) 重启rac1、rac2
#reboot 11. 安装ASM
(1) 检查系统及内核版本
#uname–a Linuxrac2#1SMPTueAug1815:51:48EDT2009x86_x86_x86_GNU/Linux #lsb_release–a LSBVersion::core-3.1-amd:core-3.1-ia32:core-3.1-noarch:graphics-3.1-amd:graphics-3.1-ia32:graphics-3.1-noarch DistributorID:RedHatEnterpriseServer Description:RedHatEnterpriseLinuxServerrelease5.4(Tikanga) Release:5.4 Codename:Tikanga (2) 下载与系统及内核版本对应的ASM
下载地址: 当前版本: (3) 安装asm包,按顺序安装
#rpm-ivh--nodepsorac # # # # # (4) 初始化asmlib,在所有节点执行
#/usr/sbin/oracleasmconfigure-i ConfiguringtheOracleASMlibrarydriver. Thiswillconfiguretheon-bootpropertiesoftheOracleASMlibrary driver.Thefollowingquestionswilldeterminewhetherthedriveris loadedonbootandwhatpermissionsitwillhave.Thecurrentvalues willbeshowninbrackets('[]').Hitting #/usr/sbin/oracleasminit (6) 创建asm磁盘,在节点rac1执行 #/usr/sbin/oracleasmcreatediskOCR_VOL1/dev/sdb1 #/usr/sbin/oracleasmcreatediskOCR_VOL2/dev/sdc1 #/usr/sbin/oracleasmcreatediskOCR_VOL3/dev/sdd1 #/usr/sbin/oracleasmcreatediskDATA_VOL1/dev/sde1 #/usr/sbin/oracleasmcreatediskBACK_VOL1/dev/sdf1 (7) rac2节点执行 #/usr/sbin/oracleasmscandisks #/usr/sbin/oracleasmlistdisks 12. 安装OracleGrid (1) 安装cvuqdisk(rac1,rac2) #exportCVUQDISK_GRP=oinstall # (2) 使用grid用户,进行oraclegrid安装前检查 #su-grid $cd/Grid安装目录 $./runcluvfy.shstage-precrsinst-nrac1,rac2-fixup-verbose ...检查内容略… Pre-checkforclusterservicessetupwassuccessful. (3) 更改DISPLAY设置 #su-root #xhost+ #DISPLAY=:0.0;exportDISPLAY #su-grid $xhost+ (4) 更改SELinxu设置 #system-config-securitylevel (5) 执行安装Grid #su-grid $./runInstaller ➢ 安装方式 ➢ 安装类型 ➢ 产品语言 ➢ 集群信息 ➢ 节点信息 ➢ 指定网络接口用法 ➢ 存储选项信息 ➢ 创建ASM磁盘组 ➢ 指定ASM口令,使用统一口令:Nortek123 ➢ 故障隔离支持 ➢ 角色分配 ➢ 指定安装路径 ➢ 创建产品清单 ➢ 安装检测 ➢ 安装概要 ➢ 正在安装 ➢ 以root用户在rac1和rac2运行脚本 # ➢ OracleClusterVerificationUtility失败可以忽略 ➢ OracleGrid安装完成 ➢ 确认安装成功 $crs_stat-t-v 13. 配置ASM磁盘组 (1) 启动ASM磁盘组创建向导,点击新建; #su-grid $asmca (2) 创建DATA磁盘组 (3) 创建BACK磁盘组 (4) 创建完成 14. 安装Oracle11G (1) 启动oracle安装程序 #su-oracle $cd/oracle11G安装目录 $./runInstaller& (2) 仅安装数据库软件 (3) 选择两个节点 (4) 添加简体中文 (5) 选择企业版 (6) 默认安装目录 (7) 默认用户分配 (8) 安装前检查 (9) 安装概要 (10) 执行安装 (11) 用户root在rac1和rac2执行脚本 (12) Oracle软件安装成功 15. 创建数据库 (1) 启动数据库创建向导 #su-oracle $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. 创建表空间 #su-oracle $sqlplussys/orcl@orclassysdba SQL>createtablespaceimatrixdatafile'+DATA/orcl/imatrix.dbf'size100Mautoextendonnext10Msegmentspacemanagementautoextentmanagementlocal; 17. 创建用户并指定默认表空间 SQL>createuserjwjidentifiedbyjwjdefaulttablespaceimatrix; 18. 用户分权 SQL>grantdba,connect,resource,createtable,createsessiontojwj; 19. 日常维护 ➢ RAC的启停 关闭 crsctlstopcluster 停止本节点集群服务 crsctlstopcluster–all 停止所有节点服务 启动 crsctlstartcluster 停止本节点集群服务 crsctlstartcluster–all 停止所有节点服务 ➢ RAC检查运行状态 crsctlcheckcluster ➢ DATABASE检查实例状态 srvctlstatusdatabase-dorcl ➢ 检查节点应用状态及配置 srvctlstatusnodeapps srvctlconfignodeapps-a-g-s-l ➢ 查看数据配置 srvctlconfigdatabase-dorcl-a ➢ 检查ASM状态及配置 srvctlstatusasm srvctlconfigasm-a ➢ 检查TNS的状态及配置 srvctlstatuslistener srvctlconfiglistener-a ➢ 检查SCAN状态及配置 srvctlstatusscan srvctlconfigscan ➢ 检查VIP状态及配置 srvctlstatusvip-nrac1 srvctlstatusvip-nrac2 srvctlconfigvip-nrac1 srvctlconfigvip-nrac2 四、 RAC负载均衡配置 1. RAC负载均衡概述 RAC的负载均衡主要是指新会话连接到RAC数据库时,如何判定这个新的连接要连到哪个节点进行工作。在RAC中,负载均衡分为两种,一种是基于客户端连接的,另外一种是基于服务器端的。 2. 客户端配置(PLSQL) (1) 修改客户端hosts文件,添加如下内容: rac1-vip rac2-vip (2) 修改tnsnames.ora文件如下: ORCL= (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=rac1-vip)(PORT=1521)) (ADDRESS=(PROTOCOL=TCP)(HOST=rac1-vip)(PORT=1521)) (LOAD_BALANCE=on) ) (CONNECT_DATA= (SERVICE_NAME=orcl) ) ) 3. 服务器配置 (1) 修改两个节点的tnsnames.ora文件如下: #GeneratedbyOracleconfigurationtools. ORCL1= (DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=rac1-vip)(PORT=1521)) (CONNECT_DATA= (SERVER=DEDICATED) (SERVICE_NAME=orcl) (INSTANCE_NAME=orcl1) ) ) ORCL= (DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=rac1-vip)(PORT=1521)) (ADDRESS=(PROTOCOL=TCP)(HOST=rac2-vip)(PORT=1521)) (LOAD_BALANCE=yes) (CONNECT_DATA= (SERVER=DEDICATED) (SERVICE_NAME=orcl) ) ) LISTENERS_ORCL= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=rac1-vip)(PORT=1521)) (ADDRESS=(PROTOCOL=TCP)(HOST=rac2-vip)(PORT=1521)) ) ORCL2= (DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=rac2-vip)(PORT=1521)) (CONNECT_DATA= (SERVER=DEDICATED) (SERVICE_NAME=orcl) (INSTANCE_NAME=orcl2) ) ) (2) 在初始化参数中设置参数remote_listeners SQL>altersystemsetremote_listener='LISTENERS_ORCL'sid='*'; 五、 常见错误处理 1. yum安装失败 报错信息: Loadedplugins:rhnplugin,security ThissystemisnotregisteredwithRHN. RHNsupportwillbedisabled. SettingupInstallProcess Nopackage包名available. Nothingtodo 解决办法:重做yum.repos.d文件 # # # #mvCentOS-Base.reporhel-debuginfo.repo 2. NTP同步时间失败 报错信息: 5Mar19:02:57ntpdate[6293]:noserversuitableforsynchronizationfound 解决办法:关闭rac1和rac2的防火墙 #serviceiptablesstop 3. 权限不足 报错信息: -bash:xxx:Permissiondenied 解决办法:用root用户给予xxx所有(777)权限。 #chmod777xxx或者 #chmod-R777/xxx/xxx 4. 执行失败 报错信息: CRSisalreadyconfiguredonthisnodeforcrshome=0 CannotconfiguretwoCRSinstancesonthesamecluster. Pleasedeconfigurebeforeproceedingwiththeconfigurationofnewhome. 解决办法:清除已有的CRS信息。 # 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务