安装rac1
1、 新建虚拟机
ISO:CentOS-6.5-x86_64-bin-DVD1/2.iso
p10404530_112030_Linux-x86-64_1of7
p10404530_112030_Linux-x86-64_2of7
p10404530_112030_Linux-x86-64_3of7
虚拟机磁盘类型:VIRTIO
磁盘存储池:data
磁盘大小:100
磁盘格式:qemu
CPU核数:4
内存:4096
网卡类型:VIRTIO
网卡数:2
2、 安装操作系统
定制包:基本系统、开发、系统管理、桌面
其中需要注意的几个步骤:
选时区那一步不勾选网络时间同步,
设置主机名哪一步,网卡的自动连接要勾选、DNS如果设置了后期要关闭NetworkManager
关闭selinux和iptables和NetworkManager /usr/sbin/setenforce 0 立刻关闭 SELINUX
设置系统时间为正确时间
进度条100%进入黑屏 (启动)了就可以拔掉光盘了。拔掉光盘后的重启后的一些初始化设置:不勾选网络时间同步,而是手动填写正确时间。不勾选kdump。
3、配置网络(真实网卡)
(使用xstart远程连接到centOS(ssh协议)
使用xftp进行文件传输(sftp协议))
Eth0:(public)
IP:192.168.1.114
NETMASK:255.255.255.0
GATEWAY:192.168.1.1
Eth1:(private)
IP:192.168.1.115
NETMASK:255.255.255.0
关闭linux安全策略:防火墙、selinux
chkconfig iptables off
service iptables stop
chkconfig ip6tables off
service ip6tables stop
chkconfig --list|grep iptables
或者setup
4、 配置主机名/etc/hosts
主机名不可太长,eth0网卡不常用但必须要,虚拟网卡为业务网卡,scan可理解为虚拟网卡的组网卡
配置/etc/hosts文件:
127.0.0.1 localhost
#真实网卡eth0
192.168.1.114 rac1
192.168.1.115 rac2
#virtual
192.168.1.116 rac1-vip
192.168.1.117 rac2-vip
#private真实网卡
192.168.37.114 rac1-priv
192.168.37.115 rac2-priv
#scan
#192.168.1.118 rac-scan
#192.168.1.119 rac-scan
-------------单实例-------------------------------------
127.0.0.1 localhost
本地IP hostname
-------------单实例-------------------------------------
配置3个scanip的话,要用DNS server,hosts里面需用写的。
2个rac scan就要配dns解析,
1个scanip的话写在hosts里把resolve.conf文件重命名掉
SCAN VIP必须与virtual IP 、public IP是在一个网段内
SCAN可以注册最少1个最多3个的IP地址,可以是通过 DNS或GNS解析的。
如果使用/etc/hosts去解析SCAN,在安装集群软件的最后会遇到Cluster Verification Utility失败的错误.
但是这个可以不管,安装时正常结束就行。有官方文章【Note:88747.1】可以解释
安装软件时也会报scan的错(single client access name)
5、安装必要的rpm包
oracle linux:
yum -y install oracle-rdbms-server-11gR2-preinstall.x86_64
或yum install oracle-validated
检查缺哪些包
命令语法:
rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' binutils \
compat-libstdc++-33 \
elfutils-libelf \
elfutils-libelf-devel \
gcc \
gcc-c++ \
glibc \
glibc-common \
glibc-devel \
glibc-headers \
ksh \
libaio \
libaio-devel \
libgcc \
libstdc++ \
libstdc++-devel \
make \
sysstat \
unixODBC \
unixODBC-devel |grep 'not install'
配置本地yum源:
mount /dev/cdrom /mnt/cdrom
mount /dev/cdrom1 /mnt/cdrom1
(mount -t iso9660 -o loop xxx.iso /some/path )(.iso文件的格式是iso9660,iso9660是cd上的一种文件系统)
cd /etc/yum.repos.d
mv CentOS-Base.repo CentOS-Base.repo.bak
vi CentOS-Media.repo
baseurl=file:///mnt/cdrom
file:///mnt/cdrom1
gpgcheck=0
enabled=1
yum clean metadata
yum clean all
yum makecache
6、修改操作系统内核参数
配置/etc/sysctl.conf:加入或修改
(加#注释的行是配置文件里本来已经有的,不需要加了)
#net.ipv4.ip_forward = 0
#net.ipv4.conf.default.rp_filter = 1
#net.ipv4.conf.default.accept_source_route = 0
#kernel.sysrq = 0
#kernel.core_uses_pid = 1
#net.ipv4.tcp_syncookies = 1
#kernel.msgmnb = 65536
#kernel.msgmax = 65536
kernel.shmmax = 4294967295
kernel.shmall = 268435456
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 6815744
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
fs.aio-max-nr = 1048576
//写在这里面的要byte单位,free查出是K单位。free*1024/2
#/sbin/sysctl -p,出现3行error可忽略
(sysctl -p)
-------------单实例-------------------------------------
#net.ipv4.ip_forward = 0
#net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.rp_filter = 2
#net.ipv4.conf.default.accept_source_route = 0
#kernel.core_uses_pid = 1
#net.ipv4.tcp_syncookies = 1
fs.file-max = 6815744
kernel.msgmni = 2878
#kernel.msgmax = 8192
#kernel.msgmnb = 65536
kernel.sem = 250 32000 100 142
kernel.shmmni = 4096
#kernel.shmall = 1073741824
#kernel.shmmax = 8388608000
#kernel.sysrq = 0
kernel.sysrq = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.aio-max-nr = 3145728
net.ipv4.ip_local_port_range = 9000 65500
#kernel.shmmax = 12000000000 #物理内在一半
-------------单实例-------------------------------------
(增加shell限制)配置/etc/security/limits.conf:加入
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
grid soft nofile 1024
grid hard nofile 65536
grid soft nproc 2047
grid hard nproc 16384
grid soft stack 10240
grid hard stack 32768
-------------单实例-------------------------------------
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
-------------单实例-------------------------------------
(登录参数调整)/etc/pam.d/login
文件中加入如下内容
session required pam_limits.so
要使 limits.conf 文件配置生效,必须要确保 pam_limits.so 文件被加入到启动文件中
/etc/profile
文件中加入如下内容
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
-------------单实例-------------------------------------
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
-------------单实例-------------------------------------
对于 C shell(csh 或 tcsh),通过运行以下命令将以下行添加到 /etc/csh.login 文件:
if ( /$USER == "oracle" || /$USER == "grid" ) then
limit maxproc 16384
limit descriptors 65536
endif
7、配置os用户和组
创建grid用户
groupadd -g 1000 oinstall
groupadd -g 1200 asmadmin
groupadd -g 1201 asmdba
groupadd -g 1202 asmoper
useradd -m -u 1100 -g oinstall -G asmadmin,asmdba,asmoper -d /home/grid -s /bin/bash -c "Grid Infrastructure Owner" grid
# id grid
设置grid用户密码,配置SSH时需要
#passwd grid
echo "grid" | passwd --stdin grid
# id nobody
uid=99(nobody) gid=99(nobody) groups=99(nobody)
创建oracle用户
groupadd -g 1300 dba
groupadd -g 1301 oper
useradd -m -u 1101 -g oinstall -G dba,oper,asmdba -d /home/oracle -s /bin/bash -c "Oracle Software Owner" oracle
id oracle
设置oracle用户密码,配置ssh 时要用
#passwd oracle
echo "oracle" | passwd --stdin oracle
# id nobody
uid=99(nobody) gid=99(nobody) groups=99(nobody)
-------------单实例-------------------------------------
创建用户组
为oracle配主组和附属组
groupadd oinstall
groupadd dba
useradd -m -g oinstall -G dba oracle -d home
Usermod是修改,g主组,G附属组
passwd oracle
echo "oracle" | passwd --stdin oracle
-------------单实例-------------------------------------
创建安装目录
mkdir -p /u01/app/grid
mkdir -p /u01/app/11.2.0/grid
chown -R grid:oinstall /u01/
mkdir -p /u01/app/oracle
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01
-------------单实例-------------------------------------
mkdir -p /u01/app/oracle
mkdir -p /u01/oradata
mkdir -p /u01/flash_recovery_area
(1是oracle base ,home在base下。Home是装数据库软件,base是装oracle相关的软件)
(存放数据库文件)
(闪回区,也是默认的归档区)
chown -R oracle:dba /u01
oracle登陆:
chmod -R 755 /u01文件/目录权限设置命令
-------------单实例-------------------------------------
配置用户环境变量:
-------------单实例-------------------------------------
export PATH
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=PROD
export ORACLE_HOSTNAME=主机名
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORACLE_TERM=xterm
export PATH=/usr/sbin:$PATH
export OPATCH_HOME=$ORACLE_HOME/OPatch
export PATH=$ORACLE_HOME/bin:$PATH:$OPATCH_HOME
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export EDITOR=vi
export LANG=en_US
export NLS_LANG=american_america.AL32UTF8
export NLS_DATE_FORMAT='yyyy/mm/dd hh24:mi:ss'
umask 022
-------------单实例-------------------------------------
$PATH:决定了shell将到哪些目录中寻找命令或程序,PATH的值是一系列目录,当您运行一个程序时,Linux在这些目录下进行搜寻编译链接。
echo $PATH --单独查看PATH环境变量
alias sqlplus=“rlwrap sqlplus”
alias rman=“rlwrap rman”
alias dgmgrl=“rlwrap dgmgrl”
alias bbed=“rlwrap bbed”
alias ggsci=“rlwrap ggsci”
–查看Alert快捷方式:
alias showlog=‘tail -f /u01/app/oracle/diag/rdbms/test/test/trace/alert_test.log’
alias diag=‘cd O R A C L E B A S E / d i a g / r d b m s / ORACLE_BASE/diag/rdbms/ ORACLEBASE/diag/rdbms/ORACLE_UNQNAME/$ORACLE_SID/trace’
alias diag=‘cd O R A C L E B A S E / d i a g / r d b m s / h z y k t d b / ORACLE_BASE/diag/rdbms/hzyktdb/ ORACLEBASE/diag/rdbms/hzyktdb/ORACLE_SID/trace’
安装rlwrap-0.37
tar -xzf rlwrap-0.37.tar.gz
tar -zxvf rlwrap-0.37.tar.gz
cd rlwrap-0.37
./configure
make install
或rpm -ivh rlwrap-0.37-4.3.x86_64.rpm
su - oracle
vi .bash_profile在export path后面加入
ORACLE_SID=test1; export ORACLE_SID #another is test2
ORACLE_UNQNAME=test; export ORACLE_UNQNAME
JAVA_HOME=/usr/local/java; export JAVA_HOME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1; export ORACLE_HOME
ORACLE_PATH=/u01/app/common/oracle/sql; export ORACLE_PATH
ORACLE_TERM=xterm; export ORACLE_TERM
NLS_DATE_FORMAT="DD-MON-YYYY HH24:MI:SS"; export NLS_DATE_FORMAT
TNS_ADMIN=$ORACLE_HOME/network/admin; export TNS_ADMIN
ORA_NLS11=$ORACLE_HOME/nls/data; export ORA_NLS11
PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin
PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
PATH=${PATH}:/u01/app/common/oracle/bin
export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export CLASSPATH
THREADS_FLAG=native; export THREADS_FLAG
export TEMP=/tmp
export TMPDIR=/tmp
export PATH=$PATH:$ORACLE_HOME/OPatch
# ---------------------------------------------------
# UMASK
# ---------------------------------------------------
# Set the default file mode creation mask
# (umask) to 022 to ensure that the user performing
# the Oracle software installation creates files
# with 644 permissions.
# ---------------------------------------------------
umask 022
#source .bash_profile
配置用户环境变量:
su - grid
vi .bash_profile在export path后面加入
ORACLE_SID=+ASM1; export ORACLE_SID
#another is +ASM2
JAVA_HOME=/usr/local/java; export JAVA_HOME
ORACLE_BASE=/u01/app/grid; export ORACLE_BASE
ORACLE_HOME=/u01/app/11.2.0/grid; export ORACLE_HOME
ORACLE_PATH=/u01/app/oracle/common/oracle/sql; export ORACLE_PATH
# SQLPATH=/u01/app/common/oracle/sql; export SQLPATH
ORACLE_TERM=xterm; export ORACLE_TERM
NLS_DATE_FORMAT="DD-MON-YYYY HH24:MI:SS"; export NLS_DATE_FORMAT
TNS_ADMIN=$ORACLE_HOME/network/admin; export TNS_ADMIN
ORA_NLS11=$ORACLE_HOME/nls/data; export ORA_NLS11
PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin
PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
PATH=${PATH}:/u01/app/common/oracle/bin
export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export CLASSPATH
THREADS_FLAG=native; export THREADS_FLAG
export TEMP=/tmp
export TMPDIR=/tmp
# ---------------------------------------------------
# Set the default file mode creation mask
# (umask) to 022 to ensure that the user performing
# the Oracle software installation creates files
# with 644 permissions.
# ---------------------------------------------------
umask 022
alias asmcmd='rlwrap asmcmd'
#source .bash_profile
root环境变量:在后面加上grid的:home/bin路径
PATH=$PATH:$HOME/bin:/u01/app/11.2.0/grid/bin
8、hugepage
如果使用了大内存和SGA,那么HugePage对提高数据库性能就非常重要。
1、在/etc/security/limits.conf文件中添加memlock的限制
* soft memlock 60397977
* hard memlock 60397977
2、使用如下命令查看参数值:
$ ulimit -l
60397977
3、禁用AMM,AMM与HugePage不兼容。
设置初始化参数MEMORY_TARGET 和MEMORY_MAX_TARGET 为0即可。
4、vm.nr_hugepages的建议值
确保所有的数据库实例都已经启动,包括ASM 实例。使用hugepages_settings.sh 脚本获取thevm.nr_hugepages 内核参数的建议值。
$ ./hugepages_settings.sh
...
Recommended setting: vm.nr_hugepages = 1496
$
5、在/etc/sysctl.conf文件中设置vm.nr_hugepages参数
...
vm.nr_hugepages = 1496
...
6、停止所有实例,并重启服务器
7、验证配置
在重启系统之后,确保所有的数据库实例都已经启动,使用如下命令检查HugePage的状态:
# grep HugePages /proc/meminfo
HugePages_Total: 1496
HugePages_Free: 485
HugePages_Rsvd: 446
HugePages_Surp: 0
为了确保HugePages配置的有效性,HugePages_Free值应该小于HugePages_Total 的值,并且应该等于HugePages_Rsvd的值。
Hugepages_Free 和HugePages_Rsvd 的值应该小于SGA 分配的gages。
用户等效性
可以不手动配置,安装grid的时候点击setup配置。
要对oracle和grid用于都配置用户等效性。一个用户配置好了再配置另一个用户
Rac1:
ssh-keygen -t rsa
ssh-keygen -t dsa
cd .ssh/
cat id_rsa.pub >> authorized_keys
cat id_dsa.pub >> authorized_keys
scp authorized_keys rac2:~/.ssh传到rac2
rac2:
ssh-keygen -t rsa
ssh-keygen -t dsa
cd .ssh/
cat id_rsa.pub >> authorized_keys
cat id_dsa.pub >> authorized_keys
scp authorized_keys rac1:~/.ssh传回rac1
这时候相互
ssh rac1 date;ssh rac2 date;ssh rac1-priv date;ssh rac2-priv date
安装grid时会报错Result: PRVF-4007 : User equivalence check failed for user "grid"
所以grid 的用户等效配置一下。
另一种方法:
[root@node1 /]# su - grid
[grid@node1 ~]$ ssh-keygen -t rsa
[grid@node1 ~]$ cd .ssh/
[grid@node1 .ssh]$ ssh-copy-id -i id_rsa.pub node2
[grid@node1 .ssh]$ ssh-copy-id -i id_rsa.pub node1
scan dns
Dns用来解析scan ip,
ORACLE提供两个域名解析方法:DNS和GNS,GNS是grid提供的
注意:
安全策略selinux之类都关好了;
/etc/hosts格式正确;
NetworkManager服务关掉,DNS设置为eth0
也可以不要scan ip,直接rac1-vip提供给业务使用。
测试dns解析
#nslookup rac-scan.rac.com
#nslookup 192.168.1.118
#nslookup 192.168.1.119
共享磁盘
1、两个节点加硬盘
virtualbox添加共享磁盘:
编辑配置添加固定大小的磁盘-进入介质管理器设置为共享-另一个虚拟机编辑配置添加已存在的磁盘,
例如用ybm存储系统挂共享磁盘iscis的话,要把目标rac12的IP配置给iscsi逻辑卷。
iscsi的方式:
在rac1和rac2执行
# chkconfig iscsi on
# service iscsi start
# iscsiadm -m discovery -t sendtargets -p 192.168.1.199
[root@rac2 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.1.199
192.168.1.199:3260,1 iqn.2013-01.chinaybm.com:vg-1441617930.DATA
192.168.1.199:3260,1 iqn.2013-01.chinaybm.com:vg-1441617930.FRA
192.168.1.199:3260,1 iqn.2013-01.chinaybm.com:vg-1441617930.CRS
#fdisk –l查看插入的3块设备(刚挂上来两边盘符会不一致,后续进行绑定)
若没有发现设备,执行service iscsi restart
(不要分区、格式化,要做asm裸设备)
裸设备:使用裸设备存储数据库,避免了再经过操作系统这一层,相当于oracle可直接接管了磁盘,所以裸设备对于读写频繁的数据库应用来说,可以提高数据库性能。
2、在rac1上配置asm共享存储、绑定设备(UDEV方式)
配置udev固定ISCSI磁盘设备名称
Udev的主配置目录:/etc/udev
rules.d目录:里面包含的都是配置的udev加载规则。
查看要进行绑定的设备:绑定bcd
[root@rac1 named]# ll /dev/sd*
brw-rw---- 1 root disk 8, 0 Sep 24 16:26 /dev/sda
brw-rw---- 1 root disk 8, 16 Sep 24 16:26 /dev/sdb
brw-rw---- 1 root disk 8, 32 Sep 24 16:26 /dev/sdc
取得硬盘标识号uuid:(linux6版本,不同版本不同方法)
在rac1编辑脚本:
#vi get_uuid.sh
for i in a b c ;
do
echo "KERNEL==\"sd*\", BUS==\"scsi\", PROGRAM==\"/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name\", RESULT==\"`/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i`\", NAME=\"asm-disk$i\", OWNER=\"grid\", GROUP=\"asmadmin\", MODE=\"0660\""
done
#chmod +x get_uuid.sh
#./get_uuid.sh就会生成abc设备绑定的rule,将这些rule写入99-oracle-asmdevices.rules
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="1IET_00010001", NAME="asm-diskb", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="1IET_00020001", NAME="asm-diskc", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="1IET_00030001", NAME="asm-diskd", OWNER="grid", GROUP="asmadmin", MODE="0660"
#cd /etc/udev/rules.d/
#vi 99-oracle-asmdevices.rules
# scp /etc/udev/rules.d/99-oracle-asmdevices.rules rac2:/etc/udev/rules.d/
问题:已经装好的rac,执行start_udev时,节点1的监听挂掉
解决:要在每个ifcfg配置文件中加上HOTPLUG=no
3、 在rac1和rac2上重启验证
#/sbin/start_udev
#ll /dev/asm-disk*
http://blog.itpub.net/21754115/viewspace-2131866/
Redhat7 Udev绑定单路径设备方法
安装grid
在rac1上安装grid集群件,自动拷贝到rac2
1、 CRS安装环境检查
将grid包上传到rac1,
unzip p10404530_112030_Linux-x86-64_3of7.zip
unzip xx.zip -d /tmp
# chmod -R 777 grid/
# su – grid
./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -fixup -verbose
校验过程中会出现4个错误
1)grid用户组错误
./tmp/CVU_11.2.0.3.0_grid/runfixup.sh
2)缺包pdksh
忽略
3)ntp时间同步错误
#
service ntpd stop
chkconfig ntpd off
mv /etc/ntp.conf /etc/ntp.conf.original
rm -rf /var/run/ntpd.pid
4)scan-dns错误
mv /etc/resolv.conf /etc/resolv.conf.bak
在rac12上安装cvuqdisk-1.0.9-1.rpm【在grid的rpm目录下】
2、 在rac1上图形化安装grid
Grid装好,虚拟IP才生效
以grid用户进入图形化界面,或重定向
cd grid
./runInstall
开始图形化安装:
问题:
/runinstaller报错软件图形化出不来(报一堆的java)要补得包
yum install -y libX*.i686
yum install -y libXe*.i686
yum install -y libXe*
yum install -y libX*
yum install -y lib*
yum install -y compat*
yum install libstdc++*
1)选跳过软件更新
2)选第一个安装和配置集群环境
3)选第二个高级安装
4)可以把中文加入
5)集群名自己取,SCAN名需要和/etc/hosts中的scan ip别名一致,默认端口,不选GNS
例如
cluster name:rac-clu
scan name:rac-scan
6)验证一致性
添加其他节点vip
点击add把rac2节点加入,
点击【ssh connective】,输入grid密码,
如果未建立grid 互信,则点击【Setup】建立(提示成功),
如果已经建立,就点击test。
同选2个,下一步
问题:INS-06006 Passwordless SSH connectivity not set up ----ssh rac1 date试下不行就 手工配置ssh
问题:INS-40912 - Virtual Host Name already assigned. ---vip或vip name已经分配给其他主机,ping下vip通的话就是被其他主机用掉了 检查hosts文件是否写错
7)配置网络接口,配对接口类型。默认正确的
问题:[INS-41112] Specified network interface doesnt maintain connectivity across cluster nodes ----检查:./runcluvfy.sh comp nodecon -i ens192 -n zheng1,zheng2 -verbose 发现failed 关闭防火墙 selinux networkmanager 可能重启机器时起来了
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl stop NetworkManager.service
systemctl disable NetworkManager.service ---linux7还是不要disable这个
8)存储选择:选择ASM
9)建立ocr vote盘(安装CRS的盘)
设置磁盘组名称:CRS
设置Redundancy(冗余):High高可用3个,正常2个,外部冗余1个(一般3个2G盘)
添加盘:路径改成/dev/asm*,搜索到我们添加的共享磁盘 勾选
问题:INS-30510: Insufficient number of ASM disks selected
OCR和VOTEDISK的ASM磁盘组External、Normal、High三种冗余级别对应的Failgroup个数是1、3、5
非OCR和VOTEDISK存储的ASM磁盘组,那么External、Normal、High三种冗余级别对应的Failgroup至少是1、2、3
问题:清磁盘命令(每个节点都要执行) dd if=/dev/zero of=/dev/sdg5 bs=8192 count=128000 --bs写速率 count块数 /dev/zero里面是无限空值
10)所有账户(asm账户)设置相同密码asmadmin
11)不用IPMI
12)设置权限组
13)设置base和home
ORACLE_BASE:是所有oracle软件安装位置 /u01/app/grid
ORACLE_HOME:是oracle数据库安装位置(home在base下的) /u01/app/11.2.0/grid
问题:[INS-32012] Unable to create directory 无法创建/u01/app/11.2.0/grid
因为11.2.0/grid权限问题 grid oinstall ,或因为/u01目录的问题,安装grid前u01属于grid chown -R grid:oinstall /u01/
14)设置清单目录
15)安装前检查
phksh问题:忽略(安装了ksh就无法安装pdksh)
cvu包问题:每个节点都安装一下(/tmp/CVU_11.2.0.3.0_grid)
Device Checks for ASM问题:因为centos6版本,oracle不支持ASM库包,所以用udev取代ASMLIB,忽略
问题:This is a prerequisite condition to test whether the package "elfutils-libelf-devel-0.97" is available on the system. (more details)
Check Failed on Nodes: [zheng2, zheng1] 说是因为不是RHEL系统所以报没安装这个包 忽略继续安装了。
16)点击安装
17)提示执行2个脚本(rac是2个脚本,单实例安装软件是提升执行1个脚本)
分别执行第一个脚本orainstRoot.sh,在rac1,rac2上,完毕。(改权限)(如果安装过卸了重装不会有这个脚本让你执行)
Changing permissions of /u01/product/oraInventory to 770.
Changing groupname of /u01/product/oraInventory to dba.
分别执行第二个脚本root.sh,在rac1,rac2上。(失败则要重装)
问题:RHEL 7 安装rac执行root.sh报错ohasd failed to start 参考http://www.ithao123.cn/content-9321310.html
原因:因为RHEL 7使用systemd而不是initd运行进程和重启进程,而root.sh通过传统的initd运行ohasd进程,在RHEL 7中ohasd需要被设置为一个服务,在运行脚本root.sh之前,在执行sh就不报错
问题:执行第二个脚本报错:
Failed to create keys in the OLR, rc = 127, Message:
/dba/app/11.2/grid/bin/clscfg.bin: error while loading shared libraries: libcap.so.1: cannot open shared object file: No such file or directory
Failed to create keys in the OLR at /dba/app/11.2/grid/crs/install/crsconfig_lib.pm line 7660.
/dba/app/11.2/grid/perl/bin/perl -I/dba/app/11.2/grid/perl/lib -I/dba/app/11.2/grid/crs/install /dba/app/11.2/grid/crs/install/rootcrs.pl execution failed
原因:解决方法1: 因缺少一个包而引起: yum install compat-libcap1-* OK 了
2如果这个包打上了,还是报这样的错,也许是oracle 的一个bug:
问题:第二节点执行sh报错第一个节点以及独占运行,不允许再加,
原因:克隆的虚拟机127.0.0.1 racdb02 localhost.localdomain localhos
后面的长串需要删除,留127.0.0.1localhost
/app/product/grid/11.2.0/crs/install/roothas.pl -delete -force -verbose
/app/product/grid/11.2.0/root.sh
一切OK了
18)继续安装,会报错关于一个dns-scan的问题
ins-20802
假如hosts中有scanIP,最后会报这个错,假如能ping通scan ip,就可忽略这个错误
19)安装好了检查CRS状态:
#su - grid
#crsctl stat res -t
结果除了gsd服务,其他应该都是online的
https://www.douban.com/note/219898376/ --11GR2 撤卸失败安装的grid
crs_stop -all
crs_start -all
crs_stat -t
创建asm磁盘组
创建名为DATA和FRA的ASM磁盘组:
#su – grid
#asmca
进入图形化创建asm磁盘:
1)已经有CRS盘
2)点击创建
FRA 点击ok创建成功
DATA 点击ok创建成功
3)创建完成,并确认所有的在两个节点mounted.
2 of 2 两个节点都挂载
如果2)这里的磁盘组不能勾选,可能是该共享磁盘之前写入过数据,执行以下格式化。
dd if=/dev/zero of=/dev/raw/raw1 bs=8192 count=2000
安装oracle软件
(10g要打补丁升级
打补丁升级的时候,进入OUI图形化安装会看到10g R2 Patch set 10.2.0.4.0)
# unzip p10404530_112030_Linux-x86-64_1of7.zip
# unzip p10404530_112030_Linux-x86-64_2of7.zip
#chmod -R 777 /media/database
#su – oracle
#./runInstaller
进入图形化安装:
1)不需要提供支持
2)跳过更新
3)选第2个只安装软件
4)验证一致性
点击【ssh connective】,如果未建立oracle一致性的话setup一下
5)语言
6)安装企业版
7)home和base,默认
注册表找oracle home
regedit按F3
8)选择用户组,默认dba和oper
9)安装前检查
pdksh问题:忽略
scan问题:忽略,用/etc/hosts解析就有这个问题。用dns解析scan就不会报错
10)点击安装
11)提示执行脚本
12)安装完成
建库
可以在任意节点上操作
#su – oracle
#dbca
(参数值设置经验sga+pga<80%物理内存 pga设置为sga30%
open_cursors设定每个session(会话)最多能同时打开多少个cursor(游标))
开始图形化安装:
1)选1安装rac
2)选择建库
3)选1一般事务
4)设置sid
这里要注意一定要select all
5)不装em,不开启自动维护任务
6)设置sys密码
7)存储类型选择ASM
数据库位置选择DATA磁盘组
问题:could not connect to ASM due to following error: ORA-01031
原因:因为Oracle没有asmdba权限导致的,只需赋予此权限即可gpasswd -a oracle asmdba --- -a参数:添加用户到组
[root@zheng2 rpm]# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba)
[root@zheng2 rpm]# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),1201(asmdba)
8)设置FRA的位置
9)是否安装示例
10)设置内存、大小、字符集、连接模式
64G内存以下可以让它自动内存管理,大内存的一般不勾
5000进程数
数据库字符集:ZHS-16GBK支持简体中文
国家字符集:默认AL16UTF16即可,UTF-8比较省空间
---AL16UTF16是宽度固定的、双字节Unicode字符集;欧洲字符在UTF8字符集中按一至两个字节存储,在AL16UTF16中按两个字节存储
---UTF-8是宽度可变的、一至三个字节的Unicode字符集;亚洲字符,其在 UTF8 中按三字节存储,所需空间比在AL16UTF16中的双字节要多
--Unicode6.0有中文汉字7.67万余字,UTF-8只有2万余汉字
SHOW PARAMETER NLS_LANGUAGE;
SHOW PARAMETER NLS_TERRITORY;
SELECT name, value$ from SYS.PROPS$ WHERE name = 'NLS_CHARACTERSET';
select userenv('language') from dual; ---查看字符集
11)概要
(select group#,members,bytes/1024/1024,status from v$log看每个redolog的大小(默认50M,51200K))
12)开始安装
监听
$netca,netmgr
开始图形化:
1)集群配置
2)监听配置
服务端监听起不来:原因:/etc/hosts的IP写错
#################客户端tns配置##################################
nykt_rac =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.70.51)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.70.52)(PORT = 1521))
)
(LOAD_BALANCE = YES)
(FAILOVER = ON)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = hzyktdb)
)
)
--service_name可以用 SID = orcl
prod =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.80.107)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = prod)
)
)
####################################################################
#################服务端配置静态监听##################################
--listener配置
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = zyqtest)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME = zyqtest)
)
) --这里是我们要静态注册的服务
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = PROD)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = PROD)
)
(SID_DESC =
(GLOBAL_DBNAME = EMREP) ---Service "PROD222" has 1 instance(s)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = EMREP) --Instance "PROD111", status UNKNOWN
)
) --一个监听可以注册多个服务,这里注册了prod和emrep
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = zyqtest)(PORT = 1521))
) --这里是我们的监听程序
ADR_BASE_LISTENER = /u01/app/oracle
####################################################################
istener.ora中的几个参数:
1 global_dbname ---它的值为initsid.ora中db_name和db_domain的组合,即global_dbname=db_name.db_domain
---其中db_domain如果没有设此处也就不需要了
2 service_name --- 服务名称,取initsid.ora中service_names list至一即可
3 sid_name --- 对应环境变量oracle_sid的值
4 instance_name ---对应初始化参数instance_name
要改监听端口啥的,或2个实例共用一个监听,我们才用静态监听
测试
关闭rac2,保持rac1可用
su - root
/u01/app/11.2.0/grid/bin/crsctl stop has
/u01/app/11.2.0/grid/bin/crsctl start has --启动rac2
关闭rac1,保持rac2可用
su - root
/u01/app/11.2.0/grid/bin/crsctl stop has
/u01/app/11.2.0/grid/bin/crsctl start has
启停asm
srvctl start/stop/status asm
ORACLE_SID设置为+ASM,登陆到asm实例startup,再startup数据库
其他启停命令
$ srvctl stop database -d TEST (停止数据库所有实例)
$ srvctl stop nodeapps -n host1 (停节点1服务)
$ crs_stat -t查看服务
# crs_stop -all 停止数据库所有实例、集群
$ srvctl stop listener -n orcl2 关闭监听器
正常:
[grid@cen1 ~]$ sqlplus sys/asmadmin@cen1:1521/+ASM as sysdba
[oracle@cen1 ~]$ sqlplus sys/123456@cen1:1521/TEST as sysdba
ogg rac配置asm连通性,使oracle用户可以sqlplus连入asm实例:
[oracle@rac1 ~]$ sqlplus sys/[email protected]:1521/+ASM as sysdba
安装后的配置:
八、设置oracle自动启动与关闭
以下操作用root用户登录
1、编辑 /etc/oratab,把所有的 instance 的重启动标志设置成 'Y',如:
orcl11g:/home/oracle/app/oracle/product/11.2.0/dbhome_1:Y
2、做一个启动脚本 vi /etc/init.d/oracle ,如下所示:
#!/bin/sh
# chkconfig: 345 99 10
# description: script for the Oracle Instance, Listener
#
# Set ORA_HOME to be equivalent to the $ORACLE_HOME
# from which you wish to execute dbstart and dbshut;
#
# Set ORA_OWNER to the user id of the owner of the
# Oracle database in ORA_HOME.
ORA_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1
ORA_OWNER=oracle
if [ ! -f $ORA_HOME/bin/dbstart ]
then
echo "Oracle startup: cannot start"
exit
fi
case "$1" in
'start')
# Start the Oracle databases:
# The following command assumes that the oracle login
# will not prompt the user for any values
su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart $ORA_HOME"
#su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"
#su - $ORA_OWNER -c "$ORA_HOME/bin/emctl start dbconsole"
;;
'stop')
# Stop the Oracle databases:
# The following command assumes that the oracle login
# will not prompt the user for any values
su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut $ORA_HOME"
#su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"
#su - $ORA_OWNER -c "$ORA_HOME/bin/emctl stop dbconsole"
;;
'restart')
$0 stop
$0 start
;;
esac
在脚本中以下两行必须存在
# chkconfig: 345 99 10
# description: script for the Oracle Instance, Listener
------------------备注说明---------------------------------
# chkconfig: 345 99 10
指出3,4,5级别启动这个服务,99是在相应的/etc/rc.d/rcN.d(N为前面指定的
级别,这里是345)目录下生成的链接文件的序号(启动优先级别)S99oracle,
10为在除前面指出的级别对应的/etc/rc.d/rcN.d(N为除345之外的级别)目录生成的
链接文件的序号(服务停止的优先级别)K10oracle
3、赋予执行权限
chmod 751 /etc/init.d/oracle
ls -l /etc/init.d/oracle
4、添加服务
chkconfig --add oracle
chkconfig --list oracle
chkconfig --del oracle #删除服务
5、启动服务
添加服务服务后,不会立即启动服务,如果需要立即启动服务,需要执行
service oracle start #启动服务
service oracle stop #停止服务
service oracle restart #重启服务
----------
alter system set processes=5000 scope=spfile;
alter system set sessions=5500 scope=spfile;
alter system set open_cursors=1000 scope=spfile;
alter system set session_cached_cursors=150 scope=spfile;
alter system set "_external_scn_rejection_threshold_hours"=1 scope=spfile;
alter system set open_links=10 scope=spfile;
alter system set open_links_per_instance=10 scope=spfile;
alter system set db_files=10000 scope=spfile;
alter system set max_dump_file_size = '10240M' scope=both;
--关闭用户密码大小写敏感
alter system set sec_case_sensitive_logon=false scope=both;--关闭大小写敏感
alter profile default limit password_life_time unlimited ;--关闭过期
alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited;
--select * from dba_profiles;
#alter system set job_queue_processes=50;
#alter system set parallel_max_servers=100;
ALTER DATABASE TEMPFILE 1 AUTOEXTEND OFF ;
ALTER DATABASE TEMPFILE 1 resize 20G;
ALTER TABLESPACE "TEMP" ADD TEMPFILE '+DATA' SIZE 20G;
ALTER TABLESPACE "TEMP" ADD TEMPFILE '+DATA' SIZE 20G;
ALTER TABLESPACE "TEMP" ADD TEMPFILE '+DATA' SIZE 20G;
ALTER TABLESPACE "TEMP" ADD TEMPFILE '+DATA' SIZE 20G;
ALTER DATABASE DATAFILE 1 AUTOEXTEND OFF ;
ALTER DATABASE DATAFILE 2 AUTOEXTEND OFF ;
ALTER DATABASE DATAFILE 3 AUTOEXTEND OFF ;
ALTER DATABASE DATAFILE 4 AUTOEXTEND OFF ;
ALTER DATABASE DATAFILE 5 AUTOEXTEND OFF ;
ALTER DATABASE DATAFILE 1 RESIZE 10G;
ALTER DATABASE DATAFILE 2 RESIZE 10G;
ALTER DATABASE DATAFILE 3 RESIZE 10G;
ALTER DATABASE DATAFILE 4 RESIZE 10G;
ALTER DATABASE DATAFILE 5 RESIZE 20G;
初始化监控用户
CREATE USER socjk PROFILE "DEFAULT"
IDENTIFIED BY jkpwd
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
ACCOUNT UNLOCK;
GRANT CONNECT TO socjk;
GRANT DBA TO socjk;
--日志文件: (默认50M,51200K)
alter system switch logfile; ---日志切换
alter system checkpoint ; --- 将active 的日志变为 inactive
alter database add logfile group 3 ('/u01/log3a.log','/u01/log3b.log') size 1M; --增组。 redo_8.log是指向其他的文件
alter database add logfile member '/u01/log1c.log' to group 1; --增成员
###################修改redo size ################################
alter database add logfile group 4 ('/data/oradata/redo04.log') size 500m;
alter database add logfile group 5 ('/data/oradata/redo05.log') size 500m;
alter system switch logfile;
alter system switch logfile;
alter database drop logfile group 1;
alter database drop logfile group 2;
alter database drop logfile group 3;
alter database add logfile group 1 ('/data/oradata/redo01.log') size 500m;
alter database add logfile group 2 ('/data/oradata/redo02.log') size 500m;
alter database add logfile group 3 ('/data/oradata/redo03.log') size 500m;
多次日志切换,使第四、五组的LOGFILE成为INACTIVE状态才能删除
##############################################################
###################RAC修改redo size ################################
alter database add logfile thread 1 group 10 ('+DATA') size 100m;
alter database add logfile thread 1 group 11 ('+DATA') size 100m;
alter database add logfile thread 2 group 12 ('+DATA') size 100m;
alter database add logfile thread 2 group 13 ('+DATA') size 100m;
##############################################################
--修改redo路径
shutdown immediate;
mv /u01/oradata/redo01b.log /data/redo01b.log
mv /u01/oradata/redo02b.log /data/redo02b.log
startup mount
ALTER DATABASE RENAME FILE '/u01/oradata/redo01b.log','/u01/oradata/redo02b.log'
to '/data/redo01b.log', '/data/redo02b.log';
alter database open;
更改登录设置:
vi $ORACLE_HOME/sqlplus/admin/glogin.sql 添加
set pagesize 9999
set linesize 100