
采纳哦
本文介绍在Linux HA集群中的stonith模块功能。
Stonith,全称Shoot The Other Node In The Head,用于防止集群出现脑裂现象。简单来说,一旦集群中的节点相互之间失去了通信,无法知道其他节点的状态,此时集群中的每个节点将尝试fence(隔离或“射杀”)失去通信的节点,确保这些节点不再抢夺资源,然后才继续启动服务资源,对外提供服务。
在3台集群主机上安装fence-agents软件包。
安装完毕后可查看到系统支持的stonith设备类型:
以上输出中的每个Fence agent都是一种Stonith设备,从名字的后缀可以看出,这些Agent有以下几类:
前两种都属于电源类型的Stonith设备,而第三种和电源无关,之所以要这样划分,是因为:
以下以fence_scsi为例进行实验。
安装 《在CentOS7上配置iSCSI》 中的方法,通过一台专用的存储节点ha-disks为集群中的3个主机提供共享存储(即在ha-disks上创建iscsi硬盘,然后将其映射到3个集群主机上)。
在iscsi-disks上创建3个100M的硬盘fen1,fen2,fen3,挂载到主机上后设备名称分别为sdb,sdc,sdd
测试一下这些硬盘是否支持PR Key:
首先使用一个fence盘/dev/sdb来进行实验:
使用sg_persist -s参数获取/dev/sdb上的所有信息:
可以看到,3个节点使用不同的PR Key在这个磁盘上进行了注册(register),并且ha-host1保留(reservation)成功,类型为“Write Exclusive, registrants only”。表明此时只有ha-host1对该磁盘进行写 *** 作。
此时如果断开其中两个节点的的链接,如ha-host1和ha-host3:
可以看到,经过协商后,ha-host3退出集群,并且也删除在fencing磁盘中的注册信息。由于stonith资源运行在ha-host2上,所以在ha-host2的日志中可以看到ha-host3被fence的过程:
ha-host3被fence之后,必须重启才能重新注册PR Key,否则即使网络恢复,其也无法运行需要stonith支持的资源。
问题:仲裁机制保证了必须有超过半数的节点的partition才能启动资源,拿为什么还需要stonith设备?
方法一、从图形界面运行dbca,选择删除,按提示一路next;方法二、手动删除。
1、关闭所有oracle进程,其实只要shutdown
abort即可.因我的机器oracle没设置为开机自动启动,重启机器后oracle进程一个也没有,系统很是干净.
2、删除实例数据文件和dump文件;
find $ORACLE_BASE/ -name $ORACLE_SID
在我系统里面显示如下,将这些目录直接删除
/u01/app/oracle/admin/testdb
/u01/app/oracle/oradata/testdb
/u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/emca/testdb
/u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/dbca/testdb
3、删除其他配置文件
find $ORACLE_BASE/* -name '*[Bb][Tt][Ss][Dd][Bb]2*' | grep -v
admin| grep -v oradata
将查找结果出现的文件也一一删除,当然你可以用xarg结合rm删除.
find结果如下:
/u01/app/oracle/flash_recovery_area/testdb
/u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/emca/testdb
/u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/dbca/testdb
/u01/app/oracle/product/10.2.0/db_1/oc4j/j2ee/OC4J_DBConsole_host_testdb
/u01/app/oracle/product/10.2.0/db_1/rdbms/log/alert_testdb.log
/u01/app/oracle/product/10.2.0/db_1/host_testdb
/u01/app/oracle/product/10.2.0/db_1/host_testdb/sysman/emd/state/A190EE260BF6B09EB5805807
28916A3B.alert_testdb.log
/u01/app/oracle/product/10.2.0/db_1/host_testdb/sysman/log/nmctestdb1521
/u01/app/oracle/product/10.2.0/db_1/dbs/alert_testdb.log
/u01/app/oracle/product/10.2.0/db_1/dbs/lktestdb
/u01/app/oracle/product/10.2.0/db_1/dbs/hc_testdb.dat
/u01/app/oracle/product/10.2.0/db_1/dbs/orapwtestdb
/u01/app/oracle/product/10.2.0/db_1/dbs/spfiletestdb.ora
4、最重要的一步,如果你要重建的实例和刚删除实例的实例名一样的话,删除
/etc/oratab文件最后一行。
至此,已干净删除linux系统的oracle实例。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)