Virtualbox环境中安装Oracle 11gr2 RAC(ASM)

系统Oracle Linux 6.5,Oracle 11.2.0.1

如何规划网络配置(配置多网卡,实现连通性,规划内外网,eth0,eth1,vip以及scan ip)

规划共享磁盘配置(virtualbox中的实现)

ASM配置及权限

两个节点的ssh互信配置(为了rac1将介质复制到rac2)

ntp的时间同步配置

dns的解析配置,采用了hosts做替代

出现crs问题后的解决办法(非常经典)-2.0.4.0没有此问题哦

一、Linux下准备工作(节点1:rac1;节点2:rac2)

1.  vi /etc/selinux/config-------永久关闭selinux(也可以系统-管理-Selinux管理)

SELINUX=disabled--------然后重启服务器

2.  1)先界面关闭防火墙;2chkconfig 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块网卡,一块对外网络接口,一块私有网络接口(心跳)。

vipscan 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,需要改回eth0eth1,方法如下

首先删除eth0eth1,再把eth2,eth3改成eth0eth1,再做以下操作:

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节点)

需要针对oraclegrid用户都需要配置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)

1virtualbox rac1中添加盘片,选择固定大小盘片 选择固定大小,10G,添加个盘片NewVirtualDisk1.vdiNewVirtualDisk2.vdiNewVirtualDisk3.vdiNewVirtualDisk4.vdiNewVirtualDisk5.vdi 

 

 

 

 

 

 

 

2设置成共享磁盘,步骤如下图:

 

 

 

3)设置完成之后,在rac2SAST控制器中添加刚才设置好的共享虚拟硬盘。 

 

 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.
5rac1rac2结点都需要做这步--两台都需要做!!!

[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

 

 

 

 

 

 

 

 

 

 

 

Rac1rac2根用户:/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 

 如果dbca找不到ASM,需要运行

修改ASM设备的组为asmdba,也可以给ORACLE用户加到asmadmin,
usermod -a -G asmadmin oracle

遇到创建文件失败的情况,需要到/dev/raw/目录下运行

chmod 660 /dev/raw/*

chown grid:asmadmin /dev/raw/*

然后重新启动后再运行dbca.

  安装完后在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: DATAFRA

Services: 
Database is administrator managed

[oracle@rac1 ~]$ srvctl status database -d RAC1
Instance RAC11 is running on node rac1
Instance RAC12 is running on node rac2

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 R2RAC默认开机会自启动,当然如果需要手工启动。手工启动按照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

猜你喜欢

转载自blog.csdn.net/w892824196/article/details/79236124