❶ 如何使用oracle 10g rac
ORACLE RAC系统是指ORACLE公司针对ORACLE Database推出的一个群集系统,RAC为real application cluster的简写,意味真正的应用程序群集系统。RAC能够独立进行群集方式工作,同时也支持嵌入第三方群集系统中,比如SUN CLUSTER 3.2等所谓的vender群集系统中。
结合ORACLE的ASM(自动存储管理)、Oracle Clusterware等,建议数据库在系统独立运行,无需运行第三方的群集系统,卷管理系统等。
1.2 安装前的准备工作
俗话说,磨刀不误砍柴工,在安装RAC之前,仔细阅读官方的安装手册是最佳途径,因为网上的很多文章写的时候,都是按照作者所拥有的环境进行安装的,实际中会有很多的变数导致安装出现很多情况,因此,网上文章作为每个安装工程师来说,只有参考价值。
1.2.1 硬件方面的准备工作
在硬件方面,首先确认服务器的类型,操作系统的类型,存储器是否正确连接到两台或者多台服务器上,主机系统能否正确访问存储,是否所有主机系统共享了改存储器。
主机系统方面,是否有足够的网卡,RAC需要至少一个public和一个private的网卡,分别用于数据库instance的访问和心跳网卡(此心跳也用来传输一些数据库的数据)。
1.2.2 软件方面的准工作
在软件方便,一是根据主机类型,选择相应的数据库软件,包括database和clusterware软件,需要注意的是,最好能选择比较新的版本的软件,因为ORACLE RAC方面,针对很多平台,最初版本软件或多或少都会存在一些bug,选择正确的版本后,安装能够尽量减少麻烦。
操作系统方面,也应该根据数据库软件做最优的安装,比如solaris 10,最好能够使用update 10的版本,EIS光盘最好能够使用最近的光盘来安装最新的10的推荐补丁包。补丁一定要打最新的,这个可以大大减小bug的产生。
2. 安装准备工作
本示例安装主要基于ORACLE SPARC服务器的两个节点安装RAC,由于使用的是T5120用LDM创建的两个虚拟主机,所以相关网卡名字等都是按虚拟机里面的命名方式进行的。
安装完操作系统后,必须打上操作系统的推荐补丁包,用最近的EIS光盘来,如果没有EIS光盘,可以到oracle网站下载最近的推荐补丁包,比如solaris10的最新补丁下载地址如下:这个可能需要OPN的账号
https://updates.oracle.com/download/12714436.html
2.1 网络配置文件的修改
/etc/hosts该文件记录了将来使用的IP地址,包括public和private的地址:
192.168.0.12 orac1 (主机1的本地地址)
192.168.0.13 orac2 (主机2的本地地址)
192.168.0.14 orac1-vip (主机1的public地址)
192.168.0.16 orac2-vip (主机2的public地址)
192.168.0.15 orac1-priv(主机1的private地址)
192.168.0.17 orac2-priv(主机2的private地址)
私有地址可以设置成另外一个网段的地址,本示例都为一个网段地址。
另外一台主机的/etc/hosts文件里面需要这些地址,都写上。
/etc/下主机网卡配置文件,public地址将来可以用在本地地址的那张网卡上,系统能够plumb一个虚拟网卡,比如vnet0:1,私有地址必须单独指定,比如/etc/hostname.vnet1,里面写入orac1-priv即可在系统reboot时候自动将私有地址网卡plumb起来。
建立好所有配置文件,需要确认以下地址是能够ping通的:
ping orac1 ping orac2 ping orac1-priv ping orac2-priv
2.2 创建相应的ORACLE用户和用户组
根据oracle数据库安装的需要创建相应的unix组和用户oracle:
groupadd dba 创建dba组
groupadd oinstall 创建oinstall组
useradd -g oinstall -G dba -d /opt/oracle -m -s /bin/sh oracle 创建oracle用户
passwd oracle 修改oracle用户的密码
创建这些用户和用户组,对来说非常重要,千万不要小看这些,首先必须保证以上的gid和uid在所有节点上保持一致,在安装Clusterware,如果没有正确设置一些目录和设备的权限,可能会导致这些软件不能正确安装或者安装后无法正常使用。
oracle用户的.profile文件,需要做如下的定义,具体可以根据文档对照主机系统配置来进行修改和优化:
ORACLE_BASE=/opt/oracle/app/oracle
export ORACLE_BASE
ORACLE_HOME=/opt/oracle/app/oracle/10g
export ORACLE_HOME
ORACLE_SID=inst-ora1
export ORACLE_SID
PATH=${PATH}:$ORACLE_HOME/bin
export PATH
其他诸如 LD_LIBRARY等参数都可以在.profile文件里面定义,SID每个节点都需要定义成1,2,3,4等,前缀为整个群集database定义的实例名,比如inst-ora,各个节点的SID就是inst-ora1,insta_ora2等等。
建立信任关系:
如果是10g,只需要建立rsh的信任关系,如果是11G的话,必选建立ssh的主机信任关系:
1. rsh信任关系
在所有节点执行以下命令:
su - oracle
touch .rhosts
echo + > .rhosts
2. ssh信任关系
用命令来创建这些信任关系非常方便,如果使用11g的runInstaller程序的话,可以使用该程序提供的设置程序来建立信任关系,以下为命令方式建立:
su – oracle
mkdir .ssh(如果没有.ssh就创建之); chmod 755 .ssh
/usr/bin/ssh-keygen -t rsa
/usr/bin/ssh-keygen -t dsa
以上根据提示输入恰当的内容即可,以上两个命令分别在.ssh目录下生成id_rds.pub和id_dsa.pub两个文件,将这两个文件的内容全部拷贝到authorized_keys文件里面去,chmod 644 .ssh/authorized_keys文件。该文件里面应该包含所有节点的id_rds.pub和id_dsa.pub文件的内容。
2.3 修改系统参数
操作系统kernel参数需要根据具体机器配置进行适当修改,以下为典型的系统参数,可以将这些写入/etc/system文件中,修改这个文件后,需要reboot系统才能生效:
set noexec_user_stack=1
set semsys:seminfo_semmni=100
set semsys:seminfo_semmns=1024
set semsys:seminfo_semmsl=256
set semsys:seminfo_semvmx=32767
set shmsys:shminfo_shmmax=4294967295
set shmsys:shminfo_shmmin=1
set shmsys:shminfo_shmmni=100
set shmsys:shminfo_shmseg=10
在Solaris 10下,如果使用project来管理,可以动态修改这些kernel参数,这对以后生产系统在线提供了非常好的便利。
2.4 创建CRS的home目录
CRS的home最好不要和ORACLE的home放在一起,因为CRS目录最终将成为root用户的权限。
mkdir -p /opt/crs/oracle/proct/10/app
chown -R root:oinstall /opt/crs
chmod -R 775 /opt/crs/oracle
注意此处crs目录的宿主被设置成root:oinstall,如果设置成其他的话,安装以后运行root.sh脚本将会有大量的警告,同时,crs无法正常运行的可能性将非常大。
2.5 存储设备的设置
存储设备主要提供给Clusterware软件存放OCR和voting disk之用,并为数据库提供存放数据等文件的,决定存储如何使用非常重要,这主要影响以后数据库的架构,存储可以支持ASM方式、cluster file system方式以及raw设备方式。以下的matrix为各个存储方式对CRS等的支持:
File Types Supported
Storage Option CRS Database Recovery
Automatic Storage Management No Yes Yes
Cluster file system Yes Yes Yes
NFS file system
PRIMECLUSTER and a certified Yes Yes Yes
NAS device (SPARConly)
Shared raw logical volumes (SPARC only) Yes Yes No
Shared raw partitions Yes Yes No
建议使用ASM自动存储管理方式来进行存储的管理,对于Cluster file system来说,大多数需要成本来购买相应的软件,但也可以采用SUN公司的QFS软件(该软件应该是免费的)。采用raw裸设备的话,对用户来说,要求相对要高些,因为raw安装数据库的时候,需要为每个dbf等文件分配一个raw设备,以后需要添加新的dbf等文件话,其操作步骤还是比较繁琐的。
使用ASM一定要注意每个LUN的划分,千万不要使用EFI格式做磁盘的label,在多次实践中发现,在使用EFI的label格式的存储时候,将出现一个比较奇怪的现象,建好cluster后能够顺利创建数据库,但是instance只能在一个节点启动,另外一个节点无法启动,查看alertlog文件,报告出现一个ora-600的错,以及queue file IO error等错误。在solaris下,将LUN划分为2T以下,采用VTOC方式的label即可,官方文档建议创建大空间的LUN来减少系统对存储的管理,但实践证明,如果存储空间大,可以建立多个小于2T的LUN,然后创建一个或多个ASM组来管理这些LUN是比较理想的。
根据RAC对存储空间的要求来划分对应的LUN或者slice,存放OCR的LUN 和voting disk都可以小些,建议使用1G的空间,存放数据库的数据文件等存储的LUN划分得大些。
如果这些LUN曾经被用过,特别是曾经在RAC中被使用过的话,那么就需要将磁盘里面的内容清除,方法就是使用dd命令将磁盘内容清除,例如:
dd if=/dev/zero of=/dev/rdsk/c2t0d0s0 bs=1024k count=1000
本示例中,c0d1s0 作为OCR存放设备,c0d1s0作为voting disk,安装中安装程序会提示使用哪种冗余方式,一般采用Normal方式,也就是OCR设备需要两个设备来做mirror,voting disk需要三块设备做冗余。如果这些设备在存储器上已经做了raid 5等冗余保护,那么这些冗余方式可以采用External方式,即只要单个设备即可。
设备权限必须设置正确,否则安装程序会报错,具体权限设置如下:
chown -R root:oinstall /dev/rdsk/c0d1s0 OCR盘宿主为root,用户为oinstall
chmod 640 /dev/rdsk/c0d1s0
chown -R root:oinstall /dev/rdsk/c0d1s3 voting disk设置如同CRS盘
chmod -R 660 /dev/rdsk/c0d1s3 voting disk文件为660的读写属性
存放ORACLE数据库dbf等文件的raw设备权限设置为oracle:dba即可,写权限设置为775。
❷ linux 环境变量怎么让oracle rac 命令
If more lines of text exist in the file, print another page.
namespace DesignPattern.Create.Component
{
abstract class Component {
protected string name;
public Component(string name)
{
this.name = name;
}
❸ 在RAC下,如何扩表空间
1. 操作是在客户业务空闲的时候。
2. 查看datavg是否还有空闲的空间(数据文件在datavg上),若有的话,我们就可以在其上新建逻辑卷(裸设备)。
lsvg datavg 查看剩余的空间,只有有空间剩余,我们才能在上面新建裸设备。
3. A.用lsvg datavg查看卷组pp size,可看到其大小为128M,因此建立10G的逻辑卷需要80个PP
B.smitty lv
add a logical volume,此次共添加五个裸设备,五个表空间。分别是10000M
或者用命令mklv -y rac_xjsiqyb04(rac_xjsiqyb05、 rac_xjsi05、 rac_xjsi06、 rac_xjsi07) datavg 80 raw (rac_xjsiqyb04为新建的逻辑卷名,下同)
4. 查看新建逻辑卷的访问属性,属主是否为oracle,若不是的话,则修改它的访问属性为oracle.
A.ls -al
B.chown oracle:dba /dev/rrac_xjsiqyb04(另外四个也做此)
C.chmod 755 /dev/ rrac_xjsiqyb04(每做一次chown就得做一次chmod.755表示赋予它读写权限)
D.分别在10.200.5.8上再做五次改属主赋权限。
E.做完所有的操作后就可以扩表空间了,在5.6或5.8上做都可以,分别是10000M,为什么不是10240M呢?是因为还要留一定的空间给裸设备的头部要保留一定的空间,应用程序在使用裸设备时不可以覆盖这一部分,否则会对裸设备造成损坏。所以一个裸设备的实际可用空间是分配给裸设备的空间再减去这部分操作系统保留空间。
Alter tablespace xjsi add datafile ‘/dev/rrac_xjsiqyb04’size 10000m ;
(注:rrac_xjsiqyb对应字符设备,rac_xjsiqyb对应块设备。在添加数据文件的时候,若写成rrac_xjsiqyb,数据则会写到所在卷datavg所在的存储空间上,若写成rac_xjsiqyb的话,则实际上生成了是/上的空间, 在/dev/datavg下查,一定会多出一个非创建的目录来,就是说改变了数据写的位置然后再用查一查)
5. 登录数据库,将新增加的裸设备增加到表空间
以sqlplus为例
su - oracle
sqlplus /nolog
conn /as sysdba
alter tablespace xjsi add datafile /dev/rxjsilv size 10G;
6. 用lsvg -0 看该卷组datavg是否被激活,若没有的话,就varyoffvg datavg激活。在RAC下,作完这些操作后,不再需要同步双机,因为他们本身就是共用一个存储设备。
❹ 服务器重启后怎么重启oracle
您好,很高兴为您解答。
在root用户下启动crs:
crsctl start crs
手动启动rac的命令如下:
RAC的启动和关闭
如果都遵循了上面的安装步骤,那么每次节点重新启动的时候,所有服务都会自动启动,如果需要关闭或者启动某个节点,如下所示
*停止RAC
emctl stop dbconsole
srvctl stop instance -d orcl -i orcl1
srvctl stop instance -d orcl -i orcl2
srvctl stop asm -n rac1
srvctl stop asm -n rac2
srvctl stop nodeapps -n rac1
srvctl stop nodeapps -n rac2
*启动RAC
和上面的步骤正好相反即
srvctl start nodeapps -n rac1
srvctl start nodeapps -n rac2
srvctl start asm -n rac1
srvctl start asm -n rac2
srvctl start instance -d orcl -i orcl2
srvctl start instance -d orcl -i orcl1
emctl start dbconsole
使用 SRVCTL 启动/停止所有实例
启动/停止所有实例及其启用的服务。
srvctl start database -d orcl
srvctl stop database -d orcl
如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】
希望我的回答对您有所帮助,望采纳!
❺ oracle rac 怎么排错
CRS_STAT命令在集群启动时要多用,在两个节点上执行,可以快速发现问题;
本次如果我只在节点2上运行CRS_STAT命令,那么就不会发现此类错误;
通过本次故障,我决定关闭ASM的自启动,改为手动启动,以避免类似错误重复发生。
srvctl disable asm -n crp31
srvctl disable asm -n crp32
❻ 如何控制oracle RAC 进行并行运算
RAC的一大优点就是可以跨节点进行并行计算,那么如何控制并行运算?这就是这篇文章要讨论的内容。
合理设置跨节点并行,需要先设置一些参数:
instance_groups:这个参数主要是设置该节点实例是否属于某一个实例组。每个节点可以设置多个不同的实例组名,实例组名用逗号隔开。
parallel_instance_group设置的值为instance_groups里面设置的值,表明这个节点上面进行的并行操作可以跨越哪些实例组。
alter system set instance_groups='dw','dw1','dw123','dw124','dw134' scope=spfile sid='dwrac1';
alter system set instance_groups='dw','dw2','dw123','dw124','dw234' scope=spfile sid='dwrac2';
alter system set instance_groups='dw','dw3','dw123','dw134','dw234' scope=spfile sid='dwrac3';
alter system set instance_groups='dw','dw4','dw124','dw134','dw234' scope=spfile sid='dwrac4';
以上参数分别为4个节点定义了5个instance group,有的group包含多个节点,有的group只包含一个节点。
一、跨所有节点执行
分两种情况进行测试:instance_groups包含所有节点和instance_groups只包含一个节点。
1. instance_groups包含所有节点
1). 节点2参数设置情况
admin@dwrac2> show parameter instance_group
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_groups string dw, dw2, dw123, dw124, dw234
parallel_instance_group string
只定义了instance_groups,不设置parallel_instance_group。
前面我们设置过,dw这个instance_group包含了所有的节点。
2). 在节点2发出查询
admin@dwrac2> select /*+ parallel(a,128) */count(1) from testuser.big_table a;
3). 另开一个窗口查询并行进程情况
SQL> select INST_ID,COUNT(1) from gv$px_session p where (p.inst_id,p.sid) in (select s.inst_id,s.sid from gv$session s where s.username='ADMIN' and mole like 'SQL*%') GROUP BY INST_ID;
INST_ID COUNT(1)
---------- ----------
1 32
2 33
4 32
3 32
可以看到,并行会话(parallel slaves)平均分配到4个节点上。节点2多一个进程是因为它是并行查询的发起者,额外的会话是发起会话,也就是并行查询协调器(parallel query coordinator),其余的是并行从属进程。
之所有能分配到4个节点上,是因为4个节点都属于dw这个instance group,且都没有设定parallel_instance_group。
2. instance_groups只包含一个节点
1). 修改参数
admin@dwrac2> alter system set instance_groups='dw2' scope=spfile sid='dwrac2';
重启
admin@dwrac2> show parameter instance_group
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_groups string dw2
parallel_instance_group string
不设置parallel_instance_group,且instance_group=dw2只包含节点2.
2). 发出并行查询
admin@dwrac2> select /*+ parallel(a,128) */count(1) from testuser.big_table a;
3). 另开一个窗口查询并行进程情况
SQL> select INST_ID,COUNT(1) from gv$px_session p where (p.inst_id,p.sid) in (select s.inst_id,s.sid from gv$session s where s.username='ADMIN' and mole like 'SQL*%') GROUP BY INST_ID;
INST_ID COUNT(1)
---------- ----------
1 32
2 33
4 32
3 32
可以看到,即使是instance_groups='dw2'只在节点2出现,但是如果不设置parallel_instance_group,并行仍然可以跨越所有节点。
二、跨部分节点执行
这部分分两种测试:发出命令的节点属于parallel_instance_group的一员以及发出命令的节点不属于parallel_instance_group
1. 发出命令的节点属于parallel_instance_group的一员
1). 在节点2修改参数
admin@dwrac2> show parameter instance_group
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_groups string dw, dw2, dw123, dw124, dw234
parallel_instance_group string
admin@dwrac2> alter session set parallel_instance_group='dw2';
Session altered.
--这个设置的会强制并行操作只会属于dw2这个instance group的节点中执行。
--注意:parallel_instance_group是大小写区分的,如果用alter session set parallel_instance_group=dw2,则不会起任何并行进程,因为不加单引号的话,实际上载后台dw2会被转换成大写的DW2,不属于任何一个instance group。
2). 在节点2发出同样的查询
admin@dwrac2> select /*+ parallel(a,128) */ count(1) from testuser.big_table a;
3). 另起一个会话查询并行情况
SQL> select INST_ID,COUNT(1) from gv$px_session p where (p.inst_id,p.sid) in (select s.inst_id,s.sid from gv$session s where s.username='ADMIN' and mole like 'SQL*%') GROUP BY INST_ID;
INST_ID COUNT(1)
---------- ----------
2 129
可以看到,因为只有节点2属于dw2这个instance group,所有并行会话都分布在节点2上。
2. 发出命令的节点不属于parallel_instance_group
1) 在节点2修改参数
admin@dwrac2> show parameter instance_group
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_groups string dw, dw2, dw123, dw124, dw234
parallel_instance_group string
admin@dwrac2> alter session set parallel_instance_group='dw1';
Session altered.
根据我们之前的设置,只有节点1属于dw1这个instance group。
2) 在节点2发出查询
admin@dwrac2> select /*+ parallel(a,128) */ count(1) from testuser.big_table a;
3) 新开一个会话查询并行进程信息
SQL> select INST_ID,COUNT(1) from gv$px_session p where (p.inst_id,p.sid) in (select s.inst_id,s.sid from gv$session s where s.username='ADMIN' and mole like 'SQL*%') GROUP BY INST_ID;
INST_ID COUNT(1)
---------- ----------
1 128
2 1
可以看到,除了并行查询协调器(也就是发出查询命令的会话)外,所有并行进程都运行在节点1上。
这也说明了,即使发出并行查询指令的节点不属于parallel_instance_group,但它仍然可以调用属于parallel_instance_group的节点资源。
admin@dwrac2> alter session set parallel_instance_group='dw134';
Session altered.
Elapsed: 00:00:00.00
admin@dwrac2> select /*+ parallel(a,128) */ count(1) from testuser.big_table a;
SQL> select INST_ID,COUNT(1) from gv$px_session p where (p.inst_id,p.sid) in (select s.inst_id,s.sid from gv$session s where s.username='ADMIN' and mole like 'SQL*%') GROUP BY INST_ID;
INST_ID COUNT(1)
---------- ----------
1 42
2 1
4 42
3 44
总结一下:
1. RAC可以通过instance_groups和parallel_instance_group来灵活控制如何跨节点进行并行运算。
2. parallel_instance_group区分大小写。如果设定的parallel_instance_groups值不属于整个cluster的任意一个instance_groups设定值,则Oracle只会串行执行操作,不会启用并行。
3. 如果不设定parallel_instance_group,不管instance_group如何设置,并行可以跨越所有节点
4. 如果某个节点设定了有效的parallel_instance_group,则在该节点发出的并行操作可以运行在parallel_instance_groups包含的所有节点上,不管parallel_instance_groups的节点是否包含发出命令的节点。
也就是说并行会话运行在那些节点只与instance_groups和parallel_instance_groups有关,与命令在那个节点发出无关。
5. 一般建议设置好合适的instance_groups,但不要在系统级设定parallel_instance_groups,根据实际情况在会话级设置parallel_instance_groups参数。
6. 以下是一些例子及说明
dwrac1.instance_groups='dw','dw1','dw123','dw124','dw134'
dwrac2.instance_groups='dw','dw2','dw123','dw124','dw234'
dwrac3.instance_groups='dw','dw3','dw123','dw134','dw234'
dwrac4.instance_groups='dw','dw4','dw124','dw134','dw234'
dwrac1.parallel_instance_groups='' --节点1发起的并行计算请求的会话可跨越所有节点执行
dwrac1.parallel_instance_groups='dw' --节点1发起的并行计算请求的会话可跨越所有节点执行
dwrac1.instance_groups='dw1' --节点1发起的并行计算请求的会话只可在节点1执行
dwrac1.instance_groups='dw2' --节点1发起的并行计算请求的会话只可在节点2执行
dwrac2.instance_groups='dw134' ----节点2发起的并行计算请求的会话只可在节点1/3/4上执行
dwrac1.instance_groups='other' --不会启用并行
❼ 如何进行 Oracle 10g RAC关闭及启动
一. 检查共享设备
一般情况下, 存放OCR 和 Voting Disk 的OCFS2 或者raw 都是自动启动的。 如果他们没有启动,RAC 肯定是启动不了的。
1.1 如果使用ocfs2的,检查ocfs2 状态
/etc/init.d/o2cb status
在挂载之前,/etc/init.d/o2cb status 显示为Checking O2CB heartbeat: Not active。
在格式化和挂载文件系统之前,应验证 O2CB 在两个节点上均联机;O2CB 心跳当前没有
活动,因为文件系统还没有挂载 。挂载之后就会变成active。
mount -t ocfs2 -o datavolume /dev/sdb1 /u02/oradata/orcl
1,2. 如果使用raw device.
[root@raw1 ~]# cd /dev/raw/
[root@raw1 raw]# ls
raw1 raw2
或者:
[root@raw1 init.d]# /etc/init.d/rawdevices status
/dev/raw/raw1: bound to major 8, minor 17
/dev/raw/raw2: bound to major 8, minor 18
1.3. 检查ASM
/etc/init.d/oracleasm listdisks
二. 自动启动RAC并检查相关进程
RAC 在启动的时候crs 等进程都是自动启动的:
[root@rac1 init.d]# ls -l /etc/init.d/init.*
-r-xr-xr-x 1 root root 1951 Feb 26 22:38 /etc/init.d/init.crs
-r-xr-xr-x 1 root root 4714 Feb 26 22:38 /etc/init.d/init.crsd
-r-xr-xr-x 1 root root 35394 Feb 26 22:38 /etc/init.d/init.cssd
-r-xr-xr-x 1 root root 3190 Feb 26 22:38 /etc/init.d/init.evmd
我们要查看一下crs 的状态:
正常情况下, 进程都是online的:
[root@raw1 bin]# ./crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora.raw.db application ONLINE ONLINE raw1
ora.raw.raw.cs application ONLINE ONLINE raw1
ora....aw1.srv application ONLINE ONLINE raw1
ora....aw2.srv application ONLINE ONLINE raw2
ora....w1.inst application ONLINE ONLINE raw1
ora....w2.inst application ONLINE ONLINE raw2
ora....SM1.asm application ONLINE ONLINE raw1
ora....W1.lsnr application ONLINE ONLINE raw1
ora.raw1.gsd application ONLINE ONLINE raw1
ora.raw1.ons application ONLINE ONLINE raw1
ora.raw1.vip application ONLINE ONLINE raw1
ora....SM2.asm application ONLINE ONLINE raw2
ora....W2.lsnr application ONLINE ONLINE raw2
ora.raw2.gsd application ONLINE ONLINE raw2
ora.raw2.ons application ONLINE ONLINE raw2
ora.raw2.vip application ONLINE ONLINE raw2
如果出现以下情况:
[root@rac2 bin]# ./crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora.rac.db application ONLINE UNKNOWN rac1
ora....orcl.cs application ONLINE UNKNOWN rac1
ora....ac1.srv application OFFLINE OFFLINE
ora....ac2.srv application OFFLINE OFFLINE
ora....c1.inst application ONLINE UNKNOWN rac1
ora....c2.inst application ONLINE UNKNOWN rac2
ora....SM1.asm application ONLINE ONLINE rac1
ora....C1.lsnr application ONLINE UNKNOWN rac1
ora.rac1.gsd application ONLINE UNKNOWN rac1
ora.rac1.ons application ONLINE ONLINE rac1
ora.rac1.vip application ONLINE ONLINE rac1
ora....SM2.asm application ONLINE ONLINE rac2
ora....C2.lsnr application ONLINE UNKNOWN rac2
ora.rac2.gsd application ONLINE UNKNOWN rac2
ora.rac2.ons application ONLINE ONLINE rac2
ora.rac2.vip application ONLINE ONLINE rac2
解决方法:
1. 用crs_stat 查看进程全部信息:
[root@rac2 bin]# ./crs_stat
NAME=ora.rac.db
TYPE=application
TARGET=ONLINE
STATE=ONLINE on rac2
NAME=ora.rac1.LISTENER_RAC1.lsnr
TYPE=application
TARGET=ONLINE
STATE=UNKNOWN on rac1
NAME=ora.rac1.gsd
TYPE=application
TARGET=ONLINE
STATE=UNKNOWN on rac1
NAME=ora.rac2.LISTENER_RAC2.lsnr
TYPE=application
TARGET=ONLINE
STATE=UNKNOWN on rac2
... ...
2. 对于offline 的进程,我们可以直接手动的启动它
[root@rac2 bin]# ./crs_start ora.rac.orcl.rac1.srv
Attempting to start `ora.rac.orcl.rac1.srv` on member `rac1`
Start of `ora.rac.orcl.rac1.srv` on member `rac1` succeeded.
3. 对于UNKNOWN 的进程,我们可以先stop 它, 在start。
[root@rac2 bin]# ./crs_stop ora.rac2.gsd
Attempting to stop `ora.rac2.gsd` on member `rac2`
Stop of `ora.rac2.gsd` on member `rac2` succeeded.
[root@rac2 bin]# ./crs_start ora.rac2.gsd
Attempting to start `ora.rac2.gsd` on member `rac2`
Start of `ora.rac2.gsd` on member `rac2` succeeded.
4. 如果crs_stop不能结束,crs_start 不能启动的进程,我们有2中方法来解决:
4.1)是用crs_stop -f 参数把crs中状态是UNKNOWN的服务关掉,然后再用crs_start -f (加一个-f的参数)启动所有的服务就可以。要分别在两个节点上执行;
[Oracle@rac2 ~]$ crs_start -f ora.ora9i.ora9i2.inst
Attempting to start `ora.ora9i.ora9i2.inst` on member `rac2`
Start of `ora.ora9i.ora9i2.inst` on member `rac2` succeeded.
[oracle@rac2 ~]$ crs_stop -f ora.ora9i.db
Attempting to stop `ora.ora9i.db` on member `rac2`
Stop of `ora.ora9i.db` on member `rac2` succeeded.
4.2)转换到root用户下用/etc/init.d/init.crs stop先禁用crs,然后再用/etc/init.d/init.crs start去启用crs,启用crs后会自动启动crs的一系列服务,注意此种方法需要在两台节点上都执行;
5. 可以用命令一次启动和关闭相关进程
[root@rac2 bin]# ./crs_stop -all
[root@rac2 bin]# ./crs_start -all
三. 手动启动RAC
一般情况下每次节点启动的时候,所有服务都会自动启动,如果需要关闭或者启动某个节点,如下所示
停止RAC:
emctl stop dbconsole
srvctl stop instance -d raw -i raw1
srvctl stop instance -d raw -i raw2
srvctl stop asm -n raw1
srvctl stop asm -n raw2
srvctl stop nodeapps -n raw1
srvctl stop nodeapps -n raw2
启动RAC:
和上面的步骤正好相反即
srvctl start nodeapps -n raw1
srvctl start nodeapps -n raw2
srvctl start asm -n raw1
srvctl start asm -n raw2
srvctl start instance -d raw -i raw2
srvctl start instance -d orcl -i raw1
emctl start dbconsole
使用 SRVCTL 启动/停止所有实例及其启用的服务。
srvctl start database -d orcl
srvctl stop database -d orcl
注:CRS Resource 包括GSD(Global Serveice Daemon),ONS(Oracle Notification Service),VIP, Database, Instance 和 Service. 这些资源被分成2类:
GSD,ONS,VIP 和 Listener 属于Noteapps类
Database,Instance 和Service 属于 Database-Related Resource 类。
示例:
[root@raw1 bin]# ./crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora.raw.db application ONLINE ONLINE raw1
ora.raw.raw.cs application ONLINE ONLINE raw1
ora....aw1.srv application ONLINE ONLINE raw1
ora....aw2.srv application ONLINE ONLINE raw2
ora....w1.inst application ONLINE ONLINE raw1
ora....w2.inst application ONLINE ONLINE raw2
ora....SM1.asm application ONLINE ONLINE raw1
ora....W1.lsnr application ONLINE ONLINE raw1
ora.raw1.gsd application ONLINE ONLINE raw1
ora.raw1.ons application ONLINE ONLINE raw1
ora.raw1.vip application ONLINE ONLINE raw1
ora....SM2.asm application ONLINE ONLINE raw2
ora....W2.lsnr application ONLINE ONLINE raw2
ora.raw2.gsd application ONLINE ONLINE raw2
ora.raw2.ons application ONLINE ONLINE raw2
ora.raw2.vip application ONLINE ONLINE raw2
[oracle@raw1 ~]$ emctl stop dbconsole
TZ set to PRC
Oracle Enterprise Manager 10g Database Control Release 10.2.0.1.0
Copyright (c) 1996, 2005 Oracle Corporation. All rights reserved.
Stopping Oracle Enterprise Manager 10g Database Control ...
... Stopped.
[oracle@raw1 ~]$ srvctl stop instance -d raw -i raw1
[oracle@raw1 ~]$ srvctl stop instance -d raw -i raw2
[oracle@raw1 ~]$ srvctl stop asm -n raw1
[oracle@raw1 ~]$ srvctl stop asm -n raw2
[oracle@raw1 ~]$ srvctl stop nodeapps -n raw1
[oracle@raw1 ~]$ srvctl stop nodeapps -n raw2
[oracle@raw1 bin]$ crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora.raw.db application OFFLINE OFFLINE
Ora.raw.raw.cs application OFFLINE OFFLINE
ora....aw1.srv application OFFLINE OFFLINE
ora....aw2.srv application OFFLINE OFFLINE
ora....w1.inst application OFFLINE OFFLINE
ora....w2.inst application OFFLINE OFFLINE
ora....SM1.asm application OFFLINE OFFLINE
ora....W1.lsnr application OFFLINE OFFLINE
ora.raw1.gsd application OFFLINE OFFLINE
ora.raw1.ons application OFFLINE OFFLINE
ora.raw1.vip application OFFLINE OFFLINE
ora....SM2.asm application OFFLINE OFFLINE
ora....W2.lsnr application OFFLINE OFFLINE
ora.raw2.gsd application OFFLINE OFFLINE
ora.raw2.ons application OFFLINE OFFLINE
ora.raw2.vip application OFFLINE OFFLINE
四. 在启动的过程中最好检测着crs、ASM和数据库的日志:
crs日志:
[oracle@rac1 ~]$ tail -f /u01/app/oracle/proct/10.2.0/crs_1/log/rac1/alertrac1.log
[oracle@rac2 ~]$ tail -f /u01/app/oracle/proct/10.2.0/crs_1/log/rac2/alertrac2.log
ASM日志:
[oracle@rac1 ~]$ tail -f /u01/app/oracle/admin/+ASM/bmp/alert_+ASM1.log
[oracle@rac2 ~]$ tail -f /u01/app/oracle/admin/+ASM/bmp/alert_+ASM2.log
数据库日志:
[oracle@rac1 ~]$ tail -f /u01/app/oracle/admin/ora9i/bmp/alert_ora9i1.log
[oracle@rac2 ~]$ tail -f /u01/app/oracle/admin/ora9i/bmp/alert_ora9i2.log
注:tail -f命令可用于监视另一个进程正在写入的文件的增长。
❽ 启动oracle数据库命令
(1)startup(用sys用户或者其他拥有启动数据库权限的用户登录数据库软件,然后执行该命令即可,如果存在多个实例,请在启动前确认SID),数据库有三个状态nomount,mount,和open,默认开启到open,如果开启到另外两个状态,那么可以通过alter命令改变状态。
(2)如果是rac中启停数据库节点,那么有专门的命令srvcrl(这个仅仅是命令的操作符,后面有参数的,参数我就不写了,具体可以查一下,网上很多与偶内容的),另外还有crscrl(启停crs服务的命令,同样也是操作符,后面有参数的,这里也不写了,自己查一下就可以了)
(3)启动数据库还有一个命令就是启动监听,lsnrctl命令(后面同样有参数,能启动停止,也能查询监听状态,这个监听的基本命令)