RAC 到底是什么?
↙ ↘
比如两节点集群中,服务器一运行实例 HIS1,服务器二运行实例 HIS2。二者看到的是同一批患者、同一张处方、同一条医嘱。
是谁让集群真正跑起来?
当节点失联时,为防止两边同时写共享数据造成“脑裂”,集群会隔离或驱逐异常节点。
crsctl check cluster -all
crsctl stat res -t
olsnodes -n -s
SELECT name,
state,
type,
total_mb,
free_mb,
ROUND(free_mb / total_mb * 100, 2) AS free_rate
FROM v$asm_diskgroup;
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
医院应用不宜把连接固定到某台服务器的 SID,而应通过 SCAN 和业务服务名接入。
jdbc:oracle:thin:@//rac-scan.example.local:1521/his_service
因此,RAC 私网质量非常重要。gc current request、gc cr request、gc block busy 等等待明显升高时,应关注私网延迟、热点表、热点索引块和跨实例访问。
一台节点宕机后发生了什么?
对收费、退费、医保结算等业务,尤其不能“见异常就无脑重试”。必须先查询原交易状态,再决定是否重发,否则可能形成重复结算或单边账。
程序猿真正应该关心什么?
SELECT inst_id,
instance_name,
host_name,
status,
database_status,
startup_time
FROM gv$instance
ORDER BY inst_id;
SELECT inst_id,
service_name,
status,
COUNT(*) AS session_count
FROM gv$session
WHERE type = 'USER'
GROUP BY inst_id, service_name, status
ORDER BY service_name, inst_id, status;
SELECT inst_id,
sid,
serial#,
username,
event,
blocking_instance,
blocking_session,
sql_id
FROM gv$session
WHERE blocking_session IS NOT NULL;
ALTER SYSTEM KILL SESSION 'sid,serial#,@inst_id' IMMEDIATE;
RAC 不等于备份,也不等于容灾
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
用一句话记住 RAC
对医院来说,RAC 的价值并不是让故障永远消失,而是把“一台服务器故障导致全院核心系统停摆”的风险,降到可以被架构和运维流程控制的范围内。
真正可靠的医院数据库体系,永远是 RAC、容灾、备份、监控、应急演练和应用幂等共同作用的结果。
想了解更多干货,可通过下方扫码关注

可扫码添加上智启元官方客服微信👇

17认证网








