部署oracle rac單實例數據庫,須要安裝grid和datavase兩部分,因此首先建立兩個用戶oracle和grid,由於不能使用root用戶進行安裝,在安裝以前首先須要修改一些系統參數和安裝一些庫。css
1.建立用戶和用戶組c++
首先是官方推薦的用戶和用戶組清單:數據庫
描述 | 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 |
而後是建立用戶和用戶組語句:vim
# 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 /home/grid -s /bin/bash -c "Grid Infrastructure Owner" grid
# passwd grid bash
# groupadd -g 1300 dba
# groupadd -g 1301 oper
# useradd -m -u 1101 -g oinstall -G dba,oper,asmdba -d /home/oracle -s /bin/bash -c "Oracle Software Owner" oracle
# passwd oracle網絡
2.建立 Oracle 基目錄路徑session
# 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磁盤組的磁盤oracle
首先使用fdisk -l 查看全部的磁盤,而後fdisk /dev/sda (假設使用sda做爲asm磁盤)進行分區,具體分區操做可百度,總之最後在用fdisk -l查看磁盤信息的時候能夠看到/dev/sda 下有一個/dev/sda1app
而後打開/etc/udev/rules.d/文件夾建立一個99-oracle.rules文件,插入如下相似的語句:ui
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卸載後從新安裝時ASM磁盤識別不到了 :http://www.cnblogs.com/-abm/p/9240127.htm
安裝了一次磁盤已經有asm信息寫入,須要擦除才能從新被識別到(of="須要擦除的磁盤")
dd if=/dev/zero of=/dev/sdb1 bs=1M count=10
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_HOME/crs/install/roothas.pl -deconfig -force -verbose
# /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.設置開機自啓
#./crsctl modify resource "ora.cssd" -attr "AUTO_START=1"
#./crsctl modify resource "ora.diskmon" -attr "AUTO_START=1"
#./crsctl enable has
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。