1. 程式人生 > >阿里雲上建立Oracle RAC-靜默模式

阿里雲上建立Oracle RAC-靜默模式

編前語:

小編成功在阿里雲上搭建Oracle RAC斷斷續續花了1個月的時間,中間的過程簡直是痛苦,網上很多的資料都是基於圖形化介面的,也有靜默模式但是步驟都非常的粗略,可能是寫這樣的步驟太費時間了。這篇文章可以說是從零開始,所有的步驟都有截圖。希望可以幫到大家。如果你是才開始接觸RAC請仔細閱讀文中的每一個字,特別關注裡面的一些提示,可以讓你節約很多時間

背景:

公司使用的資料庫目前為Oracle單機模式,為了提高資料的可用性。需要搭建Oracle叢集。於是開始在網上搜索,搭建RAC的文章很多,但是大部分都是基於虛擬機器的。公司的伺服器全部執行在阿里雲上,於是借鑑下面大神的文章開始搭建,大神的文章過於豪放,細節沒有覆蓋,所有撰寫這篇博文

參考文件:

重點:

為了繞開阿里雲對於組播的限制,叢集中節點的通訊利用N2N

步驟:

資源準備

  a. ECS 伺服器2臺, CentOS 6.8 x86-64

  b. 阿里雲塊儲存2塊 (截至目前,塊儲存還處於公測,需要提交申請開通,本人提交申請以後等了3天,讓後提工單去催的)

   20G用於選舉,250G用於資料庫以及Grid安裝

  c. Oracle 以及 Grid安裝檔案(版本:11g),下載地址如下

  d. N2N軟體

e. ASM軟體

1.修改主機名

#vi /etc/sysconfig/network
節點1
# Created by anaconda
NETWORKING=yes
HOSTNAME=rac1
NETWORKING_IPV6=no
PEERNTP=no
NOZEROCONF=yes
節點2
# Created by anaconda
NETWORKING=yes
HOSTNAME=rac2
NETWORKING_IPV6=no
PEERNTP=no
NOZEROCONF=yes

 2. 安裝Oracle準備,節點規劃完全複製參考文件裡面的

儲存元件和參考文件有點不同,這個塊儲存以後肯定很貴的,所以生產環境可以根據資料庫大小來配置。我是80*3=240G,所以我申請了250G的共享塊儲存

元件 型別 卷大小 ASM卷組名 ASM 冗餘 裝置名
OCR/VF ASM 5G DG_OCR NORMAL /dev/vdb1,/dev/vdb2,/dev/vdb3
資料&歸檔 ASM 80G DG_DATA NORMAL /dev/vdc1,/dev/vdc2,/dev/vdc3

  塊儲存掛載以後:

Disk /dev/vda: 64.4 GB, 64424509440 bytes, 125829120 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0008d73a

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048   125827071    62912512   83  Linux

Disk /dev/vdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xf8683fec

   Device Boot      Start         End      Blocks   Id  System

Disk /dev/vdc: 268.4 GB, 268435456000 bytes, 524288000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xdd02467a

   Device Boot      Start         End      Blocks   Id  System

3.安裝N2N軟體

  #將N2N軟體上傳到阿里雲伺服器

#在兩個節點都要安裝N2N
unzip n2n-master.zip 
cd  n2n-master
make #如果make 提示openssl出錯,安裝openssl(命令: yum install -y openssl openssl-devel)
make PREFIX=/opt/n2n install

安裝完畢後啟動supernode服務(N2N支援兩個supernode,我這裡只在節點1上面開啟supernode)
nohup /opt/n2n/sbin/supernode -l 65530 & #用其中一個節點來當N2N的supernode,我用的節點1,

節點1
/opt/n2n/sbin/edge -d edge0 -a 10.10.10.101 -s 255.255.255.0 -c dtstack -k dtstack -l 172.18.56.21:65530 -E -r 
#這裡的172.18.56.21是我ECS伺服器的eth0介面IP,也就是supernode的真實IP,如果你起了兩個supernode可以直接在-l引數裡面新增第二個節點,如-l 172.18.56.21:65530,172.18.56.22:65530
/opt/n2n/sbin/edge -d edge1 -a 192.168.100.101 -s 255.255.255.0 -c dtstack -k dtstack -l 172.18.56.21:65530 -E -r

#配置完成以後節點會多兩個虛擬網絡卡
[[email protected] n2n-master]# ifconfig
edge0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1400
        inet 10.10.10.101  netmask 255.255.255.0  broadcast 10.10.10.255
        ether 4e:c7:9c:a7:73:95  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

edge1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1400
        inet 192.168.100.101  netmask 255.255.255.0  broadcast 192.168.100.255
        ether 46:76:79:d8:1b:eb  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.18.56.21  netmask 255.255.240.0  broadcast 172.18.63.255
        ether 00:16:3e:08:48:66  txqueuelen 1000  (Ethernet)
        RX packets 19861  bytes 24810887 (23.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6122  bytes 2000836 (1.9 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

節點2

/opt/n2n/sbin/edge -d edge0 -a 10.10.10.102 -s 255.255.255.0 -c dtstack -k dtstack -l 172.18.56.21:65530 -E -r
/opt/n2n/sbin/edge -d edge1 -a 192.168.100.102 -s 255.255.255.0 -c dtstack -k dtstack -l 172.18.56.21:65530 -E -r

4.修改/etc/hosts

節點1
10.10.10.101 rac1
10.10.10.102 rac2
10.10.10.103 rac1-vip
10.10.10.104 rac2-vip
192.168.100.101 rac1-priv
192.168.100.102 rac2-priv
10.10.10.105 scan-ip
#172.18.56.21 rac1
節點2
10.10.10.101 rac1
10.10.10.102 rac2
10.10.10.103 rac1-vip
10.10.10.104 rac2-vip
192.168.100.101 rac1-priv
192.168.100.102 rac2-priv
10.10.10.105 scan-ip
#172.10.56.22 rac2

5.修改核心引數

#vi /etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall =7864320 #記憶體大小/4096分頁大小 
kernel.shmmax = 52451655680 #記憶體大小
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 = 1048586
vm.nr_hugepages = sga/pagesize  #開啟hugepage,oracle鎖定記憶體防止換出

#sysctl –p 

6.配置NTP

#oracle rac必須進行時鐘同步,如果沒有時鐘同步,按照下面的方式配置,讓oracle自身來解決
/sbin/service ntpd stop
chkconfig ntpd off
mv /etc/ntp.conf /etc/ntp.conf.org

7.關閉防火牆,阿里雲自動的CentOS是關閉了防火強的,你是用虛擬機器,需要執行這一步

chkconfig --list iptables
chkconfig iptables off
chkconfig --list iptables
service iptables stop
service network restart
關閉selinux
/etc/selinux/config
disable

8.修改使用者限制

#vi /etc/security/limits.conf
oracle           soft    nofile          4096
oracle           hard   nofile          65536
oracle           soft    nproc          2047
oracle           hard   nproc          16384
oracle           soft   stack          10240
grid           soft    nofile          4096
grid            hard   nofile          65536
grid            soft    nproc          2047
grid            hard   nproc          16384
grid            soft   stack          10240
*           soft   memlock         18874368
*           hard   memlock          18874368

9. /etc/pam.d/login

echo "session    required     pam_limits.so" >>/etc/pam.d/login

10.安裝需要的包

一般要安裝下面的軟體包
yum install -y compat-libstdc++-33
yum install -y elfutils-libelf-devel
yum install -y gcc-c++
yum install -y ksh
yum install -y libaio-devel
yum install -y libstdc++-devel
yum install -y libXp
yum install -y numactl-devel
yum install -y unixODBC
yum install -y unixODBC-devel
yum install -y compat-libcap1.x86_64

11.格式化共享磁碟,這點和參考文件有點區別,他是通過3塊盤進行冗餘,我是一塊盤上劃三個分割槽。如果是生產hua環境,建議劃三塊盤,將選舉磁碟和資料盤分到3個不同的盤。由於是共享磁碟,這個操作在一個節點上進行就OK

[[email protected] ~]# fdisk /dev/vdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-41943039, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +5G
Partition 1 of type Linux and of size 5 GiB is set

Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (2-4, default 2): 
First sector (10487808-41943039, default 10487808): 
Using default value 10487808
Last sector, +sectors or +size{K,M,G} (10487808-41943039, default 41943039): +5G
Partition 2 of type Linux and of size 5 GiB is set

Command (m for help): n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): p
Partition number (3,4, default 3): 3
First sector (20973568-41943039, default 20973568): 
Using default value 20973568
Last sector, +sectors or +size{K,M,G} (20973568-41943039, default 41943039): +5G
Partition 3 of type Linux and of size 5 GiB is set

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[[email protected] ~]# fdisk /dev/vdc
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-524287999, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-524287999, default 524287999): +80G
Partition 1 of type Linux and of size 80 GiB is set

Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (2-4, default 2): 
First sector (167774208-524287999, default 167774208): 
Using default value 167774208
Last sector, +sectors or +size{K,M,G} (167774208-524287999, default 524287999): +80G
Partition 2 of type Linux and of size 80 GiB is set

Command (m for help): n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): p
Partition number (3,4, default 3): 
First sector (335546368-524287999, default 335546368): 
Using default value 335546368
Last sector, +sectors or +size{K,M,G} (335546368-524287999, default 524287999): +80G
Partition 3 of type Linux and of size 80 GiB is set

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[[email protected] ~]# fdisk -l

Disk /dev/vda: 64.4 GB, 64424509440 bytes, 125829120 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0008d73a

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048   125827071    62912512   83  Linux

Disk /dev/vdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xf8683fec

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048    10487807     5242880   83  Linux
/dev/vdb2        10487808    20973567     5242880   83  Linux
/dev/vdb3        20973568    31459327     5242880   83  Linux

Disk /dev/vdc: 268.4 GB, 268435456000 bytes, 524288000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xdd02467a

   Device Boot      Start         End      Blocks   Id  System
/dev/vdc1            2048   167774207    83886080   83  Linux
/dev/vdc2       167774208   335546367    83886080   83  Linux
/dev/vdc3       335546368   503318527    83886080   83  Linux
[[email protected]~]# 

12.安裝ASM,這裡安裝會升級kernel到el7(用CentOS 7裝叢集應該會好一點)

yum install -y http://download.oracle.com/otn_software/asmlib/oracleasmlib-2.0.4-1.el6.x86_64.rpm

yum install -y http://oss.oracle.com/projects/oracleasm-support/dist/files/RPMS/rhel6/amd64/2.1.8/oracleasm-support-2.1.8-1.el6.x86_64.rpm

13.建立grid,oracle使用者(grid主要用於管理叢集,oracle主要用於管理資料庫,所以待會在配置ASM的時候要把使用者設定為grid,不然後面會出現磁碟許可權的問題)

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

#配置環境變數
#Grid
#vi /home/grid/.bash_profile
umask 022
export ORACLE_BASE=/u01/app/grid_base
export ORACLE_HOME=/u01/app/grid_home
export ORACLE_SID=+ASM1  #第二個節點+ASM2
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH

#Oracle
#vi /home/oracle/.bash_profile
umask 022
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORA_GRID_HOME=/u01/app/grid_home
export ORACLE_UNQNAME=OAODZ1  #第二個節點orcl2
export ORACLE_SID=OAODZ1 #第二個節點orcl2
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LANG=en_US.UTF-8

#太長了,轉到下一篇

相關推薦

阿里建立Oracle RAC-靜默模式

編前語: 小編成功在阿里雲上搭建Oracle RAC斷斷續續花了1個月的時間,中間的過程簡直是痛苦,網上很多的資料都是基於圖形化介面的,也有靜默模式但是步驟都非常的粗略,可能是寫這樣的步驟太費時間了。這篇文章可以說是從零開始,所有的步驟都有截圖。希望可以幫到大家。如果你是才

阿里建立FTP伺服器和使用者

簡介 FTP 是File Transfer Protocol(檔案傳輸協議)的英文簡稱,而中文簡稱為“文傳協議”。用於Internet上的控制檔案的雙向傳輸。同時,它也是一個應用程式(Application)。基於不同的作業系統有不同的FTP應用程式,而所有這些應用程式

阿里遇見更好的Oracle(四)

2016.5.13,北京,第七屆資料庫技術大會。 從最初的itpub社群,到後來被it168收購,DBA社群的線下聚會發展成2010年第一屆資料庫技術大會(DTCC)。第一屆大會匯聚了社群內活躍的各位DBA大神們,星光燦爛。我當時也在會上分享了淘寶DBA團隊在資料庫監控產品方面做的一些努力。 七年過去,資

阿里搭建Docker Swarm模式叢集最佳實踐

Docker技術體系和生態在2016年得到飛速發展、成熟,在2016中國容器技術調研報告中也發現了國內絕大部分使用者都在關注 Docker,80%的使用者都會考慮使用容器技術。那如何能快速的在阿里雲上搭建Docker叢集呢?本文將講解如何利用資源編排快速搭建Docker Swarm 模式叢集,本例子中將安

Oracle APEX 系列文章3:在阿里打造屬於你自己的APEX完整開發環境 (安裝CentOS, Tomcat, Nginx)

引言 在這一章節裡,我們將一起動手安裝CentOS 7作業系統、Tomcat以及Nginx,併為後面的安裝做一些初始化設定。 安裝配置CentOS 7 在阿里雲控制檯購買並啟動CentOS 之前說過,我們選擇阿里雲作為雲提供商。註冊

如何提高阿里應用的可用性(二)

這是如何提高阿里雲上應用的可用性系列文章的第二篇,第一篇傳送門。 在單體應用時代,最大的問題是如何解決資料庫瓶頸,而微服務之下,一個大應用被拆分成了幾十個甚至上百個微服務,資料訪問的壓力被傳導到了服務之間的網路,服務強弱依賴,服務雪崩等各種問題隨之而來,那麼如何保障服務的可用性以及整個應用的健壯性呢?常見的

一次阿里的kakfa叢集升級歷險記

       由於要在生產環境上debezium,筆者看到生產環境上的kafka版本是1.0.0,而現在kafka最新版本都是2.0了,於是想升級一下kafka。按照kafka的官網上的例子來升級。發現升級完kafka叢集

阿里執行Docker版本的PostgreSQL

阿里雲上執行Docker版本的PostgreSQL 最近公司專案上用到PostgreSQL9.3.24, 需要搭建一套PostgreSQL測試環境。 正好最近阿里雲雙11優惠幅度巨大,果斷入手一臺2核4G的雲伺服器。 阿里雲雙11優惠活動地址 下面為大家詳細介紹環境搭建過程 資源連線: Postgre

如何提高阿里應用的可用性(一)

摘要: 如今,開發並上線一款應用十分方便。因為雲端計算提供了從最基礎的計算資源如伺服器網路、資料庫服務、中介軟體PaaS平臺到各種應用支撐的雲管理服務,同時開源社群的迅猛發展也提供了從資料庫、快取到應用全生命流程中各種必須的元件,所以越來越多的應用開發者可以把精力放在業務創新上。 如今,開發並上線一款應用十

uwsgi+django+nginx (ubuntu)部署在阿里 — 留著自己記憶用

步驟一:在阿里雲上買伺服器 步驟二:在本地寫好django專案 步驟三:下載xftp,putty 步驟四:利用xftp將django拖入伺服器中 步驟五:確保在伺服器中下載好了,uwsgi,nginx,django django: pip3 install dj

基於docker在阿里搭建WordPress個人部落格

環境 centos7.4 安裝docker見https://blog.csdn.net/weixin_38280090/article/details/83590192 下載image docker pull wordpress:latest #下載wordpress在dockerh

阿里cdh5 hbase搭建(單機版)

一、簡介 HBase是一種構建在HDFS之上的分散式、面向列的儲存系統。在需要實時讀寫、隨機訪問超大規模資料集時,可以使用HBase。 儘管已經有許多資料儲存和訪問的策略和實現方法,但事實上大多數解決方案,特別是一些關係型別的,在構建時並沒有考慮超大規模和分散式的特點。許多商家通過複製和分割

如何在阿里部署 Django 應用程式

關於 Django Django 是一個用 Python 語言寫的開源 Web 框架,可幫助開發人員在構想形成後僅數小時內啟動 Web 應用程式。它遵循模型檢視模板 (MVT) 來構建應用程式,這可降低 Web 開發的複雜性,同時可讓開發人員集中精力編寫應用程式。它為網站地圖、內容管理、使用者鑑權

阿里tomcat訪問慢

最近在阿里雲上安裝了tomcat,但是訪問很慢,氣的我都想把電腦砸了,這時候在網上搜索瞭解決方案 在tomcat下的/bin/catalina.sh中新增如下語句: JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/./urandom

如何提高阿里應用的可用性

摘要: 如今,開發並上線一款應用十分方便。因為雲端計算提供了從最基礎的計算資源如伺服器網路、資料庫服務、中介軟體PaaS平臺到各種應用支撐的雲管理服務,同時開源社群的迅猛發展也提供了從資料庫、快取到應用全生命流程中各種必須的元件,所以越來越多的應用開發者可以把精力放在業務創新上。 如今

PHPMailer 在本地傳送成功 阿里傳送失敗原因

阿里雲預設不允許訪問SMTP 25埠,可申請解封25埠或換ssl加密方式連線和埠 $mail = new PHPMailer(); $mail->IsSMTP(); # $mail->Host = 'smtp.exmail.qq.com'; # 本地可直接使用 $mail

阿里搭建自己的git伺服器

這篇文章我就來介紹一下如何在一臺全裸的阿里雲主機上搭建自己的git伺服器。 1. 安裝git 首先安裝git,一般而言,現在的伺服器已經內建了git安裝包,我們只需要執行簡單的安裝命令即可安裝。比如: $ yum install git # centos $ apt-get install git #

阿里進行域名解析

 把自己已經在阿里雲備案號的域名進行解析(注意必須是已經備案的,否則外網訪問不了)。 具體步驟: 1、進入阿里雲控制檯,找到域名下的雲解析DSN。 2、找到域名列表,如果不是阿里雲購買的域名需要新增域名到該列表。然後點選解析 3、點選新增解

如何在阿里部署django網站

原 如何在阿里雲上部署django網站   個人分類: django 版權宣告:本文為博主原創文章,網路精神,歡迎轉載。如果轉載,請註明出處。 https://blog.csdn.net/zhangyl03/article/details/52078334 如

如何在阿里進行備案?

目錄 如何在阿里雲上進行備案? 1、企業實名制認證 1.1、企業支付寶認證 1.2、企業對公銀行賬號認證 2、域名備案流程 如何在阿里雲上進行備案? 1、企業實名制認證 對於企業客戶,企業的阿里雲賬號做認證有好幾種方