liuyuehua 发表于 2018-9-13 08:06:18

在VMware server上安装oracle10g RAC

  这次试验并没有用复制另一台虚拟机的系统的方式完成rac的安装,是在完全安装的两个操作系统进行的oracle clusterware,oracle RAC的配置。
  硬件:一台2U PC机器,cpu: Intel(R) Xeon X5650 共24核心 内存:24G 两个板载千兆以太网卡 。

  软件:windows7旗舰版,VMware-server-1.0.3,CentOS>  (10201_clusterware_linux32,10201_database_linux32),xmanager,
  ============================================================
  一. 基础软件安装(详细步骤省略,请参照操作系统安装的相关文档)
  1.安装win7操作系统,打开远程桌面管理,配置一个合适的网络(15.0.5.200),可以在局域网内使用
  远程桌面访问win7.
  2.在win7上安装VMware server,安装过程中提示缺少程序签名的错误,忽略掉继续进行安装即可。
  3.带安装好后,重启动操作系统,启动时按F8选择用“禁用驱动程序签名强制”模式进入系统。
  4.测试是否能通过远程桌面访问到win7系统,并运行VMware server,看是否可以使用。如果没有进入
  “禁用驱动程序签名强制”模式,则无法进入local选项使用VMware。如果测试都通过,则可以通过远程来操作完成实验。
  使用远程桌面连接,开始以后的实验
  1. 在VMware server上构建两个虚拟机,分别为node1和node2。
  正常设置完一个虚拟机后,添加共享存储硬盘:
  设置如下图片所示,具体原因请查看VMware文档或其他文档

  点击Edit virtual machine settings,进行添加硬盘盘的设置

  点击Add

  下一步

  选中Hard Disk,点击下一步

  选择‘Create a new virtual disk’,下一步

  选择SCSI (Recommended),下一步


  在Disk>
  点击‘Browse’,手动选择硬盘存放路径,此处就是与先前创建的虚拟机系统硬盘不同的地方。下一步;

  点击向上的图标,进行选择

  选择shareddisk,这个文件夹为先前创建好的,为存放共享硬盘准备的。

  手工输入硬盘名字,ocrdisk1.vmdk,意思作为oracle clusterware的OCR使用。

  点击Advanced,进行硬盘通道选择;

  选择SCSI 1:0,完成。

  选择Independent,点击完成。
  按照这种方法,创建剩下的六块虚拟硬盘,名字分别叫做:ocrdisk2.vmdk,votingdisk1.vmdk,votingdisk2.vmdk,votingdisk3.vmdk,这五块盘为512M容量,asmdisk1.vmdk,asmdisk2.vmdk,这两块盘为10G容量。用途如硬盘的名字所示,分别有两块OCR,三块votting disk盘,两块用作ASM存储。
  在第一个虚拟机上设置完成后,编辑第二个虚拟机的配置文件Red Hat Enterprise Linux 4.vmx:
  将第二个虚拟机的配置文件备份,然后把第一个虚拟机的Red Hat Enterprise Linux 4.vmx复制到第二个虚拟机陪置文件的位置;并打开这个Red Hat Enterprise Linux 4.vmx,按照备份的配置修改相应项:
  scsi0:0.fileName = "node1disk.vmdk" 修改成scsi0:0.fileName = "node2disk.vmdk"
  将displayName = "node1"修改成displayName = "node2"
  uuid.location = "56 4d c7 a0 45 ca 8c ed-03 fd 14 3f ab fe 81 cd"
  uuid.bios = "56 4d c7 a0 45 ca 8c ed-03 fd 14 3f ab fe 81 cd"
  ethernet0.generatedAddress = "00:0c:29:fe:81:cd"
  ethernet1.generatedAddress = "00:0c:29:fe:81:d7"
  以上四项都是将等号右边的内容修改成原来node2配置文件的内容。
  2.安装操作系统,其中node1和node2安装CentOS 4.4(32bit)的系统。
  具体安装细节请查看安装操作系统相关文档。
  ===================================================
  二. 基本环境配置:
  安装好操作系统后,准备安装oracle RAC相关的环境;
  1. 创建相关用户组和oracle用户
  分别在node1和node2上创建:
  # groupadd -g 500 oinstall
  # groupadd -g 501 dba
  # groupadd -g 502 oper
  # useradd -g oinstall -G dba,oper -u 500 oracle
  # passwd oracle
  Changing password for user oracle.
  New UNIX password:
  BAD PASSWORD: it is too simplistic/systematic
  Retype new UNIX password:
  passwd: all authentication tokens updated successfully.
  2. 配置/etc/hosts
  由于没有配置dns服务,所以/etc/hosts文件暂时配置如下
  # cat /etc/hosts
  127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
  15.0.5.201node1
  15.0.5.211node1-vip
  10.0.0.1node1-priv
  15.0.5.202node2
  15.0.5.212node2-vip
  10.0.0.2node2-priv
  node2与node1的/etc/hosts文件相同。
  3.配置SSH互信任
  $ mkdir~/ .ssh
  (或者使用ssh node2,成功登陆后既可以在oracle目录下创建一个.ssh目录。)
  $ chmod 700~/ .ssh
  $ ssh-keygen -t rsa
  Generating public/private rsa key pair.
  Enter file in which to save the key (/home/oracle/.ssh/id_rsa):
  Enter passphrase (empty for no passphrase):
  Enter same passphrase again:

  Your>  Your public key has been saved in /home/oracle/.ssh/id_rsa.pub.
  The key fingerprint is:
  3a:8d:57:83:66:5f:69:c0:fd:95:c3:64:7d:ce:1a:de oracle@node1
  $ ssh-keygen -t dsa
  Generating public/private dsa key pair.
  Enter file in which to save the key (/home/oracle/.ssh/id_dsa):
  Enter passphrase (empty for no passphrase):
  Enter same passphrase again:

  Your>  Your public key has been saved in /home/oracle/.ssh/id_dsa.pub.
  The key fingerprint is:
  ed:27:e9:43:8f:a6:35:6f:d3:13:85:fa:ef:76:fe:66 oracle@node1
  $ ssh node1 cat /home/oracle/.ssh/id_rsa.pub >>authorized_keys
  $ ssh node1 cat /home/oracle/.ssh/id_dsa.pub >>authorized_keys
  在node2上重复上面的步骤创建:
  $ ssh-keygen -t rsa
  $ ssh-keygen -t dsa
  继续在node1上:
  $ ssh node2 cat /home/oracle/.ssh/id_rsa.pub >>authorized_keys
  $ ssh node2 cat /home/oracle/.ssh/id_dsa.pub >>authorized_keys
  $ scp authorized_keys node2:/home/oracle/.ssh/
  进行ssh登录测试:
  $ ssh node2
  $ ssh node2-priv
  $ ssh node1
  $ ssh node1-priv
  4. 设置oracle用户的环境
  1.检查x window
  $ xhost +
  15.0.5.201 being added to access control list
  2.检查并保证/tmp空间大于400M。因为安装系统是指划了一个根分区,所以/tmp空间与/ 共享使用空间。
  5.检查硬件条件
  分别在node1和node2上:
  # free -m
  total       used       free   shared    buffers   cached
  Mem:          2026      293       1733          0         48      130
  -/+ buffers/cache:      113       1912
  Swap:         4094          0       4094
  # df -h
  Filesystem            SizeUsed Avail Use% Mounted on
  /dev/sda3            16G2.7G   13G18% /
  /dev/sda1            99M   12M   83M12% /boot
  none               1014M   0 1014M   0% /dev/shm
  centos:/apps/      28G9.8G   16G38% /apps
  (/apps为另一个nfs服务器提供的目录,所有的oracle相关软件都存放在该目录下。node1和node2都
  挂在使用该目录安装需要的软件。)
  6. 检查软件情况
  oracle要求集群中的节点必须使用相同版本的操作系统!
  为避免安装数据库软件时的麻烦,将node1和node2的centos改为redhat:
  # cat /etc/redhat-release

  CentOS>  # cp /etc/redhat-release /etc/redhat-release.bak

  [root@node1 ~# echo "Red Hat Enterprise Linux AS>  4)">/etc/redhat-release
  注:实际测试,不做此操作也没有任何问题。
  内核版本:
  # uname -r
  2.6.9-42.ELsmp
  检查软件包:
  binutils-2.15.92.0.2-10.EL4
  compat-db-4.1.25-9
  control-center-2.8.0-12
  gcc-3.4.3-9.EL4
  gcc-c++-3.4.3-9.EL4
  glibc-2.3.4-2
  glibc-common-2.3.4-2
  gnome-libs-1.4.1.2.90-44.1
  libstdc++-3.4.3-9.EL4
  libstdc++-devel-3.4.3-9.EL4
  make-3.80-5
  openmotif21-2.1.30-11.RHEL4.2
  在node1和node2中使用rpm工具分别对上列出的软件包检查,并安装没有的包;本次安装操作系统选择了所有的软件包,所以在检查包时全都安装了。
  7. 配置系统内核参数
  在node1和node2的/etc/sysctl.conf文件添加内容:
  kernel.shmall = 2097152
  kernel.shmmax = 2147483648
  kernel.shmmni = 4096
  kernel.sem = 250 32000 100 128
  #fs.file-max = 65536       --注释掉是由于系统默认的值大于65536,使用默认值。
  net.ipv4.ip_local_port_range = 32768 65000
  net.core.rmem_default = 262144
  net.core.rmem_max = 1048576
  net.core.wmem_default = 262144
  net.core.wmem_max = 1048576
  然后运行/sbin/sysctl -p使其生效。(不运行也行,最后要安装oracle clusterware时重启动操作系统。)
  在node1和node2的/etc/pam.d/login 文件添加内容:
  oracle soft nproc 2047
  oracle hard nproc 16384
  oracle soft nofile 1024
  oracle hard nofile 65536
  在node1和node2的/etc/security/limits.conf 文件添加内容:
  session required /lib/security/pam_limits.so
  创建oracle的相关目录
  # mkdir -p /u01/app/oracle/oraInventory
  # mkdir -p /u01/app/oracle/product/crs
  # mkdir -p /u01/app/oracle/product/10.2.0/db_1
  # chown -R oracle:oinstall /u01
  # chmod -R 755 /u01
  验证hangcheck-timer模块:
  $ /sbin/lsmod | grep hang
  hangcheck_timer         76410
  如果无输出结果证明内核没有载入模块,需要手工导入
  # insmod /lib/modules/`uname -r`/kernel/drivers/char/hangcheck-timer.ko
  hangcheck_tick=30 hangcheck_margin=180
  并将这条导入命令添加到/etc/rc.d/rc.local中,保证重启动系统后会导入该模块。
  基本环境配置就告一段落,下面开始配置存储相关内容
  ================================================
  三. 配置oracle RAC环境的存储环境:
  根据创建虚拟机时配置好的硬盘,共享存储的硬盘有7块,分别为五块512M容量的
  ocrdisk1,ocrdisk2,votingdisk1,votingdisk2,votingdisk3
  和两块10G容量的asmdisk1,asmdisk2.
  ---------------------------
  使用fdisk工具为共享存储创建分区
  # fdisk -l
  Disk /dev/sda: 21.4 GB, 21474836480 bytes
  255 heads, 63 sectors/track, 2610 cylinders
  Units = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot      Start         End      Blocks>  /dev/sda1   *         1          13      104391   83Linux
  /dev/sda2            14         535   4192965   82Linux swap
  /dev/sda3             536      2610    16667437+83Linux
  Disk /dev/sdb: 536 MB, 536870912 bytes
  64 heads, 32 sectors/track, 512 cylinders
  Units = cylinders of 2048 * 512 = 1048576 bytes
  Disk /dev/sdb doesn't contain a valid partition table
  Disk /dev/sdc: 536 MB, 536870912 bytes
  64 heads, 32 sectors/track, 512 cylinders
  Units = cylinders of 2048 * 512 = 1048576 bytes
  Disk /dev/sdc doesn't contain a valid partition table
  Disk /dev/sdd: 536 MB, 536870912 bytes
  64 heads, 32 sectors/track, 512 cylinders
  Units = cylinders of 2048 * 512 = 1048576 bytes
  Disk /dev/sdd doesn't contain a valid partition table
  Disk /dev/sde: 536 MB, 536870912 bytes
  64 heads, 32 sectors/track, 512 cylinders
  Units = cylinders of 2048 * 512 = 1048576 bytes
  Disk /dev/sde doesn't contain a valid partition table
  Disk /dev/sdf: 536 MB, 536870912 bytes
  64 heads, 32 sectors/track, 512 cylinders
  Units = cylinders of 2048 * 512 = 1048576 bytes
  Disk /dev/sdf doesn't contain a valid partition table
  Disk /dev/sdg: 10.7 GB, 10737418240 bytes
  255 heads, 63 sectors/track, 1305 cylinders
  Units = cylinders of 16065 * 512 = 8225280 bytes
  Disk /dev/sdg doesn't contain a valid partition table
  Disk /dev/sdh: 10.7 GB, 10737418240 bytes
  255 heads, 63 sectors/track, 1305 cylinders
  Units = cylinders of 16065 * 512 = 8225280 bytes
  Disk /dev/sdh doesn't contain a valid partition table
  依上面的显示,需要为/dev/sdb,/dev/sdc,/dev/sdd,dev/sde,/dev/sdf,/dev/sdg,/dev/sdh创建分区
  # fdisk /dev/sdb
  Command (m for help): n
  Command action
  e   extended
  p   primary partition (1-4)
  p
  Partition number (1-4): 1
  First cylinder (1-512, default 1):
  Using default value 1
  Last cylinder or +size or +sizeM or +sizeK (1-512, default 512):
  Using default value 512
  Command (m for help): w

  The partition table has been>  Calling ioctl() to re-read partition table.
  Syncing disks.
  按照上面的方法,将在余下的设备上都创建一个分区。分区尺寸为该设备的大小。创建后的结果在
  node1和node2上都应该是:
  # fdisk -l
  Disk /dev/sda: 21.4 GB, 21474836480 bytes
  255 heads, 63 sectors/track, 2610 cylinders
  Units = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot      Start         End      Blocks>  /dev/sda1   *         1          13      104391   83Linux
  /dev/sda2            14         535   4192965   82Linux swap
  /dev/sda3             536      2610    16667437+83Linux
  Disk /dev/sdb: 536 MB, 536870912 bytes
  64 heads, 32 sectors/track, 512 cylinders
  Units = cylinders of 2048 * 512 = 1048576 bytes

  Device Boot      Start         End      Blocks>  /dev/sdb1               1         512      524272   83Linux
  Disk /dev/sdc: 536 MB, 536870912 bytes
  64 heads, 32 sectors/track, 512 cylinders
  Units = cylinders of 2048 * 512 = 1048576 bytes

  Device Boot      Start         End      Blocks>  /dev/sdc1               1         512      524272   83Linux
  Disk /dev/sdd: 536 MB, 536870912 bytes
  64 heads, 32 sectors/track, 512 cylinders
  Units = cylinders of 2048 * 512 = 1048576 bytes

  Device Boot      Start         End      Blocks>  /dev/sdd1               1         512      524272   83Linux
  Disk /dev/sde: 536 MB, 536870912 bytes
  64 heads, 32 sectors/track, 512 cylinders
  Units = cylinders of 2048 * 512 = 1048576 bytes

  Device Boot      Start         End      Blocks>  /dev/sde1               1         512      524272   83Linux
  Disk /dev/sdf: 536 MB, 536870912 bytes
  64 heads, 32 sectors/track, 512 cylinders
  Units = cylinders of 2048 * 512 = 1048576 bytes

  Device Boot      Start         End      Blocks>  /dev/sdf1               1         512      524272   83Linux
  Disk /dev/sdg: 10.7 GB, 10737418240 bytes
  255 heads, 63 sectors/track, 1305 cylinders
  Units = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot      Start         End      Blocks>  /dev/sdg1               1      1305    10482381   83Linux
  Disk /dev/sdh: 10.7 GB, 10737418240 bytes
  255 heads, 63 sectors/track, 1305 cylinders
  Units = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot      Start         End      Blocks>  /dev/sdh1               1      1305    10482381   83Linux
  为oracle clusterware文件绑定分区到raw devices:
  在node1和node2上编辑/etc/sysconfig/rawdevices文件加入下面行:
  /dev/raw/raw1   /dev/sdb1
  /dev/raw/raw2   /dev/sdc1
  /dev/raw/raw3   /dev/sdd1
  /dev/raw/raw4   /dev/sde1
  /dev/raw/raw5   /dev/sdf1
  /dev/raw/raw6   /dev/sdg1
  /dev/raw/raw7   /dev/sdh1
  然后启动rawdevices服务:
  # /etc/init.d/rawdevices start
  改变属性和权限:
  # chown root:oinstall /dev/raw/raw1
  # chown root:oinstall /dev/raw/raw2
  # chown oracle:oinstall /dev/raw/raw3
  # chown oracle:oinstall /dev/raw/raw4
  # chown oracle:oinstall /dev/raw/raw5
  # chown oracle:oinstall /dev/raw/raw6
  # chown oracle:oinstall /dev/raw/raw7
  # chmod 640 /dev/raw/raw*
  # chmod 660 /dev/raw/raw6
  # chmod 660 /dev/raw/raw7
  注:实验中在node1上面对共享的硬盘建完分区,并绑定raw后,在node2上使用fdisk -l可以正常显示所有硬盘的状态,但是绑定raw系统还是无法识别分区。需要重新启动操作系统才能正常识别。
  在/etc/udev/permissions.d/目录下创建文件oracle.permissions并添加内容如下:
  #OCR
  raw/raw:root:oinstall:0640
  #Voting Disks
  raw/raw:oracle:oinstall:0660
  #ASM
  raw/raw:oracle:oinstall:0660
  这样可以保证在系统重启后,这些raw绑定的分区的权限依然如我们前面所设置的那样。如果不设置这
  个文件,也可以在/etc/rc.d/rc.local文件中添加前面的chown和chmod设置。
  ============================
  四. 安装oracle clusterware
  解压10201_clusterware_linux32完成后名为clusterware的目录。进入该目录开始安装:
  # cd clusterware/
  # ./runInstaller

  Next

  Next

  在安装的path中,默认会是在.bash_profile中设置好的ORACLE_HOME的目录,点击Browse,选择ORA_CRS_HOME的目录,Next。

  这里检查系统的相关环境,看是否符合oracle clusterware的安装。如果有不符合条件的检查结果会报告,根据报告进行相应的修复,在Retry,直至验证通过为止。

  会给出所在安装节点的IP,需要手工添加另外的所有节点,这里手动添加了node2.

  系统能正确识别网卡和所对应的网络,说明对网络的配置没有问题。

  根据硬盘的规划,选择Normal Redundancy。并输入/dev/raw/raw1和/dev/raw/raw2两块raw。

  同样,Voting Disk也使用Normal Reducdancy。并输入规划的raw。

  总览一下所有设置,确认后点击Install。

  按照安装完后弹出的对话框的要求,root用户分别执行/u01/app/oracle/orainventory/orainstRoot.sh和/u01/app/oracle/product/crs/root.sh。现在node1上执行,执行完毕后,再在node2上执行。
  如果执行脚本成功,会启动crs,css,evm服务。结束安装。
  ============================================
  五. 安装oracle Database 10g 软件:
  可以先验证一下集群的状态:
  $ crs_stat -t
  Name         Type         Target    State   Host
  ------------------------------------------------------------
  ora.node1.gsdapplication    ONLINE    ONLINE    node1
  ora.node1.onsapplication    ONLINE    ONLINE    node1
  ora.node1.vipapplication    ONLINE    ONLINE    node1
  ora.node2.gsdapplication    ONLINE    ONLINE    node2
  ora.node2.onsapplication    ONLINE    ONLINE    node2
  ora.node2.vipapplication    ONLINE    ONLINE    node2
  也可以使用runcluvfy.sh工具进行验证,只是每次我验证的时候,包括在安装oracle clusterware软件的时候,总会报告需要,compat-gcc-7.3-2.96.128,compat-gcc-c++-7.3-2.96.128,compat-libstdc++-7.3-2.96.128这几个软件包,而实际上系统已经有相应替代的软件包了,如果在安装这些软件包,系统又会报告软件包有冲突。
  解压10201_database_linux32.zip后为database目录,将该目录所有者和组设置为oracle:oinstall。
  进入目录,使用oracle用户运行runInstaller
  $ ./runInstaller

  Next

  选择Enterprise Edition,Next

  这个目录默认为$ORACLE_HOME变量设置的目录,Next。

  勾选node2后,Next

  警告为ip_local_port_range设置问题,编辑/etc/sysctl.conf文件,改为要求的设置net.ipv4.ip_local_port_range = 1024 65000,Retry,通过后,Next。

  点击Insall.等待安装完成,在node1上运行/u01/app/oracle/product/10.2.0/db_1/root.sh,运行完毕后,再在node2上相同的目录下运行root.sh。
  运行完脚本后,系统检测集群环境,报错启动vip失败,查看日志的原因为没有设置默认网关,解决方法为编辑$CRS_ORA_HOME/bin/racgvip文件,设置FAIL_WHEN_DEFAULTGW_NOT_FOUND=0,再Retry后,则系统会启动vip,并成功运行oracle clusterware.
  结束安装,退出。
  =======================================
  五.创建数据库:
  这里使用DBCA创建数据库
  1.在$ORACLE_HOME/bin下,运行dbca
  $ ./dbca

  如果安装了集群软件,则DBCA会自动检测出并给出选项,是创建oracle Real Application Clusters database还是Oracle single instance database。选择1,Next

  选择Create a Database,Next.
Select All,让node1和node2都选中。Next.
用途选择General Purpose,Next.

  输入数据库的名字,Next

  可以选择是否自动备份否,Next。

  设置密码,Next

  选择Automatic Storage Management(ASM),Next

  识别出前面设置好的ASM,勾选后Next.

  Use Oracle-Managed files

  设置flash recovery area位置和大小,也可以不设置,Next。

  使用sample schemas,Next。

  改变一下Character Sets

  使用Use Unicode(AL32UTF8),Next

  Next

  开始创建数据库

  创建完成后退出。Exit.
  ==============================
  总结:
  在实验过程中,遇到最多的是网络和共享硬盘的问题。可能由于在VMware Server上运行带来复杂性,有时候node2中运行ifconfig命令后,网卡都没有了,重启网络服务又恢复正常。有时候提示没有足够的存储空间。fdisk -l 查看硬盘数量不少,重启rawservices服务后有能识别到。可能这些问题在实际的生产系统中不会遇到,但是网络和存储的设置对RAC能否成功实施至关重要。如果前期的准备工作到位,硬件,软件,相关的包,网络,内核的设置,共享存储都满足oracle RAC的要求,则安装过程是水到渠成的事情。

页: [1]
查看完整版本: 在VMware server上安装oracle10g RAC