原文作者:永遠的阿木
文章出處: AIX快活如意齋
上迴文章中說道2005年第一個工作日熬了個通宵,具體講來是到廈門和Beta一起實施oracle rac安裝。雖然已經拿到證書,但因為工作性質關係,資料庫維護還是做得不多,這次讓我好好重溫oracle知識。
Beta比較熱誠,已經在客戶那裡奮戰兩天兩夜,幾近油枯燈盡(年輕人要注意保重身體啊),我到廈門也就是參加掃尾。
總的說來,全過程碰到的問題不少,但任務比較緊急,一些細節來不及考證,回來后在辦公室環境中搭一個環境繼續研究,另外試驗環境還可供其它同事參考。
本系列文章全程記錄安裝過程中碰到的所有問題和解決手段。
1.準備環境
2.準備環境(續)
3.HACMP安裝配置
4.OracleRac安裝前準備
5.安裝oracle軟體
6.Oracle建庫
7.RAC使用和測試
<下一篇>
搭設的硬體環境如下:
44p270主機一台:375MHz PowerPC_POWER3 CPU一顆、512 MB內存、18.2GB內置硬碟、主板內置網卡+2968乙太網卡、6230 SSA卡;
f80主機一台:450MHz PowerPC RS64III CPU四顆、2048MB內存、36.4GB內置硬碟、主板內置網卡+2968乙太網卡、6230 SSA卡;
7133-D40磁碟陣列:2塊36.4B 1萬轉硬碟構成RAID1陣列。
最後的軟體環境如下:
AIX 5L V5.2、ML04+IY64978+IY63366
HACMP V5.1+U498114
f80主機剛剛在廈門光榮退租,要重新安裝操作系統。安裝過程中發現一個奇怪的問題,很多執行文件的存取屬性被清空(變成----------)而導致無許可權執行,這首先嚴重影響了打ML04補丁,bos.rte補丁中的一個script總是運行不成功,報/usr/lib/methods/cfgsf命令執行失敗(bos.rte.config_u[42]: /usr/lib/methods/cfgsf: 0403-006 Execute permission denied.
update: Failed while executing the bos.rte.config_u script.),結果bos.rte及依賴其的幾個文件集補丁無法實施。因為cfgsf文件本身就屬於bos.rte,installp在安裝bos.rte的時候先把它的存取屬性清除了(覆蓋原文件),然後再執行它,所以在installp之前修改cfgsf的屬性沒有意義。
解決方法比較笨拙,寫一個死循環shell程序,不斷地執行chmod 500 /usr/lib/methods/cfgsf命令(見下)。
while true
do
chmod 500 /usr/lib/methods/cfgsf
done
方過此關。
存取屬性被清空的執行文件還有很多,引發了相當多的類似問題,其中一個就是影響了包括ssa卡和硬碟在內的很多設備的識別配置,/usr/lib/methods/下的文件都要檢查一下。還有/usr/ssa下的幾個bin目錄也要重新設置一下執行屬性。
因為在網上找不到類似的解決案例,我懷疑是手上的安裝光碟有問題。
繼續軟硬體環境的準備。
270主機上的一塊網卡,訪問網路總是有問題,ping不通。換過網線、插槽都不行,但把卡插到另一台b50主機上,網路訪問又正常,懷疑是270主機主板問題,執行diag診斷(要先ifconfig en1 detach,否則報設備忙,無法進一步診斷),報下面錯誤:
SRN: 777-104
Description: Internal Loopback Test Failed.
Probable FRUs:
ent1 FRU: 091H0397 P2-I4/E1
IBM 10/100 Mbps Ethernet PCI Adapter (23100020)
看來還是網卡有問題,回到b50主機再做diag診斷,也報類似錯誤,正式宣告該卡死刑。換了一塊2968乙太網卡,沒再報網路問題了。
進行hacmp和資料庫配置之前,要先準備資源,網路(ip和tty)、appserver和以前沒什麼區別,有特性的是共享卷組的準備。
因為要併發處理,所以卷組要建成concurrent capable的,AIX 5.2下只支持Enhanced Concurrent卷組:
# mkvg -C -n -y datavg hdisk1
0516-1335 mkvg: This system does not support enhanced
concurrent capable volume groups.
以前在網上碰到同樣的報錯求助,當時是胡亂猜疑,不達要點。這回找到了真正的原因——沒有安裝bos.clvm.enh:
# lslpp -L bos.clvm.enh
Fileset Level State Type Description (Uninstaller)
----------------------------------------------------------------------------
bos.clvm.enh 5.2.0.40 A F Enhanced Concurrent Logical Volume Manager
安裝后,重新執行mkvg就正常了。
硬體環境和軟體準備好后,接下來配置HACMP。
因為是實驗環境,HACMP配置不是一開始就制定好的,修正過幾次,甚至到後面安裝oracle碰了釘子,又再回過頭來修改配置。
在RAC下,必須安裝cluster.es.clvm.rte文件集,否則concurrent資源組無法增加并行卷組資源,安裝后需重新啟動主機,才可生效。
最後系統里所有的hacmp文件集列表如下:
Fileset Level State Type Description (Uninstaller)
----------------------------------------------------------------------------
cluster.adt.* 5.1.0.0 C F ES Client Demos
cluster.es.client.* 5.1.0.6 A F ES Client Libraries
cluster.es.clvm.rte 5.1.0.0 C F ES for AIX Concurrent Access
cluster.es.cspoc.* 5.1.0.6 A F ES CSPOC Commands
cluster.es.server.* 5.1.0.6 A F ES Server Diags
cluster.es.worksheets 5.1.0.6 A F Online Planning Worksheets
cluster.license 5.1.0.0 C F HACMP Electronic License
cluster.msg.* 5.1.0.0 C F HACMP CSPOC Messages - U.S. English
rac下,一般使用oracle自己的failover功能在客戶端實現服務主機的切換。但還希望藉助hacmp實現單機上的網卡熱備,所以拓撲配置上有些講究。
想到cascading資源組中ipat會讓service-ip地址從主機飄到備機上(所不願見到的),所以先使用persistent-ip。經測試,persistent-ip可以在網卡失敗時切換到備份網卡(但比service-ip花的時間要長不少,客戶端中斷感覺明顯),功能基本滿足要求。但實際使用中,這種配置方法給後面的rac安裝造了不少麻煩,最後只能放棄。
在rac配置上掙扎很長一段時間,被周平一句話點醒,可以用配置僅包含單個節點的cascading資源組,來避免service-ip地址在主機間的漂移。最終的配置下,各種莫名其妙的問題迎刃而解(看來rac與hacmp的拓撲關係密切)。
最後的拓撲、資源配置如下:
# /usr/es/sbin/cluster/utilities/cltopinfo -i
IP Label Network Type Node Address If Netmask
========= ======= ==== ==== ======= ==== =======
f80 net_ether_01 ether f80 10.0.0.208 255.255.255.0
p270 net_ether_01 ether f80 10.0.0.207 255.255.255.0
f80_boot2 net_ether_01 ether f80 192.168.1.208 en0 255.255.255.0
f80_boot1 net_ether_01 ether f80 192.168.0.208 en1 255.255.255.0
f80_tty1_01 net_rs232_01 rs232 f80 /dev/tty1 tty1
f80 net_ether_01 ether p270 10.0.0.208 255.255.255.0
p270 net_ether_01 ether p270 10.0.0.207 255.255.255.0
p270_boot1 net_ether_01 ether p270 192.168.0.207 en0 255.255.255.0
p270_boot2 net_ether_01 ether p270 192.168.1.207 en1 255.255.255.0
p270_tty1_01 net_rs232_01 rs232 p270 /dev/tty1 tty1
# /usr/es/sbin/cluster/utilities/clshowres
Resource Group Name oravg
Node Relationship concurrent
Site Relationship ignore
Participating Node Name(s) p270 f80
Dynamic Node Priority
Service IP Label
Filesystems ALL
Filesystems Consistency Check fsck
Filesystems Recovery Method sequential
Filesystems/Directories to be exported
Filesystems to be NFS mounted
Network For NFS Mount
Volume Groups
Concurrent Volume Groups datavg
Use forced varyon for volume groups, if necessaryfalse
Disks
GMD Replicated Resources
PPRC Replicated Resources
Connections Services
Fast Connect Services
Shared Tape Resources
Application Servers oracle
Highly Available Communication Links
Primary Workload Manager Class
Secondary Workload Manager Class
Delayed Fallback Timer
Miscellaneous Data
Automatically Import Volume Groups false
Inactive Takeover false
Cascading Without Fallback false
SSA Disk Fencing false
Filesystems mounted before IP configured false
Run Time Parameters:
Node Name p270
Debug Level high
Format for hacmp.out Standard
Node Name f80
Debug Level high
Format for hacmp.out Standard
Resource Group Name p270ip
Node Relationship cascading
Site Relationship ignore
Participating Node Name(s) p270
Dynamic Node Priority
Service IP Label p270
Filesystems
Filesystems Consistency Check fsck
Filesystems Recovery Method sequential
Filesystems/Directories to be exported
Filesystems to be NFS mounted
Network For NFS Mount
Volume Groups
Concurrent Volume Groups
Use forced varyon for volume groups, if necessaryfalse
Disks
GMD Replicated Resources
PPRC Replicated Resources
Connections Services
Fast Connect Services
Shared Tape Resources
Application Servers
Highly Available Communication Links
Primary Workload Manager Class
Secondary Workload Manager Class
Delayed Fallback Timer
Miscellaneous Data
Automatically Import Volume Groups false
Inactive Takeover false
Cascading Without Fallback false
SSA Disk Fencing false
Filesystems mounted before IP configured false
Run Time Parameters:
Node Name p270
Debug Level high
Format for hacmp.out Standard
Resource Group Name f80ip
Node Relationship cascading
Site Relationship ignore
Participating Node Name(s) f80
Dynamic Node Priority
Service IP Label f80
Filesystems
Filesystems Consistency Check fsck
Filesystems Recovery Method sequential
Filesystems/Directories to be exported
Filesystems to be NFS mounted
Network For NFS Mount
Volume Groups
Concurrent Volume Groups
Use forced varyon for volume groups, if necessaryfalse
Disks
GMD Replicated Resources
PPRC Replicated Resources
Connections Services
Fast Connect Services
Shared Tape Resources
Application Servers
Highly Available Communication Links
Primary Workload Manager Class
Secondary Workload Manager Class
Delayed Fallback Timer
Miscellaneous Data
Automatically Import Volume Groups false
Inactive Takeover false
Cascading Without Fallback false
SSA Disk Fencing false
Filesystems mounted before IP configured false
Run Time Parameters:
Node Name f80
Debug Level high
Format for hacmp.out Standard
# /usr/es/sbin/cluster/utilities/cllsserv
oracle /hacmp/startapp.sh /hacmp/stopapp.sh
# cat /hacmp/startapp.sh
#!/usr/bin/ksh
banner app start
# cat /hacmp/stopapp.sh
#!/usr/bin/ksh
banner app stop
鑒於資料庫啟動的複雜性,沒有在appserver中啟動oracle資料庫。
# lsvg datavg
VOLUME GROUP: datavg VG IDENTIFIER: 000234ff00004c00000001015b74227a
VG STATE: active PP SIZE: 64 megabyte(s)
VG PERMISSION: read/write TOTAL PPs: 543 (34752 megabytes)
MAX LVs: 256 FREE PPs: 311 (19904 megabytes)
LVs: 22 USED PPs: 232 (14848 megabytes)
OPEN LVs: 15 QUORUM: 2
TOTAL PVs: 1 VG DESCRIPTORS: 2
STALE PVs: 0 STALE PPs: 0
ACTIVE PVs: 1 AUTO ON: no
Concurrent: Enhanced-Capable Auto-Concurrent: Disabled
VG Mode: Concurrent
Node ID: 2 Active Nodes: 1
MAX PPs per PV: 1016 MAX PVs: 32
LTG size: 128 kilobyte(s) AUTO SYNC: no
HOT SPARE: no BB POLICY: relocatable
# cat /etc/hosts
127.0.0.1 loopback localhost # loopback (lo0) name/address
192.168.0.207 p270_boot1
192.168.1.207 p270_boot2
10.0.0.207 p270
192.168.0.208 f80_boot1
192.168.1.208 f80_boot2
10.0.0.208 f80
啟動HACMP碰到一些問題:
f80: 0513-015 The snmpd Subsystem could not be started.
f80: Please check subsystem resources and try again later.
f80:
f80: *******
f80: Jan 10 2005 00:40:47 !!!!!!!!!! ERROR !!!!!!!!!!
f80: *******
f80: Jan 10 2005 00:40:47 clstart: Unable to start Cluster SMUX Peer Daemon (clsmuxpd) without snmpd.
dsh: 5025-509 f80 rsh had exit code 1
檢查/usr/sbin/snmp*文件的存取屬性,全部為空,看來還是安裝操作系統時的老問題。更改成正確屬性,啟動恢復正常。
# ls -l /usr/sbin/snmp*
lrwxrwxrwx 1 root system 9 Jan 07 01:16 /usr/sbin/snmpd -> snmpdv3ne
-rwxr-x--- 1 root system 310990 Jul 22 17:09 /usr/sbin/snmpd64v1
-rwxr-x--- 1 root system 273646 Jul 22 17:09 /usr/sbin/snmpdv1
-rwxr-x--- 1 root system 271622 Jun 05 2004 /usr/sbin/snmpdv3ne
-rwxr-x--- 1 root system 15848 Jan 07 01:24 /usr/sbin/snmpinfo
-rwxr-x--- 1 root system 612075 Jun 24 2004 /usr/sbin/snmpmibd
-rwxr-x--- 1 root system 696002 Jun 24 2004 /usr/sbin/snmpmibd64
-r-xr-xr-x 1 bin bin 16756 Jun 05 2004 /usr/sbin/snmptrap
-r-xr-xr-- 1 root system 11876 Jan 07 01:24 /usr/sbin/snmpv3_ssw
戲台搭好,終於到安裝ORACLE這步了,正式安裝前還是有些功課要做。
安裝RAC這部分,我主要是參照Beta的總結文檔,而這篇文檔又來自ITPUB的fatstone(原鏈接就懶得找了,著者見諒),據說原始的祖宗是Metalink上的Step-By-Step Installation of RAC on IBM AIX,不過我是拜讀過oracle這篇文章的,與最近的改過又改過的文章相比,已經是面目全非,看不出一點親緣的關係了。
主要是創建oracle用戶和所屬用戶組,以及用戶環境:
ORACLE_BASE=/u01/app/oracle;export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/9.2.0;export ORACLE_HOME
ORACLE_SID=CRDT1;export ORACLE_SID
ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data;export ORA_NLS33
ORACLE_TERM=vt100;export ORACLE_TERM
TMPDIR=/tmp;export TMPDIR
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib;export LD_LIBRARY_PATH
PATH=/usr/ccs/bin:$ORACLE_HOME/bin:/usr/bin:/usr/opt/networker/bin:$PATH;export PATH
TNS_ADMIN=$ORACLE_HOME/network/admin;export TNS_ADMIN
TERM=vt100;export TERM
EDITOR=vi; export EDITOR
TMP=/tmp;export TMP
CLASSPATH=$ORACLE_HOME/JRE/lib:$ORACLE_HOME/jlib:$ORACLE_HOME/network/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/plsql/jlib:$ORACLE_HOME/assistants/jlib:$ORACLE_HOME/assistants/dbca/jlib;export CLASSPATH
DBCA_RAW_CONFIG=/home/oracle/dbca_raw_config.txt;export DBCA_RAW_CONFIG
# 注1:原文中有DISPLAY=127.0.0.1:0.0,會影響遠程登錄CDE的使用,周平說從筆記本電腦登陸上來,操作CDE有問題,原因在此。
# 注2:兩台主機上的ORACLE_SID分別是CRDT1和CRDT2
mklv -y'o9_system_1g' -w'n' -s'n' -r'n' datavg 16
mklv -y'o9_users_512m' -w'n' -s'n' -r'n' datavg 8
mklv -y'o9_tools_512m' -w'n' -s'n' -r'n' datavg 8
mklv -y'o9_temp_512m' -w'n' -s'n' -r'n' datavg 8
mklv -y'o9_undotbs1_1g' -w'n' -s'n' -r'n' datavg 16
mklv -y'o9_undotbs2_1g' -w'n' -s'n' -r'n' datavg 16
mklv -y'o9_log11_1g' -w'n' -s'n' -r'n' datavg 16
mklv -y'o9_log12_1g' -w'n' -s'n' -r'n' datavg 16
mklv -y'o9_log21_1g' -w'n' -s'n' -r'n' datavg 16
mklv -y'o9_log22_1g' -w'n' -s'n' -r'n' datavg 16
mklv -y'o9_indx_512m' -w'n' -s'n' -r'n' datavg 8
mklv -y'o9_cwmlite_512m' -w'n' -s'n' -r'n' datavg 8
mklv -y'o9_example_512m' -w'n' -s'n' -r'n' datavg 8
mklv -y'o9_oemrepo_512m' -w'n' -s'n' -r'n' datavg 8
mklv -y'o9_spfile_512m' -w'n' -s'n' -r'n' datavg 8
mklv -y'o9_cntrl1_512m' -w'n' -s'n' -r'n' datavg 8
mklv -y'o9_cntrl2_512m' -w'n' -s'n' -r'n' datavg 8
mklv -y'o9_cntrl3_512m' -w'n' -s'n' -r'n' datavg 8
mklv -y'o9_drsys_512m' -w'n' -s'n' -r'n' datavg 8
mklv -y'o9_odm_512m' -w'n' -s'n' -r'n' datavg 8
mklv -y'o9_xdb_512m' -w'n' -s'n' -r'n' datavg 8
$ cat dbca_raw_config.txt
system=/dev/ro9_system_1g
users=/dev/ro9_users_512m
tools=/dev/ro9_tools_512m
temp=/dev/ro9_temp_512m
undotbs1=/dev/ro9_undotbs1_1g
undotbs2=/dev/ro9_undotbs2_1g
redo1_1=/dev/ro9_log11_1g
redo1_2=/dev/ro9_log12_1g
redo2_1=/dev/ro9_log21_1g
redo2_2=/dev/ro9_log22_1g
indx=/dev/ro9_indx_512m
example=/dev/ro9_example_512m
spfile=/dev/ro9_spfile_512m
control1=/dev/ro9_cntrl1_512m
control2=/dev/ro9_cntrl2_512m
control3=/dev/ro9_cntrl3_512m
drsys=/dev/ro9_drsys_512m
xdb=/dev/ro9_xdb_512m
到METALINK上下載9204的補丁級,PATCH號3095277,下載完是一個.zip格式的文件,本地解壓縮后得到9204_aix5l64_release.cpio,把這個文件FTP到小型機上,執行:cpio -icvd < 9204_aix5l64_release.cpio解壓縮。
CRDT2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.208)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = CRDT)
(INSTANCE_NAME = CRDT2)
)
)
CRDT1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.207)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = CRDT)
(INSTANCE_NAME = CRDT1)
)
)
CRDT =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.207)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.208)(PORT = 1521))
(LOAD_BALANCE = yes) # failover是預設打開的。
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = CRDT)
)
)
...
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = CRDT)
(FAILOVER_MODE =
(TYPE = session)
(METHOD = basic)
(DELAY = 10)
)
)
這樣,在節點失敗時,客戶端自動連接另一個可用節點,對用戶來說沒有影響。可以執行:
SELECT MACHINE, FAILOVER_TYPE, FAILOVER_METHOD, FAILED_OVER, COUNT(*)
FROM V$SESSION
GROUP BY MACHINE, FAILOVER_TYPE, FAILOVER_METHOD, FAILED_OVER;
SQL檢查session的TAF屬性。
[火星人 ] Oracle RAC安裝實錄已經有808次圍觀