1. 程式人生 > >centos部署oracle rac單例項11.2.0.3資料庫(使用asm磁碟)

centos部署oracle rac單例項11.2.0.3資料庫(使用asm磁碟)

部署oracle rac單例項資料庫,需要安裝grid和datavase兩部分,所以首先建立兩個使用者oracle和grid,因為不能使用root使用者進行安裝,在安裝之前首先需要修改一些系統引數和安裝一些庫。

1.建立使用者和使用者組

  首先是官方推薦的使用者和使用者組清單:

描述 OS 組名 分配給該組的 OS 使用者 Oracle 許可權 Oracle 組名
Oracle 清單和軟體所有者 oinstall grid、oracle    
Oracle 自動儲存管理組 asmadmin grid SYSASM OSASM
ASM 資料庫管理員組 asmdba grid、oracle ASM 的 SYSDBA OSDBA for ASM
ASM 操作員組 asmoper grid ASM 的 SYSOPER OSOPER for ASM
資料庫管理員 dba oracle SYSDBA
OSDBA
資料庫操作員 oper oracle SYSOPER OSOPER

  然後是建立使用者和使用者組語句:

# groupadd -g 1000 oinstall
# groupadd -g 1200 asmadmin
# groupadd -g 1201 asmdba
# groupadd -g 1202 asmoper
# useradd -m -u 1100 -g oinstall -G asmadmin,asmdba,asmoper -d
# id grid uid=1100(grid) gid=1000(oinstall)
# passwd grid


# groupadd -g 1300 dba
# groupadd -g 1301 oper
# useradd -m -u 1101 -g oinstall -G dba,oper,asmdba -d
# id oracle
# passwd oracle

2.建立 Oracle 基目錄路徑

# mkdir -p /home/app/grid
# mkdir -p /home/app/11.2.0/grid
# chown -R grid:oinstall /home
# mkdir -p /home/app/oracle
# chown oracle:oinstall /home/app/oracle
# chmod -R 775 /home

3.使用udev部署用於建立asm磁碟組的磁碟

  首先使用fdisk -l 檢視所有的磁碟,然後fdisk /dev/sda (假設使用sda作為asm磁碟)進行分割槽,具體分割槽操作可百度,總之最後在用fdisk -l檢視磁碟資訊的時候可以看到/dev/sda  下有一個/dev/sda1

  然後開啟/etc/udev/rules.d/資料夾建立一個99-oracle.rules檔案,插入以下類似的語句:

KERNEL=="sdb1",OWNER="grid",GROUP="asmadmin",MODE="0777" 
KERNEL=="sdd1",OWNER="grid",GROUP="asmadmin",MODE="0777" 
KERNEL=="sde1",OWNER="grid",GROUP="asmadmin",MODE="0777"

  這裡使用了三個磁碟就寫了三行,編寫完畢儲存退出。

  最後兩個語句完成重新載入udev規則和重啟udev:

# udevadm control --reload-rules
# start_udev

4.安裝所需庫:

  我全寫成了一個yum安裝語句:

yum -y install binutils compat-libcap1 compat-libstdc* gcc gcc-c++* glibc glibc-devel ksh libgcc libstdc libaio libaio-devel make elfutils-libelf-devel sysstat

5.修改系統引數

  修改檔案修改新增:

# vim /etc/security/limits.conf
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

# vi /etc/pam.d/login
session    required     pam_limits.so

# vi /etc/profile
if [ \$USER = "oracle" ] || [ \$USER = "grid" ]; then
    if [ \$SHELL = "/bin/ksh" ]; then
        ulimit -p 16384
        ulimit -n 65536
    else
        ulimit -u 16384 -n 65536
    fi
    umask 022
fi

# vi /etc/hosts
127.0.0.1   localhost oracletest
::1         localhost oracletest


# vi /etc/sysctl.conf
kernel.shmmax = 4294967295
kernel.shmall = 2097152
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048576
fs.aio-max-nr=1048576

# sysctl -p
# chmod -R 775 /etc/oracle

6.解壓安裝包,database和grid都是./runInstall 執行安裝介面,這裡面的每一步我就不截圖一點點來了,百度有很多的。

  下面是一些我遇到的問題,以及我的解決方法(僅參考)

  • 安裝完grid之後可以不急著安裝database,現在$GRID_HOME/bin/目錄下執行asmca再增加其他asm磁碟組,這個也是圖形化介面。
  • 安裝database的時候可以選擇只安裝資料庫軟體,不安裝資料庫例項,等到資料庫軟體安裝好了之後,在$ORACLE_HOME/bin/下執行dbca建資料庫例項,選擇asm磁碟作為資料存放路徑。
  • grid和databse安裝過程中會檢測庫是否安裝完全,如果執行完成我之前的yum語句可忽略這次檢測的異常。(僅參考)
  • grid解除安裝後重新安裝時ASM磁碟識別不到了 :http://www.cnblogs.com/-abm/p/9240127.htm
    安裝了一次磁碟已經有asm資訊寫入,需要擦除才能重新被識別到(of="需要擦除的磁碟")

dd if=/dev/zero of=/dev/sdb1 bs=1M count=10
  • grid 安裝過程中如果找不到udev部署的磁碟可能是因為許可權的問題,可以參考一下我對這幾個磁碟的所有者和所有組(僅參考)
brwxrwxrwx. 1 grid asmadmin 8, 17 Oct 20 10:23 /dev/sdb1
brwxrwxrwx. 1 grid asmadmin 8, 49 Oct 20 10:23 /dev/sdd1
brwxrwxrwx. 1 grid asmadmin 8, 65 Oct 20 10:23 /dev/sde1
  • grid 安裝過程中如果 root.sh執行 錯誤可以執行這句解決  
.$GRID_HOME/crs/install/roothas.pl -deconfig -force -verbose
  • grid 安裝過程中如果 root.sh執行到一半停頓不動了,然後報錯,可以在停頓的時候再另外的介面執行這個(11.2.0.1有這個bug,11.2.0.3我暫時沒遇到過):
# /bin/dd if=/var/tmp/.oracle/npohasd of=/dev/nullbs=1024 count=1
  • dbca建立資料庫時,找不到asm磁碟,可能是oracle使用者沒有許可權,給oracle加上asm配置時的使用者組就行 將oracle使用者加到asmadmin使用者組中 將grid使用者加到dba使用者組中 

  • 機器重啟後,如果資料庫沒有啟動使用下面的語句可啟動(參考https://blog.csdn.net/haiross/article/details/16861849)

#./crsctl start has

7.設定開機自啟

  • 1.在$GRID_HOME的bin目錄下執行:
#./crsctl modify resource "ora.cssd" -attr "AUTO_START=1"
#./crsctl modify resource "ora.diskmon" -attr "AUTO_START=1" 
#./crsctl enable has
  • 2.在/etc/init.d/ohasd 中新增(11.2.0.1有這個bug,11.2.0.3我暫時沒遇到過)
enable*)
$LOGERR "Oracle HA daemon is enabled for autostart."
/bin/dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1 &
/home/grid/app/grid/product/11.2.0/grid/bin/crsctl start has &
sleep 600
ps -ef|grep dd|grep hasd|awk '{print $2}'|xargs kill -9
;;

   以上就是我遇到過的問題,,,配置系統引數那塊是真的一點不能少或者錯,不然後面安裝必報錯,看日誌也不一定能定位問題,asm磁碟的那個部分其實可以使用openfiler新增網路磁碟,網路磁碟的擴容很簡單不會因為機器放不下硬碟而擴容失敗,這一塊主要就是找一臺專門的機器安裝openfiler,然後oracle這塊使用iscsi連線上openfiler,然後同樣的分割槽,然後使用udev,編寫規則,不一樣的是這裡的udev規則需要先獲取使用磁碟id編寫而不是磁碟的名字,因為openfiler掛載來的磁碟會發生漂移,沒準機器重啟之後原本掛載在sda的磁碟就變成sdb了所以使用磁碟id。