国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Oracle最佳連接方式之service最佳實踐及測試(下)

IT那活兒 / 1951人閱讀
Oracle最佳連接方式之service最佳實踐及測試(下)

點擊上方“IT那活兒”公眾號,關注后了解更多內容,不管IT什么活兒,干就完了!!!


文章前言

本章內容包含測試六個場景:

  • 主庫節點1宕庫
  • 主庫節點1宕機
  • 備庫節點1宕庫
  • 備庫節點1宕機
  • 主備switch over
  • 主備failover

需要回顧早前發布的文章,可點擊文章標題跳轉原文查看:

oracle最佳連接方式之service簡介及創建(上)

oracle最佳連接方式之service維護(中)

service測試相關腳本

2.1 先主庫建測試表及測試用戶

  • 創建讀測試表
create user dbauser identified by oracle account unlock;
grant dba to dbauser;
create table dbauser.test_read(id number);
insert into dbauser.test_read values(1);
insert into dbauser.test_read values(2);
insert into dbauser.test_read values(3);
commit;
  • 創建寫測試表
create table dbauser.test_write(id number);
  • 循環寫測試腳本
#!/bin/bash
#Autor:Wangergui
#Description:test write
i=0
while true;do
sqlplus dbauser/oracle@PRI_EMREP1<insert into dbauser.test_write values ($i);
commit;
exec dbms_lock.sleep(5);
quit
EOF
sleep 2 && i=$(($i+1))
done

2.2 連接測試腳本

  • 監控讀
#!/bin/bash
#Autor:Wangergui
#Description:test read
i=0
while true;do
sqlplus -S dbauser/oracle@PRI_EMREP1 <select * from dbauser.test;
exec dbms_lock.sleep(5);
quit
EOF
sleep 1 && i=$(($i+1))
done
  • 監控寫
#!/bin/bash
#Autor:Wangergui
#Description:Monitor write
i=0
while true;do
sqlplus dbauser/oracle@PRI_EMREP1 <select * from dbauser.test_write;
exec dbms_lock.sleep(5);
quit
EOF
sleep 2 && i=$(($i+1))
done

2.3 主備庫tnsnames.ora 配置

說明:

  • 192.168.8.110為主庫的SCAN IP
  • 192.168.8.111為備庫的SCAN IP

# Primary Node1

PRI_EMREP1 =
(DESCRIPTION =
(ADDRESS_LIST =
(LOAD_BALANCE = off)
(FAILOVER = ON)
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.110)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.111)(PORT = 1521))
)
(CONNECT_DATA =
(service_name = EMREP_R_S1)
(FAILOVER_MODE =
(type = session)
(method = basic)
(retries = 10)
(delay = 5)
)
)
)

# Primary Node2
PRI_EMREP2 =
(DESCRIPTION =
(ADDRESS_LIST =
(LOAD_BALANCE = off)
(FAILOVER = ON)
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.110)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.111)(PORT = 1521))
)
(CONNECT_DATA =
(service_name = EMREP_R_S2)
(FAILOVER_MODE =
(type = session)
(method = basic)
(retries = 10)
(delay = 5)
)
)
)

# Standby Node1
STD_EMREP1 =
(DESCRIPTION =
(ADDRESS_LIST =
(LOAD_BALANCE = off)
(FAILOVER = ON)
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.111)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.110)(PORT = 1521))
)
(CONNECT_DATA =
(service_name = EMREP_RD_S1)
(FAILOVER_MODE =
(type = session)
(method = basic)
(retries = 10)
(delay = 5)
)
)
)

# Standy Node2
STD_EMREP2 =
(DESCRIPTION =
(ADDRESS_LIST =
(LOAD_BALANCE = off)
(FAILOVER = ON)
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.111)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.110)(PORT = 1521))
)
(CONNECT_DATA =
(service_name = EMREP_RD_S2)
(FAILOVER_MODE =
(type = session)
(method = basic)
(retries = 10)
(delay = 5)
)
)
)

2.4 session監控腳本

#!/bin/bash
#Autor:Wangergui
#Description: Montor service_name
while true;do sqlplus -S / as sysdba <alter session set nls_date_format=YYYY-MM-DD HH24:MI:SS;
set linesize 500 pagesize 100 echo off feedback off trims on newpage none;
set lines 400 pages 1000
col username for a15;
col machine for a25;
col program for a45;
col service_name for a20;
select inst_id,
sid,
username,
machine,
program,
service_name,
status,
logon_time
from gv$session where username=DBAUSER;
quit;
EOF
echo && sleep 1
done



測試場景

場景一:主庫節點1宕庫

1)測試過程說明

  • session 1運行連接測試service.sh腳本;

  • session 2 運行session監控session.sh 腳本;

  • session 3關閉節點1數據庫shutdown immediate;

  • 監控service會不會漂移。

結論:service會漂移到節點2上,數據庫啟動之后service不會自動回切至節點1,需要手動relocate;客戶端無需更改任何配置。
注意:如果使用srvctl stop instance關閉數據庫service不會漂移,需要加-f選項。
srvctl stop instance –d  –n  –f -failover
示例:
srvctl stop instance –d  -n  -f -failover
2)場景一測試如下
測試主機:備庫兩個節點
VIP :10.30.69.18 && 10.30.69.19
SCAN: 192.168.8.111
  • 節點1 session1 運行循環查詢腳本,連接串為STD_ORCL1(優先連接備庫的節點1)。
    預期效果:正常shutdown,節點1的service可以漂移到節點2上面,營業無需修改配置。
    測試結果:達到預期效果。
#!/bin/bash
#Autor:Wangergui
#Description:test read
i=0
while true;do
sqlplus -S wangergui/oracle@STD_ORCL1 <select * from wangergui.test_read;
exec dbms_lock.sleep(5);
quit
EOF
sleep 1 && i=$(($i+1))
done
  • 節點2 運行session監控腳本如下:
while true;do sqlplus -S / as sysdba <alter session set nls_date_format=YYYY-MM-DD HH24:MI:SS;
set linesize 500 pagesize 100 echo off feedback off trims on newpage none;
set lines 400 pages 1000
col username for a15;
col machine for a25;
col program for a45;
col service_name for a20;
select inst_id,
sid,
username,
machine,
program,
service_name,
status,
logon_time
from gv$session where username=WANGERGUI;
quit;
EOF
echo && sleep 1
done
說明:此時通過STD_ORCL1連接的session全部在節點1上面。
  • 節點1 session 2執行shutdown immediate關閉數據庫。

shutdown immedaite;
  • 會話監控如下:

session已經動態的漂移到了節點2上面。
  • 節點1 session 3 執行啟動數據庫。
    startup;
  • session 監控還是在節點2上面。
節點1啟庫后service還是在節點2上面,沒有漂回節點1,此時需要手動relocate到節點1。
srvctl relocate service -db DGORCL -service ORCL_rd_s1 -oldinst orcl2 -newinst orcl1
  • session 監控已經飄回節點1。

場景二:主庫節點1宕機

1)測試場景說明

  • 節點2 session 1運行連接測試service.sh腳本;
  • 節點2 session 2 運行session監控session.sh 腳本;
  • 節點1 session 1關閉節點1主機,執行重啟reboot;
  • 監控service會不會漂移。
結論:service會漂移到節點2上,數據庫啟動之后service不會自動回切至節點1需要手動relocate。
2)節點2  session1運行循環查詢腳本
#!/bin/bash
#Autor:Wangergui
#Description:test read
i=0
while true;do
sqlplus -S wangergui/oracle@STD_ORCL1 <select * from wangergui.test_read;
exec dbms_lock.sleep(5);
quit
EOF
sleep 1 && i=$(($i+1))
done
3)節點2  session2 運行session監控腳本
while true;do sqlplus -S / as sysdba <alter session set nls_date_format=YYYY-MM-DD HH24:MI:SS;
set linesize 500 pagesize 100 echo off feedback off trims on newpage none;
set lines 400 pages 1000
col username for a15;
col machine for a25;
col program for a45;
col service_name for a20;
select inst_id,
sid,
username,
machine,
program,
service_name,
status,
logon_time
from gv$session where username=WANGERGUI;
quit;
EOF
echo && sleep 1
done

場景三:備庫節點1宕庫

  • 同場景一。

場景四:備庫節點1宕機

  • 同場景二。

場景五:主備switch over

  • 主備切換之后,主備要啟動相應的service,應用無需更改配置。

場景六:主備failover

  • 主備切換之后,主備要啟動相應的service,應用無需更改配置。

最佳實踐配置

4.1 MAA架構最佳配置

# Primary Node1 優先連接主庫節點1

PRI_ORCL1 =
(DESCRIPTION =
(ADDRESS_LIST =
(LOAD_BALANCE = off)
(FAILOVER = ON)
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.110)(PORT = 1521)) #主庫SCAN IP
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.111)(PORT = 1521)) #備庫SCAN IP
)
(CONNECT_DATA =
(service_name = ORCL_R_S1)
(FAILOVER_MODE =
(type = session)
(method = basic)
(retries = 10)
(delay = 5)
)
)
)
# Primary Node2 優先連接主庫節點2
PRI_ORCL2 =
(DESCRIPTION =
(ADDRESS_LIST =
(LOAD_BALANCE = off)
(FAILOVER = ON)
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.110)(PORT = 1521)) #主庫SCAN IP
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.111)(PORT = 1521)) #備庫SCAN IP
)
(CONNECT_DATA =
(service_name = ORCL_R_S2)
(FAILOVER_MODE =
(type = session)
(method = basic)
(retries = 10)
(delay = 5)
)
)
)
# Standby Node1 優先連接備庫節點1
STD_ORCL1 =
(DESCRIPTION =
(ADDRESS_LIST =
(LOAD_BALANCE = off)
(FAILOVER = ON)
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.111)(PORT = 1521)) #備庫SCAN IP
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.110)(PORT = 1521)) #主庫SCAN IP
)
(CONNECT_DATA =
(service_name = ORCL_RD_S1)
(FAILOVER_MODE =
(type = session)
(method = basic)
(retries = 10)
(delay = 5)
)
)
)
# Standy Node2 優先連接主庫節點2
STD_ORCL2 =
(DESCRIPTION =
(ADDRESS_LIST =
(LOAD_BALANCE = off)
(FAILOVER = ON)
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.111)(PORT = 1521)) #備庫SCAN IP
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.110)(PORT = 1521)) #主庫SCAN IP
)
(CONNECT_DATA =
(service_name = ORCL_RD_S2)
(FAILOVER_MODE =
(type = session)
(method = basic)
(retries = 10)
(delay = 5)
)
)
)

4.2 RAC最佳配置(無ADG)

# Primary Node1 優先連接主庫節點1
PRI_ORCL1 =
(DESCRIPTION =
(ADDRESS_LIST =
(LOAD_BALANCE = off)
(FAILOVER = ON)
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.110)(PORT = 1521)) #主庫SCAN IP
)
(CONNECT_DATA =
(service_name = ORCL_R_S1)
(FAILOVER_MODE =
(type = session)
(method = basic)
(retries = 10)
(delay = 5)
)
)
)
# Primary Node2 優先連接主庫節點2
PRI_ORCL2 =
(DESCRIPTION =
(ADDRESS_LIST =
(LOAD_BALANCE = off)
(FAILOVER = ON)
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.110)(PORT = 1521)) #主庫SCAN IP
)
(CONNECT_DATA =
(service_name = ORCL_R_S2)
(FAILOVER_MODE =
(type = session)
(method = basic)
(retries = 10)
(delay = 5)
)
)
)


本文作者:王爾貴(上海新炬王翦團隊)

本文來源:“IT那活兒”公眾號

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/129308.html

相關文章

  • 全球企業走向多元化的最佳實踐

    摘要:不幸的是,他不斷變化要求嚴格充滿活力的環境不適合許多組織仍然依賴的年歷史的廣域網。企業在上市時間上的變化很短,這對于推動廣域網轉型計劃的來說是一個很大的禁忌。全球企業轉向多云環境的最佳實踐:sd-wan如何幫助tweet您擁有多云環境-現在怎么辦?無論他們是否開始使用多個云,今天的大型企業最終都會使用多個云供應商。事實上,很難找到一家不使用Microsoft Azure、Amazon AWS...

    番茄西紅柿 評論0 收藏0
  • Spring Boot 最流行的 16 條實踐解讀!

    摘要:來源是最流行的用于開發微服務的框架。以下依次列出了最佳實踐,排名不分先后。這非常有助于避免可怕的地獄。推薦使用構造函數注入這一條實踐來自的項目負責人。保持業務邏輯免受代碼侵入的一種方法是使用構造函數注入。 showImg(https://mmbiz.qpic.cn/mmbiz_jpg/R3InYSAIZkHQ40ly9Oztiart2lESCyjCH0JwFRp3oErlYobhibM...

    Ethan815 評論0 收藏0
  • 高性能Java代碼的最佳實踐

    摘要:高性能代碼的最佳實踐前言在這篇文章中,我們將討論幾個有助于提升應用程序性能的方法。要獲得有關應用程序需求的最好最可靠的方法是對應用程序執行實際的負載測試,并在運行時跟蹤性能指標。 showImg(https://segmentfault.com/img/bVbtgk4?w=256&h=254); 高性能Java代碼的最佳實踐前言 在這篇文章中,我們將討論幾個有助于提升Java應用程序性...

    stackfing 評論0 收藏0
  • 甲骨文通過創新技術擴展開放集成的云平臺

    摘要:年月日甲骨文今日發布了最新的集成產品,以幫助企業更便利地運用變革性技術。甲骨文提供下一代用戶體驗,包括基于個人角色使用所有功能,同時通過預先制作的集成模板加速產品上市時間,為企業創造更多的價值。2017年10月11日 –甲骨文今日發布了最新的集成PaaS產品,以幫助企業更便利地運用變革性技術。除了最新的自治數據管理云服務、大數據分析和人工智能功能之外,甲骨文宣布在其應用程序開發平臺、數據集成...

    lordharrd 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<