(rac安装的顺序就是 1 安装grid 2 asmca创建磁盘组 3 安装数据库软件 4 dbca创建数据库)
首先把网卡配置好(双网卡 外网eth0 内网 eth1)
chkconfig sendmail off
service iptables stop
chkconfig iptables off
#6.x版本上关闭 NetworkManager 服务
chkconfig NetworkManager off
关闭selinux:
vi /etc/selinux/config
SELINUX=disabled
service iptables stop
chkconfig iptables off
#6.x版本上关闭 NetworkManager 服务
chkconfig NetworkManager off
关闭selinux:
vi /etc/selinux/config
SELINUX=disabled
# /etc/init.d/avahi-daemon stop
# /sbin/chkconfig avahi-daemon off
"NOZEROCONF=yes" 必须包含在 /etc/sysconfig/network
# /sbin/chkconfig avahi-daemon off
"NOZEROCONF=yes" 必须包含在 /etc/sysconfig/network
做yum 源
打补丁包
RHEL6\Centos6版本必须安装包
yum install 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 libXext libXtst libX11 libXau libxcb libXi compat-libcap1 iscsi-initiator-utils *vnc* -y
RHEL6\Centos6版本必须安装包
yum install 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 libXext libXtst libX11 libXau libxcb libXi compat-libcap1 iscsi-initiator-utils *vnc* -y
修改
IP
地址、主机名和
/etc/hosts
文件
主机名改成
rac1
和
rac2(内网和外网网段必须分开 不然安装grid时会提示)
hosts
文件中添加:
192.168.88.10 rac1 (
网卡
1)
192.168.88.20 rac2
10.10.10.10 rac1priv (
网卡
2)
10.10.10.20 rac2priv
192.168.88.30 rac1vip
192.168.88.40 rac2vip
192.168.88.200 scanip
vi /etc/security/limits.conf
#for oracle
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
grid hard stack 10240
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle hard stack 10240
vi /etc/sysctl.conf
kernel.shmmni = 4096
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
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.randomize_va_space=0
kernel.exec-shield=0
/sbin/sysctl -p
#for oracle
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
grid hard stack 10240
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle hard stack 10240
vi /etc/sysctl.conf
kernel.shmmni = 4096
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
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.randomize_va_space=0
kernel.exec-shield=0
/sbin/sysctl -p
# /sbin/sysctl -a | grep randomize
kernel.randomize_va_space = 0
有错时执行:modprobe bridge
/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
useradd -u 1100 -g oinstall -G asmadmin,asmdba,asmoper grid
useradd -u 1200 -g oinstall -G dba,oper,asmdba oracle
# passwd grid
# passwd oracle
创建目录
mkdir -p /u01/app/11.2.0/grid
mkdir -p /u01/app/grid
mkdir -p /u01/app/oracle/product/11.2.0/db_1
chown grid:oinstall /u01/ -R
chown oracle:oinstall /u01/app/oracle -R
chmod 775 /u01/ -R
kernel.randomize_va_space = 0
有错时执行:modprobe bridge
/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
useradd -u 1100 -g oinstall -G asmadmin,asmdba,asmoper grid
useradd -u 1200 -g oinstall -G dba,oper,asmdba oracle
# passwd grid
# passwd oracle
创建目录
mkdir -p /u01/app/11.2.0/grid
mkdir -p /u01/app/grid
mkdir -p /u01/app/oracle/product/11.2.0/db_1
chown grid:oinstall /u01/ -R
chown oracle:oinstall /u01/app/oracle -R
chmod 775 /u01/ -R
su - grid
vi /home/grid/.bash_profile
export ORACLE_SID=+ASM1
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2.0/grid
export PATH=$ORACLE_HOME/bin:$PATH
export LANG=C
节点2 ORACLE_SID=+ASM2
su - oracle
vi /home/oracle/.bash_profile
export ORACLE_SID=orcl1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib:/lib:/usr/lib
export LANG=C
节点2 ORACLE_SID=orcl2
禁用NTPD服务:
service ntpd stop
chkconfig ntpd off
mv /etc/ntp.conf /etc/ntp.conf.bak
mv /etc/resolv.conf /etc/resolv.conf.bak
vi /home/grid/.bash_profile
export ORACLE_SID=+ASM1
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2.0/grid
export PATH=$ORACLE_HOME/bin:$PATH
export LANG=C
节点2 ORACLE_SID=+ASM2
su - oracle
vi /home/oracle/.bash_profile
export ORACLE_SID=orcl1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib:/lib:/usr/lib
export LANG=C
节点2 ORACLE_SID=orcl2
禁用NTPD服务:
service ntpd stop
chkconfig ntpd off
mv /etc/ntp.conf /etc/ntp.conf.bak
mv /etc/resolv.conf /etc/resolv.conf.bak
配置环境变量、互信
1.
设置
grid
用户环境变量
rac1
上:
su - grid
vi .bash_profile
export ORACLE_SID=+ASM1
export ORACLE_BASE=/oracle/app/grid
export ORACLE_HOME=/oracle/11.2.0/grid
export PATH=$ORACLE_HOME/bin:$PATH
生效:
source .bash_profile
rac2
上:
su - grid
vi .bash_profile
export ORACLE_SID=+ASM2
export ORACLE_BASE=/oracle/app/grid
export ORACLE_HOME=/oracle/11.2.0/grid
export PATH=$ORACLE_HOME/bin:$PATH
2.
配互信
在
grid
软件解压的目录上用
root
用户执行:
配
grid
用户的互信:
/oracle/grid/sshsetup/sshUserSetup.sh -user grid -hosts "rac1 rac2" -advanced -noPromptPassphrase
配
oracle
用户的互信:
/oracle/grid/sshsetup/sshUserSetup.sh -user oracle -hosts "rac1 rac2" -advanced -noPromptPassphrase
按提示要求输入用户口令
验证互信:在
rac1&rac2
两个节点分别执行:
su - grid
ssh rac1 date
ssh rac2 date
ssh rac1priv date
ssh rac2priv date
su - oracle
ssh rac1 date
ssh rac2 date
ssh rac1priv date
ssh rac2priv date
创建裸设备
在共享存储上创建
3
个裸设备,分别用来安装
grid
软件、
rdbms
软件和存放归档。虚拟机共享存储
10G
,划分
1
个
1G
的空间、一个
2G
的空间和一个
8G
的空间。
在
rac1
对共享存储分区:
[root@rac1 oracle]# ll /dev/sdb
[root@rac1 oracle]# fdisk /dev/sdb
[root@rac1 oracle]# partprobe
node2
执行
partprobe
在
rac1
,
rac2
上编辑
/etc/udev/rules.d/60-raw.rules
文件
***************************(配置文件第一种版本)************************************
ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="17", RUN+="/bin/raw /dev/raw/raw1 %M %m"
ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="18", RUN+="/bin/raw /dev/raw/raw2 %M %m"
ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="19", RUN+="/bin/raw /dev/raw/raw3 %M %m"
KERNEL=="raw*" , OWNER=="grid" ,GROUP=="asmadmin" ,MODE=="660"
*********************************(配置文件第二种版本)****************************************
ACTION=="add", KERNEL=="sdb", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdc", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdd", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sde", RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", KERNEL=="sdf", RUN+="/bin/raw /dev/raw/raw5 %N"
ACTION=="add", KERNEL=="sdg", RUN+="/bin/raw /dev/raw/raw6 %N"
ACTION=="add", KERNEL=="sdh", RUN+="/bin/raw /dev/raw/raw7 %N"
KERNEL=="raw[1-7]", OWNER="grid", GROUP="asmadmin", MODE="660"
ACTION=="add", KERNEL=="sdc", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdd", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sde", RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", KERNEL=="sdf", RUN+="/bin/raw /dev/raw/raw5 %N"
ACTION=="add", KERNEL=="sdg", RUN+="/bin/raw /dev/raw/raw6 %N"
ACTION=="add", KERNEL=="sdh", RUN+="/bin/raw /dev/raw/raw7 %N"
KERNEL=="raw[1-7]", OWNER="grid", GROUP="asmadmin", MODE="660"
************************************************************************(我用的这种有效)******
重启裸设备:
start_udev
查看裸设备:
[root@rac1 oracle]# raw -qa
Rhel 5.x 配置vnc
# vncserver 输入连接密码
# vi /root/.vnc/xstartup
unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc
#[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
#[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
#xsetroot -solid grey
#vncconfig -iconic &
#xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#twm &
startkde &
Rhel 6.x 配置vnc
首先安装 vnc服务端:yum install tigervnc tigervnc-server (如安装则忽略此步骤)
# vncserver 输入连接密码
# vi /etc/sysconfig/vncservers
VNCSERVERS="1:root"
VNCSERVERARGS[1]="-geometry 800x600 -nolisten tcp -localhost"
去掉注释
#vncserver -kill :1
#vncserver :1
# vncserver 输入连接密码
# vi /root/.vnc/xstartup
unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc
#[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
#[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
#xsetroot -solid grey
#vncconfig -iconic &
#xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#twm &
startkde &
Rhel 6.x 配置vnc
首先安装 vnc服务端:yum install tigervnc tigervnc-server (如安装则忽略此步骤)
# vncserver 输入连接密码
# vi /etc/sysconfig/vncservers
VNCSERVERS="1:root"
VNCSERVERARGS[1]="-geometry 800x600 -nolisten tcp -localhost"
去掉注释
#vncserver -kill :1
#vncserver :1
安装
grid
软件
使用
grid
用户,进入解压出来的
grid
目录,运行
runInstaller.sh
如果图形界面出不来检查下环境变量
DISPLAY
的设置,可以把
ROOT
用的设置拷贝过来。
1.
选择安装集群的
grid
软件:
2.
高级安装:
3.SCAN NAME
的设置要跟
HOSTS
文件中的
scanip
的域名一致:这里配置了
SCANIP
和端口,集群会自动创建针对
scanip
的监听。
SCAN name 一定要和 hosts文件里面写的scanip 一样。
4.
添加节点和
VIP
:可以用
SSH Connectivity
测试互信是否配通,如果不通这一步过不去。
添加两个节点 然后设置grid的密码
然后再 test 测试一下 确保能用。
有两个iP一个是公网public和私网private(一定是两个网段不然不能进行下一步安装)
griddg
不能太小,也不用太大,生产环境给
10G
足够了。
下面一路默认,安装路径会从环境变量自动识别。
安装环境检查:执行修补脚本
按提示执行 这个脚本
安装完成,提示执行脚本:按提示执行
这个错误是
scan
解析失败,在
os
中
ping
一下
scanip
和
scan name
如果能
ping
通的话,那就没问题,直接
ok
,然后
skip
按提示执行脚本:
第一个脚本主要更改
oraInventory
的权限
第二个脚本启动集群的后台进程,并启动集群服务:
(执行脚本的时候 再执行第二个脚本的时候 会有报错 要用root 用户 在/u01/app/grid/11.2.0.4/bin/vipca 脚本)
grid
里集成了集群功能,因此当
grid
安装完成,集群已经装好,并且启动。而且在节点
1
安装
grid
软件会自动把软件拷贝到节点
2
,不需要在两个节点重复安装。安装过程中的
perform remote operation
就是向
2
节点拷贝数据及安装的。
grid
也自动创建了监听,不再需要手工创建:
3.
使用
asmca
创建
DG
grid
用户运行
asmca
命令:
看到之前已经创建的
griddg
创建个
DATADG
:
如果建库时候使用
ASM
,创建出
DATADG
就完成任务了。如果使用
ACFS
,参加下面创建归档文件系统的方法创建
datafs
创建一个归档专用的
DG
并在下面创建一个
lv
和文件系统
在
ARCHDG
上创建一个
LV
,创建
LV
不能把
DG
的空间全占满,需要留一部分空间(例子中
DG
太小了)
在
ASM Cluster File System
选项卡上创建
ACFS
文件系统,用来存储归档。
新建目录,将其设置成自动挂载点:
[root@rac1 oracle]# mkdir arch
[root@rac1 oracle]# chown oracle:dba arch
创建成功后,进入
/oracle/arch
目录可以看到已经挂载上来:
4.
安装数据库软件
1.
修改
oracle
用户环境变量
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=/oracle/app/oracle/product/11.2.0/db_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=orcl1
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=/oracle/app/oracle/product/11.2.0/db_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=orcl2
进到
DATABASE
目录运行
runInstaller.sh
如果提示一个关于scanip的是可以揭过去的(scanip是关于DNS解析问题,DNS解析式方便管理多个rac节点而设定的) 大多rac是连个节点 用不到scanip 所以是可以忽略的。
点击
按提示 去执行这个脚本 即可安装这个需要的软件(这是oracle11G的特性)
执行脚本:
5.dbca
创建数据库
当然是都选择所有节点咯。
这个+DATAGD 就是在asmca时建立的磁盘组
一定要按 exit 推出 不然就假死状态。
********************************(是否需要打PSU ,去看相关文档)**********************************
psu
/u01/app/11.2.0/grid/bin/crsctl stop cluster
/tmp/OPatch/opatch apply
/u01/app/11.2.0/grid/bin/crsctl stop cluster
/tmp/OPatch/opatch apply
**********************************************************************
rac安装完之后的管理
rac装完之后监听会自动建立好(不用再rac的每个节点去单独建立监听 只用集群用户 去管理监听就行)
一般rac装完之后是登陆集群管理用户grid (su - grid)
在grid用户下执行
crs_stat -t 查看集群下所有的服务状态
crsctl start crs 启动集群所有服务。
[grid@rac2 ~]$
crsctl status res -t (这个看的比较详细)
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ARCHDG.dg
ONLINE OFFLINE rac1
ONLINE OFFLINE rac2
ora.DATA.dg
ONLINE ONLINE rac1
ONLINE ONLINE rac2
ora.DATADG.dg
ONLINE OFFLINE rac1
ONLINE OFFLINE rac2
ora.LISTENER.lsnr
ONLINE ONLINE rac1
ONLINE ONLINE rac2
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ARCHDG.dg
ONLINE OFFLINE rac1
ONLINE OFFLINE rac2
ora.DATA.dg
ONLINE ONLINE rac1
ONLINE ONLINE rac2
ora.DATADG.dg
ONLINE OFFLINE rac1
ONLINE OFFLINE rac2
ora.LISTENER.lsnr
ONLINE ONLINE rac1
ONLINE ONLINE rac2
*********************************************************
后面的小添油加醋
******************************************************
创建数据库
使用dbca创建,创建之前确保已安装的所有服务正在运行。
#su - grid -c "crs_stat -t -v"
[root@rac1 ~]# su - oracle
[oracle@rac1 ~]$ dbca
RAC修改local_listener:
alter system set local_listener = '(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.216)(PORT = 1521))' sid='orcl1';
alter system set local_listener = '(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.219)(PORT = 1521))' sid='orcl2';
HOST = 192.168.1.216 --此处使用数字形式的VIP,绝对禁止使用字母rac1-vip
查看用户密码的有效期设置
SQL > SELECT * FROM dba_profiles WHERE profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
SQL >Alter PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
帐户再改一次密码
SQL > alter user ink identified by <原来的密码> ----不用换新密码
使用修改后的用户登录,如果报“ORA-28000:用户已被锁”,解锁
SQL > alter user db_user account unlock;
oracle 11.2版本不能导出空表
(参数改为FALSE后,无论是空表还是非空表,都分配segment),此步务必无条件地执行。需要在安装完毕11.2的rac后立即执行下边的语句。
--调整deferred_segment_creation为false:
SQL> show parameter deferred
SQL> alter system set deferred_segment_creation=false;
11.2.0.1 版本的rac,当rac节点重启后, oracle rac asm磁盘组无法自动加载
命令修改如下:(进入grid用户执行)
crsctl modify resource ora.DATA.dg -attr AUTO_START=always
crsctl modify resource ora.FLA.dg -attr AUTO_START=always
alter system set audit_trail=none scope=spfile;
大叶内存
# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] never
#vi /etc/rc.local
if test -f /sys/kernel/mm/redhat_transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/redhat_transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
fi
重启服务器
# cat /sys/kernel/mm/transparent_hugepage/enabled
always [never]
dd if=/dev/zero of=/dev/sda bs=1k count=3000
yum -y groupinstall "X Window System"
yum -y groupinstall Desktop
alter database force logging;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
使用dbca创建,创建之前确保已安装的所有服务正在运行。
#su - grid -c "crs_stat -t -v"
[root@rac1 ~]# su - oracle
[oracle@rac1 ~]$ dbca
RAC修改local_listener:
alter system set local_listener = '(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.216)(PORT = 1521))' sid='orcl1';
alter system set local_listener = '(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.219)(PORT = 1521))' sid='orcl2';
HOST = 192.168.1.216 --此处使用数字形式的VIP,绝对禁止使用字母rac1-vip
查看用户密码的有效期设置
SQL > SELECT * FROM dba_profiles WHERE profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
SQL >Alter PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
帐户再改一次密码
SQL > alter user ink identified by <原来的密码> ----不用换新密码
使用修改后的用户登录,如果报“ORA-28000:用户已被锁”,解锁
SQL > alter user db_user account unlock;
oracle 11.2版本不能导出空表
(参数改为FALSE后,无论是空表还是非空表,都分配segment),此步务必无条件地执行。需要在安装完毕11.2的rac后立即执行下边的语句。
--调整deferred_segment_creation为false:
SQL> show parameter deferred
SQL> alter system set deferred_segment_creation=false;
11.2.0.1 版本的rac,当rac节点重启后, oracle rac asm磁盘组无法自动加载
命令修改如下:(进入grid用户执行)
crsctl modify resource ora.DATA.dg -attr AUTO_START=always
crsctl modify resource ora.FLA.dg -attr AUTO_START=always
alter system set audit_trail=none scope=spfile;
大叶内存
# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] never
#vi /etc/rc.local
if test -f /sys/kernel/mm/redhat_transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/redhat_transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
fi
重启服务器
# cat /sys/kernel/mm/transparent_hugepage/enabled
always [never]
dd if=/dev/zero of=/dev/sda bs=1k count=3000
yum -y groupinstall "X Window System"
yum -y groupinstall Desktop
alter database force logging;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
******************************************************