Virtualbox环境中安装Oracle 11gr2 RAC(ASM)
系统Oracle Linux 6.5,Oracle 11.2.0.1l 如何规划网络配置(配置多网卡,实现连通性,规划内外网,eth0,eth1,vip以及scan ip)规划共享磁盘配置(在virtualbox中的实现)l ASM配置及权限l 两个节点的ssh互信配置(为了rac1将介质复制到rac2)l ntp的时间同步配置l dns的解析配置,采用了hosts做替代l 出现crs问题后的解决
系统Oracle Linux 6.5,Oracle 11.2.0.1
l 如何规划网络配置(配置多网卡,实现连通性,规划内外网,eth0,eth1,vip以及scan ip)
规划共享磁盘配置(在virtualbox中的实现)
l ASM配置及权限
l 两个节点的ssh互信配置(为了rac1将介质复制到rac2)
l ntp的时间同步配置
l dns的解析配置,采用了hosts做替代
l 出现crs问题后的解决办法(非常经典)-2.0.4.0没有此问题哦
一、Linux下准备工作(节点1:rac1;节点2:rac2)
1. vi /etc/selinux/config-------永久关闭selinux(也可以系统-管理-Selinux管理)
SELINUX=disabled--------然后重启服务器
2. 1)先界面关闭防火墙;2)chkconfig iptables off 重启永久关闭防火墙
(在linux中关闭防火墙有两种状态一种永久关闭防火墙,另一种是暂时关闭防火墙的方法,下面我们一起来看看具体的操作步骤。 关闭虚拟机防火墙: 关闭命令: service iptables stop 永久关闭防火墙:chkconfig iptables off 两个命令同时运行,运行完成后查看防火墙关闭状态 service iptables status 1 关闭防火墙-----service iptables stop 2 启动防火墙-----service iptables start 3 重启防火墙-----service iptables restart 4 查看防火墙状态--service iptables status 5 永久关闭防火墙--chkconfig iptables off 6 永久关闭后启用--chkconfig iptables on)
3. 在每一个节点上添加安装Oracle Grid的用户、组和家目录,并设置权限。
/usr/sbin/groupadd -g 1000 oinstall
/usr/sbin/groupadd -g 1020 asmadmin
/usr/sbin/groupadd -g 1021 asmdba
/usr/sbin/groupadd -g 1022 asmoper
/usr/sbin/groupadd -g 1031 dba
/usr/sbin/groupadd -g 1032 oper
useradd -u 1100 -g oinstall -G asmadmin,asmdba,asmoper,oper,dba grid
useradd -u 1101 -g oinstall -G dba,asmdba,oper oracle
必须设置用户密码,否则对等性检查不能通过
passwd oracle
WXHWXH
WXHWXH
passwd grid
WXHWXH
WXHWXH
mkdir -p /u01/app/11.2.0/grid
mkdir -p /u01/app/grid
chown -R grid:oinstall /u01
mkdir /u01/app/oracle
chown oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/
(chown oracle:oinstall /home/oracle
[root@rac1 home]# chmod -R755 /home/oracle)----因为oracle用户删除过
警告:权限必须是755,否则配置互信不能成功。
Note: useradd(选项)(参数)
选项
-c<备注>:加上备注文字。备注文字会保存在passwd的备注栏位中;
-d<登入目录>:指定用户登入时的启始目录;
-D:变更预设值;
-e<有效期限>:指定帐号的有效期限;
-f<缓冲天数>:指定在密码过期后多少天即关闭该帐号;
-g<群组>:指定用户所属的群组;
-G<群组>:指定用户所属的附加群组;
-m:自动建立用户的登入目录;
-M:不要自动建立用户的登入目录;
-n:取消建立以用户名称为名的群组;
-r:建立系统帐号;
-s<shell>:指定用户登入后所使用的shell;
-u<uid>:指定用户id。
4. (1)修改文件参数—暂时没有做(不做设置也可以,将来在安装过程中用runfixup自动设置。)
# vi /etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
(2)执行(使内核参数设置生效): sysctl -p
5. 文件描述符
cat >> /etc/security/limits.conf << EOF
vi /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240
我按照实际加的
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240
grid hard stack 32768
注意:各个变量之间是tab健。
6. 修改登录模块
cat >> /etc/pam.d/login << EOF
vi/etc/pam.d/login
session required /lib64/security/pam_limits.so
EOF
7. 配置网络
在virtualbox再虚拟一个eth1.满足服务器要求
每个服务器节点至少需要2块网卡,一块对外网络接口,一块私有网络接口(心跳)。
vip和scan ip都不需要配置在操作系统的network中.
vi /etc/hosts
homeversion
192.168.252.23 rac1
192.168.252.24 rac2
192.168.252.25 rac1-vip
192.168.252.26 rac2-vip
192.168.56.103 rac1-pri
192.168.56.102 rac2-pri
192.168.252.27 cluster
DORMITORYversion(中间都是tab健,切忌,切忌)
192.168.252.23 rac1
192.168.252.24 rac2
192.168.252.25 rac1-vip
192.168.252.26 rac2-vip
192.168.56.102 rac1-pri
192.168.56.103 rac2-pri
192.168.252.27 cluster
保证双方节点都能通
配置两个节点的网络.
8. 关闭ntpd---禁止网络时间服务
# chkconfig ntpd off
# rm /etc/ntp.conf (mv /etc/ntp.conf /etc/ntp.conf.old) (作用相当于重命名文件)
# rm /var/run/ntpd.pid
Note:-d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;
-f:强制删除文件或目录;
-i:删除已有文件或目录之前先询问用户;
-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;
--preserve-root:不对根目录进行递归操作;
-v:显示指令的详细执行过程。
将目录/usr/men中的所有文件移到当前目录(用.表示)中:
mv /usr/men/*
9. 修改网卡的名称
在克隆虚拟机后,记着更改克隆的电脑名字:rac2(可参考Linux系统下如何修改主机名)
在克隆虚拟机后,另外一个虚拟机的网络可能变成eth2,eth3,需要改回eth0和eth1,方法如下
首先删除eth0和eth1,再把eth2,eth3改成eth0和eth1,再做以下操作:
vi/etc/sysconfig/network-scripts/ifcfg-eth0
加上dev=eth0 DEVICE=eth0
vi /etc/sysconfig/network-script/ifcfg-eth1
加上dev=eth1 DEVICE=eth1
修改vi /etc/udev/rules.d/70-persistent-net.rules
屏蔽上面的eth0,eth1的语句,把下面的eth2,eth3的修改成eth0,eth1
# PCI device 0x8086:0x100e (e1000) (custom name provided by external tool)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:8a:af:d1", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
# PCI device 0x8086:0x100e (e1000) (custom name provided by external tool)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:a8:cc:b4", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
修改完后重起网络
service network restart
不生效的话重新启动系统.
10. 配置ssh互信–grid 用户(ra1/rac2节点)
需要针对oracle和grid用户都需要配置ssh互信.
各节点生成Keys:
[root@rac1 ~]# su - oracle
[oracle@rac1 ~]$ mkdir ~/.ssh
[oracle@rac1 ~]$ chmod 700 ~/.ssh
[oracle@rac1 ~]$ ssh-keygen -t rsa
[oracle@rac1 ~]$ ssh-keygen -t dsa
[root@rac2 ~]# su - oracle
[oracle@rac2 ~]$ mkdir ~/.ssh
[oracle@rac2 ~]$ chmod 700 ~/.ssh
[oracle@rac2 ~]$ ssh-keygen -t rsa
[oracle@rac2 ~]$ ssh-keygen -t dsa
在节点1上进行互信配置:
[oracle@rac1 ~]$ touch ~/.ssh/authorized_keys
[oracle@rac1 ~]$ cd ~/.ssh
[oracle@rac1 .ssh]$ ssh rac1 cat ~/.ssh/id_rsa.pub >> authorized_keys
[oracle@rac1 .ssh]$ ssh rac2 cat ~/.ssh/id_rsa.pub >> authorized_keys
[oracle@rac1 .ssh]$ ssh rac1 cat ~/.ssh/id_dsa.pub >> authorized_keys
[oracle@rac1 .ssh]$ ssh rac2 cat ~/.ssh/id_dsa.pub >> authorized_keys
> 是定向输出到文件,如果文件不存在,就创建文件;如果文件存在,就将其清空;一般我们备份清理日志文件的时候,就是这种方法:先备份日志,再用`>`,将日志文件清空(文件大小变成0字节);
>>这个是将输出内容追加到目标文件中。如果文件不存在,就创建文件;如果文件存在,则将新的内容追加到那个文件的末尾,该文件中的原有内容不受影响。
在rac1把存储公钥信息的验证文件传送到rac2上
[oracle@rac1 .ssh]$ pwd
/home/oracle/.ssh
[oracle@rac1 .ssh]$ scp authorized_keys rac2:'/home/oracle/.ssh'
oracle@rac2's password:
authorized_keys 100% 1644 1.6KB/s 00:00
设置验证文件的权限
在每一个节点执行:
$ chmod 600 ~/.ssh/authorized_keys
启用用户一致性
在你要运行OUI的节点以oracle用户运行(这里选择rac1):将passphrase导入内存中,均执行该命令
[oracle@rac1 .ssh]$ exec /usr/bin/ssh-agent $SHELL
[oracle@rac1 .ssh]$ ssh-add
Identity added: /home/oracle/.ssh/id_rsa (/home/oracle/.ssh/id_rsa)
Identity added: /home/oracle/.ssh/id_dsa (/home/oracle/.ssh/id_dsa)
验证ssh配置是否正确
以oracle用户在所有节点分别执行:
ssh rac1 date
ssh rac2 date
ssh rac1-pri date
ssh rac2-pri date
各节点生成Keys:
[root@rac1 ~]# su -grid
[grid@rac1 ~]$ mkdir ~/.ssh
[grid@rac1 ~]$ chmod 700 ~/.ssh
[grid@rac1 ~]$ ssh-keygen -t rsa
[grid@rac1 ~]$ ssh-keygen -t dsa
[root@rac2 ~]# su -grid
[grid@rac2 ~]$ mkdir ~/.ssh
[grid@rac2 ~]$ chmod 700 ~/.ssh
[grid@rac2 ~]$ ssh-keygen -t rsa
[grid@rac2 ~]$ ssh-keygen -t dsa
在节点1上进行互信配置:
[grid@rac1 ~]$ touch ~/.ssh/authorized_keys
[grid@rac1 ~]$ cd ~/.ssh
[grid@rac1 .ssh]$ ssh rac1 cat ~/.ssh/id_rsa.pub >> authorized_keys
[grid@rac1 .ssh]$ ssh rac2 cat ~/.ssh/id_rsa.pub >> authorized_keys
[grid@rac1 .ssh]$ ssh rac1 cat ~/.ssh/id_dsa.pub >> authorized_keys
[grid@rac1 .ssh]$ ssh rac2 cat ~/.ssh/id_dsa.pub >> authorized_keys
在rac1把存储公钥信息的验证文件传送到rac2上
[grid@rac1 .ssh]$ pwd
/home/oracle/.ssh
[grid@rac1 .ssh]$ scp authorized_keysrac2:'/home/grid/.ssh'
grid@rac2's password:
authorized_keys 100% 1644 1.6KB/s 00:00
设置验证文件的权限
在每一个节点执行:
$ chmod 600 ~/.ssh/authorized_keys
启用用户一致性
在你要运行OUI的节点以grid用户运行(这里选择rac1):
[grid@rac1 .ssh]$ exec /usr/bin/ssh-agent $SHELL
[grid@rac1 .ssh]$ ssh-add
Identity added: /home/grid/.ssh/id_rsa (/home/grid/.ssh/id_rsa)
Identity added: /home/grid/.ssh/id_dsa (/home/grid/.ssh/id_dsa)
验证ssh配置是否正确
以oracle用户在所有节点分别执行:
ssh rac1 date
ssh rac2 date
ssh rac1-pri date
ssh rac2-pri date
如果不需要输入密码就可以输出时间,说明ssh验证配置成功。必须把以上命令在两个节点都运行,每一个命令在第一次执行的时候需要输入yes。
如果不运行这些命令,即使ssh验证已经配好,安装clusterware的时候也会出现错误:
The specified nodes are not clusterable
因为,配好ssh后,还需要在第一次访问时输入yes,才算是真正的无障碍访问其他服务器
11. ASM磁盘配置(10g,11g,12g,12g,12g)
(1)在virtualbox rac1中添加盘片,选择固定大小盘片; 选择固定大小,10G,添加五个盘片NewVirtualDisk1.vdi、NewVirtualDisk2.vdi、NewVirtualDisk3.vdi、NewVirtualDisk4.vdiNewVirtualDisk5.vdi
(2)设置成共享磁盘,步骤如下图:
(3)设置完成之后,在rac2中SAST控制器中添加刚才设置好的共享虚拟硬盘。
(4)进入rac1,fdisk
[root@rac1 Desktop]#fdisk /dev/sdb
fdisk /dev/sdc
fdisk /dev/sde
fdisk /dev/sdf
fdisk /dev/sdg
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xa812137c.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1305, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305):
Using default value 1305
Command (m for help):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
(5)在rac1和rac2结点都需要做这步--两台都需要做!!!
[root@rac1 ~]#/usr/sbin/oracleasm configure -i-------------------rac2也需要做
Default user to own the driver interface []: grid
Default group to own the driver interface []: asmadmin
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
[root@rac1 Desktop]# /usr/sbin/oracleasm init------------rac2不需要做
Creating /dev/oracleasm mount point: /dev/oracleasm
Loading module "oracleasm": oracleasm
Configuring "oracleasm" to use device physical block size
Mounting ASMlib driver filesystem: /dev/oracleasm
[root@rac1 Desktop]# /etc/init.d/oracleasm createdisk VOL1 /dev/sdb1
Marking disk "VOL1" as an ASM disk: [ OK ]
[root@rac1 Desktop]# /etc/init.d/oracleasm createdisk VOL2 /dev/sdc1
Marking disk "VOL2" as an ASM disk: [ OK ]
[root@rac1 Desktop]# /etc/init.d/oracleasm createdisk VOL3 /dev/sdd1
Marking disk "VOL3" as an ASM disk: [ OK ]
[root@rac1 Desktop]# /etc/init.d/oracleasm createdisk VOL4/dev/sde1
Marking disk "VOL4" as an ASM disk: [ OK ]
[root@rac1 Desktop]# /etc/init.d/oracleasm createdisk VOL5 /dev/sdf1
Marking disk "VOL5" as an ASM disk: [ OK ]
[root@rac1 Desktop]# /usr/sbin/oracleasm scandiskst------------rac2不需要做
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...
在rac2结点上运行
/usr/sbin/oracleasm init-------------------rac2也需要做
/usr/sbin/oracleasm scandisks-------------------rac2也需要做
12. 环境变量设置(两个电脑哦)---变量最后,千万不要留空格
设置环境变量
grid 用户的环境变量
vi .bash_profile
#Grid Settings
TMP=/tmp;export TMP
TMPDIR=$TMP;export TMPDIR
ORACLE_SID=+ASM1;export ORACLE_SID
ORACLE_BASE=/u01/app/oracle;export ORACLE_BASE
GRID_HOME=/u01/app/11.2.0/grid; export GRID_HOME
DB_HOME=$ORACLE_BASE/product/11.2.0/db_1; export DB_HOME
ORACLE_HOME=$GRID_HOME;export ORACLE_HOME
NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS";export NLS_DATE_FORMAT
BASE_PATH=/usr/sbin:$PATH; export BASE_PATH
PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
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
#Grid Settings
TMP=/tmp;export TMP
TMPDIR=$TMP;export TMPDIR
ORACLE_SID=+ASM2;export ORACLE_SID
ORACLE_BASE=/u01/app/oracle;export ORACLE_BASE
GRID_HOME=/u01/app/11.2.0/grid; export GRID_HOME
DB_HOME=$ORACLE_BASE/product/11.2.0/db_1; export DB_HOME
ORACLE_HOME=$GRID_HOME;export ORACLE_HOME
NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS";export NLS_DATE_FORMAT
BASE_PATH=/usr/sbin:$PATH; export BASE_PATH
PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
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
oracle用户的环境变量---一定要注意尾部不能有空格或者|线,否则安装不上em
#oracle Settings
TMP=/tmp;export TMP
TMPDIR=$TMP;export TMPDIR
ORACLE_SID=RAC1;export ORACLE_SID
ORACLE_UNQNAME=RAC;export ORACLE_UNQNAME
ORACLE_BASE=/u01/app/oracle;export ORACLE_BASE
GRID_HOME=/u01/app/11.2.0/grid; export GRID_HOME
DB_HOME=$ORACLE_BASE/product/11.2.0/db_1; export DB_HOME
ORACLE_HOME=$DB_HOME;export ORACLE_HOME
NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS";export NLS_DATE_FORMAT
BASE_PATH=/usr/sbin:$PATH; export BASE_PATH
PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
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
#oracle Settings
TMP=/tmp;export TMP
TMPDIR=$TMP;export TMPDIR
ORACLE_SID=RAC2;export ORACLE_SID
ORACLE_UNQNAME=RAC;export ORACLE_UNQNAME
ORACLE_BASE=/u01/app/oracle;export ORACLE_BASE
GRID_HOME=/u01/app/11.2.0/grid; export GRID_HOME
DB_HOME=$ORACLE_BASE/product/11.2.0/db_1; export DB_HOME
ORACLE_HOME=$DB_HOME;export ORACLE_HOME
NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS";export NLS_DATE_FORMAT
BASE_PATH=/usr/sbin:$PATH; export BASE_PATH
PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
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
13. 检查各个节点的配置
由于文件复制导致权限的问题:oracle用户(rac1)
chmod -R 777 /home/oracle/database
grid用户(rac1) chmod -R 777 /home/grid/grid
[root@rac1 ~]# su - grid
[grid@rac1 ~]$ cd/home/grid/grid
[grid@rac1 grid_installation]$ ./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -fixup -verbose
(1) 可能要运行:/tmp/CVU_11.2.0.4.0_grid/runfixup.sh;
(2) 删除网络virbr0: virsh net-destroy default
virsh net-undefine default
service libvirt-bin restart
ifconfig (删除/恢复virbr0)------------不需要,纯净系统已经预先配置好
14. 安装Grid Infrastructure.
打开终端,export LANG=en在命令提示行执行:执行 runInstaller,如下图所示;通过grid登录rac1节点,运行./runInstaller
cluster
搜索路径为 :/dev/oracleasm/disks
密码:WXHWXH
特别注意目录,应该是:/u01/app/oracle !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
两台电脑哦
/tmp/CVU_11.2.0.4.0_grid/runfixup.sh
/u01/app/oraInventory/orainstRoot.sh
/u01/app/11.2.0/grid/root.sh
忽略错误,正常。
15. cd /home/oracle/database
[oracle@rac1 database]$ export LANG=en
[oracle@rac1 database]$ ./runInstaller
Rac1、rac2根用户:/u01/app/oracle/product/11.2.0/db_1/root.sh
16. 创建ASM磁盘组
1. shell输入asmca命令,打开 ASM配置界面,执行命令后需要等待 10秒钟才能弹出配置界面
Grid用户 :export LANG=en
asmca
17. 使用DBCA创建数据库
1. 在SHELL中输入dbca命令,开始创建数据库
RAC1 GRID用户:chmod -R 777 /u01/app/oracle/cfgtoollogs
export LANG=en;
dbca
2. 选择创建‘RAC集群数据库’
感觉下面最优
18. 控制台问题
[oracle@rac1 ~]$ cd /u01/app/oracle/product/11.2.0/db_1/bin/
[oracle@rac1 bin]$ emctl start dbconsole
由于设计上的原因, dbconsole (or db control ) 在RAC 中无法同时运行在多个节点上, 而只能运行在一个节点上。
但是可以通过以下命令 将dbconsole 转移到该节点。
emca -reconfig dbcontrol –cluster –EM_NODE <nodename> -EM_SID_LIST <SID list>
http://t.askmaclean.com/redirect.php?tid=930&goto=lastpost
19. 一个经典问题的处理(oracle 11g R2 2.0.1.0)
(Note:11201需要解决的问题:解决crs的443问题
在最后运行脚本的时候,报错如下
Adding daemon to inittab
CRS-4124: Oracle High Availability Services startup failed.
CRS-4000: Command Start failed, or completed with errors.
ohasd failed to start: Inappropriate ioctl for device
ohasd failed to start at/u01/app/11.2.0/grid/crs/install/rootcrs.pl line 443.
CRS-4124: Oracle High Availability Services startup failed.
CRS-4000: Command Start failed, or completed with errors.
ohasd failed to start: Inappropriate ioctl for device
ohasd failed to start: Inappropriate ioctl for device at/u01/app/11.2.0/grid/crs/install/roothas.pl line 296.
解决办法是:
在执行root.sh脚本时出现Adding daemon to inittab的时候,在另一个窗口使用root立即执行以下命令:
/bin/dd if=/var/tmp/.oracle/npohasd of=/dev/nullbs=1024 count=1(等待root.sh成功执行完毕后可以ctrl+c取消这里的命令)
之后创建以下文件输入以下命令
#vi /etc/init/oracle-ohasd.conf
start on runlevel [35]
stop on runlevel [!35]
respawn
exec /etc/init.d/init.ohasd run >/dev/null 2>&1 </dev/null
忽略rac-scan的错误,因没有配置dns导致,但是各个节点已经能够ping通)
· dbca创建数据库
需要用grid用户运行netca,加入一个listener,并验证
crs_stat -t
lsnrctl start
lsnrctl status
srvctl status listener
l 如果dbca找不到ASM盘,需要运行
修改ASM设备的组为asmdba,也可以给ORACLE用户加到asmadmin,
usermod -a -G asmadmin oracle
l 遇到创建文件失败的情况,需要到/dev/raw/目录下运行
chmod 660 /dev/raw/*
chown grid:asmadmin /dev/raw/*
然后重新启动后再运行dbca.
l 安装完后在rac1上用oracle登录显示状态
oracle@rac1 ~]$ srvctl config database -d RAC
Database unique name: RAC
Database name: RAC
Oracle home: /u01/app/oracle/product/11.2.0/db_1
Oracle user: oracle
Spfile: +DATA/RAC/spfileRAC.ora
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: RAC1
Database instances: RAC1,RAC2
Disk Groups: DATA、FRA
Services:
Database is administrator managed
l [oracle@rac1 ~]$ srvctl status database -d RAC1
Instance RAC11 is running on node rac1
Instance RAC12 is running on node rac2
l 在Oracle 11g环境中,Oracle的关闭和启动顺序如下: -------经验证,可行
关闭顺序:
1.关闭数据库,oracl用户执行srvctl命令:
[oracle@rac1 ~]$ srvctl stop database -dRAC ---停止所有节点上的实例
或者每个节点登录数据库后执行SQL>shutdown immediate
2.停止HAS(High Availability Services),必须以root用户
[root@rac1 oracle]# cd /u01/app/11.2.0/grid/bin
[root@rac1 bin]# ./crsctl stop has -f Note:每个用户分别执行
./crsctl stop crs -f Note:crs和has是同义词
3.停止集群服务,必须以root用户:
[root@rac1 oracle]# cd /u01/app/11.2.0/grid/bin
[root@rac1 bin]# ./crsctl stop cluster -all ----停止所有节点服务
或[root@rac1 bin]# ./crsctl stop cluster ----停止本节点集群服务,每个节点分别执行
也可以如下控制所停节点:
[root@rac1 bin]# ./crsctl stop cluster -n rac1 rac2
如果在一个节点停止其他所有节点的,而不一一执行命令,则也可以采用:
[root@rac1 bin]# ./crsctl stop cluster –all
启动顺序:
11g R2的RAC默认开机会自启动,当然如果需要手工启动。手工启动按照cluster, HAS, database的顺序启动即可,具体命令如下:
1、启动集群(cluster)
[root@rac1 oracle]# cd /u01/grid/11.2.0/grid/bin
[root@rac1 ~]# ./crsctl start cluster -all --所有节点同时启动
或者只启动指定节点的
[root@rac1 ~]# ./crsctl start cluster -n rac1 rac2 --两个节点同时启动
2、启动HAS(High Availability Services),必须以root用户
[root@rac1 bin]# ./crsctl start has
以上has启动命令需要在每个节点分别执行
3、启动数据库,oracle用户执行srvctl命令(假设数据库名为ORCL):
[oracle@rac1 ~]$ srvctl start database -dRAC ---停止所有节点上的实例
srvctl status database -d RAC---------------查看数据库运行状态
或者每个节点登录数据库后执行SQL>startup
使用crs_stat命令来进程验证。
[grid@oracle1 ~]$ crs_stat -t -v
附录
1. 关闭一个实例;
srvctl stop instance -dRAC -iRAC1
更多推荐
所有评论(0)