情况1: 保养数据库及操作系统,服务器,需要关闭DB(所有实例),OS 及Server 。
a. 首先停止Oracle10g 环境
$ lsnrctl stop (每个节点上停止监听,也可以用srvctl 来操作,每个节点上执行)
$ emctl stop dbconsole (每个节点停止dbconsole)
$ srvctl stop database -d tpc (停止数据库所有实例,一个节点上执行即可)
$ srvctl stop nodeapps -n gnd-rac01 (停节点1 服务)
$ srvctl stop nodeapps -n gnd-rac02 (停节点2 服务)
# /etc/init.d/init.crs stop (root 停cluster 软件,每个节点上执行)
或者用 $ crs_stop -all
b. 然后# init 0 关闭服务器,或者如果重新启动#init 6
c. 关闭电源 。
d. 开启Server ,开始开启Oracle10g 数据库及服务等(如果OS 重新启动,那么下面的所有服务是
自动打开的【除了dbconsole】,不用手工执行了)。
$ srvctl start nodeapps -n gnd-rac01 (开启点1 服务)
$ srvctl start nodeapps -n gnd-rac02 (开启节点2 服务)
# /etc/init.d/init.crs start (root 开启cluster 软件,每个节点上执行)
或者用 $ crs_start -all
$ srvctl start database -d tpc (开启数据库所有实例,一个节点上执行即可)
$ lsnrctl start (每个节点上开启监听,也可以用srvctl 来操作)
$ emctl start dbconsole (每个节点dbconsole)
注: srvctl 也可以用来关闭某个实例:srvctl stop instance -d orcl -i orcl2
srvctl 开启关闭监听器: srvctl stop listener -n gnd-rac01
srvctl start listener -n gnd-rac01
演示
srvctl stop listener -n gnd-rac01
srvctl stop listener -n gnd-rac02
gnd-rac01</ocfs_data/tpc/arch>$emctl stop dbconsole
TZ set to ROC
Oracle Enterprise Manager 10g Database Control Release 10.2.0.3.0
Copyright (c) 1996, 2006 Oracle Corporation. All rights reserved.
http://gnd-rac01:1158/em/console/aboutApplication
Stopping Oracle Enterprise Manager 10g Database Control ...
... Stopped.
gnd-rac02</home/oracle>$emctl stop dbconsole
TZ set to ROC
Oracle Enterprise Manager 10g Database Control Release 10.2.0.3.0
Copyright (c) 1996, 2006 Oracle Corporation. All rights reserved.
http://gnd-rac01:1158/em/console/aboutApplication
Stopping Oracle Enterprise Manager 10g Database Control ...
... Stopped.
gnd-rac01</ocfs_data/tpc/arch>$srvctl stop database -d tpc
gnd-rac01</ocfs_data/tpc/arch>$srvctl stop nodeapps -n gnd-rac01
gnd-rac02</ocfs_data/tpc/arch>$srvctl stop nodeapps -n gnd-rac02
gnd-rac01</ocfs_data/tpc/arch>$crs_stop -all
gnd-rac02</ocfs_data/tpc/arch>$crs_stop -all
情况2: 调整数据库参数的时候,只关闭所有节点实例,不重新启动OS 及Server 。
a.首先停止Oracle10g 环境
$ lsnrctl stop (在所有节点上停止监听,也可以用srvctl)
$ srvctl stop database -d tpc (停止数据库所有实例)
b. 然后开启所有实例及监听器。
$ srvctl start database -d tpc (开启数据库所有实例)
$ lsnrctl start (开启所有节点上监听,也可以用srvctl 开启监听)
情况3: 不关闭操作系统的情况下,由于问题点或调整某些服务而需要关闭然后开启某些服务
程序等。
關閉某些服务的时候,由于涉及到RAC 运行,所以也需要先关闭数据库实例,类似于第一
种情况。
附Oracle10g RAC 检查命令:
----------------------------------------------
Oracle10g RAC 数据库的 nodeapps 有 VIP, GSD, Listener, ONS .
$ srvctl status nodeapps –n gnd-rac01 (檢查VIP, GSD,ONS, Listener 等(所有節點))
VIP is running on node: gnd-rac01
GSD is not running on node: gnd-rac01
Listener is not running on node: gnd-rac01
ONS daemon is not running on node: gnd-rac01
gnd-rac01</home/oracle>$crsctl check crs (檢查Oracle Cluster 狀態: CSS, CRS, EVM .)
CSS appears healthy
CRS appears healthy
EVM appears healthy
gnd-rac01</u01/product/crs/bin>$ crs_stat -t (全面檢查狀態 )
Name Type Target State Host
┅┅┅┅┅┅┅┅┅
节点机器名称 ecsrac01 ecsrac02
数据库名 ecsdb
实例名称 ecsdb1 ecsdb2
注意: CRS (Cluster Ready Service) 是OS Level的底层服务。crs已经放在操作系统
层的自动启动和自动关闭里,开启关闭可以不用管理。
启动和停止集群
这里很重要,和一般的非集群数据库的启动和关闭有点不同.
1)停止 Oracle RAC 10g 环境
先停止 Oracle 实例。当此实例(和相关服务)关闭后,关闭 ASM 实例。
最后,关闭节点应用程序(虚拟 IP、GSD、TNS 监听器和 ONS)。
$ export ORACLE_SID=escdb1
$ emctl stop dbconsole
$ srvctl stop instance -d ecsdb -i ecsdb1
$ srvctl stop asm -n ecsrac01
$ srvctl stop nodeapps -n ecsrac01
2)启动 Oracle RAC 10g 环境
第一步是启动节点应用程序(虚拟 IP、GSD、TNS 监听器和 ONS)。当成功启动节点应用程序后,
启动 ASM 实例。最后,启动 Oracle 实例(相关服务)以及企业管理器数据库控制台。
$ export ORACLE_SID=ecsdb1
$ srvctl start nodeapps -n ecsrac01
$ srvctl start asm -n ecsrac01
$ srvctl start instance -d ecsdb -i ecsdb1
$ emctl start dbconsole
3)使用 SRVCTL 启动/停止所有实例
$ srvctl start database -d ecsdb
$ srvctl stop database -d ecsdb
---------------------------------------------------
例子:
---------------------------------------------------
ecsrac01$emctl stop dbconsole
ecsrac01$srvctl stop database -d ecsdb
ecsrac01$srvctl stop asm -n ecsrac01
ecsrac01$srvctl stop asm -n ecsrac02
ecsrac01$srvctl stop nodeapps -n ecsrac01
ecsrac01$srvctl stop nodeapps -n ecsrac02
ecsrac01$srvctl start nodeapps -n ecsrac01
ecsrac01$srvctl start nodeapps -n ecsrac02
ecsrac01$srvctl start asm -n ecsrac01
ecsrac01$srvctl start asm -n ecsrac02
ecsrac01$srvctl start database -d ecsdb
ecsrac01$emctl start dbconsole
============================================
shutdown db 不会停掉crs 服务。
如果crs服务是停止的,database根本起不来
如果停掉crs服务,database会被shutdown abort
启动crs 服务,database会自动的被startup