1 系统环境需求
1.1 安装前的系统环境准备
- 检查Solaris服务器安装完成并打上最新的补丁集
- 网络环境连通并调试正常。
- 磁盘阵列安装完成并按ORACLE系统进行磁盘划分。
1.2 硬件要求
- 内存:> 2G。
- SWAP区:2G。通常等于物理内存,最低不少于1G。
- 硬盘容量:数据库软件 > 4G。数据库 > 2G。
- /tmp:临时目录空间大于500M。
1.3 软件要求
- 操作系统及Patches:
Solaris 10补丁
SUNWarc SUNWbtool SUNWhea SUNWlibC SUNWlibm SUNWlibms SUNWmfrun SUNWsprot SUNWtoo SUNWi1of SUNWi1cs SUNWi15cs SUNWxwfnt SUNWcsl SUNWxcu4
2 准备工作
2.1 检查操作系统运行环境
- 检查是否包含所需Patch。命令:
pkginfo -i SUNWarc SUNWbtool SUNWhea SUNWlibC SUNWlibm SUNWlibms SUNWmfrun SUNWsprot SUNWtoo SUNWi1of SUNWi1cs SUNWi15cs SUNWxwfnt SUNWcsl SUNWxcu4
- 检查操作系统的版本
# uname -r
- 检查实际可用内存,命令:
# /usr/sbin/prtconf | grep "Memory size"
- 检查交换区大小。命令:
# /usr/sbin/swap -s
- 检查文件系统可用空间和临时目录/tmp可用空间。命令:
# df -h /tmp
# df -h
- 检查操作系统内核架构
# /bin/isainfo -kv
- 检查网络
# hostname
# ifconfig –a
# ping
服务器的hosts文件内容:
#public IP
172.16.10.1 BXDB1
172.16.10.2 BXDB2
#private IP
172.16.1.3 BXDB1-priv
172.16.1.4 BXDB2-priv
#VIP
172.16.10.7 BXDB1-vip
172.16.10.8 BXDB2-vip
#SCAN
172.16.10.9 BXDB-scan
- 检查节点时间保证同步
# date
2.2 用户的准备工作(BXDB1和BXDB2相同)
- 修改UDP参数
$ vi /etc/rc2.d/S99ndd
添加
ndd -set /dev/udp udp_xmit_hiwat 65536
ndd -set /dev/udp udp_recv_hiwat 65536
- 建立所需的组
/usr/sbin/groupadd -g 1000 oinstall
/usr/sbin/groupadd -g 1100 asmadmin
/usr/sbin/groupadd -g 1200 dba
/usr/sbin/groupadd -g 1201 oper
/usr/sbin/groupadd -g 1300 asmdba
/usr/sbin/groupadd -g 1301 asmoper
- 建立所需的用户
# mkdir -p /export/home/grid
# useradd -u 1100 -g oinstall -G dba,asmadmin,asmdba,asmoper -d /export/home/grid -s /usr/bin/bash grid
# mkdir -p /export/home/oracle
# useradd -u 1101 -g oinstall -G asmdba,dba,oper -d /export/home/oracle -s /usr/bin/bash oracle
修改新建用户的密码 密码1qaz.oracle
# passwd grid
# passwd oracle
- 修改环境变量
Grid用户
# su – grid
$ vi .profile
添加
# ORACLE_SID (节点2上要写ORACLE_SID=+ASM2)
ORACLE_SID=+ASM1; export ORACLE_SID
ORACLE_BASE=/oracle/app/grid; export ORACLE_BASE
ORACLE_HOME=/oracle/app/11.2.0/grid; export ORACLE_HOME
PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin
PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH
NLS_LANG=AMERICAN_AMERICA.UTF8;export NLS_LANG
umask 022
oracle用户
# su – oracle
$ vi .profile
添加
# ORACLE_SID (节点2上要写ORACLE_SID=boss2)
ORACLE_SID=boss1; export ORACLE_SID
ORACLE_BASE=/oracle/app/oracle; export ORACLE_BASE
ORACLE_HOME=/oracle/app/oracle/product/11.2.0/dbhome_1; export ORACLE_HOME
PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin
PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH
NLS_LANG=AMERICAN_AMERICA.UTF8;export NLS_LANG
umask 022
- 修改系统参数(root用户)
# vi /etc/system
添加
set noexec_user_stack=1
set semsys:seminfo_semmni=100
set semsys:seminfo_semmns=1024
set semsys:seminfo_semmsl=256
set semsys:seminfo_semvmx=23767
set shmsys:shminfo_shmmax=107374182400
set shmsys:shminfo_shmmin=1
set shmsys:shminfo_shmmni=100
set shmsys:shminfo_shmset=10
执行
# projmod -sK "project.max-shm-memory=(privileged,100G,deny)" default
重启服务器
- 配置等效性
以下是grid用户,oracle用户配置方式一样
$ chmod 755 /export/home (该目录权限必须是755)
◆以下两个RAC节点都执行
-bash-3.00$ mkdir -p ~/.ssh
-bash-3.00$ chmod 700 ~/.ssh
-bash-3.00$ /usr/bin/ssh-keygen -t rsa
提示输入输入密码时,保持为空回车即可,使用空密码操作简单一些。
◆以下只在RAC节点1执行
-bash-3.00$ touch ~/.ssh/authorized_keys
-bash-3.00$ ssh BXDB1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
-bash-3.00$ ssh BXDB2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
-bash-3.00$ scp ~/.ssh/authorized_keys BXDB2:.ssh/authorized_keys
◆以下两个RAC节点都执行
-bash-3.00$ chmod 600 ~/.ssh/authorized_keys
测试等效性,不提示输入密码即配置成功(第一次要求输入密码是正常的)
ssh BXDB1 "date;hostname"
ssh BXDB2 "date;hostname"
- 配置裸盘(root用户)
# format
AVAILABLE DISK SELECTIONS:
0. c0t5000CCA03C70E8B4d0 <HITACHI-H106030SDSUN300G-A2B0 cyl 46873 alt 2 hd 20 sec 625> solaris
scsi_vhci/disk@g5000cca03c70e8b4
1. c0t5000CCA03C709A38d0 <HITACHI-H106030SDSUN300G-A2B0 cyl 46873 alt 2 hd 20 sec 625> solaris
scsi_vhci/disk@g5000cca03c709a38
2. c0t600000E00D11000000111430000D0000d0 <FUJITSU-ETERNUS_DXL-0000 cyl 254 alt 2 hd 64 sec 256>
scsi_vhci/ssd@g600000e00d11000000111430000d0000
3. c0t600000E00D1100000011143000040000d0 <FUJITSU-ETERNUS_DXL-0000-409.00GB>
scsi_vhci/ssd@g600000e00d1100000011143000040000
4. c0t600000E00D1100000011143000060000d0 <FUJITSU-ETERNUS_DXL-0000-409.00GB>
scsi_vhci/ssd@g600000e00d1100000011143000060000
5. c0t600000E00D1100000011143000070000d0 <FUJITSU-ETERNUS_DXL-0000-409.00GB>
scsi_vhci/ssd@g600000e00d1100000011143000070000
6. c0t600000E00D1100000011143000050000d0 <FUJITSU-ETERNUS_DXL-0000-409.00GB>
scsi_vhci/ssd@g600000e00d1100000011143000050000
7. c0t600000E00D1100000011143000030000d0 <FUJITSU-ETERNUS_DXL-0000 cyl 58878 alt 2 hd 128 sec 256>
scsi_vhci/ssd@g600000e00d1100000011143000030000
8. c0t600000E00D1100000011143000020000d0 <FUJITSU-ETERNUS_DXL-0000 cyl 58878 alt 2 hd 128 sec 256>
scsi_vhci/ssd@g600000e00d1100000011143000020000
9. c0t600000E00D1100000011143000010000d0 <FUJITSU-ETERNUS_DXL-0000 cyl 58878 alt 2 hd 128 sec 256>
scsi_vhci/ssd@g600000e00d1100000011143000010000
10. c0t600000E00D1100000011143000000000d0 <FUJITSU-ETERNUS_DXL-0000 cyl 58878 alt 2 hd 128 sec 256>
scsi_vhci/ssd@g600000e00d1100000011143000000000
Specify disk (enter its number)[7]: 2
selecting c0t600000E00D11000000111430000D0000d0
[disk formatted]
format> p
PARTITION MENU:
0 - change `0‘ partition
1 - change `1‘ partition
2 - change `2‘ partition
3 - change `3‘ partition
4 - change `4‘ partition
5 - change `5‘ partition
6 - change `6‘ partition
7 - change `7‘ partition
select - select a predefined table
modify - modify a predefined partition table
name - name the current table
print - display the current table
label - write partition map and label to the disk
!<cmd> - execute <cmd>, then return
quit
partition> 0
Part Tag Flag Cylinders Size Blocks
0 root wm 0 0 (0/0/0) 0
Enter partition id tag[root]:
Enter partition permission flags[wm]:
Enter new starting cyl[0]:
Enter partition size[0b, 0c, 0e, 0.00mb, 0.00gb]:
partition> p
Current partition table (unnamed):
Total disk cylinders available: 254 + 2 (reserved cylinders)
Part Tag Flag Cylinders Size Blocks
0 unassigned wm 0 0 (0/0/0) 0
1 swap wu 0 0 (0/0/0) 0
2 backup wu 0 - 253 1.98GB (254/0/0) 4161536
3 unassigned wm 0 0 (0/0/0) 0
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 0 0 (0/0/0) 0
6 usr wm 0 - 253 1.98GB (254/0/0) 4161536
7 unassigned wm 0 0 (0/0/0) 0
partition> 6
Part Tag Flag Cylinders Size Blocks
6 usr wm 0 - 253 1.98GB (254/0/0) 4161536
Enter partition id tag[usr]:
Enter partition permission flags[wm]:
Enter new starting cyl[0]: 3
Enter partition size[4112384b, 251c, 253e, 2008.00mb, 1.96gb]:
partition> label
Ready to label disk, continue? y
partition> p
Current partition table (unnamed):
Total disk cylinders available: 254 + 2 (reserved cylinders)
Part Tag Flag Cylinders Size Blocks
0 unassigned wm 0 0 (0/0/0) 0
1 swap wu 0 0 (0/0/0) 0
2 backup wu 0 - 253 1.98GB (254/0/0) 4161536
3 unassigned wm 0 0 (0/0/0) 0
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 0 0 (0/0/0) 0
6 usr wm 3 - 253 1.96GB (251/0/0) 4112384
7 unassigned wm 0 0 (0/0/0) 0
partition> quit
依次将要使用的盘全部格式化分区完毕
- 修改磁盘权限
在划分磁盘时若选择了将空间分配给n号片,对应的盘片就是sn,例如磁盘是c0t600000E00D11000000111430000D0000d0,空间分配到了6号片,最终我们使用的磁盘文件名就是c0t600000E00D11000000111430000D0000d0s6
chown grid:asmadmin /dev/rdsk/c0t600000E00D11000000111430000D0000d0s6
chown grid:asmadmin /dev/rdsk/c0t600000E00D1100000011143000030000d0s6
chown grid:asmadmin /dev/rdsk/c0t600000E00D1100000011143000020000d0s6
chown grid:asmadmin /dev/rdsk/c0t600000E00D1100000011143000010000d0s6
chown grid:asmadmin /dev/rdsk/c0t600000E00D1100000011143000000000d0s6
chmod 660 /dev/rdsk/c0t600000E00D11000000111430000D0000d0s6
chmod 660 /dev/rdsk/c0t600000E00D1100000011143000030000d0s6
chmod 660 /dev/rdsk/c0t600000E00D1100000011143000020000d0s6
chmod 660 /dev/rdsk/c0t600000E00D1100000011143000010000d0s6
chmod 660 /dev/rdsk/c0t600000E00D1100000011143000000000d0s6
3 安装
3.1 安装crs软件(BXDB1上)
- 以 grid 用户运行安装程序
# xhost +
# 解压安装软件
# su – grid
$ export DISPLAY=客户机ip:0.0
$ ./runInstaller
选择第一项,next
选择第二项高级安装,next
添加中文语言
填上SCAN信息,其中Cluster name自定义,SCAN name是hosts文件中配置
添加节点
点击ssh connectivity配置ssh等效性
根据hosts文件的配置选择网卡用户
选择将OCR文件放在ASM中
建立ASM磁盘组,添加之前为OCR准备的裸盘文件,冗余方式选择external
为ASM帐号设置密码1qaz.oracle,若提示密码不够安全,点击yes即可
选择用户组
选择安装路径
选择inventory目录,默认即可
开始检查系统环境是否满足
提示以下条件不满足,这两个错误可以忽略
确认无误开始安装
安装完毕按提示在两个节点分别以root用户执行脚本
安装完毕后在检验cluster状态时报错,这是因为我们没有配置DNS服务器来分配VIP和SCANip,而是通过手动分配,该错误可以忽略,至此cluster软件安装完毕
3.2 安装database软件(BXDB1上)
- 以 grid 用户运行安装程序
# xhost +
# 解压安装软件
# su – grid
$ export DISPLAY=客户机ip:0.0
$ ./runInstaller
不要选择接收安全补丁信息,若出现提示选yes即可
跳过软件更新
选择只安装数据库软件
选择集群模式安装
点击ssh connectivity配置用户等效性
添加中文语言
选择安装企业版
选择安装目录,由于根目录属于grid用户,因此在两个节点都手动建好该目录,并将权限和属组赋给oracle用户
mkdir -p /oracle/app/oracle
chown oracle:oinstall /oracle/app/oracle
选择安装软件组
检查系统环境是否满足安装要求
以下错误可以忽略
检查无误开始安装
安装完毕,按提示以root用户在两个节点执行脚本即可
执行相应脚本完成安装
3.3 创建数据库
- 以 grid 用户建立ASM磁盘组
# xhost +
# su – grid
$ export DISPLAY=客户机ip:0.0
$ asmca
按照下图建立磁盘组,其中CRS是在安装CRS软件时已经建立的
- 以 oracle 用户建立集群数据库
# xhost +
# su – oracle
$ export DISPLAY=客户机ip:0.0
$ dbca
选择集群数据库
选择建立数据库
选择自定义数据库
根据实际情况输入数据库名,勾选所有节点
选择配置EM
为用户配置密码,这里密码全部为1qaz.oracle,若提示密码不够安全,点击yes即可
选择数据文件存储方式,选择ASM,并填入之前建好的磁盘组名,会要求输入ASMSNMP密码,输入1qaz.oracle即可
配置快速恢复区,选择之前建好的ASM磁盘组,填入大小,这里是900g,勾选激活归档
去除不必要的组件
配置内存大小,勾选自动内存管理,该值可以在建完库后根据实际情况修改
配置块大小和连接数
配置字符集,选择AL32UTF8
按照默认选择专有模式即可
配置数据文件,每个节点分配4组,将redo大小改为512M
确认无误开始建库
开始建库
至此数据库安装完毕
4 常用维护命令
4.1 启动和关闭集群
(1) 启动集群件和集群数据库
集群系统默认是自动启动的,手工启动集群件的命令是:
-bash-3.00# cd /u01/app/11.2.0/grid/bin (root用户)
-bash-3.00# ./crsctl start cluster
也可以以下命令(在11.2版本中不建议使用),以grid用户执行
-bash-3.00# su - grid
-bash-3.00$ crs_start -all
启动集群数据库
-bash-3.00$ su - oracle
-bash-3.00$ srvctl start database -d racdb (启动全部实例节点)
-bash-3.00$ srvctl start instance -d racdb -n racdb1 (节点1上启动数据库实例)
-bash-3.00$ srvctl start instance -d racdb -n racdb2 (节点2上启动数据库实例)
(2) 关闭RAC集群数据库和集群件
先关闭集群数据库
-bash-3.00$ su - oracle
-bash-3.00$ srvctl stop database -d racdb
再关闭集群件(root用户)
-bash-3.00$ su -
-bash-3.00# cd /u01/app/11.2.0/grid/bin
-bash-3.00# ./crsctl stop cluster
4.2 RAC常用命令
集群系统的维护主要使用srvctl命令就可以完成,我们可以使用帮助命令来查看其使用,在oracle用户下执行 srvctl -help 来查看帮助信息
-bash-3.00# su - oracle
-bash-3.00$ srvctl -help
Usage: srvctl