oracle 12c r2 實現服務端pdb透明失敗切換
在12c之前,咱們都是經過實例來實現,12c中,若是有多個pdb,那如何實現對每一個pdb服務的taf呢?
環境:
oracle 12c r2 rac
rhel 7.3
db_name:racdb
instance_name:racdb1,racdb2
pdb:kfptdb
scanip:192.168.133.15
實現方法:
1.經過增長服務的方式
在12c 中,增長服務時,咱們能夠選擇pdb
服務名字,咱們暫定爲kfdb
重試次數設定爲:180次
等待時間:5秒
策略:basic
方法:basic
失敗類型:select
[oracle@rac2 ~]$ srvctl add service -d racdb -s kfdb -r racdb1,racdb2 -P basic -e select -m basic -z 180 -w 5 -pdb kfptdb
2.查看服務的配置信息
[oracle@rac2 ~]$ srvctl config service -d racdb -s kfdb
Service name: kfdb
Server pool:
Cardinality: 2
Service role: PRIMARY
Management policy: AUTOMATIC
DTP transaction: false
AQ HA notifications: false
Global: false
Commit Outcome: false
Failover type: SELECT
Failover method: BASIC
TAF failover retries: 180
TAF failover delay: 5
Failover restore: NONE
Connection Load Balancing Goal: LONG
Runtime Load Balancing Goal: NONE
TAF policy specification: BASIC
Edition:
Pluggable database name: kfptdb
Maximum lag time: ANY
SQL Translation Profile:
Retention: 86400 seconds
Replay Initiation Time: 300 seconds
Drain timeout:
Stop option:
Session State Consistency: DYNAMIC
GSM Flags: 0
Service is enabled
Preferred instances: racdb1,racdb2
Available instances:
CSS critical: no
3.啓動服務
--新建立的服務,默認是沒有開啓
[oracle@rac2 ~]$ srvctl status service -db racdb -service kfdb
Service kfdb is not running.
--啓動服務
[oracle@rac2 ~]$ srvctl start service -db racdb -service kfdb
[oracle@rac2 ~]$
4.查看服務的狀態
[oracle@rac2 ~]$ srvctl status service -db racdb -service kfdb
Service kfdb is running on instance(s) racdb1,racdb2
[oracle@rac2 ~]$
5.看集羣資源
[grid@rac1 ~]$ crsctl stat res -t
Name Target State Server State details
Local Resources
ora.ASMNET1LSNR_ASM.lsnr
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ora.DGACFS.dg
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ora.DGCRS.dg
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ora.DGDATA.dg
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ora.LISTENER.lsnr
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ora.MGMT.dg
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ora.net1.network
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ora.ons
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
Cluster Resources
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE rac1 STABLE
ora.MGMTLSNR
1 ONLINE ONLINE rac1 169.254.42.209 10.0.
0.10,STABLE
ora.asm
1 ONLINE ONLINE rac1 Started,STABLE
2 ONLINE ONLINE rac2 Started,STABLE
3 OFFLINE OFFLINE STABLE
ora.cvu
1 ONLINE ONLINE rac1 STABLE
ora.mgmtdb
1 OFFLINE OFFLINE STABLE
ora.qosmserver
1 ONLINE ONLINE rac1 STABLE
ora.rac1.vip
1 ONLINE ONLINE rac1 STABLE
ora.rac2.vip
1 ONLINE ONLINE rac2 STABLE
ora.racdb.db
1 ONLINE ONLINE rac1 Open,HOME=/u01/app/o
racle/product/12.2.0
/db_1,STABLE
2 ONLINE ONLINE rac2 Open,HOME=/u01/app/o
racle/product/12.2.0
/db_1,STABLE
ora.racdb.kfdb.svc
1 ONLINE ONLINE rac1 STABLE
2 ONLINE ONLINE rac2 STABLE
ora.scan1.vip
1 ONLINE ONLINE rac1 STABLE
[grid@rac1 ~]$
6.測試鏈接
--在客戶端建立一個鏈接串:
kfdb =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.133.15)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = kfdb)
)
)
--經過鏈接串鏈接到pdb
SQL> conn system/oracle@kfdb
已鏈接。
SQL>
--驗證一下
SQL> show con_name
CON_NAME
KFPTDB
SQL> show parameter instance_name
NAME TYPE VALUE
instance_name string racdb2
--當前鏈接到racdb2實例
--下面咱們登錄到服務器racdb2實例,關閉該實例,或者關閉該實例上的kfptdb pdb,若是客戶端的鏈接自動切換到racdb1實例,就算成功
--登錄racdb2實例
[oracle@rac2 ~]$ sqlplus /nolog
SQL*Plus: Release 12.2.0.1.0 Production on Sat Jul 8 11:43:12 2017
Copyright (c) 1982, 2016, Oracle. All rights reserved.
SQL> conn / as sysdba
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
2 PDB$SEED READ ONLY NO
3 KFPTDB READ WRITE NO
SQL> alter pluggable database kfptdb close immediate;
--驗證racdb2 上的kfptdb已經關閉
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
2 PDB$SEED READ ONLY NO
3 KFPTDB MOUNTED
SQL>
--racdb2上的kfptdb已經關閉
--回到客戶端去看當前鏈接:
SQL> show parameter instance_name
NAME TYPE VALUE
instance_name string racdb1
SQL>
--能夠看到已經切換到racdb1機器上去了sql