ORACLE11.2.0.4 RAC+ ASM安裝方法 (作業系統CENTOS7.6)
前言
網上的各種文章,嘗試過後,發現有很多錯漏的地方,還有很多細節沒有寫,或者是遇到各種報錯如何處理,都沒寫,
這裡是我自己整理的安裝步驟和解決報錯的方法,因為有部分是從自己以前的筆記裡擷取的截圖之類的,所以那些可替換的地方,大家就自己去搞定了哈,實在太萌新的,也沒辦法了,自己多摸索下,畢竟這個筆記是寫給我自己看的,以備以後還會用到,這次因為在新的作業系統環境,踩了N多的坑,花費我大量時間,下次不要再踩了。
我這裡的ASM配置是採用的儲存裸裝置
作業系統CENTOS7.6
資料庫ORACLE11.2.0.4
一、ASM磁碟配置
1 、編輯 / etc/scsi_id.config 檔案
vi /etc/scsi_id.configo
options=-g
2 、給磁碟分割槽,並檢視磁碟的 uuid (磁碟分割槽只在一個節點執行即可)
fdisk /dev/sda
n
p
1
預設回車
預設回車
w
fidk /dev/sdb
n
p
1
預設回車
預設回車
w
檢視UUID
/usr/lib/udev/scsi_id -g -u -d /dev/sda1
/usr/lib/udev/scsi_id -g -u -d /dev/sdb1
查不出的話試試
/sbin/ scsi_id -g -u -d /dev/sdb1
ls -l /dev/disk/by-id/
再不行,那就是磁碟有問題,不能用於ASM,要麼就是雲平臺重新劃分,或者VM重新配置劃分
當然磁碟是哪個磁碟,這個要你們自己掛載的時候自己整好,lsblk檢視磁碟
忘了在此之前先建立使用者及所屬組
/usr/sbin/groupadd -g 501 oinstall
/usr/sbin/groupadd -g 502 dba
/usr/sbin/groupadd -g 503 oper
/usr/sbin/groupadd -g 504 asmadmin
/usr/sbin/groupadd -g 505 asmoper
/usr/sbin/groupadd -g 506 asmdba
/usr/sbin/useradd -g oinstall -G dba,asmdba,oper oracle
/usr/sbin/useradd -g oinstall -G asmadmin,asmdba,asmoper,oper,dba grid
注意:
如果在建立使用者時遇到以下報錯:
configuration error - unknown item 'umask' (notify administrator)
解決方法:
vi /etc/login.defs
umask 027
小寫的umask修改為大寫的UMASK
UMASK 027
3 、編輯繫結檔案,使用如下規則
vi /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="sd*[!0-9]", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="3628408eff0495d08ef004912d7d6b386", RUN+="/bin/sh -c 'mknod /dev/asmocrdisk b $major $minor; chown grid:asmadmin /dev/asmocrdisk; chmod 0660 /dev/asmocrdisk'"
KERNEL=="sd*[!0-9]", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="361c104516049770bef80026911671d80", RUN+="/bin/sh -c 'mknod /dev/asmdatadisk1 b $major $minor; chown grid:asmadmin /dev/asmdatadisk1; chmod 0660 /dev/asmdatadisk1'"
4 、開始繫結
測試
/sbin/partprobe /dev/sda1
/sbin/udevadm test /block/sda/sda1
/sbin/partprobe /dev/sdb1
/sbin/udevadm test /block/sdb/sdb1
進行繫結命令:
/sbin/udevadm control --reload-rules
5 、繫結完成,可以使用命了 ls -l /dev/asm* 進行檢視
lrwxrwxrwx. 1 root root 4 6月 6 16:14 /dev/asm-datadisk1 -> sdb1
lrwxrwxrwx. 1 root root 4 6月 6 16:05 /dev/asm-ocrdisk -> sda1
注意:這個時候可能你會發現ll /dev/asm* 下面啥都木有
這個就要記得,把防火牆關閉了,setenforce 0 iptables -F
然後改那個/etc/selinux/config 永久關閉,vi /dev/udev/rules.d/ 99-oracle-asmdevices.rules 一樣的配置
再登陸2節點,lsblk發現為啥沒有/dev/sda1 和/dev/sdb1,直接fdisk /dev/sda 和fdisk /dev/sdb然後直接q退出,不用操作
再次lsblk,就發現,ll /dev/asm* 有對映了。
然後回到1節點,ll /dev/asm*發現還是沒有對映,那就和2節點一樣的操作,fdisk /dev/sda 和fdisk /dev/sdb然後直接q退出,不用操作。再次lsblk,就發現,ll /dev/asm*有對映了。
如果ll /dev/asm* 還是看不到,那就直接reboot重啟作業系統應該就能看到了。
二、環境準備
1 、host檔案配置
#vi /etc/hosts
192.168.159.6 testdb1
192.168.159.7 testdb2
192.168.159.24 testdb1-vip
192.168.159.25 testdb2-vip
10.1.22.6 testdb1-pri
10.1.22.7 testdb2-pri
192.168.159.26 testdb-scan
( hosts 檔案的 IP 對應名稱最好只寫一個,不要多餘的)
以下很重要,不修改會在安裝grid的時候會報錯
節點1
vi /etc/hostname
testdb1
臨時修改hostname
hostname testdb1
節點2
vi /etc/hostname
testdb2
臨時修改hostname
hostname testdb2
網路卡的配置就不要我說了吧,一個公網網路卡,一個私網網路卡,配置起來很簡單。
2 、安裝ORACLE11G所需環境包
yum -y install compat-libstdc++-33 elfutils-libelf-devel gcc gcc-c++ glibc-devel glibc-headers libaio-devel libstdc++-devel sysstat unixODBC unixODBC-devel libcap.so.1
yum -y install binutils compat-db compat-libcap1 compat-libstdc++-33 control-center elfutils-libelf-devel gcc gcc-c++ glibc glibc-common gnome-libs libaio-devel libstdc++ libstdc++-devel make pdksh sysstat xscreensaver libaio openmotif21 smartmontools
安裝yum源的時候,可能會報錯?YUM源搞不了?(用本地YUM源的請忽略)
這個時候檢查下你的配置檔案
vi /etc/resolv.conf
nameserver 114.114.114.114
3 、 引數配置
vi /etc/sysctl.conf
生產庫的配置:最後一行新增,重複的去掉
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
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
vm.nr_hugepages = 2100
kernel.shmall = 4194304
kernel.shmmax = 17179869183
我這裡的實體記憶體是 16G,SGA是給的4G,所以是以上的引數設定
huge的配置大小
如果你的SGA總量是10G
那麼你的hugepage要取一個比 10*1024/2=5120 這個數大的值, 比如5200,我這裡是4G所以給的2100
注意,要設定huge,要先看看資料庫的記憶體管理是AMM還是ASMM,如果是AMM就無法使用huge了。
還有核心引數的一些設定,建議值如下:
kernel.shmmax
記憶體為 12G 時,該值為 12*1024*1024*1024-1 = 12884901887
記憶體為 16G 時,該值為 16*1024*1024*1024-1 = 17179869183
記憶體為 32G 時,該值為 32*1024*1024*1024-1 = 34359738367
記憶體為 64G 時,該值為 64*1024*1024*1024-1 = 68719476735
記憶體為 128G 時,該值為 128*1024*1024*1024-1 = 137438953471
kernel.shmall
當記憶體為 12G 時, kernel.shmall = 3145728
當記憶體為 16G 時, kernel.shmall = 4194304
當內次為 32G 時, kernel.shmall = 8388608
當記憶體為 64G 時, kernel.shmall = 16777216
當記憶體為 128G 時, kernel.shmall = 33554432
至於其他的那些引數的設定,網上有很多的建議值還有說明,自己看著來就好了,一般預設值都夠用。
(這裡注意,生產環境最好都要設定下大頁hugepages,不然以後系統執行久了容易遇到記憶體的一些問題,個人經驗)
想檢視大頁huge
grep Huge /proc/meminfo
使引數立即生效
sysctl -p
vi /etc/security/limits.conf
生產庫的配置:最後一行新增,重複的去掉
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 10240
oracle hard nofile 65536
oracle soft stack 10240
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240
或者根據實際情況做記憶體限制,比如實體記憶體是32G,這裡限制記憶體鎖定最多隻能佔用29G
# vi /etc/security/limits.conf -- 新增或修改以下內容
oracle soft nofile 5000
oracle hard nofile 65536
oracle soft nproc 5000
oracle hard nproc 16384
oracle soft stack 20480
oracle hard stack 32768
* soft memlock 30408704 -- 鎖定29G 記憶體
* hard memlock 30408704 -- 鎖定29G 記憶體
實際在生產系統測試過這種方法貌似沒用,自己在這裡做個記錄
注意,這裡的10240和作業系統連線數有關聯哦,ulimit -n可以檢視連線數,對應資料庫的連線數,自己進行配置哦
vi /etc/pam.d/login
session required pam_limits.so
4 、關閉防火牆
(我這裡的環境一般是雲端,所以不用考慮防火牆等安全問題,雲端上有物理防火牆,N多策略阻擋了)
如果不關閉防火牆,在後面配置叢集的時候會遇到麻煩的
service iptables stop
chkconfig iptables off
setenforce 0
getenforce
iptables -F
vi /etc/selinux/config
SELINUX=disabled
SELINUXTYPE=targeted
5 、禁用NTP服務
service ntpd stop
chkconfig ntpd off
mv /etc/ntp.conf /etc/ntp.conf.bak
rm -rf /etc/ntp.conf
6 、使用者及使用者組,許可權目錄建立
/usr/sbin/groupadd -g 501 oinstall
/usr/sbin/groupadd -g 502 dba
/usr/sbin/groupadd -g 503 oper
/usr/sbin/groupadd -g 504 asmadmin
/usr/sbin/groupadd -g 505 asmoper
/usr/sbin/groupadd -g 506 asmdba
/usr/sbin/useradd -g oinstall -G dba,asmdba,oper oracle
/usr/sbin/useradd -g oinstall -G asmadmin,asmdba,asmoper,oper,dba grid
passwd oracle
passwd grid
mkdir -p /home/u01/app/grid
mkdir -p /home/u01/app/11.2.0/grid
chown -R grid:oinstall /home/u01
mkdir -p /home/u01/app/oracle
chown oracle:oinstall /home/u01/app/oracle
chmod -R 775 /home/u01
7 、oracle及grid環境變數配置
以 oracle 使用者登入(兩個節點一樣)(不要老想著複製貼上,注意有的路徑之間可能會多出空格,這個是部落格的BUG,我也不知道為啥會無端端多出空格來,反正經常寫部落格都遇到自己編輯沒空格,別人來複制貼上就有了。)
節點一
vi .bash_profile
export PATH
umask 022
export ORACLE_BASE=/ home/ u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=testdb1
export LANG=en_US.UTF-8
export NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss"
export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin
export ORACLE_PATH=${PATH}:$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/admin
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp
oracle使用者,節點二
vi .bash_profile
export PATH
umask 022
export ORACLE_BASE=/ home/ u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=testdb2
export LANG=en_US.UTF-8
export NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss"
export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin
export ORACLE_PATH=${PATH}:$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/admin
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp
以 grid 使用者登入
節點一:
vi .bash_profile
ORACLE_SID=+ASM1; export ORACLE_SID
JAVA_HOME=/usr/local/java;export JAVA_HOME
ORACLE_BASE=/ home/ u01/app/grid; export ORACLE_BASE
ORACLE_HOME=/ home/ u01/app/11.2.0/grid; export ORACLE_HOME
ORACLE_PATH=/ home/ u01/app/oracle/common/oracle/sql; export ORACLE_PATH
ORACLE_TERM=xterm;export ORACLE_TERM
NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS";export NLS_DATE_FORMAT
TNS_ADMIN=$ORACLE_HOME/network/admin; export TNS_ADMIN
ORA_NLS11=$ORACLE_HOME/nls/data; export ORA_NLS11
PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin
PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
PATH=${PATH}:/ home/ u01/app/common/oracle/bin
export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export CLASSPATH
THREADS_FLAG=native; export THREADS_FLAG
export TEMP=/tmp
export TMPDIR=/tmp
export LANG=en_US.UTF-8
alias sqlplus="rlwrap sqlplus"
umask 022
節點二:
vi .bash_profile
ORACLE_SID=+ASM2; export ORACLE_SID
JAVA_HOME=/usr/local/java;export JAVA_HOME
ORACLE_BASE=/ home/ u01/app/grid; export ORACLE_BASE
ORACLE_HOME=/ home/ u01/app/11.2.0/grid; export ORACLE_HOME
ORACLE_PATH=/ home/ u01/app/oracle/common/oracle/sql; export ORACLE_PATH
ORACLE_TERM=xterm;export ORACLE_TERM
NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS";export NLS_DATE_FORMAT
TNS_ADMIN=$ORACLE_HOME/network/admin; export TNS_ADMIN
ORA_NLS11=$ORACLE_HOME/nls/data; export ORA_NLS11
PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin
PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
PATH=${PATH}:/ home/ u01/app/common/oracle/bin
export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export CLASSPATH
THREADS_FLAG=native; export THREADS_FLAG
export TEMP=/tmp
export TMPDIR=/tmp
export LANG=en_US.UTF-8
alias sqlplus="rlwrap sqlplus"
umask 022
8 、ssh密匙互信配置
設定互信關係,這裡記住oracle和grid使用者都要設定互信,root也互信,且在測試的時候,2個節點都要進行測試
su - oracle
mkdir ~/.ssh
ssh-keygen -t rsa
ssh-keygen -t dsa
以下操作在一個節點上執行即可
cat ~/.ssh/id_rsa.pub>>./.ssh/authorized_keys -公鑰存在authorized_keys檔案中,寫到本機
cat ~/.ssh/id_dsa.pub>>./.ssh/authorized_keys
ssh testdb2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys -第二個節點的公鑰寫到本機
ssh testdb2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys testdb2:~/.ssh/authorized_keys
兩個節點上分別驗證
ssh testdb1 date
ssh testdb2 date
ssh testdb1-PRI date
ssh testdb2-PRI date
su - grid
mkdir ~/.ssh
ssh-keygen -t rsa
ssh-keygen -t dsa
以下操作在一個節點上執行即可
cat ~/.ssh/id_rsa.pub>>./.ssh/authorized_keys -公鑰存在authorized_keys檔案中,寫到本機
cat ~/.ssh/id_dsa.pub>>./.ssh/authorized_keys
ssh testdb2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys -第二個節點的公鑰寫到本機
ssh testdb2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys testdb2:~/.ssh/authorized_keys
兩個節點上分別驗證
ssh testdb1 date
ssh testdb2 date
ssh testdb1-PRI date
ssh testdb2-PRI date
如果要打叢集補丁之類的,root使用者也來驗證一下
三、GRID/ASM安裝
1 )使用 oracle 使用者解壓安裝包(其實root解壓也一樣)
2 )使用 grid 使用者登入安裝 grid
安裝圖形化
yum -y groupinstall "X Window System"
yum -y install compat-libstdc++-33 elfutils-libelf-devel gcc gcc-c++ glibc-devel glibc-headers libaio-devel libstdc++-devel sysstat unixODBC unixODBC-devel
yum install -y compat-libcap1-1.10 libcap.so.1 libstdc++-devel-4.4.4 gcc-c++-4.4.4 smartmontools libaio-devel-0.3.107
把你下載的安裝包都解壓了吧,我一般都把安裝包放在/opt/目錄(在其中一個節點操作就可以了)
cd /opt/
unzip p13390677_112040_Linux-x86-64_1of7.zip
unzip p13390677_112040_Linux-x86-64_2of7.zip
unzip p13390677_112040_Linux-x86-64_3of7.zip
解壓之後會出現2個目錄database和grid
rpm -ivh /opt/grid/rpm/cvuqdisk-1.0.9-1.rpm ( 解壓 grid 安裝包裡面可以找到,如果無法安裝,請先安裝yum install smartmontools這個 )
rpm -ivh pdksh-5.2.14-37.el5_8.1.x86_64.rpm (這裡必須安裝這個版本)
注意事項:安裝 GRID 時, VIP 設定的時候要全部小寫, VIP 的 IP 不允許佔用
root使用者xhost +回車
su - grid
export DISPLAY=192.168.159.6:0.0
cd /opt/grid/
./runInstaller
(1)步驟一
(2)步驟二
(3)步驟三
(4)步驟四
(5)步驟五
(6)步驟六
遇到報錯:
遇到以上報錯需將scan name修改為/etc/hosts下的scan存在的名字,比如testdb-scan
192.168.159.6 testdb1
192.168.159.7 testdb2
192.168.159.24 testdb1-vip
192.168.159.25 testdb2-vip
10.1.22.6 testdb1-pri
10.1.22.7 testdb2-pri
192.168.159.26 testdb-scan
步驟7也是一樣的問題,相對應的名稱要與/etc/hosts設定的一致(注意,如果在安裝過程中修改了/etc/hosts,需要重新開啟安裝程式才可以識別)
(7)步驟七
這裡如果遇到報錯,檢查ifconfig 的IP地址是否被佔用,檢查grid和oracle互信是否正常
Public hostname 必須填寫物理節點的主機名
virtual hostname 可以填寫/etc/hosts下的主機名
注意:雙節點必須密匙互信,包含主機名,虛擬主機名,互信之後,如果是報錯互信,要配置完互信之後,重新啟動安裝程式才可識別
互信的使用者包含 grid,oracle
注意,自己和自己也要互信
如果出現以上報錯,應檢查VIP是否被使用被佔用
Ifconfig
Ping vip地址是否通
如果發現已被佔用,只能換一個IP地址
如果是下圖報錯:
請檢查作業系統上的iptables是否關閉,getenforce是否設定為disabled或者permissive
解決方法就是關閉iptables -F和setenforce 0即可
(8)步驟八
(9)步驟九
注意,必須要有雙網路卡, 一個公網,一個私網
(10)步驟十
(11)步驟十一
注意了,如果出現下圖這樣的情況,有可能是你的/etc/udev/rules.d/ 99-oracle-asmdevices.rules那個檔案配置不正確,這樣會導致最後grid安裝失敗的,必須檢查清楚
正確的如下圖:
(12)步驟十二
(13)步驟十三(如果設定一個16位大小寫字母+數字+特殊字元,這個步驟就不會出現)
(14)步驟十四
(15)步驟十五
(16)步驟十六
(17)步驟十七(注意目錄本來是不存在的,點選NEXT後自動在伺服器上建立)
(18)步驟十八
(19)步驟十九
如果這裡這麼多問題,就一個個解決吧,尤其是有個FAILED的。
swap size 檢視了自己的swap有8G,要求16G,這個問題不大,可以忽略
OS KERNEL的問題,檢查了下/etc/sysctl.conf,發現shmmax沒設定,加上去
pdksh的問題,必須得安裝pdksh-5.2.14-37.el5_8.1.x86_64.rpm這個版本的
cvuqdisk的問題,必須的安裝 /opt/grid/rpm/cvuqdisk-1.0.9-1.rpm (這個是 grid 安裝包解壓後可以找到)
正常的檢測結果如下圖:
(20)步驟二十
在新的終端使用root使用者執行下面兩個指令碼:
報錯出現了。。。執行到第二個指令碼的時候報錯,如下:
#/home/u01/app/oraInventory/orainstRoot.sh
Changing permissions of /home/u01/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
Changing groupname of /home/u01/app/oraInventory to oinstall.
The execution of the script is complete.
# /home/u01/app/11.2.0/grid/root.sh
Performing root user operation for Oracle 11g
The following environment variables are set as:
ORACLE_OWNER= grid
ORACLE_HOME= /home/u01/app/11.2.0/grid
Enter the full pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...
Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Using configuration parameter file: /home/u01/app/11.2.0/grid/crs/install/crsconfig_params
Creating trace directory
User ignored Prerequisites during installation
Installing Trace File Analyzer
Failed to create keys in the OLR, rc = 127, Message:
/home/u01/app/11.2.0/grid/bin/clscfg.bin: error while loading shared libraries: libcap.so.1: cannot open shared object file: No such file or directory
Failed to create keys in the OLR at /home/u01/app/11.2.0/grid/crs/install/crsconfig_lib.pm line 7660.
/home/u01/app/11.2.0/grid/perl/bin/perl -I/home/u01/app/11.2.0/grid/perl/lib -I/home/u01/app/11.2.0/grid/crs/install /home/u01/app/11.2.0/grid/crs/install/rootcrs.pl execution failed
怎麼辦呢,上網查了下資料,嘗試了下
yum install libcap.so.1
安裝完了之後,重新執行第二個指令碼,沒用,還是報錯呢,咋辦呢,繼續查。。。
發現有這樣的解決辦法:
ls -lt /usr/lib64/libcap.so.2
lrwxrwxrwx. 1 root root 14 5月 9 14:20 /usr/lib64/libcap.so.2 -> libcap.so.2.22
ln -s /usr/lib64/libcap.so.2 /usr/lib64/libcap.so.1
(注意了,如果你的是CENTOS6.5版本作業系統,
就需要安裝yum install libcap.so.2,然後
find / -name libcap.so.2
ln -s /lib64/libcap.so.2 /usr/lib64/libcap.so.1
再次執行那個root指令碼)
再次重新執行第二個指令碼,還是報錯,腫麼辦,繼續查資料,
報錯如下:
Adding Clusterware entries to inittab
ohasd failed to start
Failed to start the Clusterware. Last 20 lines of the alert log follow:
2015-05-23 23:37:45.460:
[client(13782)]CRS-2101:The OLR was formatted using version 3.
按以下網址的方法解決:
https://blog.csdn.net/u010692693/article/details/48374557
如下:
[root@rac1 ~]# /u01/app/oraInventory/orainstRoot.sh
Changing permissions of /u01/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
Changing groupname of /u01/app/oraInventory to oinstall.
The execution of the script is complete.
[root@zjdb1 ~]# /u01/app/11.2.0/grid/root.sh
Performing root user operation for Oracle 11g
The following environment variables are set as:
ORACLE_OWNER= grid
ORACLE_HOME= /u01/app/11.2.0/grid
Enter the full pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...
Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Using configuration parameter file: /u01/app/11.2.0/grid/crs/install/crsconfig_params
Creating trace directory
User ignored Prerequisites during installation
Installing Trace File Analyzer
OLR initialization - successful
root wallet
root wallet cert
root cert export
peer wallet
profile reader wallet
pa wallet
peer wallet keys
pa wallet keys
peer cert request
pa cert request
peer cert
pa cert
peer root cert TP
profile reader root cert TP
pa root cert TP
peer pa cert TP
pa peer cert TP
profile reader pa cert TP
profile reader peer cert TP
peer user cert
pa user cert
Adding Clusterware entries to inittabohasd failed to start
Failed to start the Clusterware. Last 20 lines of the alert log follow:
2015-05-23 23:37:45.460:
[client(13782)]CRS-2101:The OLR was formatted using version 3.
報錯原因:
因為RHEL 7使用systemd而不是initd執行程式和重啟程式,而root.sh透過傳統的initd執行ohasd程式。
在RHEL 7中ohasd需要被設定為一個服務,在執行指令碼root.sh之前。
步驟如下:
1. 以root使用者建立服務檔案
#touch /usr/lib/systemd/system/ohas.service
#chmod 777 /usr/lib/systemd/system/ohas.service
2. 將以下內容新增到新建立的ohas.service檔案中
[root@rac1 init.d]# cat /usr/lib/systemd/system/ohas.service
[Unit]
Description=Oracle High Availability Services
After=syslog.target
[Service]
ExecStart=/etc/init.d/init.ohasd run >/dev/null 2>&1 Type=simple
Restart=always
[Install]
WantedBy=multi-user.target
3. 以root使用者執行下面的命令
systemctl daemon-reload
systemctl enable ohas.service
systemctl start ohas.service
4. 檢視執行狀態[root@rac1 init.d]# systemctl status ohas.service
ohas.service - Oracle High Availability Services
Loaded: loaded (/usr/lib/systemd/system/ohas.service; enabled)
Active: failed (Result: start-limit) since Fri 2015-09-11 16:07:32 CST; 1s ago
Process: 5734 ExecStart=/etc/init.d/init.ohasd run >/dev/null 2>&1 Type=simple (code=exited, status=203/EXEC)
Main PID: 5734 (code=exited, status=203/EXEC)
Sep 11 16:07:32 rac1 systemd[1]: Starting Oracle High Availability Services...
Sep 11 16:07:32 rac1 systemd[1]: Started Oracle High Availability Services.
Sep 11 16:07:32 rac1 systemd[1]: ohas.service: main process exited, code=exited, status=203/EXEC
Sep 11 16:07:32 rac1 systemd[1]: Unit ohas.service entered failed state.
Sep 11 16:07:32 rac1 systemd[1]: ohas.service holdoff time over, scheduling restart.
Sep 11 16:07:32 rac1 systemd[1]: Stopping Oracle High Availability Services...
Sep 11 16:07:32 rac1 systemd[1]: Starting Oracle High Availability Services...
Sep 11 16:07:32 rac1 systemd[1]: ohas.service start request repeated too quickly, refusing to start.
Sep 11 16:07:32 rac1 systemd[1]: Failed to start Oracle High Availability Services.
Sep 11 16:07:32 rac1 systemd[1]: Unit ohas.service entered failed state.
此時狀態為失敗,原因是現在還沒有/etc/init.d/init.ohasd檔案。
下面可以執行指令碼root.sh 不會再報ohasd failed to start錯誤了。
failed to start錯誤,可能是root.sh指令碼建立了init.ohasd之後,ohas.service沒有馬上啟動,解決方法參考以下:
當執行root.sh時,一直重新整理/etc/init.d ,直到出現 init.ohasd 檔案,馬上手動啟動ohas.service服務 命令:systemctl start ohas.service
[root@rac1 init.d]# systemctl status ohas.service
ohas.service - Oracle High Availability Services
Loaded: loaded (/usr/lib/systemd/system/ohas.service; enabled)
Active: active (running) since Fri 2015-09-11 16:09:05 CST; 3s ago
Main PID: 6000 (init.ohasd)
CGroup: /system.slice/ohas.service
6000 /bin/sh /etc/init.d/init.ohasd run >/dev/null 2>&1 Type=simple
6026 /bin/sleep 10
Sep 11 16:09:05 rac1 systemd[1]: Starting Oracle High Availability Services...
Sep 11 16:09:05 rac1 systemd[1]: Started Oracle High Availability Services.
Sep 11 16:09:05 rac1 su[6020]: (to grid) root on none
問題一個接一個,再次執行第二個指令碼,又又又又報錯了。。。我只是想安靜的裝個RAC,咋那麼多新問題呢。。。
報錯如下:
未能建立磁碟組OCR_DATA,返回資訊如下:
ORA-15018:diskgroup cannot be created
ORA-15020:discovered duplicate ASM disk "OCR_DATA_0000"
嗯,後來發現,就是/etc/udev/rules.d/下的那個檔案出的問題,如果按照上面我更新了的一路做下來,就解決了。
哦,忘記說了,如果第一次操作不是按我記錄的總結做的,請dd一下asm盤,重新fdisk一下,重啟作業系統,
嗯,反正就是配置ASM的那些操作認真的重搞一下,就OK了,最重要的是 一定要重啟作業系統。一定要重啟作業系統。
一定要重啟作業系統。重要的事情說三遍!!!!
啊啊啊啊啊啊,真的要瘋掉了。。。因為又又又又又報錯了,,,為啥要說又呢。。。因為這是最後一次報錯了,
報錯如下:
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Using configuration parameter file: /home/db/u01/app/11.2.0/grid/crs/install/crsconfig_params
User ignored Prerequisites during installation
Installing Trace File Analyzer
Adding Clusterware entries to inittab
ohasd failed to start
Failed to start the Clusterware. Last 20 lines of the alert log follow:
2019-06-13 14:30:25.080:
[client(2314)]CRS-2101:The OLR was formatted using version 3.
2019-06-13 14:41:00.497:
[ohasd(8133)]CRS-0715:Oracle High Availability Service has timed out waiting for init.ohasd to be started.
好吧。。。咋又出現上面解決過的ohasd的報錯呢???咋回事啊?老弟?
後來發現,透過這個命令檢查狀態
systemctl status ohas.service
● ohas.service - Oracle High Availability Services
Loaded: loaded (/usr/lib/systemd/system/ohas.service; enabled; vendor preset: disabled)
Active: active (running) since 四 2019-06-13 11:33:05 CST; 4h 18min ago
Main PID: 4195 (init.ohasd)
CGroup: /system.slice/ohas.service
├─ 4195 /bin/sh /etc/init.d/init.ohasd run >/dev/null 2>&1 Type=simple
└─13011 /bin/sleep 10
6月 13 11:33:05 localhost.localdomain systemd[1]: Started Oracle High Availability Services.
我暈哦,怎麼變成Localhost了?
檢查了下/etc/hosts
嗯嗯嗯,額鵝鵝鵝,原來預設的那個localhost127.0.0.1 的東西沒刪掉,刪除了,把那個錯誤的local程式kill
然後再檢查,新的程式是主機名的 systemd[1]了,這回終於好了, 指令碼root.sh終於成功。
好吧,節點1成功後的資訊:
CRS-2672: Attempting to start 'ora.mdnsd' on 'testdb1'
CRS-2676: Start of 'ora.mdnsd' on 'testdb1' succeeded
CRS-2672: Attempting to start 'ora.gpnpd' on 'test db1'
CRS-2676: Start of 'ora.gpnpd' on 'testdb1' succeeded
CRS-2672: Attempting to start 'ora.cssdmonitor' on 'testdb1'
CRS-2672: Attempting to start 'ora.gipcd' on 'testdb1'
CRS-2676: Start of 'ora.cssdmonitor' on 'testdb1' succeeded
CRS-2676: Start of 'ora.gipcd' on 'testdb1' succeeded
CRS-2672: Attempting to start 'ora.cssd' on 'testdb1'
CRS-2672: Attempting to start 'ora.diskmon' on 'testdb1'
CRS-2676: Start of 'ora.diskmon' on 'testdb1' succeeded
CRS-2676: Start of 'ora.cssd' on 'testdb1' succeeded
已成功建立並啟動 ASM。
已成功建立磁碟組OCR_VOTE。
clscfg: -install mode specified
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
CRS-4256: Updating the profile
Successful addition of voting disk 34a2677d79854f78bf3ce189ea1ee690.
Successfully replaced voting disk group with +OCR_VOTE.
CRS-4256: Updating the profile
CRS-4266: Voting file(s) successfully replaced
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1. ONLINE 34a2677d79854f78bf3ce189ea1ee690 (/dev/asmocrdisk) [OCR_VOTE]
Located 1 voting disk(s).
CRS-2672: Attempting to start 'ora.asm' on 'testdb1'
CRS-2676: Start of 'ora.asm' on 'testdb1' succeeded
CRS-2672: Attempting to start 'ora.OCR_VOTE.dg' on 'testdb1'
CRS-2676: Start of 'ora.OCR_VOTE.dg' on 'testdb1' succeeded
Configure Oracle Grid Infrastructure for a Cluster ... succeeded
那麼問題來了,本滿心欣喜的以為節點2也會一樣的輕鬆寫意,,,結果可想而知。。。又又又又報錯了,為啥又要說又呢。
因為在節點2執行root指令碼報錯如下:
Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Using configuration parameter file: /home/db/u01/app/11.2.0/grid/crs/install/crsconfig_params
Creating trace directory
User ignored Prerequisites during installation
Installing Trace File Analyzer
OLR initialization - successful
Adding Clusterware entries to inittab
CRS-4402: The CSS daemon was started in exclusive mode but found an active CSS daemon on node testdb1, number 1, and is terminating
An active cluster was found during exclusive startup, restarting to join the cluster
Start of resource "ora.asm" failed
CRS-2800: Cannot start resource 'ora.ctssd' as it is already in the INTERMEDIATE state on server 'testdb2'
CRS-4000: Command Start failed, or completed with errors.
Failed to start Oracle Grid Infrastructure stack
Failed to start ASM at /home/db/u01/app/11.2.0/grid/crs/install/crsconfig_lib.pm line 1339.
/home/db/u01/app/11.2.0/grid/perl/bin/perl -I/home/db/u01/app/11.2.0/grid/perl/lib -I/home/db/u01/app/11.2.0/grid/crs/install /home/db/u01/app/11.2.0/grid/crs/install/rootcrs.pl execution failed
解決方法:
節點1
vi /etc/hostname
testdb1
hostname testdb1
節點2
vi /etc/hostname
testdb2
hostname testdb2
重啟作業系統
再次執行root.sh指令碼成功安裝,當然,如果覺得不夠穩得,可以重灌
ORACLE_OWNER= grid
ORACLE_HOME= /home/db/u01/app/11.2.0/grid
The contents of "dbhome" have not changed. No need to overwrite.
The contents of "oraenv" have not changed. No need to overwrite.
The contents of "coraenv" have not changed. No need to overwrite.
Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Using configuration parameter file: /home/db/u01/app/11.2.0/grid/crs/install/crsconfig_params
Creating trace directory
User ignored Prerequisites during installation
Installing Trace File Analyzer
OLR initialization - successful
Adding Clusterware entries to inittab
CRS-4402: The CSS daemon was started in exclusive mode but found an active CSS daemon on node yytsdb1, number 1, and is terminating
An active cluster was found during exclusive startup, restarting to join the cluster
Configure Oracle Grid Infrastructure for a Cluster ... succeeded
如果安裝過程中遇到下圖報錯:
或者是
在安裝日誌中發現報錯
INFO: ERROR:
INFO: PRVG-1101 : SCAN name "testdb-scan" failed to resolve
INFO: ERROR:
INFO: PRVF-4657 : Name resolution setup check for "testdb-scan" (IP address: 192.168.159.26) failed
INFO: ERROR:
INFO: PRVF-4664 : Found inconsistent name resolution entries for SCAN name "testdb-scan"
INFO: Verification of SCAN VIP and Listener setup failed
嘗試ping scan ip ,能ping 通,可以忽略報錯
安裝完成檢查叢集狀態正常
crsctl stat res -t
至此,GRID的安裝順利完成。
四、 配置 ASM 磁碟
使用grid 使用者在桌面圖形環境中執行asmca
建立資料磁碟組
、安裝RAC 資料庫
)步驟一
安裝好xmanager 軟體
Xshell
配置好屬性SSH— 隧道
重新開啟一個xshell 視窗
Xhost +
Su – oracle
Export DISPLAY=xxx.xxx.xxx.xxx:0.0
使用ORACLE 使用者登入,./runInstaller
(2 )步驟二
)步驟三
)步驟四
)步驟五
)步驟六
)步驟七
)步驟八
)步驟九
)步驟十
)步驟十一
)步驟十二
)步驟十三
)步驟十四
)步驟十五
注意!!!這裡因為是CENTOS7.6的系統,在安裝過程中會遇到以下報錯:
解決方法:(只需要在1節點改就可以了,2節點會自動同步的)
Error in invoking target 'agent nmhs' of makefile '/u01/oracle/product/11.2.0/db_1/sysman/lib/ins_emagent.mk'
解決方案: 保留安裝過程,另外開啟一個終端視窗,將ins_emagent.mk檔案中的 (MK_EMAGENT_NMECTL)更改為$(MK_EMAGENT_NMECTL) -lnnz11,然後在安裝過程中點選Retry即可。
這個新增的-lnnz11 是 減號小寫字母l ,兩個數字1,你們懂得
在安裝11.0.2.1的時候還會出現一種報錯
Oracle安裝過程中報ins_ctx.mk錯誤的解決方案
我的oracle安裝目錄是::/u01/app/oracle/product/11.2.0/dbhome_1,大家根據自己的安裝目錄調整路徑。
該軟體包包含一個靜態連結庫:/usr/lib64/libc.a
Oracle安裝過程中,報這個錯誤(如上圖)後,不關閉報錯視窗,在oracle使用者下修改/u01/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk,找到檔案的第11行,將 ctxhx: $(CTXHXOBJ) $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK)
修改為: ctxhx: $(CTXHXOBJ) -static $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK) /usr/lib64/stdc.a
修改完成後點選繼續會繼續報錯:
”Error in invoking target ‘agent nmhs’ of makefile
‘/u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk.’
解決方法:在makefile中新增連結libnnz11庫的引數
修改/u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk,修改內容在檔案第190行,將
(MKEMAGENTNMECTL)修改為:(MKEMAGENTNMECTL)修改為:(MK_EMAGENT_NMECTL) -lnnz11
點選Retry繼續安裝即可安裝。
)步驟十六
使用root 使用者在各節點執行root 指令碼
)步驟十七
)步驟十六
使用root 使用者在各節點執行root 指令碼
)步驟十七
、建立ORACLE 例項
)步驟一
使用oracle 使用者登入,執行dbca
)步驟二
安裝RAC
)步驟三
)步驟四
)步驟五
這裡注意,如果遇到以下報錯,則按提示完成GRID 的LISTENER 配置
Xhost +
Su – grid
Export DISPLAY=xxx.xxx.xxx.xxx:0.0
Netca
全部選擇預設下一步安裝即可
如果沒遇到問題,直接繼續下一步
)步驟六
)步驟七
這裡我自己在後續安裝過程中,都習慣性設定一個16位的大小寫字母+數字+特殊字元的密碼了
)步驟八
)步驟九
)步驟十
)步驟十一
這裡在生產庫中,一般要放在資料盤的ASM DATA目錄下,且記得Enable Archiving可以直接在這裡設定好,勾選即可預設在DATA目錄自動建立archive的日誌目錄,當然安裝完成之後再去設定也可以。
)步驟十二
)步驟十三
)步驟十四
這裡在生產環境,一樣要和開發,應用 那邊溝通好, 使用什麼字符集,不然,到時不符合要求又要重灌就比較麻煩了。
)步驟十五
)步驟十六
)步驟十七
)步驟十八
開始建立例項
)步驟十九
安裝好了
)步驟二十
測試連線一下資料庫安裝完成
最後,安裝完成後,要記得檢查防火牆getenforce和iptables,檢查監聽,scan監聽,再自己用工具連線下資料庫
到此基本安裝完畢,後面的建表空間,建使用者啥的,自己看著來整,這裡不贅述了。
安裝完成後,記得配置ulimit -n的配置
永久生效的(配置完需要重啟作業系統)
vi /etc/security/limits.conf
# End of file
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 10240
oracle hard nofile 65536
oracle soft stack 10240
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 10240
grid hard nofile 65536
grid soft stack 10240
* soft memlock 56623104
* hard memlock 56623104
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28371090/viewspace-2646713/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Windows 11 作業系統安裝方法Windows作業系統
- ASM 模組安裝與作業系統核心版本問題ASM作業系統
- RedHat 7.6作業系統安裝Redhat作業系統
- 安裝GI後重啟作業系統後啟動ASM例項失敗及解決方法作業系統ASM
- oam系統安裝,windows作業系統註冊列表影響系統安裝Windows作業系統
- 作業-安裝虛擬機器以及CentOS作業系統虛擬機CentOS作業系統
- 實戰-使用 Cobbler 安裝作業系統作業系統
- Powershell 命令列安裝 Windows 作業系統命令列Windows作業系統
- 在Ubuntu作業系統裡安裝DockerUbuntu作業系統Docker
- 多種方式批量安裝作業系統作業系統
- VMWare安裝蘋果作業系統OS X蘋果作業系統
- Solaris8作業系統安裝(轉)作業系統
- 硬碟中安裝Linux作業系統硬碟Linux作業系統
- 從硬碟安裝Linux作業系統的方法步驟(轉)硬碟Linux作業系統
- 我的六個作業系統安裝方法及其應用(轉)作業系統
- Linux作業系統中安裝VMware ToolsLinux作業系統
- Windows作業系統安裝MySQL解壓版Windows作業系統MySql
- window 作業系統,安裝 mongodb.zip 包作業系統MongoDB
- Solaris 8 for Intel 作業系統的安裝(轉)Intel作業系統
- 快速安裝Windows作業系統獨家秘籍(轉)Windows作業系統
- slot號造成的作業系統不能安裝作業系統
- 硬碟工作原理與XP作業系統安裝硬碟作業系統
- 紅旗Linux作業系統安裝(轉)Linux作業系統
- 【git】Ubuntu作業系統上安裝Git LFSGitUbuntu作業系統
- Centos7.6安裝FTPCentOSFTP
- 國產處理器伺服器作業系統安裝(海之舟伺服器作業系統安裝說明)伺服器作業系統
- XP和WIN7雙系統作業系統安裝教程Win7作業系統
- 樹莓派作業系統安裝和啟動樹莓派作業系統
- 天兔(Lepus)監控作業系統(OS)安裝配置作業系統
- CentOS 7.8作業系統安裝(用於生產)CentOS作業系統
- solaries作業系統安裝64位JDK1.6作業系統JDK
- 【docker專欄2】CentOS作業系統安裝DockerCEDockerCentOS作業系統
- 【Oracle安裝與作業系統使用者組】Oracle作業系統
- 在linux作業系統下安裝vmware toolsLinux作業系統
- centOS學習part1:作業系統安裝CentOS作業系統
- 無人值守批量安裝linux作業系統Linux作業系統
- Cobbler實現自動化安裝作業系統作業系統
- 系統移民須知:Linux作業系統安裝要點(轉)Linux作業系統