Linux平台安装Oracle11gR2数据库

时间:2023-07-19 17:28:44

1. 数据库安装先决条件

1.1 认证的操作系统检查确认

o RHEL4,OEL4 - update 7 or greater

o RHEL5,OEL5 - 5.2 or greater

o RHEL6,OEL6 - 6.0 or greater

o SLES10 - Kernel 2.6.16.21-0.8 or greater

o SLES11 - Kernel 2.6.27.19-5 or greater

o Asianux Server 3 SP2

NOTE: On RHEL6/OEL6, 11.2.0.3 or later is certified (not 11.2.0.1 or 11.2.0.2)

详情请参考文档:Certification Information for Oracle Database on Linux x86-64 (Doc ID 1304727.2)

1.2 系统硬件和软件环境检查

1) 物理内存至少4G

# grep MemTotal /proc/meminfo

2)swap一般需要和物理内存相当,大于32G则设置32G,不满足需要扩容

# free -g

If RAM between 2 GB and 8 GB then 2 times the size fo RAM.

If RAM between 8 GB to 32 GB then 1.5 times the size of RAM.

If RAM greater than 32 GB then 32 GB

3) Tmp至少1G,不满足需扩容

# df -h

4)建议Oracle软件所需空间至少80G。

lvcreate -L 80G -n lvoraapp rootvg

mkfs.ext4 /dev/mapper/rootvg-lvoraapp

mkdir /oracle

cp /etc/fstab{,_$(date +%Y%m%d)}

echo "/dev/mapper/rootvg-lvoraapp /oracle ext4 defaults 1 2" >> /etc/fstab

mount -a

5) IP 需求

每个节点一个public IP,一个virtual IP,一个private IP;

整个集群需要至少一个SCAN IP;

6)检查数据库版本以及内核,注意RHEL6/OEL6操作系统内核支持11.2.0.3或更高的ORACLE数据库版本,但是不支持11.2.0.1 或者 11.2.0.2(参考文档ID169706.1)

# uname –a

# lsb_release -a

# cat /etc/redhat-release

7) 检查防火墙和selinux是否关闭

# 检查防火墙是否关闭

service iptables status

# 关闭防火墙

chkconfig iptables off

service iptables stop

# 确认防火墙已关闭

service iptables status

chkconfig --list iptables

# 检查selinux是否禁用

# 禁用selinux,配置/etc/sysconfig/selinux,修改SELINUX项为disabled

SELINUX=disabled

# 检查确认,需要重启操作系统生效

grep 'SELINUX=' /etc/sysconfig/selinux

8)检查依赖的系统软件包

<1> Installed the following packages for Oracle Linux5, RHEL5

binutils-2.17.50.0.6-6.el5 (x86_64)

compat-libstdc++-33-3.2.3-61 (x86_64)

compat-libstdc++-33-3.2.3-61 (i386)

elfutils-libelf-0.125-3.el5 (x86_64)

elfutils-libelf-devel-0.125-3 (x86_64)

elfutils-libelf-devel-static-0.125-3 (x86_64)

gcc-4.1.2-42.el5 (x86_64)

gcc-c++-4.1.2-42.el5 (x86_64)

glibc-2.5-24 (x86_64)

glibc-2.5-24 (i686)

glibc-common-2.5-24 (x86_64)

glibc-devel-2.5-24 (x86_64)

glibc-devel-2.5-24 (i386)

glibc-headers-2.5-24 (x86_64)

ksh-20060214-1.7 (x86_64)

libaio-0.3.106-3.2 (x86_64)

libaio-0.3.106-3.2 (i386)

libaio-devel-0.3.106-3.2 (x86_64)

libaio-devel-0.3.106-3.2 (i386)

libgcc-4.1.2-42.el5 (i386)

libgcc-4.1.2-42.el5 (x86_64)

libstdc++-4.1.2-42.el5 (x86_64)

libstdc++-4.1.2-42.el5 (i386)

libstdc++-devel-4.1.2-42 (x86_64)

make-3.81-3.el5 (x86_64)

kernel-headers-2.6.18-92 (x86_64)

libgomp-4.1.2-42 (x86_64)

sysstat-7.0.2-1 (x86_64)

unixODBC-2.2.14 (x86_64)

unixODBC-2.2.14 (i386)

unixODBC-devel-2.2.14 (x86_64)

unixODBC-devel-2.2.14 (i386)

<2> Installed the following packages for Oracle Linux6, RHEL6

binutils-2.20.51.0.2-5.11.el6 (x86_64)

compat-libcap1-1.10-1 (x86_64)

compat-libstdc++-33-3.2.3-69.el6 (x86_64)

compat-libstdc++-33-3.2.3-69.el6.i686

gcc-4.4.4-13.el6 (x86_64)

gcc-c++-4.4.4-13.el6 (x86_64)

glibc-2.12-1.7.el6 (i686)

glibc-2.12-1.7.el6 (x86_64)

glibc-devel-2.12-1.7.el6 (x86_64)

glibc-devel-2.12-1.7.el6.i686

ksh

libgcc-4.4.4-13.el6 (i686)

libgcc-4.4.4-13.el6 (x86_64)

libstdc++-4.4.4-13.el6 (x86_64)

libstdc++-4.4.4-13.el6.i686

libstdc++-devel-4.4.4-13.el6 (x86_64)

libstdc++-devel-4.4.4-13.el6.i686

libaio-0.3.107-10.el6 (x86_64)

libaio-0.3.107-10.el6.i686

libaio-devel-0.3.107-10.el6 (x86_64)

libaio-devel-0.3.107-10.el6.i686

make-3.81-19.el6

sysstat-9.0.4-11.el6 (x86_64)

unixODBC-2.2.14-11.el6 (x86_64) or later

unixODBC-2.2.14-11.el6.i686 or later

unixODBC-devel-2.2.14-11.el6 (x86_64) or later

unixODBC-devel-2.2.14-11.el6.i686 or later

cpp-4.4.4-13.el6(x86_64)

glibc-headers-2.12-1.7.el6(x86_64)

mpfr.x86_64 0:2.4.1-6.el6(x86_64)

<3> Installed the following packages for Oracle Linux7, RHEL7

binutils-2.23.52.0.1-12.el7.x86_64

compat-libcap1-1.10-3.el7.x86_64

compat-libstdc++-33-3.2.3-71.el7.i686

compat-libstdc++-33-3.2.3-71.el7.x86_64

gcc-4.8.2-3.el7.x86_64

gcc-c++-4.8.2-3.el7.x86_64

glibc-2.17-36.el7.i686

glibc-2.17-36.el7.x86_64

glibc-devel-2.17-36.el7.i686

glibc-devel-2.17-36.el7.x86_64

ksh

libaio-0.3.109-9.el7.i686

libaio-0.3.109-9.el7.x86_64

libaio-devel-0.3.109-9.el7.i686

libaio-devel-0.3.109-9.el7.x86_64

libgcc-4.8.2-3.el7.i686

libgcc-4.8.2-3.el7.x86_64

libstdc++-4.8.2-3.el7.i686

libstdc++-4.8.2-3.el7.x86_64

libstdc++-devel-4.8.2-3.el7.i686

libstdc++-devel-4.8.2-3.el7.x86_64

libXi-1.7.2-1.el7.i686

libXi-1.7.2-1.el7.x86_64

libXtst-1.2.2-1.el7.i686

libXtst-1.2.2-1.el7.x86_64

make-3.82-19.el7.x86_64

sysstat-10.1.5-1.el7.x86_64

unixODBC-2.3.1-6.el7.x86_64 or later

unixODBC-2.3.1-6.el7.i686 or later

unixODBC-devel-2.3.1-6.el7.x86_64 or later

unixODBC-devel-2.3.1-6.el7.i686 or later

cpp-4.8.2-16.el7.x86_64

glibc-headers-2.17-55.el7.x86_64

mpfr-3.1.1-4.el7.x86_64

-- 将上面软件包写入到/tmp/pkg.info文件

OLDIFS=${IFS}

IFS=$'\n'

for i in $(cat /tmp/pkg.info); do

if [[ "$(uname -r)" =~ "2.6.18" ]]; then

a=${i%-*};

[[ "${i}" =~ "(32" ]] && a=$a.i686

else

a=${i%-*};

a=${a%-*};

[[ "${i}" =~ "i686" ]] && a=$a.i686

fi

rpm -q $a

[[ "$?" = "0" ]] || yum -y install $a

done

IFS=${OLDIFS}

# 检查软件包

-- linux5

rpm -q --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" binutils compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc-2.5 glibc-2.5.i686 glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel make sysstat unixODBC.i686 unixODBC-devel unixODBC

-- linux6

rpm -q --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat elfutils-libelf-devel elfutils-libelf unixODBC unixODBC-devel smartmontools pdksh compat-libstdc++-33.i686 glibc.i686 glibc-devel.i686  libgcc.i686 libstdc++.i686 libstdc++-devel.i686 libaio.i686 libaio-devel.i686 unixODBC.i686 unixODBC-devel.i686

-- linux7

rpm -q --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" binutils compat-libcap1 compat-libstdc++-33.i686 compat-libstdc++-33 gcc gcc-c++ glibc.i686 glibc glibc-devel.i686 glibc-devel ksh libaio.i686 libaio libaio-devel.i686 libaio-devel libgcc.i686 libgcc libstdc++.i686 libstdc++ libstdc++-devel.i686 libstdc++-devel libXi.i686 libXi libXtst.i686 libXtst make sysstat unixODBC unixODBC.i686 unixODBC-devel unixODBC-devel.i686

# 安装软件包

-- linux5

yum install -y binutils compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc-2.5 glibc-2.5.i686 glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel make sysstat unixODBC.i686 unixODBC-devel unixODBC

-- linux6

yum install -y binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat elfutils-libelf-devel elfutils-libelf unixODBC unixODBC-devel smartmontools pdksh compat-libstdc++-33.i686 glibc.i686 glibc-devel.i686  libgcc.i686 libstdc++.i686 libstdc++-devel.i686 libaio.i686 libaio-devel.i686 unixODBC.i686 unixODBC-devel.i686

-- linux7

yum install -y binutils compat-libcap1 compat-libstdc++-33.i686 compat-libstdc++-33 gcc gcc-c++ glibc.i686 glibc glibc-devel.i686 glibc-devel ksh libaio.i686 libaio libaio-devel.i686 libaio-devel libgcc.i686 libgcc libstdc++.i686 libstdc++ libstdc++-devel.i686 libstdc++-devel libXi.i686 libXi libXtst.i686 libXtst make sysstat unixODBC unixODBC.i686 unixODBC-devel unixODBC-devel.i686

1.3 修改/etc/hosts文件

注1:hostname不允许使用下划线_,建议统一使用小写字母和数字组合,否则安装过程可能会报错。

cp /etc/hosts{,_$(date +%Y%m%d)}

cat >> /etc/hosts <EOF

127.0.0.1 loopback localhost

::1 loopback localhost

# Public Network - (bond0)

192.168.8.145 orcl1

192.168.8.146 orcl2

# Private Interconnect - (bond1)

192.168.168.145 orcl1-priv

192.168.168.146 orcl2-priv

# Public Virtual IP (VIP) addresses - (bond0:X)

192.168.8.147 orcl1-vip

192.168.8.148 orcl2-vip

# SCAN IP - (bond0:X)

192.168.8.149 orcl-scan

EOF

1.4 创建用户和组并赋予权限

# 创建用户组:

/usr/sbin/groupadd -g 1000 oinstall

/usr/sbin/groupadd -g 1031 dba

/usr/sbin/groupadd -g 1032 oper

/usr/sbin/groupadd -g 1020 asmadmin

/usr/sbin/groupadd -g 1021 asmdba

/usr/sbin/groupadd -g 1022 asmoper

# 创建用户:

useradd -u 1100 -g oinstall -G asmadmin,asmdba,asmoper,dba -m -d /home/grid -c "Grid Infrastructure Owner" grid

useradd -u 1101 -g oinstall -G dba,asmdba,oper -m -d /home/oracle -c "Oracle Software Owner" oracle

# 修改用户密码

echo "p#ssw0rd"|passwd --stdin oracle

echo "p#ssw0rd"|passwd --stdin grid

# su测试一下密码是否修改成功

# 检查确认

id oracle

id grid

1.5 配置/etc/pam.d/login

# 添加如下配置,使得/etc/pam.d/login中的限制资源参数生效

session required pam_limits.so

cp -p /etc/pam.d/login{,_$(date +%Y%m%d)}

cat >> /etc/pam.d/login << EOF

session required pam_limits.so

EOF

1.6 配置/etc/security/limits.conf

cp -p /etc/security/limits.conf{,_$(date +%Y%m%d)}

cat >> /etc/security/limits.conf << EOF

# modify for oracle

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 4096

oracle hard nofile 65536

oracle soft stack 10240

oracle hard stack 32768

# modify for grid

grid soft nproc 2047

grid hard nproc 16384

grid soft nofile 4096

grid hard nofile 65536

grid soft stack 10240

grid hard stack 32768

oracle soft memlock 1000000

oracle hard memlock 1000000

grid soft memlock 1000000

grid hard memlock 1000000

EOF

# 说明

soft nofile: 可打开的文件描述符的最大数(软限制)

hard nofile:可打开的文件描述符的最大数(硬限制)

soft nproc:单个用户可用的最大进程数量(软限制)

hard nproc:单个用户可用的最大进程数量(硬限制)

# 检查确认oracle用户的配置是否生效

su – oracle

$ ulimit –a

1.7 配置/etc/profile

cp -p /etc/profile{,$(date +%Y%m%d)}

cat >> /etc/profile <<EOF

if [ \$USER = "oracle" ] || [ \$USER = "grid" ]; then

if [ \$SHELL = "/bin/ksh" ]; then

ulimit -p 16384

ulimit -n 65536

else

ulimit -u 16384 -n 65536

fi

umask 022

fi

EOF

1.8 配置grid、oracle用户环境变量

su - grid

cat << EOF >> ${HOME}/.bash_profile

# GI user environments

export ORACLE_SID=+ASM1

export ORACLE_BASE=/apps/oracle/grid

export ORACLE_HOME=/apps/oracle/11.2.0/grid

export PATH=\${PATH}:\${ORACLE_HOME}/bin:\${ORACLE_HOME}/OPatch

umask 022

EOF

exit

su - oracle

cat << EOF >> ${HOME}/.bash_profile

# DB user environments

export ORACLE_SID=orcl1

export ORACLE_BASE=/apps/oracle/database

export ORACLE_HOME=\${ORACLE_BASE}/11.2/db_1

export GI_HOME=/apps/oracle/11.2.0/grid

export LD_LIBRARY_PATH=\${ORACLE_HOME}/lib

export PATH=\${ORACLE_HOME}/bin:\${ORACLE_HOME}/OPatch:\${GI_HOME}/bin:\${HOME}/dba:\$PATH

export TNS_ADMIN=\${GI_HOME}/network/admin

umask 022

EOF

1.9 创建软件安装目录

#创建目录

mkdir -p /apps/oracle/grid

mkdir -p /apps/oracle/11.2.0/grid

mkdir -p /apps/oracle/oraInventory

chown -R grid:oinstall /apps/oracle

mkdir -p /apps/oracle/database

mkdir -p /apps/oracle/database/11.2/db_1

chown oracle:oinstall /apps/oracle/database

chmod -R 775 /apps/oracle

#检查目录属性,确认修改是否正确

ls -ltrd /apps/oracle/grid /apps/oracle/11.2.0/grid /apps/oracle/database

1.10 配置/etc/sysctl.conf

cp -p /etc/sysctl.conf{,_$(date +%Y%m%d)}

MEMTOTAL=$(free -b | sed -n '2p' | awk '{print $2}')

SHMMAX=$(expr $MEMTOTAL / 2)

SHMMNI=4096

PAGESIZE=$(getconf PAGE_SIZE)

cat >> /etc/sysctl.conf << EOF

# -- The number of asynchronous IO requests at the same time(as per Note 579108.1),for example 1048576 = 1024 * 1024

fs.aio-max-nr = 3145728

# -- 512 * processes (for example 6815744 for 13312 processes)

fs.file-max = 6815744

kernel.shmmax = $SHMMAX

kernel.shmall = $(expr \( $SHMMAX / $PAGESIZE \) \* \( $SHMMNI / 16 \))

kernel.shmmni = $SHMMNI

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048576

vm.min_free_kbytes=51200

EOF

1.11 配置ntp服务

# 查看当前时区

cat /etc/sysconfig/clock

# 添加ntp服务器,根据实际环境修改服务地址

vi /etc/ntp.conf

server 127.127.0.1

# 配置ntpd的参数,我们主要强调的是要配置成"微调的模式" 也就是在options中要加入-x的选项

vi /etc/sysconfig/ntpd

OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid"

# 开机启动NTPD服务

chkconfig ntpd on

# 重启服务,使最新配置生效

service ntpd restart

# 检查是否生效

ntpq -p

ps -ef |grep ntp|grep -v grep

# 安装完成后需要使用如下命令确认

$ crsctl check ctss

1.12 配置SSH互信

-- 1)人为配置互相

-- grid用户, 分别生成密钥

#su - grid

grid@rac1:~$ mkdir ~/.ssh

grid@rac1:~$ chmod 700 ~/.ssh

grid@rac1:~$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

grid@rac1:~$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

#su - grid

grid@rac2:~$ mkdir ~/.ssh

grid@rac2:~$ chmod 700 ~/.ssh

grid@rac2:~$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

grid@rac2:~$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

节点一:

-- 将生成的rsa和dsa密钥复制到authorized_keys

$ cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys

-- 将节点2的生成的密钥追加到节点1的authorized_keys中,若有多个节点,依次执行

$ ssh node2 "cat ~/.ssh/*.pub" >> ~/.ssh/authorized_keys

-- 将最终的authorized_keys文件传输到其它所有节点

$ scp ~/.ssh/authorized_keys node2:~/.ssh/authorized_keys

-- 修改文件权限

grid@rac1:~/.ssh$ chmod 600 ~/.ssh/authorized_keys

-- oracle用户参照上面步骤配置

-- 互信验证(oracle,grid)所有节点操作

su - grid

export SSH='ssh -o ConnectTimeout=3 -o ConnectionAttempts=5 -o PasswordAuthentication=no -o StrictHostKeyChecking=no'

$ ${SSH} rac1 date

$ ${SSH} rac1-priv date

$ ${SSH} rac2 date

$ ${SSH} rac2-priv date

2)oralce11g可以在安装时进行自动配置ssh,第一次设置,点击“Setup”,设置成功后点击“Test”,成功后需两边节点测试验证互信。

1.13 配置HOTPLUG(Network interface going down when dynamically adding disks to storage using udev in RHEL 6 (Doc ID 1569028.1))

添加HOTPLUG="no"配置到/etc/sysconfig/network-scripts目录下的ifcfg-ethX文件,防止start_udev命令关闭网卡导致VIP漂移或连接异常。

注意确认配置是否生效,可在安装完数据库之后执行start_udev命令确认。

1.14 共享存储配置(RAC环境需要)

--存储规划建议

Ø ocr voting:3个2G的lun,ASM对应划分1个normal的dg

Ø 控制文件:3个2G的lun,ASM对应划分3个dg

Ø redo:2个64G的lun(建议raid 1+0,尽量不用raid5),ASM对应划分2个dg

Ø 数据文件:最多500G 1个lun,ASM对应划分1个dg,注意单个dg不超过10T

-- multipath

chkconfig multipathd on

service multipathd restart

#设置磁盘属性:

#配置/etc/udev/rules.d/12-dm-permissions.rules参数文件

ENV{DM_NAME}=="ocr1", OWNER:="grid", GROUP:="asmadmin", MODE:="640", SYMLINK+="mapper/$env{DM_NAME}"

ENV{DM_NAME}=="ocr2", OWNER:="grid", GROUP:="asmadmin", MODE:="640", SYMLINK+="mapper/$env{DM_NAME}"

ENV{DM_NAME}=="ocr3", OWNER:="grid", GROUP:="asmadmin", MODE:="640", SYMLINK+="mapper/$env{DM_NAME}"

ENV{DM_NAME}=="ctl1", OWNER:="grid", GROUP:="asmadmin", MODE:="660", SYMLINK+="mapper/$env{DM_NAME}"

ENV{DM_NAME}=="ctl2", OWNER:="grid", GROUP:="asmadmin", MODE:="660", SYMLINK+="mapper/$env{DM_NAME}"

ENV{DM_NAME}=="ctl3", OWNER:="grid", GROUP:="asmadmin", MODE:="660", SYMLINK+="mapper/$env{DM_NAME}"

ENV{DM_NAME}=="redo1", OWNER:="grid", GROUP:="asmadmin", MODE:="660", SYMLINK+="mapper/$env{DM_NAME}"

ENV{DM_NAME}=="redo2", OWNER:="grid", GROUP:="asmadmin", MODE:="660", SYMLINK+="mapper/$env{DM_NAME}"

ENV{DM_NAME}=="data1", OWNER:="grid", GROUP:="asmadmin", MODE:="660", SYMLINK+="mapper/$env{DM_NAME}"

ENV{DM_NAME}=="data2", OWNER:="grid", GROUP:="asmadmin", MODE:="660", SYMLINK+="mapper/$env{DM_NAME}"

# 重启udev服务并检查磁盘权限属性

start_udev

ll /dev/mapper/

ll /dev/dm*

--共享存储使用RAW方式

vi /etc/udev/rules.d/60-raw.rules

ACTION=="add", KERNEL=="emcpowerg", RUN+="/bin/raw /dev/raw/raw1 %N"

ACTION=="add", KERNEL=="emcpowerh", RUN+="/bin/raw /dev/raw/raw2 %N"

ACTION=="add", KERNEL=="emcpoweri", RUN+="/bin/raw /dev/raw/raw3 %N"

ACTION=="add", KERNEL=="emcpowere", RUN+="/bin/raw /dev/raw/raw4 %N"

ACTION=="add", KERNEL=="emcpowerf", RUN+="/bin/raw /dev/raw/raw5 %N"

RUN+="/bin/sleep 1"

KERNEL=="raw[1-3]*", OWNER="grid", GROUP="asmadmin", MODE="660"

KERNEL=="raw[4-5]*", OWNER="oracle", GROUP="oinstall", MODE="660"

2. 安装Oracle数据库

2.1 预检查

su - grid

unzip -qo p13390677_112040_Linux-x86-64_3of7.zip

./runcluvfy.sh stage -pre crsinst -n node1,node2 -fixup -verbose

2.2 图形界面安装GI软件

以grid用户登录,进入到安装文件解压目录

./runInstaller

…….

-- 用root用户,分别在两个节点执行以下脚本

/oracle/app/oraInventory/orainstRoot.sh

/oracle/app/11.2.0/grid/root.sh

2.3 检查集群状态

gsd为OFFLINE状态正常,配置ntp服务则ora.ctssd为OBSERVER的状态

# su - grid

$ crsctl status res -t -init

$ crsctl status res -t

2.4 创建ASM磁盘组

su – grid

$ asmca

2.5 图形界面安装RDBMS 软件

注意事项:两个DB的安装包需解压在同个目录下。

unzip -qo p13390677_112040_Linux-x86-64_1of7.zip

unzip -qo p13390677_112040_Linux-x86-64_2of7.zip

cd database

./runInstaller

……

--双节点root用户运行脚本

/oracle/app/oracle/product/11.2.0/dbhome_1/root.sh

2.6 dbca建库

cd ${ORACLE_HOME}/bin

./dbca

完成建库后,检查数据库所有资源状态:

su - grid

crsctl status res –t

3. 静默安装

3.1 预检查

su - grid

cd grid

./runcluvfy.sh stage -pre crsinst -n node1,node2 -fixup -verbose

3.2 静默安装GI软件

注意:粗体部分根据实际环境进行相应的修改

su - grid

#配置响应文件/home/grid/grid.rsp

cat > ${HOME}/grid_install.rsp << EOF

oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v11_2_0

SELECTED_LANGUAGES=en,zh_CN

oracle.install.option=CRS_CONFIG

oracle.install.asm.OSDBA=asmdba

oracle.install.asm.OSOPER=asmoper

oracle.install.asm.OSASM=asmadmin

oracle.install.crs.config.gpnp.configureGNS=false

oracle.install.crs.config.gpnp.gnsSubDomain=

oracle.install.crs.config.gpnp.gnsVIPAddress=

oracle.install.crs.config.autoConfigureClusterNodeVIP=

oracle.install.crs.config.storageOption=ASM_STORAGE

oracle.install.crs.config.sharedFileSystemStorage.diskDriveMapping=

oracle.install.crs.config.sharedFileSystemStorage.votingDiskLocations=

oracle.install.crs.config.sharedFileSystemStorage.votingDiskRedundancy=NORMAL

oracle.install.crs.config.sharedFileSystemStorage.ocrLocations=

oracle.install.crs.config.sharedFileSystemStorage.ocrRedundancy=NORMAL

oracle.install.crs.config.useIPMI=false

oracle.install.crs.config.ipmi.bmcUsername=

oracle.install.crs.config.ipmi.bmcPassword=

oracle.install.asm.diskGroup.name=CRSDG

oracle.install.asm.diskGroup.redundancy=NORMAL

oracle.install.asm.diskGroup.AUSize=1

oracle.install.crs.upgrade.clusterNodes=

oracle.install.asm.upgradeASM=false

oracle.installer.autoupdates.option=SKIP_UPDATES

oracle.installer.autoupdates.downloadUpdatesLoc=

AUTOUPDATES_MYORACLESUPPORT_USERNAME=

AUTOUPDATES_MYORACLESUPPORT_PASSWORD=

PROXY_HOST=

PROXY_PORT=

PROXY_USER=

PROXY_PWD=

PROXY_REALM=

INVENTORY_LOCATION=/apps/oracle/oraInventory

ORACLE_HOME=/apps/oracle/11.2.0/grid

ORACLE_BASE=/apps/oracle/grid

ORACLE_HOSTNAME=node1

oracle.install.crs.config.gpnp.scanName=ora11g-scan

oracle.install.crs.config.gpnp.scanPort=1522

oracle.install.crs.config.clusterName=ora11g-cluster

oracle.install.crs.config.clusterNodes=node1:node1-vip,node2:node2-vip

oracle.install.crs.config.networkInterfaceList=eth0:192.168.10.0:1,eth1:172.168.0.0:2

oracle.install.asm.SYSASMPassword=oracle

oracle.install.asm.diskGroup.disks=/dev/mapper/asm_crs1,/dev/mapper/asm_crs2,/dev/mapper/asm_crs3

oracle.install.asm.monitorPassword=oracle

oracle.install.asm.diskGroup.diskDiscoveryString=/dev/mapper/asm*

EOF

cd /apps/soft/grid

./runInstaller -ignorePrereq -silent -responseFile ${HOME}/grid_install.rsp

#执行正常类似输出如下

Starting Oracle Universal Installer...

Checking Temp space: must be greater than 120 MB. Actual 1632 MB Passed

Checking swap space: must be greater than 150 MB. Actual 4095 MB Passed

Preparing to launch Oracle Universal Installer from /tmp/OraInstall2017-06-20_08-47-01AM. Please wait ...[grid@node1 grid]$

You can find the log of this install session at:

/apps/oracle/oraInventory/logs/installActions2017-06-20_08-47-01AM.log

The installation of Oracle Grid Infrastructure 11g was successful.

Please check '/apps/oracle/oraInventory/logs/silentInstall2017-06-20_08-47-01AM.log' for more details.

As a root user, execute the following script(s):

1. /apps/oracle/oraInventory/orainstRoot.sh

2. /apps/oracle/11.2.0/grid/root.sh

Execute /apps/oracle/oraInventory/orainstRoot.sh on the following nodes:

[node1, node2]

Execute /apps/oracle/11.2.0/grid/root.sh on the following nodes:

[node1, node2]

As install user, execute the following script to complete the configuration.

1. /apps/oracle/11.2.0/grid/cfgtoollogs/configToolAllCommands RESPONSE_FILE=<response_file>

Note:

1. This script must be run on the same host from where installer was run.

2. This script needs a small password properties file for configuration assistants that require passwords (refer to install guide documentation).

Successfully Setup Software.

--创建相应文件

cat > ${HOME}/pwdrsp.properties << EOF

oracle.assistants.asm|S_ASMPASSWORD=oracle

oracle.assistants.asm|S_ASMMONITORPASSWORD=oracle

EOF

-- # on the install node host

su - grid

cd /apps/oracle/11.2.0/grid/cfgtoollogs

./configToolAllCommands RESPONSE_FILE=${HOME}/pwdrsp.properties

-- 正常输出如下

Setting the invPtrLoc to /apps/oracle/11.2.0/grid/oraInst.loc

perform - mode is starting for action: configure

Jun 20, 2017 9:33:41 AM oracle.install.driver.oui.config.GenericInternalPlugIn invoke

INFO: Executing ASMCA

Jun 20, 2017 9:33:41 AM oracle.install.driver.oui.config.GenericInternalPlugIn invoke

INFO: Command /apps/oracle/11.2.0/grid/bin/asmca -silent -postConfigureASM -oui_internal

Jun 20, 2017 9:33:41 AM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess

INFO: ... GenericInternalPlugIn.handleProcess() entered.

Jun 20, 2017 9:33:41 AM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess

INFO: ... GenericInternalPlugIn: getting configAssistantParmas.

Jun 20, 2017 9:33:41 AM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess

INFO: ... GenericInternalPlugIn: checking secretArguments.

Jun 20, 2017 9:33:41 AM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess

INFO: ... GenericInternalPlugIn: starting read loop.

Jun 20, 2017 9:33:45 AM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess

INFO: Read: SYS_PASSWORD_PROMPT

Jun 20, 2017 9:33:45 AM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess

INFO: Processing: SYS_PASSWORD_PROMPT for argument tag -sysAsmPassword

Jun 20, 2017 9:33:45 AM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess

INFO: Read: ASMSNMP_PASSWORD_PROMPT

Jun 20, 2017 9:33:45 AM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess

INFO: Processing: ASMSNMP_PASSWORD_PROMPT for argument tag -asmMonitorPassword

Jun 20, 2017 9:33:45 AM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess

INFO: End of argument passing to stdin

Jun 20, 2017 9:33:46 AM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess

INFO: Read:

Jun 20, 2017 9:33:46 AM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess

INFO: Read: PostConfiguration completed successfully

Jun 20, 2017 9:33:46 AM oracle.install.driver.oui.config.GenericInternalPlugIn handleProcess

INFO: Read:

perform - mode finished for action: configure

You can see the log file: /apps/oracle/11.2.0/grid/cfgtoollogs/oui/configActions2017-06-20_09-32-40-AM.log

[grid@node1 cfgtoollogs]$

3.3 检查集群状态

# su  - grid

$ crsctl stat res -t -init

3.4 静默安装RDBMS 软件

注意一下,我们在图形方式安装的时候只要创建ORACLE_BASE目录即可,家目录会自动创建,但静默方式不可以

su - oracle

#编辑配置响应文件db.rsp

su - oracle

cat > ${HOME}/db_install.rsp << EOF

oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0

oracle.install.option=INSTALL_DB_SWONLY

UNIX_GROUP_NAME=oinstall

SELECTED_LANGUAGES=en,zh_CN

oracle.install.db.InstallEdition=EE

oracle.install.db.EEOptionsSelection=false

oracle.install.db.optionalComponents=oracle.rdbms.partitioning:11.2.0.4.0,oracle.oraolap:11.2.0.4.0,oracle.rdbms.dm:11.2.0.4.0,oracle.rdbms.dv:11.2.0.4.0,oracle.rdbms.lbac:11.2.0.4.0,oracle.rdbms.rat:11.2.0.4.0

oracle.install.db.DBA_GROUP=dba

oracle.install.db.OPER_GROUP=oper

oracle.install.db.isRACOneInstall=

oracle.install.db.racOneServiceName=

oracle.install.db.config.starterdb.memoryOption=true

oracle.install.db.config.starterdb.installExampleSchemas=false

oracle.install.db.config.starterdb.enableSecuritySettings=true

oracle.install.db.config.starterdb.password.SYS=

oracle.install.db.config.starterdb.password.SYSTEM=

oracle.install.db.config.starterdb.password.SYSMAN=

oracle.install.db.config.starterdb.password.DBSNMP=

oracle.install.db.config.starterdb.control=DB_CONTROL

oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL=

oracle.install.db.config.starterdb.automatedBackup.enable=false

oracle.install.db.config.starterdb.automatedBackup.osuid=

oracle.install.db.config.starterdb.automatedBackup.ospwd=

oracle.install.db.config.starterdb.storageType=ASM_STORAGE

oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=

oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=

MYORACLESUPPORT_USERNAME=

MYORACLESUPPORT_PASSWORD=

SECURITY_UPDATES_VIA_MYORACLESUPPORT=

DECLINE_SECURITY_UPDATES=true

PROXY_HOST=

PROXY_PORT=

PROXY_USER=

PROXY_PWD=

PROXY_REALM=

COLLECTOR_SUPPORTHUB_URL=

oracle.installer.autoupdates.option=SKIP_UPDATES

oracle.installer.autoupdates.downloadUpdatesLoc=

AUTOUPDATES_MYORACLESUPPORT_USERNAME=

AUTOUPDATES_MYORACLESUPPORT_PASSWORD=

INVENTORY_LOCATION=/apps/oracle/oraInventory

ORACLE_HOME=/apps/oracle/database/11.2/db_1

ORACLE_BASE=/apps/oracle/database

ORACLE_HOSTNAME=node1

oracle.install.db.CLUSTER_NODES=node1,node2

oracle.install.db.config.starterdb.type=GENERAL_PURPOSE

oracle.install.db.config.starterdb.globalDBName=orcl

oracle.install.db.config.starterdb.SID=orcl

oracle.install.db.config.starterdb.characterSet=ZHS16GBK

oracle.install.db.config.starterdb.memoryLimit=800

oracle.install.db.config.starterdb.password.ALL=oracle

oracle.install.db.config.asm.diskGroup=DATADG

oracle.install.db.config.asm.ASMSNMPPassword=oracle

EOF

#执行静默安装

su - oracle

cd /apps/soft/database/

./runInstaller -ignorePrereq -silent -responseFile ${HOME}/db_install.rsp

-- 正常输出如下

Starting Oracle Universal Installer...

Checking Temp space: must be greater than 120 MB. Actual 22404 MB Passed

Checking swap space: must be greater than 150 MB. Actual 2970 MB Passed

Preparing to launch Oracle Universal Installer from /tmp/OraInstall2016-04-23_02-36-18PM. Please wait ...[oracle@dciscdb1 ~]$ You can find the log of this install session at:

/oracle/app/oraInventory/logs/installActions2016-04-23_02-36-18PM.log

--安装过程10-30分钟

As a root user, execute the following script(s):

1. /oracle/app/oracle/product/11.2.0/db_1/root.sh

-- 分别在所有节点上执行root.sh脚本

# /oracle/app/oracle/product/11.2.0/db_1/root.sh

3.5 静默DBCA建库

先使用asmca创建ASM卷组,再使用dbca创建数据库

#创建DATA卷

su - grid

$ asmca -silent -createDiskGroup -diskString '/dev/raw/*' -diskGroupName DATA -disk '/dev/raw/raw2' -redundancy EXTERNAL

Disk Group DATA created successfully.

su – oracle

[oracle@node1 ~]$ cat ~/dbca.rsp

[GENERAL]

RESPONSEFILE_VERSION = "11.2.0"

OPERATION_TYPE = "createDatabase"

[CREATEDATABASE]

GDBNAME = "orcl"

SID = "orcl"

TEMPLATENAME = "General_Purpose.dbc"

STORAGETYPE=ASM

DISKGROUPNAME=DATADG

NODELIST=node1,node2

CHARACTERSET = "ZHS16GBK"

NATIONALCHARACTERSET = "AL16UTF16"

DATABASETYPE = "OLTP"

SYSPASSWORD = "oracle"

SYSTEMPASSWORD = "oracle"

ASMSNMP_PASSWORD = "oracle"

[oracle@node1 ~]$

dbca -silent -responseFile ${HOME}/dbca.rsp

-- 检查数据库状态

su – grid

crsctl status res –t –init

crsctl status res -t