第四章:完美安装oracle RAC数据库
点击数:1334发布日期:2020-04-19 14:40:39 来源:老鹰
第四章 安装RAC数据库
14.1 概要
系统规划好之后,进入实施安装阶段。安装数据库之前,有很多准备工作需要按照规划做好,我们在安装的过程中就会一路绿灯。前期工作如果准备的不充分,一是安装过程会遇到这样那样的错误,安装过程就报错;二是安装的数据库有问题,有可能出现性能差bug多等隐患。安装前必须做好准备工作。
本章的实际操作环境是在linux上安装两节点Oracle RAC。
参照第三章的规划,我们需要做以下准备工作。
1、硬件资源满足需求。比如要求最少2.5GB内存,一般要求大于16GB,现在内存配置几百G已经是很正常了,Oracle数据库就是对内存要求很高,内存大可以换取性能好。
2、存储按照大小划好lun,映射到对应的主机上,实现多路径功能,在主机端能正常读写存储映射过来的磁盘。
3、网络环境配置并连接完毕。交换机,路由器,按要求走好线,IP地址设好ping通。
4、操作系统为Oracle 认可的操作系统版本,Oracle要求的操作系统包安装完成。
5、安装目录的文件系统建好,最好单独划一个挂载点给Oracle用,如叫/u01或/oracle。
6、操作系统核心参数提前算好,改正。算法参见调优章节。
7、建用户grid,oracle,建组oinstall, dba, asmoper, asmadmin等。
8、建目录,修改目录权限。
9、数据库规划,包括数据库名,是否归档,安装哪些组件,如何备份,是否ASM等。
10、安装过程请参考官方文档,官方文档可以在oracle.com上下载,文档是纯英文的。
Oracle® Grid Infrastructure
Installation Guide 11g Release 2 (11.2) for Linux E17212-08
和
Oracle® Database
Installation Guide 11g Release 2 (11.2) for Linux E16763-06
14.2 删除linux下的Oracle数据库
安装失败,旧库淘汰,产品升级之前等情况,都可能面临删除现有的Oracle数据库。关于删除Oracle有官方文档,11g还有一个专门用于删除的软件包,是我们下载补丁时的最后一个包。使用软件包删除的方法我们不做介绍了,我们总结一下手工删除RAC的过程。单机版的数据库也一样,基本上包含在以下的步骤中。删除10g和删除11g有些不一样,我们的实验是11g,10g的删除方法请参照官方文档<
1、停止数据库,停止crs
SQL> shutdown abort;
ORACLE instance shut down.
#crsctl stop crs //使用root用户,RAC每个节点执行
2、删除文件,删除ohasd,删除/etc下ora开头的文件
[root@yingshu1 etc]# cd /etc/init.d
[root@yingshu init.d]# rm -f ohasd
[root@yingshu init.d]# rm -f init.ohasd
[root@yingshu1 etc]# cd /etc/
[root@yingshu1 etc]# rm -rf ora*
3、检查是否还有Oracle进程存在,如果有使用kill -9 杀掉
ps -ef|grep ora_ //查看是否有数据库进程
ps -ef|grep d.bin //查看crs进程
ps -ef|grep LOCAL=NO //查看远程连接到数据库进程
ps -ef|grep asm_ //查看ASM进程
ps -ef|grep lsnr //查看listener进程
ps -ef|grep crs
ps -ef|grep evm
ps -ef|grep css
4、如果没有其它Oracle软件在运行,则删除
[root@yingshu1 tmp]# rm -rf /var/tmp/.oracle
[root@yingshu1 tmp]# rm -rf /tmp/.oracle
5、确认没有其它软件在用ORACLE_BASE。删除grid用户ORACLE_BASE、ORACLE_HOME下所有文件
[root@yingshu app]# rm -rf /u01/app/*
6、删除Oracle用户ORACLE_BASE、ORACLE_HOME下所有文件
[root@yingshu oracle]# rm -rf /oracle/app/*
7、dd 曾经oracle用过的磁盘,包括ocr, votingdisk,asmdisk,如果你的OCR,votingdisk在共享文件系统上,那么手工删除。
dd if=/dev/zero of=/dev/raw/raw1 bs=1M count=10
dd if=/dev/zero of=/dev/raw/raw2 bs=1M count=10
dd if=/dev/zero of=/dev/raw/raw3 bs=1M count=10
dd if=/dev/zero of=/dev/raw/raw4 bs=1M count=10
dd if=/dev/zero of=/dev/raw/raw5 bs=1M count=10
dd if=/dev/zero of=/dev/raw/raw6 bs=1M count=10
10+0 records in //输出结果
10+0 records out //输出结果
10485760 bytes (10 MB) copied, 0.379184 seconds, 27.7 MB/s //输出结果
8、最好重启一下操作系统,aix使用命令shutdown -Fr。删除的工作就完成了。
[root@yingshu dev]# reboot
14.3 安装前环境准备
1、选择合适的操作系统版本
按照官方文档的要求,选择合适的操作系统版本。版本低了不行,高了也不好,之后安装的时候会遇到因为版本问题的错误。
2、确认操作系统版本(两节点操作)
[root@yingshu1 etc]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.8 (Tikanga)
[root@yingshu1 etc]#
[root@yingshu1 etc]# cat /etc/issue
Red Hat Enterprise Linux Server release 5.8 (Tikanga)
Kernel \r on an \m
3、确认物理内存大小(两节点操作)
[root@yingshu1 etc]# grep MemTotal /proc/meminfo
MemTotal: 32922156 kB
4、确认swap内间大小,官方建议:如果内存在2G以内,则等于内存的1.5倍;大于2G一般等于内存大小;大于16G,可以设swap为16G。交换区等于或大于内存大小。我们这里设32G。(两节点操作)
[root@yingshu1 etc]# grep SwapTotal /proc/meminfo
SwapTotal: 32922156 kB
5、临时挂载点的大小,至少1G。(每个节点操作)
df -kh /tmp
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol02
12G 15M 12G 0% /tmp
6、划分好存储,使用多路径软件,做好聚合。在存储中划分三个ocr盘,每个磁盘5G。其余全为数据盘,每个磁盘1T,或根据数据库的实际大小安排磁盘大小,如每个磁盘500G。不可以直接使用/dev/sdb,sdc这种直接认到的磁盘,使用这种磁盘安装会失败,第二节点执行root.sh失败。我们使用/dev/raw/raw1,raw2... ...前三个是ocr盘,每个10g。从raw4开始,每个1t。
[root@yingshu1 init.d]# cd /dev/raw/
[root@yingshu1 raw]# ls -l
total 0
crw-rw---- 1 grid asmadmin 162, 1 Sep 4 11:13 raw1
crw-rw---- 1 grid asmadmin 162, 2 Sep 4 11:13 raw2
crw-rw---- 1 grid asmadmin 162, 3 Aug 31 09:04 raw3
crw-rw---- 1 grid asmadmin 162, 4 Aug 31 08:59 raw4
crw-rw---- 1 grid asmadmin 162, 5 Aug 31 08:59 raw5
7、是否是64位操作系统。因为32位对内存使用有限制,所以服务器都不用32位操作系统,现在我们的笔记本大都是64位了,所以32位系统做服务器,肯定不好。(每个节点操作)
# getconf LONG_BIT
64
8、检查主机名,网络。(每个节点操作)
[root@yingshu1 etc]# hostname
yingshu1
# ifconfig -a
# ping
9、配置并检查/etc/hosts配置。我们把scan IP固定写在hosts文件里。(每个节点操作),注意127.0.0.1对应第二台的主机名是yingshu2,其它两边一样。
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 yingshu1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
#public ip
192.168.1.10 yingshu1
192.168.1.11 yingshu2
#priv ip
10.10.10.211 yingshu1-priv
10.10.10.212 yingshu2-priv
#vip ip
192.168.1.13 yingshu1-vip
192.168.1.14 yingshu2-vip
#scan ip
192.168.1.12 yingshu-scan
10、检查两个节点时钟是否同步,如果主机自己实现时钟同步服务ntp,可以使用公司统一的时间服务器,不使用Oracle时钟同步服务。则Oracle忽略自己的时钟同步服务,不进行时钟同步,如果系统没有ntp服务,则Oracle启用活动的CTSS进程,以一台做为时钟同步服务器进行集群中的时间同步。10g和10g之前,必须手工配置操作系统的时钟同步服务。我们这里使用Oracle自己的ctss服务,删除ntp服务。
停止ntp服务
/etc/init.d/ntpd stop
chkconfig ntpd off
mv /etc/ntp.conf /etc/ntp.conf.org
删除ntp服务,根据提示,输入yes,回车。
[root@yingshu1 etc]# date
Fri Jul 31 10:39:18 CST 2015
[root@yingshu1 ~]# yum remove ntp
11、检查是否有Oracle进程存在,如果我们从一个非全新的系统安装,或以前安装失败过,机器上留有原来安装过的痕迹,一定要删除干净,删不干净下次肯定还装不上。(每个节点操作)
ps -ef|grep ora_ //查看是否有数据库进程
ps -ef|grep d.bin //查看crs进程
ps -ef|grep LOCAL=NO //查看远程连接到数据库进程
ps -ef|grep asm_ //查看ASM进程
ps -ef|grep lsnr //查看listener进程
12、检查操作系统是否已安装必要的补丁包,以下是在Red Hat Enterprise Linux 5上安装11.2.0.4 Grid Infrastructure 11g所需的操作系统软件包,如果是安装11.2.0.1还需要32位的软件包,不过一般没有人再装11.2.0.1了。使用rpm -qa检查是否有这个软件包。(每个节点操作)
rpm -qa | grep elfutils-libelf
rpm -qa | grep elfutils-libelf-devel
rpm -qa | grep gcc
rpm -qa | grep gcc-c++
rpm -qa | grep glibc
rpm -qa | grep glibc-common
rpm -qa | grep glibc-devel
rpm -qa | grep glibc-headers
rpm -qa | grep elfutils-libelf-devel-static
rpm -qa | grep kernel-headers
rpm -qa | grep binutils
rpm -qa | grep compat-libstdc++-296
rpm -qa | grep compat-libstdc++-33
rpm -qa | grep control-center
rpm -qa | grep ksh
rpm -qa | grep libaio
rpm -qa | grep libaio-devel
rpm -qa | grep libgcc
rpm -qa | grep libgnome
rpm -qa | grep libgnomeui
rpm -qa | grep libgomp
rpm -qa | grep libstdc++
rpm -qa | grep libstdc++-devel
rpm -qa | grep libXp
rpm -qa | grep make
rpm -qa | grep sysstat
rpm -qa | grep numactl
rpm -qa | grep unixODBC
rpm -qa | grep unixODBC-devel
13、如果缺失某个软件包,去安装光盘里/media/RHEL_5.8 x86_64 DVD/Server这个文件夹下找。使用rpm -ivh安装,样例如下:(每个节点操作)
[root@yingshu1 tmp]# rpm -ivh unixODBC-devel-2.2.11-10.el5.x86_64.rpm
warning: unixODBC-devel-2.2.11-10.el5.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:unixODBC-devel ########################################### [100%]
14、建组,建用户。装RAC的时候一定要把用户名和组的id号(如501)加上,否则两边ID号不一样会出问题。必须为oracle、grid用户设置密码,否则对等性检查不通过。
[root@yingshu1 tmp]# groupadd -g 501 oinstall
[root@yingshu1 tmp]# groupadd -g 502 dba
[root@yingshu1 tmp]# groupadd -g 503 oper
[root@yingshu1 tmp]# groupadd -g 504 asmadmin
[root@yingshu1 tmp]# groupadd -g 505 asmoper
[root@yingshu1 tmp]# groupadd -g 506 asmdba
[root@yingshu1 tmp]# useradd -u 1101 -g oinstall -G dba,asmdba,oper oracle
[root@yingshu1 tmp]# passwd oracle
Changing password for user oracle.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@yingshu1 tmp]# useradd -u 1102 -g oinstall -G asmadmin,asmdba,asmoper,oper,dba grid
[root@yingshu1 tmp]# passwd grid
Changing password for user grid.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
如果建立的用户有问题,那么删除的命令是userdel 用户名。
15、建目录,并修改权限,(每个节点操作)
[root@yingshu1 /]# mkdir -p /oracle/app
[root@yingshu1 /]# chown -R oracle:oinstall /oracle
[root@yingshu1 /]# mkdir -p /u01/app
[root@yingshu1 /]# chown -R grid:oinstall /u01
[root@yingshu1 /]# chmod -R 775 /oracle
[root@yingshu1 /]# chmod -R 775 /u01
16、使用vi 命令修改grid,oracle用户的环境变量
使用oracle用户vi /home/oracle/.bash_profile 增加以下内容,注意节点二上使用ORACLE_SID=ysdb2
################################################################
export ORACLE_BASE=/oracle/app
export ORACLE_HOME=/oracle/app/11.2.0/db_1
export ORACLE_SID=ysdb1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin:$ORACLE_HOME/OPatch
alias ss="sqlplus '/as sysdba'"
最后一行为SQLPLUS写一个别名,日后省去每次登录都要输入sqlplus / as sysdba,直接用两个s代替。
使用grid用户vi /home/grid/.bash_profile 增加以下内容。注意节点二上使用ORACLE_SID=+ASM2
################################################################
export ORACLE_BASE=/u01/app/
export ORACLE_HOME=/u01/11.2.0/grid
export ORACLE_SID=+ASM1
export PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin:$ORACLE_HOME/OPatch
17、在linux下unzip解压安装包。解压后注意安装包的权限。
[root@yingshu oramed]# ll
total 4442172
-rwxrw-rw- 1 root root 1395582860 Jan 5 2014 p13390677_112040_Linux-x86-64_1of7.zip
-rw-r--r-- 1 root root 1151304589 Jan 5 2014 p13390677_112040_Linux-x86-64_2of7.zip
-rw-r--r-- 1 root root 1205251894 Jan 5 2014 p13390677_112040_Linux-x86-64_3of7.zip
[root@yingshu oramed]# unzip p13390677_112040_Linux-x86-64_1of7.zip
[root@yingshu oramed]# unzip p13390677_112040_Linux-x86-64_2of7.zip
[root@yingshu oramed]# unzip p13390677_112040_Linux-x86-64_3of7.zip
[root@yingshu oramed]# ll
total 4442180
drwxr-xr-x 7 root root 4096 Aug 27 2013 database
drwxr-xr-x 7 root root 4096 Aug 27 2013 grid
[root@yingshu oramed]# chown -R grid.oinstall grid
[root@yingshu oramed]# chown -R oracle.oinstall database
前2个包是数据库,必须解压至一个文件夹。第3个包是grid集群架构,如果是安装RAC必须先装grid集群架构。
18、半自动配置两节点信任关系。安装grid Infrastructure时,有一步是自动配置对等性。自动配置对等性当然容易,有时候会失败。我们可以手工配置对等性,我们这里演示一下半自动配置对等性的方法,很有效。
重启sshd服务
#service sshd restart
从grid用户su – oracle验证oracle用户密码未过期;从oracle用户su –grid验证grid用户密码未过期;两节点分别执行。
[root@yingshu2 dev]# su - grid
[grid@yingshu2 ~]$ su - oracle
Password:
[oracle@yingshu2 ~]$ su - grid
Password:
[grid@yingshu2 ~]$
使用root用户执行,将yingshu1 yingshu2替换为相应的主机名。
sshsetup/sshUserSetup.sh -user grid -hosts " yingshu1 yingshu2" -advanced -noPromptPassphrase
sshsetup/sshUserSetup.sh -user oracle -hosts " yingshu1 yingshu2" -advanced no-PromptPassphrase
根据提示要求输入回车,四次密码。如果显示SSH verification complete.表示配置成功。
验证方法:
在节点一上执行:
[grid@yingshu1 ~]$ ssh yingshu2 date
Thu Aug 20 15:00:18 CST 2015
在节点二上执行:
[grid@yingshu2 ~]$ ssh yingshu1 date
Thu Aug 20 15:01:10 CST 2015
19、修改资源限制。vi /etc/security/limits.conf 在文件的尾,加入以下参数。
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft nofile 655360
oracle hard nofile 655360
oracle soft stack 10240
grid soft nproc 16384
grid hard nproc 16384
grid soft nofile 655360
grid hard nofile 655360
grid soft stack 10240
20、增加pam_limits.so模块。vi /etc/pam.d/login增加以下内容。
#ORACLE SETTING
session required pam_limits.so
21、设置内核参数。 vi /etc/sysctl.conf 增加以下设置。如果系统有默认设置,则删除默认设置。不做设置也可以,将来在安装过程中使用runfixup自动设置。
#ORACLE SETTING
fs.aio-max-nr = 4194304
fs.file-max = 6815744
kernel.shmall = 167772160
kernel.shmmax = 687194767360
kernel.shmmni = 4096
kernel.sem = 10000 40960000 10000 4096
net.ipv4.ip_local_port_range = 20000 65535
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
vm.swappiness =10
vm.min_free_kbytes=512MB
使内核参数设置成效:
#sysctl -p
22、grid用户使用cluvfy校验安装环境,此命令在解压后的安装包里。校验结果做为前期配置是否成功的参考。
./runcluvfy.sh stage -pre crsinst -n yingshu1,yingshu2 -verbose
23、使用grid用户运行./runInstaller开始安装集群基础架构。
选择跳过软件的升级更新,我们将来手工的升级数据库。因为数据非常重要,一般不把数据库服务器接入互联网,也就无法使用在线升级。
选择安装和配置一个集群的基础架构。第二个选项是单节点运行基础架构,往往是为了使用它的ASM功能。
选择高级安装。因为在安装过程中有需要调整的配置。
选择英语和简体中文,在将来的Grid Control管理中,避免出现乱码。
Cluster Name不超过15个字符,Scan Name填写/etc/hosts里配置的scan ip名,端口号参照整体规划。
添加第二台主机名,vip名。如果已经配置了对等性,点击test,测试对等性是否成功。
对等性测试成功。
确认使用的网段,这里私有IP使用的是10.10.10.0网段,私有IP是用来做节点间数据传输用的。公共ip使用的是192.168.1.0网段,是对外公布的IP地址。
选择使用ASM。
选择Normal选项,镜像ocr,voting disk盘。AU Size选择4MB。
输入ASM密码。如果因为密码复杂程度不够警告,可以忽略此警告。密码复杂度要求有大小写字母,数字,且长度有要求。
选择不使用IPMI。
选择ASM实例,使用的用户组。如图。
选择grid用户的ORACLE_BASE,ORACLE_HOME.
选择oraInventory路径。如图。
此页面很重要,有些Warning可以忽略,如操作系统参数。有些Warning不能忽略,如ASM路径。一些配置可以通过Fix & Check Again执行一个脚本修复好。点Ignore All继续。
执行root.sh,是里程碑,很多准备不足的问题会致此脚本运行失败。先在第一个节点运行orainstRoot.sh然后运行root.sh。再在第二个节点运行,不能同时运行。
执行root.sh成功后点ok。进入安装检查并安装完成,INS-20802错误可以忽略。
24、使用oracle用户运行./runInstaller开始安装数据库软件。前面我们已经把软件解压好了。权限也修为oracle:oinstall.
[oracle@yingshu1 database]$ cd /oramed/database/
[oracle@yingshu1 database]$ ls
install readme.html response rpm runInstaller sshsetup stage welcome.html
[oracle@yingshu1 database]$ ./runInstaller
选择不使用Oracle支持的安全更新。出现警告时选择yes。
选择跳过软件更新。
选择只安装软件。
选择第2个选项,RAC数据库安装。测试2节点间oracle用户的对等性,方法和gird用户对等性一样。
选择英文和简体中文,避免将来使用OEM出现字符乱码。
选择安装企业版。企业版中包含分区表,DataGuard等高级功能。
选择使用的功能选件。取消掉不使用的组件。
按照规划,填写好ORACLE_BASE,ORACLE_HOME.环境变量设置正确,会自动弹出。
选择操作系统组。
检查安装环境是否已具备。对于参数设置之类的警告,可以忽略。
安装过程。最后会提示执行root.sh,使用root用户执行完成之后。点击close完成软件安装。
25、数据库软件安装完成之后,使用grid用户运行asmca开始创建ASM磁盘组dgdata。我们要在dgdata上建立数据库。
点击“create”disk group,弹出上面的介面。选择存放数据的磁盘,选择外部冗余方式,点击show advanced options,Allocation Unit Size选择4MB,其它选项不动。点击ok创建完成。
关于ASM磁盘的操作,我习惯尽量采用asmca来操作,和netca操作listener类似,少采用命令行。
26、数据库软件安装完成之后,使用oracle用户运行dbca开始建库。
选择RAC集群数据库。
选择创建一个数据库。
选择定制一个数据库。
填写规划好的数据库名,Select All选择所有节点。
我们这里不使用企业管理器。
不使用自动维护任务。将来手工的收集统计信息,手工的调整性能,不使用建议报告。
设置sys和system用户的密码。将来随时可以修改。此密码也有复杂策略要求,可以忽略。
我们将数据库放在+DGDATA磁盘组上。这个磁盘组就是我们刚才用asmca创建好的磁盘组。
选择不设置快速恢复区,归档模式建好库之后我们手工修改。将来我们再建一个磁盘组+DGARCH专门存放归档日志。
如果应用开发商没有要求安装某些选件,此处我们选择全部不安装。在以后的升级过程中也会节省更新数据字典的时间。建好库之后,也可以手工安装。
内存手工管理,计算好各个内存区域的大小,从稳定性角度出发,手工管理内存。
采用8KB的数据块,如果是OLAP系统可以采用16KB或32KB的数据块。设置合适的processes大小,和数据库总的连接数有关,将来调整也可以,不过要重启数据库。
按照规划和应用开发商的要求,设置合适的数据库字符集。
连接方式采用专用服务模式。共享服务模式会节约一些内存,牺性一些性能,但我们对性能要求非常苛刻。
为了数据文件大小一致,管理有条理,备份恢复性能好。关闭所有数据文件自动扩展。我们将来手工添加数据文件扩展表空间。
统一设置数据文件的大小,尽量不要大的大,小的小,看起来也很混乱,管起来也不好管。
redo日志添加至6组,每个实例3组,每组一个成员,每个成员大小为2GB,redo需要放在RAID1上,否则性能不好。
选择创建一个模版,选择生成创建脚本。点Finish完成,弹出摘要介面,点ok开始建库。
建库过程,可以观察到,先建实例,再建数据文件,再建数据字典,最后完成创建。
创建数据库完毕。
打补丁可以在dbca建库之前,也可以在dbca建库之后,打补丁的过程详见本书中的打补丁章节。
下一篇:第五章:数据库的备份和恢复
上一篇:第三章:数据库系统的规划
图文推荐
序言
2020-04-19 查看:2273
第十五章:Oracle 12c介绍
2020-04-19 查看:2210
第十四章:常用Oracle工具
2020-04-19 查看:1934
第十三章:Oracle Golde...
2020-04-19 查看:2200
第十二章:DataGuard
2020-04-19 查看:1797