Copyright to Jeffrey.Su
前言:
文檔編寫日期追溯到13年10月,那時的自己還是一枚學生。基本上是三無人員 。聽老溼說RAC很高大上,遂弄之。那是啥也不太懂 神馬udev 神馬 block 什麼 ASM 等等 。一切從零開始 , 開始網上收集文檔 補充知識 。借鑑了很多文檔 。向開源的前輩致敬! 再說說裝備之簡陋 ,可以稱之爲小米加***。整體裝備 i5 2450 Ram 4G disk 5400/r . @_@
這裏內存是最要命的 官方說明rac 單機 物理內存至少是1.5G 。 都分1.5 的話 再加一個 openfiler 機器不就成蝸牛了嗎? 後通過實踐 virtual box 的共享磁盤還是蠻方便的,就用它了 。 一點一點網上加內存呀 !! 最終 還是弄到 1.5G 囧囧囧 , 之前是各種報錯 。 歷時 一週半 從無到有 測試環境算是出來了 , 但是僅做了簡單的測試 。 Cpu 風扇 都開始 往外吐灰塵了 。 這是什麼節奏呀 @_@
下面回到正文:
一、配置oracle 11g r2 RAC
1、環境介紹:
Node Name | Oracle_SID | Databasename | MEM | OS |
OceanI | oceandb1 | oceandb | 1.5G | Rhel5.4 |
OceanV | oceandb2 | 1.5G | Rhel5.4 | |
這裏系統安裝建議對node2 不是clone system |
網絡配置 | ||||||
Node Name | Public IP | Private IP | Virtual IP | Scan Name | Scan IP | 解析方式 |
OceanI | 192.168.1.10 | 10.10.10.10 | 192.168.1.11 | Ocean-rac | 192.168.1.99 | hosts |
OceanV | 192.168.1.20 | 10.10.10.20 | 192.168.1.21 |
Oracle 軟件組件 | |||||
軟件組件 | 用戶 | 主組 | 輔組 | 主目錄 | Oracl基本目/Oracle主目錄 |
Grid | grid | oinstall | asmadmin、asmdba、asmoper | /home/grid | /u01/app/grid /u01/app/11.2.0/grid |
Oracle Rac | grid | oinstall | dba、oper、asmdba | /home/oracle | /u01/app/oracle /u01/app/oracle/product/11.2.0/db_1 |
存儲組件 | |||||
存儲組件 | 文件系統 | 卷大小 | ASM卷組名 | ASM 冗餘 | Raw 卷名 |
OCR表決磁盤 | ASM | 2GB | +CRSV1 | External | raw1 |
數據庫文件 | ASM | 10GB | +DATEV1 | External | raw2 |
快速恢復區 | ASM | 5GB | +FRAV1 | External | raw3 |
在這裏存儲系統使用的是ASM,在 ASM 上存儲 OCR 和表決磁盤文件,具體是存儲在一個名爲 +CRS 的磁盤組中,該磁盤組使用外部冗餘配置,只有一個 OCR 位置和一個表決磁盤位置。ASM 磁盤組應在共享存儲器上創建,大小至少爲 2GB。Oracle 物理數據庫文件(數據、聯機重做日誌、控制文件、存檔重做日誌)將安裝在 ASM 上一個名爲 +DATElv1 的 ASM 磁盤組中,而快速恢復區將在一個名爲 +FRAlv1 的 ASM 磁盤組上創建。
2、系統配置:
2.1、安裝oracle RAC所需的linux軟件包:
查看安裝的包
rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel rpm -q glibc-headers ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make numactl-devel sysstat yum -y install binutils compat-libstdc++ elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel
2.2、網絡配置:
分配IP地址:
這裏的 SCAN ip地址必須通過GNS或者DNS來解析的,這裏使用的是DNS解析.其他地址都在hosts文件裏定義。
[root@OceanI ~]# cat /etc/hosts # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1OceanI localhost.localdomain localhost #::1localhost6.localdomain6 localhost6 192.168.1.10 OceanI 192.168.1.11 OceanI-vip #未非配IP 10.10.10.10 OceanI-pri 192.168.1.50 OceanV 192.168.1.51 OceanV-vip #未非配IP 10.10.10.50 OceanV-pri 192.168.1.99 Ocean-rac #未非配IP
2.3、集羣時間同步服務:
利用linux本身對時間進行同步
service ntpd stop chkconfig ntpd off mv /etc/ntp.conf /etc/ntp.conf.org rm /var/run/ntpd.pid
這步需要做 否則會影響rac穩定運行
2.4、創建任務角色劃分操作系統權限組、用戶和目錄:
創建以下 O/S 組:
2.4.1 添加Oracle用戶組
groupadd -g 1001 oinstall groupadd -g 1002 asmadmin groupadd -g 1003 asmdba groupadd -g 1004 asmoper groupadd -g 1005 dba groupadd -g 1006 oper
2.4.2添加Oracle用戶
useradd oracle -u 600 useradd grid -u 601
2.4.3 修改Oracle用戶所屬組
useradd -g oinstall -G dba,asmadmin,asmdba,asmoper grid useradd -g oinstall -G dba,oper,asmdba oracle
分別在兩節點使用 id grid /id oracle 查看用戶ID、組ID 是否一致[之前未指定用戶ID、組ID]
2.4.4 設置密碼
passwd oracle (oracle) passwd grid (grid)
2.5爲 grid 用戶帳戶創建登錄腳本
vi /home/grid/.bash_profile
注:在爲每個 Oracle RAC 節點設置 Oracle 環境變量時,確保爲每個 RAC 節點指定唯一的 Oracle SID。對於此示例,我使用:
o OceanI:ORACLE_SID=+ASM1
o OceanV:ORACLE_SID=+ASM2
ORACLE_SID=+ASM1; export ORACLE_SID ORACLE_BASE=/u01/app/grid; export ORACLE_BASE ORACLE_HOME=/u01/app/11.2.0/grid; export ORACLE_HOME export PATH=$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib export TMP=/tmp export CLASSPATH=$CLASSPATH:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib source /home/grid/.bash_profile
2.6爲 oracle 用戶帳戶創建登錄腳本
vi /home/oracle/.bash_profile
注:在爲每個 Oracle RAC 節點設置 Oracle 環境變量時,確保爲每個 RAC 節點指定唯一的 Oracle SID。對於此示例,我使用:
o OceanI:ORACLE_SID=oceandb1
o OceanV:ORACLE_SID=oceandb2
加入.bash_profile
ORACLE_SID=oceandb1; export ORACLE_SID ORACLE_UNQNAME=oceandb; export ORACLE_UNQNAME ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1; export ORACLE_HOME export PATH=$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib export TMP=/tmp export CLASSPATH=$CLASSPATH:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib source /home/oracle/.bash_profile
2.7 創建Oracle 基目錄路徑[兩節點均執行相同操作]:
mkdir -p /u01/app/grid mkdir -p /u01/app/11.2.0/grid chown -R grid.oinstall /u01/ mkdir -p /u01/app/oracle chown -R oracle.oinstall /u01/app/oracle/ chmod -R 775 /u01/
2.8 爲 Oracle 軟件安裝用戶設置資源限制:
A:修改/etc/security/limits.conf文件,加入以下內容:
#add by lcs for oracle 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
B:vi /etc/pam.d/login ,加入以下內容:
session required pam_limits.so
C:根據您的 shell 環境,對默認的 shell 啓動文件進行以下更改,以便更改所有 Oracle 安裝所有者的 ulimit 設置(注意這裏的示例顯示 oracle 和 grid 用戶):
對於 Bourne、Bash 或 Korn shell,通過運行以下命令將以下行添加到 /etc/profile 文件:
#oracle 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
2.9 爲 Oracle 配置 Linux 服務器:
配置內核參數:
向/etc/sysctl.conf,添加
#kernel.shmall = 2097152(已有可不修改) #kernel.shmmax = 2147483648(已有可不修改) kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 net.ipv4.ip_local_port_range = 9000 65500 fs.suid_dumpable = 1 fs.file-max = 6815744 fs.aio-max-nr = 1048576
/sbin/sysctl -p #是修改參數立即生效
2.10 配置系統安全設置[兩節點均執行]
iptables -F /etc/init.d/iptables save chkconfig iptables off vim /etc/selinux/config SELINUX=disabled
2.11 修改tmpfs的大小
umount tmpfs mount -t tmpfs shmfs -o size=3000m /dev/shm 修改/etc/fstab文件,增加tmpfs大小 vi /etc/fstab tmpfs /dev/shm tmpfs defaults,size=3G 0 0
2.12 配置RAC 節點以便可以使用 SSH 進行遠程訪問
略………
2.13、共享磁盤配置:
[注]:這裏的共享磁盤選擇固定大小 添加方式和添加其他虛擬硬盤方式一樣 這裏不做過多的說明。
在共享磁盤上創建分區:
只創建一個分區,在一個節點上執行即可,如下:
2.14使用u_dev綁定裸設備:
[root@OceanI ~]# vim /etc/udev/rules.d/60-raw.rules # Enter raw device bindings here. # # An example would be: # ACTION=="add", KERNEL=="sda", RUN+="/bin/raw /dev/raw/raw1 %N" # to bind /dev/raw/raw1 to /dev/sda, or # ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="1", RUN+="/bin/raw /dev/raw/raw2 %M %m" # to bind /dev/raw/raw2 to the device with major 8, minor 1. ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N" ACTION=="add", KERNEL=="sdc1", RUN+="/bin/raw /dev/raw/raw2 %N" ACTION=="add", KERNEL=="sdd1", RUN+="/bin/raw /dev/raw/raw3 %N" ACTION=="add", KERNEL=="sde1", RUN+="/bin/raw /dev/raw/raw4 %N" KERNEL=="raw1", OWNER=="grid", GROUP=="asmadmin", MODE="660" KERNEL=="raw2", OWNER=="grid", GROUP=="asmadmin", MODE="660" KERNEL=="raw3", OWNER=="grid", GROUP=="asmadmin", MODE="660" KERNEL=="raw4", OWNER=="grid", GROUP=="asmadmin", MODE="660" 然後啓動udev服務生成RAW設備 [root@OceanI /]# start_udev Starting udev: [OK] 接着驗證udev是否成功生成 [root@OceanI ~]# ls -l /dev/raw total 0 crw-rw---- 1 grid asmadmin 162, 1 Sep 27 05:04 raw1 crw-rw---- 1 grid asmadmin 162, 2 Sep 27 05:04 raw2 crw-rw---- 1 grid asmadmin 162, 3 Sep 27 05:04 raw3 crw-rw---- 1 grid asmadmin 162, 4 Sep 27 05:04 raw4 [root@OceanI ~]# scp /etc/udev/rules.d/60-raw.rules OceanV:/etc/udev/rules.d/60-raw.rules # start_udev
2.15 重新啓動系統
Reboot
檢查之前配置
到這裏基本上環境都準備好了 ,下篇講解 GRID 的安裝 。