Oracle 12c RAC 安裝文檔

參考文檔:

https://docs.oracle.com/en/database/oracle/oracle-database/12.2/cwlin/index.html

https://docs.oracle.com/en/database/oracle/oracle-database/12.2/ladbi/index.html

https://oracle-base.com/articles/linux/udev-scsi-rules-configuration-in-oracle-linux

https://oracle-base.com/articles/12c/oracle-db-12cr2-rac-installation-on-oracle-linux-7-using-virtualbox

建設背景:

建設本文檔的目的在於詳細梳理12c RAC圖形化安裝的流程,結合官方文檔儘可能解釋安裝過程中的各種操作的原理,提供不同的存儲配置方法和參數修改方法,最後形成一套完整的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 就可以了,然後上傳至節點1的任意目錄。

二、硬件和網絡環境

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

需要說明的是12c RAC安裝,OCR盤至少需要40GB大小,因爲12c新增了MGMTDB實例進行集羣管理,如果你不單獨的爲他創建一個磁盤組,這些信息就會進入OCR盤,導致OCR盤需要40GB的空間纔夠。

檢查操作系統版本,參考GRID官網安裝文檔的:Operating System Checklist for Oracle Database Installation on Linux。

本文的系統環境爲Oracle Enterprise Linux 6.9。

tmpfs務必保證至少是最大內存的一半。

如果需要更大的SGA,那麼至少要將將tmpfs設置爲大於SGA的值,因爲OEL系統下Oracle佔用的共享內存不能大於tmpfs。

檢查網絡環境。

7個IP是需要申請的,其中2個作爲Public IP,2個作爲VIP,1個Scan-IP,這5個IP應當是同一網段的,最後還需要2個不同網段的Private IP,雖然私網IP可以自定義,但是在不清楚私網是直連還是通過交換機時,最好申請獨立的私網IP。網卡每個節點需要2個至少,Public IP佔用一個,Private佔用一個。

以下爲一個示例/etc/hosts文件:
vi /etc/hosts
#需要注意的是12c對主機名的要求比以前更加嚴格,不再允許出現下劃線'_',只能使用連接線'-'。
#Public IP
192.168.10.101 node1
192.168.10.102 node2
#Private IP
1.1.1.1 node1-priv
1.1.1.2 node2-priv
#VIP
192.168.10.103 node1-vip
192.168.10.104 node1-vip
#Scan-IP
192.168.10.105 scanip
三、系統環境設置

Oracle強烈推薦使用一個名爲oracle-database-server-12cR2-preinstall的RPM包來做預原裝的檢測工作。

此RPM包安裝完畢後會出現一個/usr/bin/oracle-database-server-12cR2-preinstall-verify的系統命令,此命令主要就是做一些RAC安裝前的準備工作,如禁用透明大頁,修改內核參數和修改用戶limits等等,需要提示的是此腳本只修改Oracle用戶的limits,對於grid用戶你需要把Oracle的limits內容複製一遍就可以了,相關的文件位置爲:
/etc/security/limits.d/oracle-database-server-12cR2-preinstall.conf
--需要說明的是:limits.d目錄中的用戶限制文件是在/etc/security/limits.conf文件生效之後生效的,因此會覆蓋limits.conf文件中的重複部分。
--穩妥起見直接在/etc/security/limits.d/oracle-database-server-12cR2-preinstall.conf文件中定義好oracle和grid用戶的ulimit限制。

Oracle提供了多種 oracle-database-server-12cR2-preinstall RPM包的下載方式,這裏只選擇我認爲較簡單的一種獲取方式:

wget http://yum.oracle.com/public-yum-ol6.repo -O /etc/yum.repos.d/public-yum-ol6.repo
--執行以上下載命令前最好檢查下你是否本來就有public-yum-ol6.repo,如果有先做個備份防止被覆蓋。
yum -y install oracle-database-server-12cR2-preinstall
--如果無法聯網,那麼可以使用yum的--downloadonly選項在其他機器上下載此rpm包後上傳到安裝節點,然後使用rpm安裝。
--無法聯網時使用rpm安裝oracle-database-server-12cR2-preinstall還需要先安裝ksh依賴包。
--此外注意,如果沒有yum makecache那麼以上安裝可能非常慢,因爲這個repo庫特別龐大,國內網絡連Oracle的yum源的速度大家也懂得。

安裝完畢後會出現一個oracle-database-server-12cR2-preinstall-verify的系統命令,執行此命令應該就可以進行預設置了,然而實測還發現這個命令在OEL6.5版本上不能用,因爲需要/etc/sysctl.d文件夾,這個文件夾OEL6.9是有的6.5並沒有,因此要麼是需要低版本的oracle-database-server-12cR2-preinstall,要麼是不支持OEL6.5,無論是哪種原因這裏都懶得深究了。

那麼假如不用oracle-database-server-12cR2-preinstall,我們自己大致需要做哪些預操作呢,主要有以下幾部分:

禁用透明大頁

如果有大頁需求,Oracle建議使用標準的大頁提升性能,嚴禁使用透明大頁。透明大頁與標準大頁的區別在於可以在系統運行時分配內存,而標準大頁只能重啓生效。

如果你要使用大頁來提升性能,請務必搜索安裝文檔的所有HugePage關鍵詞,根據文檔作出修改,消除大頁帶來的隱患。
具體禁用透明大頁的步驟,我就不復制粘貼了,有興趣的參考12c GI安裝文檔的4.13部分--Disabling Transparent HugePages,百度也可以查到關閉方式。
基礎包安裝
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
--以上命令是我自己簡化後的安裝語句,一般來說執行完以上安裝就足夠了,不夠也沒事,裝grid時如果有缺失的根據報錯Detail再裝就好了。
--不同Linux版本所需的包完整列表參考GI安裝官方文檔的4.7小節--Operating System Requirements for x86-64 LinuxPlatforms。
內核參數修改(64GB內存 40GB tmpfs時的設置)
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

時間同步設置

參考網上配置ntp相關的文檔即可,手工設置時間也可以。

禁用防火牆和selinux

當然你也可以選擇使用防火牆但是開放相應端口,但是簡便起見我還是直接關了。

service iptables stop
service ip6tables stop
chkconfig iptables off
chkconfig ip6tables off
--selinux的關閉自己上網搜。

其他的預安裝要求個人認爲不再需要了,如果有更高的性能需求可以查看官方文檔來進行更詳細的設置,但本着簡單安裝、簡單管理的原則,就這樣啦。

四、用戶、組、以及目錄

--兩節點添加用戶和組
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/

--修改用戶安全限制:
--如果你不使用oracle-database-server-12cR2-preinstall,那麼將以下內容複製到/etc/security/limits.conf文件中即可
--如果你使用了oracle-database-server-12cR2-preinstall,那麼將以下內容複製到/etc/security/limits.d/oracle-database-server-12cR2-preinstall.conf中即可(將之前的內容清空)
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
--無論以上哪種用戶安全限制方式,都是需要PAM模塊來調用的,因此繼續檢查/etc/pam.d/login文件內容:
session required pam_limits.so
如果未發現以上行,那麼加上。

--兩節點設置用戶環境變量,向.bash_profile添加如下項:
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

--在節點一配置ssh互信,步驟如下:
--使用root將數據庫軟件拷貝至/home/oracle/下:

chown oracle.oinstall linuxx64_12201_database.zip

su - oracle

$ unzip linuxx64_12201_database.zip
$ cd database/sshsetup/
$ ./sshUserSetup.sh -user oracle -hosts "node1 node2" -advanced -noPromptPassphrase
$ ./sshUserSetup.sh -user grid -hosts "node1 node2" -advanced -noPromptPassphrase
--最後在節點1使用oracle和grid用戶都執行以下兩條命令驗證互信:
$ ssh node2 date
$ ssh node2-priv date
--如果不需要輸入密碼則說明互信配置成功。

五、存儲環境設置

存儲的配置總結下只有2步:持久化配置 和 權限配置 ,我們分兩種情況來描述存儲配置的步驟。

情況一:使用多路徑軟件時:

一般來說生產上的存儲使用系統自帶的多路徑軟件multipath即可完成多路徑持久化配置,這裏貼一個示例配置文件的一部分:

multipath.conf written by anaconda

......
multipaths {
multipath {
wwid "360080e50003279f000001a785a275fe8"
alias REDO_01
}
multipath {
wwid "360080e50003279f000001a775a275fba"
alias RAC_OCR
}
multipath {
wwid "360080e50003279f000001a795a27604e"
alias RAC_ARCHIVE
}
multipath {
wwid "360080e50003217cc00001c6d5a280dd8"
alias REDO_02
}
multipath {
wwid "360080e50003217cc00001c6e5a280e2b"
alias RAC_DATA
}
}
--不建議在這裏加uid gid mode來設置屬主和權限,因爲不能設置附屬group。

根據uuid進行了alias的綁定,之後重啓multipathd即可,使用multipath -ll可以看到聚合後的盤。

然後使用multipath自帶的udev文件12-dm-permissions.rules來完成聚合盤(/dev/dm-)的權限配置,這樣安裝時直接查找/dev/mapper/路徑即可找到以alias名字顯示的盤。

--設置步驟:
cp /usr/share/doc/device-mapper-1.02.117/12-dm-permissions.rules /etc/udev/rules.d/
vi /etc/udev/rules.d/12-dm-permissions.rules
--添加或註釋如下一行:
ENV{DM_UUID}=="mpath-?*", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
--說白了就是設置下聚合盤的權限
start_udev

這裏還有一些替代的方法,例如使用60-raw.rules來代替12-dm-permissions.rules的權限設置功能,例子如下:

vi /etc/udev/rules.d/60-raw.rules

ACTION=="add", KERNEL=="dm-0", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="dm-1", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="dm-2", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="dm-3", RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", KERNEL=="dm-4", RUN+="/bin/raw /dev/raw/raw5 %N"
KERNEL=="raw", OWNER="grid" GROUP="asmadmin", MODE="0660"
--其原理是:/dev/mapper/下的盤符其實是指向/dev/dm-
的,將這些聚合盤映射爲裸設備,也可以同時改變權限,缺點在於沒有alias容易混淆。
--這裏可能有人說多路徑可能生成不同的dm-*,後綴數字是不穩定的,我覺得沒必要擔心,只要你不去作死改多路徑配置文件,這個後綴的數字就不會變,綁定的raw盤也就不會變。

start_udev

至此情況一的權限配置已經完成了,你還可以通過99-oracle-asmdevices.rules來繼續改變下底層盤的權限,但是這一步可做可不做。

vi /etc/udev/rules.d/99-oracle-asmdevices.rules

KERNEL=="sd", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}=="360080e50003279f000001a785a275fe8", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd
", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}=="360080e50003279f000001a775a275fba", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}=="360080e50003279f000001a795a27604e", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd
", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}=="360080e50003217cc00001c6d5a280dd8", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}=="360080e50003217cc00001c6e5a280e2b", OWNER="grid", GROUP="asmadmin", MODE="0660"
--重啓udev

start_udev

情況二:如果你未使用multipath(常見於使用虛擬機的測試環境)

那麼直接使用99-oracle-asmdevices.rules(Device Mapper)來完成持久化配置和權限配置,並綁定易於人眼識別的name。

--參考:https://oracle-base.com/articles/linux/udev-scsi-rules-configuration-in-oracle-linux
--以及參考:官網文檔附加的A部分中的Configuring Device Persistence Manually for Oracle ASM小節
--基本步驟就是:首先使用scsi_id獲取sd盤的uuid,然後將uuid綁定至99-oracle-asmdevices.rules即可。

以上介紹的兩種情況都是使用了udev來完成存儲配置的,你也可以使用ASMLIB來完成ASM盤的持久化和權限配置,具體參見GI或Database的官方安裝文檔的:Configuring Storage Device Path Persistence Using Oracle ASMLIB部分。

六、GRID安裝

這裏有個小坑,12c的GRID安裝不再會按你設置的grid用戶的$ORACLE_HOME變量來作爲GI的家目錄,而是直接將你GRID軟件的解壓目錄作爲家目錄,因此你需要將linuxx64_12201_grid_home.zip拷貝至grid用戶的$ORACLE_HOME,本文中就是/u01/12.2.0/grid,然後:

chown grid.oinstall linuxx64_12201_grid_home.zip

su - grid

$ unzip linuxx64_12201_grid_home.zip
--這樣在進行安裝時就會將你設置的grid用戶的$ORACLE_HOME作爲GI家目錄了。

--注意所有軟件都只需在節點一解壓,節點二無需操作,安裝GI和DB軟件的過程中安裝程序會自動將軟件傳至遠端節點。

--這裏還需要先裝下cvuqdisk包,這個包存在於解壓後的/home/oracle/database/rpm/目錄下:
cp /home/oracle/database/rpm/cvuqdisk-1.0.10-1.rpm /root
--使用root rpm安裝cvuqdisk
rpm -ivh cvuqdisk-1.0.10-1.rpm
--以上包的安裝需要在2節點都執行,使用scp將cvuqdisk包傳至節點二安裝。

解壓後使用grid用戶進行GI安裝:

cd /u01/12.2.0/grid/
./gridSetup.sh

接下來基本只要下一步下一步就完事了,我自己的安裝步驟忘了截圖,因此這裏參考下如下網址的安裝截圖:

https://oracle-base.com/articles/12c/oracle-db-12cr2-rac-installation-on-oracle-linux-7-using-virtualbox

注意:別按他的預安裝步驟做,他使用的是很古老的單用戶RAC安裝方式,現在推薦使用單獨的grid用戶來管理集羣,與管理數據庫的oracle用戶分離開。

--這裏需要特別說明下,如果你選了YES即爲GIMR創建單獨的MGMT磁盤組,那麼OCR盤大小20GB左右就可以(當然你還需要爲MGMT磁盤組準備存儲),如果你選擇NO,那麼請保證OCR盤至少40GB大小(準確數字忘了大概是38GB左右,不過40GB保險)。

根據提示一次在兩節點執行以上腳本即可,出現下圖所示文字是表示執行成功:

至此GRID已經安裝完畢,使用如下命令查看集羣狀態:

su - grid
crsctl stat res -t

七、創建ASM磁盤組

使用grid用戶執行asmca創建數據磁盤組DATA和存放REDO、歸檔的磁盤組,一般測試環境這幾個磁盤組合在一起即可。

su - grid
sqlplus / as sysasm
set lines 200
col path for a40
select group_number,header_status,state,name,path,redundancy from v$asm_disk;
select group_number,name,state,COMPATIBILITY,DATABASE_COMPATIBILITY from v$asm_diskgroup;
create diskgroup DATA external redundancy disk '/dev/mapper/RAC_DATA' ATTRIBUTE 'compatible.asm' = '12.2';
create diskgroup ARCHIVE external redundancy disk '/dev/mapper/RAC_ARCHIVE' ATTRIBUTE 'compatible.asm' = '12.2';
create diskgroup REDO external redundancy disk '/dev/mapper/REDO_01','/dev/mapper/REDO_02' ATTRIBUTE 'compatible.asm' = '12.2';

八、DATABASE安裝

cd /home/oracle/database
./runInstaller

根據提示執行以上腳本即可。

九、創建數據庫

使用oracle用戶執行dbca建庫:

--如無pdb需求,那麼不選create as container database

--並不推薦以上建庫方式,建議使用下邊的高級配置,可以自己設置SGA,PGA和字符集等等。

建庫完畢後使用如下命令查看整個集羣和數據庫的狀態:

su - grid
crsctl stat res -t
srvctl config database -d orcl
lsnrctl status

十、最後的工作

ALTER SYSTEM SET AUDIT_TRAIL=NONE SCOPE=SPFILE SID='';--關閉審計
alter system set deferred_segment_creation=false SCOPE=BOTH SID='
'; --關閉段創建延遲
#ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON=FALSE SCOPE=SPFILE SID=''; --關閉密碼大小寫驗證,在12c版本中此參數已被棄用,如果手動改爲FALSE,除非設置正確的SQLNET.ALLOWED_LOGON_VERSION_SERVER參數,否則所有用戶都會無法登陸,因此不要這麼改了。
ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;--設置登錄次數爲無限
ALTER SYSTEM SET CONTROL_FILE_RECORD_KEEP_TIME=31 SCOPE=BOTH SID='
';--控制文件內容保存時間
ALTER SYSTEM SET MAX_DUMP_FILE_SIZE='2048M' SCOPE=BOTH SID='';--DUMP文件size的最大值
ALTER SYSTEM SET PROCESSES=2048 SCOPE=SPFILE SID='
';--最大進程數
ALTER SYSTEM SET "_UNDO_AUTOTUNE"=FALSE SCOPE=BOTH SID='';--關閉UNDO自動調優的功能
ALTER SYSTEM SET "_USE_ADAPTIVE_LOG_FILE_SYNC"=FALSE SCOPE=BOTH SID='
'; --關閉自適應日誌同步功能
alter database add supplemental log data; --打開附加日誌,便於進行故障後數據找回

重啓使以上部分設置生效:srvctl stop/start database -d orcl

最後,再設置下數據和歸檔的備份計劃,根據業務壓力調整下REDO大小和組數就可以了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章