ORACLE11.2.0.4 RAC+ ASM安裝方法 (作業系統CENTOS7.6)

germany006發表於2019-08-01


前言

網上的各種文章,嘗試過後,發現有很多錯漏的地方,還有很多細節沒有寫,或者是遇到各種報錯如何處理,都沒寫,

這裡是我自己整理的安裝步驟和解決報錯的方法,因為有部分是從自己以前的筆記裡擷取的截圖之類的,所以那些可替換的地方,大家就自己去搞定了哈,實在太萌新的,也沒辦法了,自己多摸索下,畢竟這個筆記是寫給我自己看的,以備以後還會用到,這次因為在新的作業系統環境,踩了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錯誤了。
如果還是報ohasd
 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指令碼成功安裝,當然,如果覺得不夠穩得,可以重灌

Performing root user operation for Oracle 11g
The following environment variables are set as:
    ORACLE_OWNER= grid
    ORACLE_HOME=  /home/db/u01/app/11.2.0/grid
Enter the full pathname of the local bin directory: [/usr/local/bin]:
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錯誤的解決方案

ORACLE11.2.0.4 RAC+ ASM安裝方法 (作業系統CENTOS7.6)

我的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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章