1. 程式人生 > >Oracle 11g RAC之HAIP相關問題總結

Oracle 11g RAC之HAIP相關問題總結

1 [文件概要](#1) 2 [禁用/啟用HAIP](#2) - [2.1 禁用/啟用HAIP資源](#2.1) - [2.2 修改ASM資源的依賴關係](#2.2) 3 [修改cluster_interconnects引數](#3) - [3.1 使用grid使用者修改ASM例項的cluster_interconnects引數](#3.1) - [3.2 使用oracle使用者修改DB例項的cluster_interconnects引數](#3.2) - [3.3 重啟所有例項或叢集](#3.3) - [3.4 檢查cluster_interconnects引數](#3.4)

1 文件概要

環境:RHEL 6.4 + GI 11.2.0.4 + Oracle 11.2.0.4 對有關HAIP相關問題的總結,包括禁用/啟用HAIP,修改ASM資源的依賴關係,修改cluster_interconnects引數等。

2 禁用/啟用HAIP

2.1 禁用/啟用HAIP資源

禁用HAIP資源: root使用者執行@all nodes ``` # /opt/app/11.2.0/grid/bin/crsctl modify res ora.cluster_interconnect.haip -attr "ENABLED=0" -init ``` 啟用HAIP資源: 如果之後想重新使用HAIP資源,可以啟用: ``` # /opt/app/11.2.0/grid/bin/crsctl modify res ora.cluster_interconnect.haip -attr "ENABLED=1" -init ``` 在實際處理的案例中,發現其中一個節點始終無法啟動HAIP,在另外節點可以啟用HAIP,但這樣是無法啟動叢集的,所以在可以啟動HAIP的節點直接禁用HAIP,這樣所有節點都使用真實的私網地址就可以正常啟動成功。但需要注意在有些場景下,單純禁用HAIP會導致ASM無法啟動,這是由於ASM資源的相關依賴關係導致。

2.2 修改ASM資源的依賴關係

在一些實際案例場景,我們直接禁用HAIP資源,再重啟has時可能會無法啟動ASM資源,因為ASM資源對HAIP有依賴關係。這一點我在自己的測試環境也可以驗證。 檢視當前ASM資源的關聯關係: ``` [root@jyrac2 ~]# crsctl stat res ora.asm -p -init NAME=ora.asm TYPE=ora.asm.type ACL=owner:grid:rw-,pgrp:oinstall:rw-,other::r--,user:grid:rwx ACTION_FAILURE_TEMPLATE= ACTION_SCRIPT= ACTIVE_PLACEMENT=0 AGENT_FILENAME=%CRS_HOME%/bin/oraagent%CRS_EXE_SUFFIX% AUTO_START=restore CARDINALITY=1 CHECK_ARGS= CHECK_COMMAND= CHECK_INTERVAL=1 CHECK_TIMEOUT=30 CLEAN_ARGS= CLEAN_COMMAND= DAEMON_LOGGING_LEVELS= DAEMON_TRACING_LEVELS= DEFAULT_TEMPLATE= DEGREE=1 DESCRIPTION="ASM instance" DETACHED=true ENABLED=1 FAILOVER_DELAY=0 FAILURE_INTERVAL=3 FAILURE_THRESHOLD=5 GEN_USR_ORA_INST_NAME=+ASM2 HOSTING_MEMBERS= LOAD=1 LOGGING_LEVEL=1 NOT_RESTARTING_TEMPLATE= OFFLINE_CHECK_INTERVAL=0 ORA_VERSION=11.2.0.4.0 PID_FILE= PLACEMENT=balanced PROCESS_TO_MONITOR= PROFILE_CHANGE_TEMPLATE= RESTART_ATTEMPTS=5 SCRIPT_TIMEOUT=600 SERVER_POOLS= SPFILE= START_ARGS= START_COMMAND= START_DEPENDENCIES=hard(ora.cssd,ora.cluster_interconnect.haip,ora.ctssd)pullup(ora.cssd,ora.cluster_interconnect.haip,ora.ctssd)weak(ora.drivers.acfs) START_TIMEOUT=600 STATE_CHANGE_TEMPLATE= STOP_ARGS= STOP_COMMAND= STOP_DEPENDENCIES=hard(intermediate:ora.cssd,shutdown:ora.cluster_interconnect.haip) STOP_TIMEOUT=600 UNRESPONSIVE_TIMEOUT=180 UPTIME_THRESHOLD=1h USR_ORA_ENV= USR_ORA_INST_NAME= USR_ORA_OPEN_MODE=mount USR_ORA_OPI=false USR_ORA_STOP_MODE=immediate VERSION=11.2.0.3.0 ``` 可以看到ASM資源和HAIP資源的依賴關係。 修改ASM的關聯關係@all nodes: ``` crsctl modify resource ora.asm -attr "START_DEPENDENCIES='hard(ora.cssd,ora.ctssd)pullup(ora.cssd,ora.ctssd)weak(ora.drivers.acfs)'" -f -init crsctl modify resource ora.asm -attr "STOP_DEPENDENCIES=hard(intermediate:ora.cssd)" -f –init ``` 改回ASM的關聯關係: ``` crsctl modify resource ora.asm -attr "START_DEPENDENCIES='hard(ora.cssd, ora.cluster_interconnect.haip, ora.ctssd)pullup(ora.cssd, ora.cluster_interconnect.haip, ora.ctssd)weak(ora.drivers.acfs)'" -f -init crsctl modify resource ora.asm -attr "STOP_DEPENDENCIES=hard(intermediate:ora.cssd)" -f –init ```

3 修改cluster_interconnects引數

3.1 使用grid使用者修改ASM例項的cluster_interconnects引數

修改為具體的私網地址,示例如下: ``` SQL> alter system set cluster_interconnects='10.10.10.50' scope=spfile sid='+ASM1'; SQL> alter system set cluster_interconnects='10.10.10.52' scope=spfile sid='+ASM2'; ``` 改回預設值為空,示例如下: ``` SQL> alter system set cluster_interconnects='' scope=spfile sid='+ASM1'; SQL> alter system set cluster_interconnects='' scope=spfile sid='+ASM2'; ```

3.2 使用oracle使用者修改DB例項的cluster_interconnects引數

修改為具體的私網地址,示例如下: ``` SQL> alter system set cluster_interconnects='10.10.10.50' scope=spfile sid='jyzhao1'; SQL> alter system set cluster_interconnects='10.10.10.52' scope=spfile sid='jyzhao2'; ``` 改回預設值為空,示例如下: ``` SQL> alter system set cluster_interconnects='' scope=spfile sid='jyzhao1'; SQL> alter system set cluster_interconnects='' scope=spfile sid='jyzhao2'; ``` 在實際的一個案例中,客戶是11g版本的GI環境,實際有2塊私網網絡卡,使用了HAIP特性,同時安裝有11g RAC和10g RAC,11g RAC使用HAIP正常,10g RAC由於無法使用HAIP,所以獲取到的是真實的私網地址,但是資料庫無法在所有節點同時open,這種情況,直接把10g RAC例項的cluster_interconnects引數修改成其中一個網絡卡的真實私網地址,即可正常在所有節點open。 這類場景是最適合修改引數解決,不影響其他正常使用HAIP的11g環境。

3.3 重啟所有例項或叢集

修改引數之後需要重新啟動例項生效,這裡建議直接重啟叢集一起驗證修改後的效果: ``` # /opt/app/11.2.0/grid/bin/crsctl stop has # /opt/app/11.2.0/grid/bin/crsctl start has ```

3.4 檢查cluster_interconnects引數

``` SQL> show parameter cluster_interconn