1 DB ENV
---------------------------------------
OS: Linux 5
DB: 10.2.0.5
SID: gtsjk1,gtsjk2
-----------------------
10.148.63.114 gtdb-r1
10.148.63.115 gtdb-r1-vip
172.148.19.114 gtdb-r1-priv
10.148.63.116 gtdb-r2
10.148.63.117 gtdb-r2-vip
172.148.19.116 gtdb-r2-priv
----------------------------------------
2 Business DB Users
numen
topo
3 Business Target
--App connection priority(pref) and in case instance down(avail):
numen -> pref: gtsjk1 (115), avail: gtsjk2 (117)
topo -> pref: gtsjk1 (117), avail: gtsjk2 (115)
4 Create server side service with DBCA
numen prefer: gtsjk1 available: gtsjk2 policy:basic
topo prefer: gtsjk2 available: gtsjk1 policy:basic
$srvctl config service -d gtsjk
numen PREF: gtsjk1 AVAIL: gtsjk2
topo PREF: gtsjk2 AVAIL: gtsjk1
!!Note: ensure local_listener is null
set linesize 180
col name for a30
col FAILOVER_METHOD for a20
col FAILOVER_TYPE for a20
col NETWORK_NAME for a20
select NAME,NETWORK_NAME,FAILOVER_METHOD,FAILOVER_TYPE,FAILOVER_RETRIES,FAILOVER_DELAY,ENABLED,GOAL,CLB_GOAL from dba_services
/
exec dbms_service.modify_service(service_name=>'numen',failover_method=>'BASIC',failover_type=>'SELECT',failover_retries=>180,failover_delay=>5);
exec dbms_service.modify_service(service_name=>'topo',failover_method=>'BASIC',failover_type=>'SELECT',failover_retries=>180,failover_delay=>5);
5 Connection Test
--Test scripts
-testconnect.sh
#!/bin/bash
#Usage: testconnect servicename 1000
count=0
while [ $count -lt $2 ]
do
count=`expr $count + 1`
sqlplus -s dba_ts/********@$1 @test.sql
done
- cat test.sql
col "Instance_name" for a20
select instance_name from v$instance
/
exit;
6 Failover test
if node 1 down, service numen will failover to node2
connection to numen node2 will failed,need to config below
--Client windows/system32/drivers/etc/hosts for
10.148.63.114 gtdb-r1
10.148.63.115 gtdb-r1-vip
10.148.63.116 gtdb-r2
10.148.63.117 gtdb-r2-vip
After node1 restore, ensure app connection use instance 1 on node1, can do:
$srvctl stop service -d gtsjk -s numen -i gtsjk2 -f --stop run on node2
$srvctl start service -d gtsjk -s numen -i gtsjk1 --start run on node1