RAC 攻擊 - Oracle 叢集資料庫在家/伺服器負載均衡
外觀
- 在資料庫上開啟一個 SQLPlus 會話,並確認SH使用者沒有會話。 SQL> select inst_id, count(*) from gv$session where username='SH' group by inst_id; 沒有選擇行 如果存在任何會話,您可以使用以下 SQL 的輸出將其殺死:select 'alter system disconnect session '''|| sid||','||serial#||''' immediate;' from v$session where username='SH';
- 透過將 REMOTE_LISTENER 初始化引數設定回其預設值 (collab-scan:1521) 並重新註冊,在兩個例項上重新啟用伺服器端負載均衡。 在向偵聽器註冊之前,重新啟動它們以重置連線統計資訊。 SQL> alter system set remote_listener='collab-scan:1521'; 系統已更改。 collabn1:/home/oracle[RAC1]$ lsnrctl stop collabn1:/home/oracle[RAC1]$ lsnrctl start collabn2:/home/oracle[RAC2]$ lsnrctl stop collabn2:/home/oracle[RAC2]$ lsnrctl start 為什麼只需要執行一次“alter system”命令,而需要在兩個節點上執行 lsnrctl 命令? SQL> -- 例項 RAC1 SQL> alter system register; 系統已更改。 collabn1:/home/oracle[RAC1]$ lsnrctl services 服務“RAC.vm.ardentperf.com”有 1 個例項。 例項“RAC1”,狀態 READY,此服務有 2 個處理程式... 處理程式: “DEDICATED” 已建立:0 拒絕:0 狀態:就緒 遠端伺服器(地址 =(協議 = TCP)(主機 = collabn1.vm.ardentperf.com)(埠 = 1521)) “DEDICATED” 已建立:0 拒絕:0 狀態:就緒 本地伺服器 例項“RAC2”,狀態 READY,此服務有 1 個處理程式... 處理程式: “DEDICATED” 已建立:0 拒絕:0 狀態:就緒 遠端伺服器(地址 =(協議 = TCP)(主機 = collabn2.vm.ardentperf.com)(埠 = 1521))
- 編輯您連線到的伺服器上的TNSNAMES.ORA檔案。 新增一個名為LBTEST的條目,該條目連線到 RAC 服務 - 但只使用一個偵聽器。 [root@collabn1 ~]# vi $ORACLE_HOME/network/admin/tnsnames.ora LBTEST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = collab-scan)(PORT = 1521)) (LOAD_BALANCE = no) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = RAC.vm.ardentperf.com) ) )
- 在您的另一個已連線的 SQLPlus 會話中,密切注意連線的平衡。 同時,開啟一個新的 shell 會話並執行以下指令碼,該指令碼將開啟 160 個連線到資料庫 - 但這次將使用 LBTEST 連線。 a=160; while [ $a -gt 0 ]; do sqlplus sh/sh@LBTEST & a=$((a-1)) done 在伺服器端負載均衡期間,連線如何在資料庫例項之間分配?
- 透過執行以下兩個命令終止所有 sqlplus 會話。 執行第二個命令後,當您開始看到“no more job”訊息時,按<Ctrl-C>。 killall sqlplus while true; do fg; done <Ctrl-C>