Oracle 11g RAC 安裝心得

我是在用Vsphere 虛擬機Redhat Linux 5上安裝 ASM+Oracle 11g (32bit) RAC 的。

由於安裝過程中遇到一些問題,現在記錄下來:

1、首先新建一個虛擬機,添加兩個網卡(一個公有網卡驅動,一個私有網卡驅動),5塊硬盤(1塊作爲系統盤,4塊盤供ASM使用)

2、複製剛纔新建的虛擬機,然後複製成第二個虛擬機,刪除後4塊硬盤,然後再將第一個節點服務器的後4塊硬盤作爲已經存在的磁盤添加進來,首先實現物理上的共享。

    此時,如果打開第一個節點服務器後,再打開第二個節點時,會報錯(Failed to lock the file),因爲兩個節點服務器共用了同一個磁盤,虛擬機會在虛擬機文件夾下面成成一個.lck文件,這個文件如果能刪除的話,那刪掉後應該可以打開第二個節點服務器,如果該文件刪除不了,則可以在兩個節點服務器的虛擬機文件(.vmx)中添加<scsi1.sharedBus = "virtual">, scsi後面的數字取決於添加磁盤時選擇的scsi驅動號。然後可以同時打開兩個節點服務器。

3、爲了將塊設備提供爲ASM來使用,需要使用到ASMlib和UDEV工具,oracle 11g R1之前,需要將塊設備(b開頭)轉換爲字符設備(c開頭),才能提供給oracle ASM使用,此時使用udev工具設置多路徑磁盤共享需要修改的文件是/etc/udev/rules.d/60-raw.rules,oracle 11g R2之後,ASM可以直接使用塊設備,這樣需要修改的文件是/etc/udev/rules.d/99-oracle-asmdevices.rules,具體文件內容,可以百度,其中裏面需要用到塊設備的UUID(唯一規範標識名),獲得設備UUID首先需要在虛擬機文件中添加<disk.EnableUUID = "TRUE"> 。

LINUX 查看分區UUID的兩種方法
(1)、sudo blkid
(2)、ls -l /dev/disk/by-uuid

LINUX 獲取UUID的命令
/sbin/scsi_id -g -u -s /block/sdb 
這個命令只能獲得塊設備的UUID,如果從sdb已經格式化成了sdb1了,那就不能用此命令得到uuid了

[root@rac10g2 rules.d]# scsi_id -g -u -s /block/sdb
36000c29110f72d8d649c65530367c034
[root@rac10g2 rules.d]# scsi_id -g -u -s /block/sdc
36000c2903cee987caea448d18669ac85
[root@rac10g2 rules.d]# scsi_id -g -u -s /block/sde
36000c292e4dee3baf19de2eace1da3f0
[root@rac10g2 rules.d]# scsi_id -g -u -s /block/sdd
36000c29f9f59338a6897d54ec3319427
[root@rac10g2 rules.d]# 

4、通過上述方法設置後,可以在/dev下面直接看到asm*的磁盤,然後利用/etc/init.d/oracleasm createdisk  DISK_NAME  candidate_disk

要使用上面創建命令,需要安裝oracleasm開頭的三個包(具體安裝和配置見oracle官方文檔或百度)

5、第一個節點創建了ASM磁盤後,第二個節點直接執行/etc/init.d/oracleasm scandisks   /etc/init.d/oracleasm listdisks  如果能順利看到第一個節點創建的ASM磁盤,則磁盤邏輯上共享就成功了。

6、如果要想將邏輯卷組來創建ASM磁盤,需要經歷pvcreate——>vgcreate——>lvcreate過程,如果最後又不想使用邏輯卷,還是直接將塊設備映射成ASM盤的話, 需要將塊設備經歷lvremove——>vgremove——>pvremove過程,如果pvremove不成功,需要先清除磁盤磁頭信息,使用dd  if=/dev/zero bs=1024 count=10000 of=/dev/sdb1(關於dd命令,可以百度)

7、如果不適用邏輯捲來擴大ASM磁盤容量,可以通過建立Disk Group 來將多個塊設備建立成一個ASM共享盤,關於asm磁盤的視圖有v$asm_disk,v$asm_diskgroup

8、RAC安裝好後,可以執行以下命令查看RAC健康狀態:

#su – grid

$olsnodes  確認運行的節點

$crsctl check crs 檢查CRS運行狀態

$crs_stat -t

# su – oracle

$srvctl status database –d moddb  確認運行和未運行的instance

9、在RAC數據庫中添加service有兩種方法:srvctl add service和dbms_service.create_service 來創建,然後再更改service_names參數,重啓數據庫後,就可以運行lsnrctl status查看到service的狀態。

10、關於監聽,可以通過netca來創建新的監聽,監聽分爲靜態註冊和動態註冊兩種,如果靜態註冊,需要修改ASM的$ORACLE_HOME/network/admin/listener.ora文件,添加SID_LIST_LISTENER =
      (SID_LIST =
      (SID_DESC =
      (SID_NAME = rac11g)
      (ORACLE_HOME = /grid/11.2.0)
      (PROGRAM = extproc)
      )
      (SID_DESC =
      (GLOBAL_DBNAME =ocp)
      (ORACLE_HOME = /grid/11.2.0)
      (SID_NAME =rac11g)
      )
      )

該文件表明數據庫是單實例的,實例名爲rac11g,向外提供了服務ocp(需要使用第9步方法創建service)

如果動態註冊,oracle會自己根據instance_name和service_name來自動註冊監聽。

如何區分動態註冊和靜態註冊,運行lsnrctl status查看,如果未ready 標明動態註冊,UNKNOWN 則爲靜態註冊。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章