實戰(zhàn)Centos7oracle12crac集群部署;

Oracle RAC 工作原理:

創(chuàng)新互聯(lián)建站專注于企業(yè)成都全網(wǎng)營銷、網(wǎng)站重做改版、東蘭網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、H5網(wǎng)站設計、電子商務商城網(wǎng)站建設、集團公司官網(wǎng)建設、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為東蘭等各大城市提供網(wǎng)站開發(fā)制作服務。

實戰(zhàn) Centos7 oracle12c rac集群部署;

單節(jié)點數(shù)據(jù)庫,如果實例宕機了,如果一個業(yè)務鏈接在實例上面,那么這個業(yè)務就中斷了。這個時候系統(tǒng)就不具有可用性了,那么這個時候單節(jié)點的可用性是很差的。

對于RAC來說,和單實例一樣,還是一份數(shù)據(jù)文件,都是相同的存儲上面放著oracle的文件,但是是由三個實例共用同一份數(shù)據(jù)文件。這樣的好處是在三個實例之間做了冗余,在上面三個實例當中任意兩個壞了業(yè)務都可以鏈接到剩下的一個實例,都可以正常的工作。RAC提供了在實例級別的冗余。

RAC不能夠解決在數(shù)據(jù)的安全,盡管有多個實例,但是只有一份數(shù)據(jù)文件,這樣只要數(shù)據(jù)文件損壞了,那么整個數(shù)據(jù)庫就損壞了。

什么是 RAC ?

實戰(zhàn) Centos7 oracle12c rac集群部署;

一般每個實例都放在不同的服務器上面,這樣可以起到冗余作用。所有的數(shù)據(jù)庫文件都放在共享存儲上面,但是還有一些文件放在每個實例自己的本地的磁盤上面,比如參數(shù)文件,每一個實例都可以有自己的參數(shù)文件,這個參數(shù)文件既可以放在本地也可以放在共享存儲上面,多個實例都使用同一個參數(shù)文件。

?
在RAC里面,最重要的就是實例和實例之間的交互,即使是分離的實例,但是讀取的數(shù)據(jù)是相同的,RAC不是分布式的系統(tǒng),因為它只有一個存儲,分布式系統(tǒng)是指數(shù)據(jù)發(fā)布在不同的數(shù)據(jù)庫上面,然后通過中間件來協(xié)調(diào)做查詢。RAC還是一臺數(shù)據(jù)庫,多個實例。

RAC架構(gòu):

實戰(zhàn) Centos7 oracle12c rac集群部署;

對于RAC來說至少有兩套物理上不同的網(wǎng)絡,私有網(wǎng)絡是專門用來實例之間的數(shù)據(jù)交互。如果私有網(wǎng)絡,所有的數(shù)據(jù)都在一個網(wǎng)絡下面,那么那么就會對數(shù)據(jù)造成影響,嚴重的影響RAC的性能了。實例之間數(shù)據(jù)之間傳遞使用私有網(wǎng)絡和對外服務提供的網(wǎng)絡之間是物理分開的。所以RAC至少有兩套網(wǎng)絡,一個是實例之間的數(shù)據(jù)的傳遞,另外一個是公有網(wǎng)絡,是對外提供服務的,外面的業(yè)務是提供公有網(wǎng)絡的IP鏈接到數(shù)據(jù)庫的。

RAC特點:

實戰(zhàn) Centos7 oracle12c rac集群部署;

RAC如何容錯的?

實戰(zhàn) Centos7 oracle12c rac集群部署;

使用SAN存儲,存儲和服務器就不在一起了,而是和服務器分離了,是一個網(wǎng)絡的存儲系統(tǒng),服務器是服務器,存儲是存儲,完全分離的。

當節(jié)點1壞了,不僅僅只是將業(yè)務切換到節(jié)點2,這個時候還要處理節(jié)點1壞了遺留下來的問題。主要是一些提交和未提交的事務。比如實例1壞了,實例2就要從實例1的redo里面讀最后一次checkpoint之后的信息,就是實例1最后將所有的數(shù)據(jù)寫到磁盤之后產(chǎn)生的所有的redo應用,該回滾的回滾,該恢復的恢復。即現(xiàn)將以提交和未提交的事務產(chǎn)生的redo都先應用,因為是最后一次checkpoint之后的信息,之前的信息是已經(jīng)寫到磁盤上面了,所謂的恢復是將未寫到磁盤上面的信息進行恢復。(雖然實例壞了,但是實例的redo并沒有壞,放置在共享存儲上面,它的redo還是允許其他實例訪問的)實例2讀取實例1的redo,然后全部應用一遍,之后再回滾未提交的事務修改的數(shù)據(jù)塊,這個有點像實例的恢復。

實戰(zhàn)部分:

?

建設背景:

建設本文檔的目的在于詳細梳理12c RAC圖形化安裝的流程,結(jié)合官方文檔盡可能解釋安裝過程中的各種操作的原理,提供不同的存儲配置方法和參數(shù)修改方法,最后形成一套完整的12c RAC圖形化安裝步驟以便于今后參考。


安裝流程:

一、軟件下載

http://www.oracle.com/technetwork/database/enterprise-edition/downloads/oracle12c-linux-12201-3608234.html

下載?linuxx64_12201_database.zip?和?linuxx64_12201_grid_home.zip?就可以了,然后上傳至節(jié)點1的任意目錄。

實戰(zhàn) Centos7 oracle12c rac集群部署;

二、硬件和網(wǎng)絡環(huán)境

  • 檢查內(nèi)存(至少8GB)、Swap和硬盤大小等等,參考GRID官網(wǎng)安裝文檔的:Server Hardware Checklist for Oracle Database Installation。

需要說明的是12c RAC安裝,OCR盤至少需要40GB大小,因為12c新增了MGMTDB實例進行集群管理,如果你不單獨的為他創(chuàng)建一個磁盤組,這些信息就會進入OCR盤,導致OCR盤需要40GB的空間才夠,其中OCR和votefiles大約需要2GB,MGMT占用38GB,如果RAC節(jié)點數(shù)大于2那么還需要再增加一些MGMT的空間,例如5節(jié)點大約需要再加5GB,當然這里的值都是在外部冗余的條件下計算的。

  • 檢查操作系統(tǒng)版本,參考GRID官網(wǎng)安裝文檔的:Operating System Checklist for Oracle Database Installation on Linux。

本文的系統(tǒng)環(huán)境為Oracle Enterprise Linux 6.9。

  • tmpfs務必保證至少是最大內(nèi)存的一半。

如果需要更大的SGA,那么至少要將將tmpfs設置為大于SGA的值,因為OEL系統(tǒng)下Oracle占用的共享內(nèi)存不能大于tmpfs。

  • 檢查網(wǎng)絡環(huán)境。

7個IP是需要申請的,其中2個作為Public IP,2個作為VIP,1個Scan-IP,這5個IP應當是同一網(wǎng)段的,最后還需要2個不同網(wǎng)段的Private IP,雖然私網(wǎng)IP可以自定義,但是在不清楚私網(wǎng)是通過公網(wǎng)直連還是通過單獨的交換機時(其實oracle要求private ip的interconnect使用單獨的交換機且?guī)捫枰辽偈荊B級別),最好申請獨立的私網(wǎng)IP。網(wǎng)卡每個節(jié)點需要2個至少,Public IP占用一個,Private占用一個。

*安裝環(huán)境小編使用的是共享存儲一塊 2TB的 用oracleasm 格式化后 分別在兩臺實例上掃描 實例1格式化后 實例二掃描即可;


三、安裝軟件包

1、oracleasm

用來配置asm的磁盤,如果將oracle數(shù)據(jù)文件放置在普通磁盤上,則略過;

wget http://public-yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracleasm-support-2.1.11-2.el7.x86_64.rpm


wget http://download.oracle.com/otn_software/asmlib/oracleasmlib-2.0.12-1.el7.x86_64.rpm


yum install -y kmod-oracleasm

rpm -ivh oracleasmlib-2.0.12-1.el7.x86_64.rpm oracleasm-support-2.1.11-2.el7.x86_64.rpm


配置ASM屬性:

oracleasm configure -i

Default user to own the driver interface [ ]: grid

Default group to own the driver interface [ ]: oinstall

Start Oracle ASM library driver on boot (y/n) [n]: y

Scan for Oracle ASM disks on boot (y/n) [y]: y

Writing Oracle ASM library driver configuration: done

創(chuàng)建分區(qū) ;

注:在做以下步驟前可先重啟服務器,使前面的設置生效 ;這里重啟之后我們 oracleasm createdisk myasm01 /dev/sdb1 創(chuàng)建可能會出問題 可以 oracleasm init 解決;記住不重啟的話oracleasm有時候會不生效;
?

reboot? #重啟??
???

fdisk -l? #查看磁盤

???

#分區(qū)/dev/sdb1,/dev/sdc1, /dev/sdd1
??

fdisk /dev/sdb
??

oracleasm createdisk myasm01 /dev/sdb1??
??

oracleasm createdisk myasm02 /dev/sdc1
??

oracleasm createdisk myasm03 /dev/sdd1
??

oracleasm scandisks
??

oracleasm listdisks

實戰(zhàn) Centos7 oracle12c rac集群部署;

#小編這里只用了1塊磁盤所以要記住oracleasm盤的路徑后面會用到;

部署正式開始:

實戰(zhàn) Centos7 oracle12c rac集群部署;

  • 基礎包安裝

oracle-database-server-12cR2-preinstall也不會幫你裝好這些包,因此這一步是必須要手工做的。

yum -y install binutils.x86_64 compat-libcap1.x86_64 compat-libstdc* e2fsprogs.x86_64 libaio* libXau* libXi* libXtst* libstdc* glibc* libgcc* ksh gcc-c++*


--以上命令是我自己簡化后的安裝語句,一般來說執(zhí)行完以上安裝就足夠了,不夠也沒事,裝grid時如果有缺失的根據(jù)報錯Detail再裝就好了。

--不同Linux版本所需的包完整列表參考GI安裝官方文檔的4.7小節(jié)--Operating System Requirements for x86-64 LinuxPlatforms。


實戰(zhàn) Centos7 oracle12c rac集群部署;


vi /etc/sysctl.conf

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 10485760
kernel.shmmax = 42949672960
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


  • 時間同步設置

參考網(wǎng)上配置ntp相關的文檔即可,手工設置時間也可以。在安裝過程中兩臺實例時間一樣即可,后面安裝中可以忽略

  • 禁用防火墻和selinux

由于內(nèi)網(wǎng)的數(shù)據(jù)交互會使用大量UDP端口,因此官網(wǎng)要求為RAC關閉防火墻,所以:

實戰(zhàn) Centos7 oracle12c rac集群部署;

其他的預安裝要求個人認為不再需要了,如果有更高的性能需求可以查看官方文檔來進行更詳細的設置,但本著簡單安裝、簡單管理的原則,就這樣啦!CentOS7 版本 可用 systemctl stop firewalld; Selinux : vim /sysconfig/selinux ;

實戰(zhàn) Centos7 oracle12c rac集群部署;


四、用戶、組、以及目錄

實戰(zhàn) Centos7 oracle12c rac集群部署;

groupadd -g 501 oinstall

groupadd -g 502 dba
groupadd -g 503 asmadmin
groupadd -g 504 asmdba
groupadd -g 505 asmoper
groupadd -g 506 oper
useradd -u 501 -g oinstall -G asmadmin,asmdba,asmoper,dba grid
useradd -u 502 -g oinstall -G dba,asmdba,oper oracle

mkdir -p /u01/app/oracle/product/12.2.0/db_1
mkdir -p /u01/app/grid
mkdir -p /u01/12.2.0/grid
mkdir -p /u01/app/oraInventory
chown -R oracle.oinstall /u01/app/oracle/
chown -R oracle.oinstall /u01/app/oracle/*
chown -R grid.oinstall /u01/app/grid/
chown -R grid.oinstall /u01/app/oraInventory/
chown -R grid.oinstall /u01/12.2.0/grid/


給予權限后給grid&oracle用戶設置密碼:passwd grid? passwd oracle ;密碼自定義;


--修改用戶安全限制:

--如果你不使用oracle-database-server-12cR2-preinstall,那么將以下內(nèi)容復制到/etc/security/limits.conf文件中即可;

--如果你使用了oracle-database-server-12cR2-preinstall,那么將以下內(nèi)容復制到/etc/security/limits.d/oracle-database-server-12cR2-preinstall.conf中即可(將之前的內(nèi)容清空);


vim /etc/security/limits.conf 填寫即可;


實戰(zhàn) Centos7 oracle12c rac集群部署;


oracle soft nofile 2048
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
oracle hard memlock 134217728

oracle soft memlock 134217728


grid soft nofile 2048
grid hard nofile 65536
grid soft nproc 16384
grid hard nproc 16384
grid soft stack 10240
grid hard stack 32768
grid hard memlock 134217728
grid soft memlock 134217728


session? required? pam_limits.so


實戰(zhàn) Centos7 oracle12c rac集群部署;


su - grid

vi .bash_profile
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/12.2.0/grid
export ORACLE_SID=+ASM1/+ASM2
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH


su - oracle

vi .bash_profile

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/db_1

export ORACLE_SID=orcl1/orcl2<br>export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH


實戰(zhàn) Centos7 oracle12c rac集群部署;


可以把自己的兩個壓縮包放到剛才創(chuàng)建的目錄中 linuxx64_12201_database.zip? /home/oracle ; linuxx64_12201_grid_home.zip? /u01/12.2.0/grid;之后給予相關權限;

# chown oracle.oinstall linuxx64_12201_database.zip

# chown oracle.oinstall linuxx64_12201_grid_home.zip #上面圖片中沒這個但是都提前給了吧一會解壓的時候還得給,記住進入相關目錄中直接給就行;

# su - oracle
$ unzip linuxx64_12201_database.zip
$ cd database/sshsetup/
$ ./sshUserSetup.sh -user oracle -hosts "node1 node2" -advanced -noPromptPassphrase? #自己的主機名,小編的是 rac-1&rac-2;

$ ./sshUserSetup.sh -user grid -hosts "node1 node2" -advanced -noPromptPassphrase


--最后在節(jié)點1使用oracle和grid用戶都執(zhí)行以下兩條命令驗證互信:


$ ssh node2 date???? #小編這里的主機名字是 rac-1 所以 ssh rac-1 date即可;

$ ssh node2-priv date???


六、GRID安裝

這里有個小坑,12c的GRID安裝不再會按你設置的grid用戶的$ORACLE_HOME變量來作為GI的家目錄,而是直接將你GRID軟件的解壓目錄作為家目錄。

當然這個小坑還可能引發(fā)另一個大坑,多次嘗試安裝grid時你會發(fā)現(xiàn)綁定好的磁盤即便dd格式化掉在安裝grid時也找不到了...此時只要刪了解壓的grid目錄重新解壓安裝就好了...(MMP的12c,還有扯淡的屎一樣PDB,誰讓你從11g升12c直接上腿就完事了)

你需要將linuxx64_12201_grid_home.zip拷貝至grid用戶的$ORACLE_HOME,本文中就是/u01/12.2.0/grid,然后:

實戰(zhàn) Centos7 oracle12c rac集群部署;


# chown grid.oinstall linuxx64_12201_grid_home.zip
# su - grid
$ unzip linuxx64_12201_grid_home.zip

# cp /home/oracle/database/rpm/cvuqdisk-1.0.10-1.rpm /root
# rpm -ivh cvuqdisk-1.0.10-1.rpm


# cd /u01/12.2.0/grid/

# ./gridSetup.sh????? # 執(zhí)行過程中會出現(xiàn)問題;


故障如下:


[grid@lsl?crs]$?./gridSetup.sh?

ERROR:?Unable?to?verify?the?graphical?display?setup.?This?application?requires?X?display.?Make?sure?that?xdpyinfo?exist?under?PATH?variable.

Can't?connect?to?X11?window?server?using?'10.138.135.167:1.0'?as?the?value?of?the?DISPLAY?variable.

解決方法:

[root@lsl?Desktop]#?xdpyinfo????????????#切換的root目錄下執(zhí)行;
name?of?display:????:1
version?number:????11.0
vendor?string:????The?X.Org?Foundation
vendor?release?number:????11500000

...省略...只需要記錄name?of?display:的值
[root@lsl?]$?export?DISPLAY=:1(這時設置為name?of?display的值:1)???#這里看xdpyinfo?的值,小編的是?export?DISPLAY=:0?;
[root@lsl?]#?xhost?+
access?control?disabled,?clients?can?connect?from?any?host

[root@jytest3?Desktop]#?su?-?grid
Last?login:?Tue?Mar??7?17:50:40?CST?2017?on?pts/0?;

su?-?grid?

cd?/u01/12.2.0/grid?

./gridSetup.sh

實戰(zhàn) Centos7 oracle12c rac集群部署;??

實戰(zhàn) Centos7 oracle12c rac集群部署;


注意:scan的 name需要和/etc/hosts里面的scan的名稱一致否則會出現(xiàn)錯誤;


實戰(zhàn) Centos7 oracle12c rac集群部署;

實戰(zhàn) Centos7 oracle12c rac集群部署;

注意:這里的主機名字和虛擬主機名字也需要和/etc/hosts 的名稱一樣;


實戰(zhàn) Centos7 oracle12c rac集群部署;


實戰(zhàn) Centos7 oracle12c rac集群部署;


注意:在執(zhí)行遠程的時候從服務(實例2&rac-2)安裝目錄不要有文件,如有會提示遠程失敗,需要把文件里面的文件清除掉;


實戰(zhàn) Centos7 oracle12c rac集群部署;


實戰(zhàn) Centos7 oracle12c rac集群部署;


實戰(zhàn) Centos7 oracle12c rac集群部署;


實戰(zhàn) Centos7 oracle12c rac集群部署;


實戰(zhàn) Centos7 oracle12c rac集群部署;


實戰(zhàn) Centos7 oracle12c rac集群部署;


實戰(zhàn) Centos7 oracle12c rac集群部署;


實戰(zhàn) Centos7 oracle12c rac集群部署;


實戰(zhàn) Centos7 oracle12c rac集群部署;


實戰(zhàn) Centos7 oracle12c rac集群部署;


實戰(zhàn) Centos7 oracle12c rac集群部署;


實戰(zhàn) Centos7 oracle12c rac集群部署;


注意:這里小編建議直接√上節(jié)省后面自己執(zhí)行腳本了;


實戰(zhàn) Centos7 oracle12c rac集群部署;


注意:這里執(zhí)行成功了會顯示所有節(jié)點(rac-1 rac-2)自己的主機名稱;如果沒有需要檢查下共享存儲;


實戰(zhàn) Centos7 oracle12c rac集群部署;


實戰(zhàn) Centos7 oracle12c rac集群部署;


注意:如果按照小編的方法√自己執(zhí)行的話不會出現(xiàn)下方文件,注意執(zhí)行腳本先在實例一(rac-1)上執(zhí)行 /oracle/app/oraInventory/orainstROOt.sh ;

之后再到實例二(rac-2)上執(zhí)行 /oracle/app/oraInventory/orainstROOt.sh; 之后再實例一(rac-1)執(zhí)行/data/grid/root.sh 實例二(rac-2)執(zhí)行;


實戰(zhàn) Centos7 oracle12c rac集群部署;

注意!這里實例一(rac-1)執(zhí)行腳本一般不會出現(xiàn)問題,實例二(rac-2)會出現(xiàn)問題;問題總結(jié)如下;


實戰(zhàn) Centos7 oracle12c rac集群部署;


這個問題基本上是oracleasm權限的問題需要給相應的權限需要對比下如果不同可以修改;


修改方法如下;chown grid.asmadmin MYASM01? chmod 642 MYASM01 ;


實戰(zhàn) Centos7 oracle12c rac集群部署;


實戰(zhàn) Centos7 oracle12c rac集群部署;


實戰(zhàn) Centos7 oracle12c rac集群部署;

注意:執(zhí)行過程到90%會提示錯誤可以直接忽略即可;

實戰(zhàn) Centos7 oracle12c rac集群部署;

實戰(zhàn) Centos7 oracle12c rac集群部署;

實戰(zhàn) Centos7 oracle12c rac集群部署;

實戰(zhàn) Centos7 oracle12c rac集群部署;

實戰(zhàn) Centos7 oracle12c rac集群部署;

實戰(zhàn) Centos7 oracle12c rac集群部署;

實戰(zhàn) Centos7 oracle12c rac集群部署;

實戰(zhàn) Centos7 oracle12c rac集群部署;

實戰(zhàn) Centos7 oracle12c rac集群部署;

實戰(zhàn) Centos7 oracle12c rac集群部署;

?echo "oracle soft memlock 3145728" >>/etc/security/limits.conf

?echo "oracle hard memlock 3145728" >>/etc/security/limits.conf

實戰(zhàn) Centos7 oracle12c rac集群部署;

實戰(zhàn) Centos7 oracle12c rac集群部署;

實戰(zhàn) Centos7 oracle12c rac集群部署;

至此小編安裝結(jié)束后面喜歡繼續(xù)往下安裝的伙伴可以到我百度云盤下載pdf;

https://pan.baidu.com/s/1AiDlKVz77-mhpkHpf9F2OA??? 提取碼 9s5z;

網(wǎng)站名稱:實戰(zhàn)Centos7oracle12crac集群部署;
網(wǎng)站地址:http://bm7419.com/article44/gijghe.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、網(wǎng)站改版企業(yè)網(wǎng)站制作、GoogleApp設計、電子商務

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)