首頁>技術>

相信在大家運維的過程中,甲方爸爸的要求那是多種多樣的,掌握些經常用到的技術還是必要的,本篇教學是本人在一系列痛苦的煎熬後寫出了這篇較為詳細的ORACLE 11G RAC文件,根據本篇教程本人也是部署了很多的生產環境。閒話少敘,接下來就是正文了。。。。。

本篇涉及到的oracle grid 等軟體包在百度雲上,連結直接就是下面這個。

連結:https://pan.baidu.com/s/1uty4loIDZlKdi5rRIbIolA

提取碼:n5hw

一,硬體環境

1,1,中標麒麟作業系統、兩臺虛擬主機。

1,2,IP地址規劃:管理ip(ip) 2個 使用者管理叢集使用的ip

私有ip (privip) 2個 用於雙節點間通訊

業務ip(vip) 2個 業務ip,通過訪問scanip後訪問vip

訪問ip(scanip)1個 對外表現為業務ip

1.3,硬碟規劃: 一個仲裁磁碟 OCR_VOTE(可選則三個)

資料磁碟 DATA (tyyw搭建時劃分了兩個data在asmca介面組成一個data組)

閃回磁碟 FRA (700G以下就可以)

1.4 環境配置

物理主機需要進行bond繫結 最好為4塊網絡卡分別兩塊網絡卡一組,兩塊光纖卡需要做冗餘bond如下圖。

1.5,如物理主機劃分儲存lun,則需要安裝多路徑軟體(儲存廠商提供)。

注:多路徑軟體會發生fdisk多識別磁碟現象,注意注意

二,軟體環境

三,配置hosts 檔案

3.1 rac1 注hosts檔案不要有大寫出現,後期不能識別

3.2 rac2

#eth0

192.168.8.51 rac1.wln.com rac1

192.168.8.52 rac2.wln.com rac2

#viptual

192.168.8.53 rac1-vip.wln.com rac1-vip

192.168.8.54 rac2-vip.wln.com rac2-vip

#eth1 priv

18.1.30.51 rac1-priv.wln.com rac1-priv

18.1.30.52 rac2-priv.wln.com rac2-priv

#scan

192.168.8.55 rac-scan.wln.com rac-scan

建議節點一做完hosts檔案後直接scp節點二防止出錯

注意:/etc/hosts 檔案兩節點一定要一致 寫全7個ip (2個節點ip(eth0 public)2個vip,2個priv(eth1),scan)寫上域名,寫上主機名(主機名一定要小寫)配置完/etc/hosts不需用重啟網絡卡

四,檢查依賴包

4.1配置yum源,批量安裝軟體包

yum -y install binutils-* compat-libstdc++-* compat-libstdc++-* elfutils-libelf-* elfutils-libelf-devel-* gcc-* gcc-c++-* glibc-* glibc-* glibc-common-* glibc-devel-* glibc-devel-* glibc-headers-* ksh-* libaio-* libaio-* libaio-devel-* libaio-devel-* libgcc-* libgcc-* libstdc++-* libstdc++-* libstdc++-devel* make-* sysstat-* unixODBC-* compat-libcap1

以上操作均在所有節點執行。

五,安裝工作

以下配置均在所有節點執行

5.1 修改主機名稱

[root@rac1 ~]# vi /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=rac1

5.2 配置使用者,組,目錄和許可權

groupadd oinstall

groupadd dba

groupadd oper

groupadd asmadmin

groupadd asmdba

groupadd asmoper

useradd -g oinstall -G dba,asmdba,asmadmin,asmoper grid

useradd -g oinstall -G dba,oper,asmdba oracle

echo -n qwer1234|passwd --stdin grid

echo -n qwer1234|passwd --stdin oracle

mkdir -p /u01/app/11.2.0/grid

mkdir -p /u01/app/grid

mkdir -p /u01/app/oracle

chown -R grid:oinstall /u01

chown grid:oinstall /u01/app/11.2.0/grid

chown grid:oinstall /u01/app/grid

chown -R oracle:oinstall /u01/app/oracle

chmod -R 775 /u01/

注意:兩個節點建立的使用者,組,目錄,許可權,一定要一致,做完之後檢查,不能有誤,否者會引起後續建立資料庫找磁碟組識別不出來

5.3 修改系統核心引數

1 sed -i 's/kernel.shmmax/#kernel.shmmax/g' /etc/sysctl.conf

2. sed -i 's/kernel.shmall/#kernel.shmall/g' /etc/sysctl.conf

3.vim /etc/sysctl.conf

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmall = 2097152

kernel.shmmax = 1073741824

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

4.sysctl –p

注意:修改核心引數直接配置檔案末尾加入就可以不需要修改原來核心檔案

5.4 配置/etc/security/limits.conf

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

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

5.5 配置/etc/profile

if [ $USER = "oracle" ] || [ $USER = "grid" ];then

if [ $SHELL = "/bin/ksh" ];then

ulimit -p 16384

ulimit -n 65536

else

ulimit -u 16384 -n 65536

fi

umask 022

fi

####

六,配置使用者環境變數

6.1配置節點1使用者

A grid使用者

vim /home/grid/.bash_profile

export TMP=/tmp

export TMPDIR=$TMP

export ORACLE_HOSTNAME=rac1.wln.com

export ORACLE_SID=+ASM1

export ORACLE_BASE=/u01/app/grid

export ORACLE_HOME=/u01/app/11.2.0/grid

export NLS_DATE_FORMAT="yy-mm-dd HH24:MI:SS"

export PATH=$ORACLE_HOME/bin:$PATH

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

B oracle 使用者

vim /home/oracle/.bash_profile

export TMP=/tmp

export TMPDIR=$TMP

export ORACLE_HOSTNAME=rac1.wln.com

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1

export ORACLE_UNQNAME=prod

export ORACLE_SID=prod1

export ORACLE_TERM=xterm

export PATH=/usr/sbin:$PATH

export PATH=$ORACLE_HOME/bin:$PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

6.2 配置節點2使用者

A grid使用者

Vim /home/grid/.bash_profile

export TMP=/tmp

export TMPDIR=$TMP

export ORACLE_HOSTNAME=rac2.wln.com

export ORACLE_SID=+ASM2

export ORACLE_BASE=/u01/app/grid

export ORACLE_HOME=/u01/app/11.2.0/grid

export NLS_DATE_FORMAT="yy-mm-dd HH24:MI:SS"

export PATH=$ORACLE_HOME/bin:$PATH

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

B oracle使用者

Vim /home/oracle/.bash_profile

export TMP=/tmp

export TMPDIR=$TMP

export ORACLE_HOSTNAME=rac2.wln.com

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1

export ORACLE_UNQNAME=prod

export ORACLE_SID=prod2

export ORACLE_TERM=xterm

export PATH=/usr/sbin:$PATH

export PATH=$ORACLE_HOME/bin:$PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

七. 配置使用者等效性

7.1 grid 使用者等效性

以下均已grid使用者執行

注意:等效性配置與後面grid叢集安裝有直接關係

按照順序進行操作,否則會提示沒有檔案或目錄的錯誤

以grid戶執行操作

rac1

ssh-keygen -t rsa

ssh-keygen -t dsa

rac2

ssh-keygen -t rsa

ssh-keygen -t dsa

#以上用預設配置,一路回車即可

rac1

cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys

ssh grid@rac2 cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys

rac2

cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys

ssh grid@rac1 cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys

#建立等效性

rac1,rac2 雙節點執行

ssh rac1 date

ssh rac1-priv date

ssh rac2 date

ssh rac2-priv date

雙節點出現下圖表示成功

7.2 oracle 使用者等效性

一下oracle使用者執行操作

rac1

ssh-keygen -t rsa

ssh-keygen -t dsa

rac2

ssh-keygen -t rsa

ssh-keygen -t dsa

#以上用預設配置,一路回車即可

rac1

cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys

ssh oracle@rac2 cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys

rac2

cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys

ssh oracle@rac1 cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys

#建立等效性

rac1,rac2 雙節點執行

ssh rac1 date

ssh rac1-priv date

ssh rac2 date

ssh rac2-priv date

八,配置ntp服務

8.1 節點1

主資料庫伺服器配置: 如該內網有時間同步伺服器則使用內網時間同步服務

編輯/etc/ntp.conf

server 127.127.1.0

fudge 127.127.1.0 stratum 8

啟動ntpserver service ntpd start

新增到系統自啟動 chkconfig --level 12345 ntpd on

8.2 節點2

編輯/etc/ntp.conf

server 內網時間同步伺服器ip iburst

雙節點檢視時間同步效果

ntpq -p

九.安裝並配置 ASM 驅動或裸裝置

9.1 檢查核心

[root@rac1 ~]# uname -r

2.6.18-164.el5

Oracle ASMlib 下載地址:

下載以下 rpm 包(注意 rpm 包版本和 Linux 核心版本一致):

9.2 安裝 oracleasm 包(雙節點執行)

安裝以下安裝包 按照順序執行安裝否則會導致安裝失敗

注意:如果沒有與核心版本相同的安裝包,則採用裸裝置安裝方式→

1,rpm-ivh oracleasm-support-2.1.7-1.el5.x86_64.rpm

2, rpm -ivh kmod-oracleasm-2.0.6.rh1-3.el6_5.x86_64.rpm

3, rpm -ivh oracleasmlib-2.0.4-1.el5.x86_64.rpm

4,rpm -ivh oracleasm-2.6.18-164.el5-2.0.5-1.el5.x86_64.rpm --force --nodeps

9.2.1初始化 asmlib(在所有節點執行)

節點 2 省略

A [root@rac1 ~]# oracleasm configure -i

Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library driver.

The following questions will determine whether the driver is loaded on boot and what permissions it will have.

The current values will be shown in brackets ('[]'). Hitting <ENTER> without typing an answer will keep that current value. Ctrl-C will abort.

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

B [root@rac1 ~]# oracleasm init

Creating /dev/oracleasm mount point: /dev/oracleasm

Loading module "oracleasm": oracleasm

Mounting ASMlib driver filesystem: /dev/oracleasm

9.2.2 磁碟分割槽(節點 1 執行)

[root@rac1 ~]# fdisk /dev/sdb 分割槽不需要格式化

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel

Building a new DOS disklabel. Changes will remain in memory only,

until you decide to write them. After that, of course, the previous

content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n

Command action

e extended

p primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-261, default 1):

Using default value 1

Last cylinder or +size or +sizeM or +sizeK (1-261, default 261):

Using default value 261

Command (m for help):

Command (m for help): w

The partition table has been altered!

sdb、sdc、sdd執行相同操作

9.2.3 建立 asm 磁碟,在節點 1 執行

A. [root@rac1 ~]# oracleasm createdisk OCR_VOTE /dev/sdb1

Writing disk header: done

Instantiating disk: done

[root@rac1 ~]# oracleasm createdisk DATA /dev/sdc1

Writing disk header: done

Instantiating disk: done

[root@rac1 ~]# oracleasm createdisk FRA /dev/sdd1

Writing disk header: done

Instantiating disk: done

B. [root@rac1 ~]# oracleasm scandisks

Reloading disk partitions: done

Cleaning any stale ASM disks...

Scanning system for ASM disks...

[root@rac1 ~]# oracleasm listdisks

DATA

FRA

OCR_VOTE

9.2.4節點 2 掃描識別 ASM 磁碟

[root@rac2 ~]# oracleasm scandisks

Reloading disk partitions: done

Cleaning any stale ASM disks...

Scanning system for ASM disks...

Instantiating disk "OCR_VOTE"

Instantiating disk "DATA"

Instantiating disk "FRA"

[root@rac2 ~]# oracleasm listdisks

DATA

FRA

OCR_VOTE

9.3 製作裸裝置

如果沒有asm安裝包 可以採用裸裝置的安裝方式 下面採用裸裝置的方式進行操作

[root@rac1 ~]# fdisk /dev/sdb 分割槽不需要格式化

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel

Building a new DOS disklabel. Changes will remain in memory only,

until you decide to write them. After that, of course, the previous

content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n

Command action

e extended

p primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-261, default 1):

Using default value 1

Last cylinder or +size or +sizeM or +sizeK (1-261, default 261):

Using default value 261

Command (m for help):

Command (m for help): w

The partition table has been altered!

開始用裸裝置命令製作裸裝置 虛擬機器環境下兩個節點都需要操作

9.3.1 製作裸裝置

[root@rac1 ~]# raw /dev/raw/raw1 /dev/sdb1

/dev/raw/raw1: bound to major 8, minor 17

[root@rac1 ~]# raw /dev/raw/raw2 /dev/sdc1

/dev/raw/raw2: bound to major 8, minor 33

[root@rac1 ~]# raw /dev/raw/raw3 /dev/sdd1

/dev/raw/raw3: bound to major 8, minor 49

[root@rac1 oracle]# raw -qa

/dev/raw/raw1: bound to major 8, minor 17

/dev/raw/raw2: bound to major 8, minor 33

/dev/raw/raw3: bound to major 8, minor 49

9.3.2 自動掛載檔案

[root@rac1 oracle]# vim /etc/rc.local

新增如下內容:

raw /dev/raw/raw1 /dev/sdb1

raw /dev/raw/raw2 /dev/sdc1

raw /dev/raw/raw3 /dev/sdd1

9.3.3 將裸裝置檔案和分割槽裝置檔案進行繫結

[root@rac1 oracle]# vim /etc/udev/rules.d/60-raw.rules

編輯檔案新增如下內容:

ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"

ACTION=="add", KERNEL=="sdc1", RUN+="/bin/raw /dev/raw/raw2 %N"

ACTION=="add", KERNEL=="sdd1", RUN+="/bin/raw /dev/raw/raw3 %N"

ACTION=="add",KERNEL=="raw[1-3]",OWNER=="grid",GROUP=="asmadmin",MODE=="660"

9.3.4重新啟動伺服器

reboot

start_udev 啟動裸裝置

十. 安裝 cvuqdisk 軟體包 (雙節點執行操作)

cvuqdisk軟體包用於發現共享儲存,在grid 安裝軟體的rpm目錄中,在所有節點執行;

[root@rac1 grid]# cd /wln/grid/rpm

[root@rac1 grid]# export CVUQDISK_GRP=oinstall

[root@rac1 rpm]# rpm -ivh cvuqdisk-1.0.7-1.rpm

Preparing... #################################### [100%]

1:cvuqdisk #################################### [100%

十一.安裝前檢查

[grid@rac1 grid]$ pwd

/wln/grid

[grid@rac1 grid]$ ./runcluvfy.sh stage -post hwos -n rac1,rac2 -verbose

十二. 安裝 Grid Infrastructure

[grid@rac1 grid]$ pwd

/wln/grid

[grid@rac1 grid]$ ./runInstaller

12.1 安裝 grid

選擇跳過更新

為叢集安裝

高階安裝

預設

Configure GNS 對鉤去掉,SCAN Name 選擇和/etc/hosts 中一致的名字

新增節點2

預設

選擇ASM儲存

建立磁碟組 選擇仲裁磁碟

配置 ASM System 口令(此處用 oracle 會報密碼不符合推薦標準的錯誤)

不使用智慧平臺管理介面

預設

使用預設的安裝位置

選擇清單目錄

檢驗,問題忽略即可

安裝即可

執行root指令碼

以 root 使用者按順序執行

1.[root@rac1 ~]# /u01/app/oraInventory/orainstRoot.sh

2.[root@rac2 ~]# /u01/app/oraInventory/orainstRoot.sh

3.[root@rac1 ~]# /u01/app/11.2.0/grid/root.sh 時間較長,耐心等待

4.[root@rac2 ~]# /u01/app/11.2.0/grid/root.sh

12.2 確認叢集軟體安裝成功

在grid使用者下 使用 crs_stat -t 與 crs_stat -t -v

[grid@rac1 ~] crs_stat -t

[grid@rac1 ~]crs_stat -t -v

十三.建立 ASM 磁碟組

本次任務將建立 2 個 asm 磁碟組,分別為:DATA,FRA。其中 DATA 將存放資料庫 檔案;FRA 存放閃迴文件. 可以選擇多個磁碟進行劃分組

如:有連個ams磁碟DATA,DATA1 可以選擇在建立磁碟組時選擇兩個

在 grid 使用者下,執行 asmca,啟動 asm 磁碟組建立嚮導

建立 FRA 磁碟組和 DATA 操作相同

確認 stat 為 2 of 2 時,退出 asmca

十四.安裝 oracle11gr2 database 軟體

以 oracle 使用者登入到節點一,切換到軟體安裝目錄,執行安裝

[oracle@rac1 database]$ ./runInstaller

跳過軟體更新

選擇雙節點

加入中文

預設

進入安裝過程自動進行安裝檢查 忽略安裝即可

執行指令碼以 root 使用者,在兩個節點上執行指令碼 執行順序: 1.rac1 2.rac

十五.建立資料庫

選擇 ASM 儲存方式,並選擇相應的磁碟組,

選擇閃回磁碟組,取消勾選歸檔,next

選擇 Sample Schemas(用於學習)

選擇自動記憶體管理,記憶體段 40%

十六.叢集管理

###########實際操作是發現root命令下沒有crsctl命令#############

16.1 RAC 的啟動與關閉

oracle rac 預設會開機自啟動,如需維護時可使用以下命令:

關閉:

crsctl stop cluster 停止本節點叢集服務

crsctl stop cluster –all 停止所有節點服務

開啟

crsctl start cluster 開啟本節點叢集服務

crsctl start cluster –all 開啟所有節點服務

注:以上命令需以 root 使用者執行

############################################################

16.2 RAC 檢查執行狀況

以 grid 使用者執行

[grid@rac1 ~]$ crsctl check cluster

CRS-4537: Cluster Ready Services is online

CRS-4529: Cluster Synchronization Services is online

CRS-4533: Event Manager is online

16.3 Database 檢查例狀態

[oracle@rac1 ~]$ srvctl status database -d prod

Instance rac1 is running on node rac1

Instance rac2 is running on node rac2

16.4 檢查節點應用狀態及配置

[oracle@rac1 ~]$ srvctl status nodeapps

VIP rac1-vip is enabled

VIP rac1-vip is running on node: rac1

VIP rac2-vip is enabled

VIP rac2-vip is running on node: rac2

Network is enabled

Network is running on node: rac1

Network is running on node: rac2

GSD is disabled

GSD is not running on node: rac1

GSD is not running on node: rac2

ONS is enabled

ONS daemon is running on node: rac1

ONS daemon is running on node: rac2

eONS is enabled

eONS daemon is running on node: rac1

eONS daemon is running on node: rac2

[oracle@rac1 ~]$ srvctl config nodeapps -a -g -s -l

-l option has been deprecated and will be ignored.

VIP exists.:rac1

VIP exists.: /rac1-vip/182.168.8.53/255.255.255.0/eth0

VIP exists.:rac2

VIP exists.: /rac2-vip/182.168.8.54/255.255.255.0/eth0 GSD exists.

ONS daemon exists. Local port 6100, remote port 6200

Name: LISTENER

Network: 1, Owner: grid

Home: <CRS home>

/u01/app/11.2.0/grid on node(s) rac2,rac1 End points: TCP:1521

16.5 檢視資料庫配置

[oracle@rac1 ~]$ srvctl config database -d prod -a

Database unique name: prod

Database name: prod

Oracle home: /u01/app/oracle/product/11.2.0/db_1

Oracle user: oracle

Spfile: +DATA/prod/spfileprod.ora

Domain:

Start options: open

Stop options: immediate

Database role: PRIMARY

Management policy: AUTOMATIC

Server pools: prod

Database instances: prod1,prod2

Disk Groups: DATA,FRA

Services:

Database is enabled

Database is administrator managed

16.6 檢查 ASM 狀態及配置

[oracle@rac1 ~]$ srvctl status asm

ASM is running on rac1,rac2

[oracle@rac1 ~]$ srvctl config asm -a

ASM home: /u01/app/11.2.0/grid

ASM listener: LISTENER

ASM is enabled.

16.7 檢查 TNS 的狀態及配置

[oracle@rac1 ~]$ srvctl status listener

Listener LISTENER is enabled

Listener LISTENER is running on node(s): rac1,rac2

[oracle@rac1 ~]$ srvctl config listener -a

Name: LISTENER

Network: 1, Owner: grid

Home: <CRS home>

/u01/app/11.2.0/grid on node(s) rac2,rac1

End points: TCP:1521

16.8 檢查 SCAN 的狀態及配置

[oracle@rac1 ~]$ srvctl status scan

SCAN VIP scan1 is enabled

SCAN VIP scan1 is running on node rac1

[oracle@rac1 ~]$ srvctl config scan

SCAN name: rac-scan, Network: 1/182.168.8.0/255.255.255.0/eth0

SCAN VIP name: scan1, IP: /rac-scan.xl.com/182.168.8.55

16.9 檢查 VIP 的狀態及配置

[oracle@rac1 ~]$ srvctl status vip -n rac1

VIP rac1-vip is enabled

VIP rac1-vip is running on node: rac1

[oracle@rac1 ~]$ srvctl status vip -n rac2

VIP rac2-vip is enabled

VIP rac2-vip is running on node: rac2

[oracle@rac1 ~]$ srvctl config vip -n rac1

VIP exists.:rac1

VIP exists.: /rac1-vip/182.168.8.53/255.255.255.0/eth0

[oracle@rac1 ~]$ srvctl config vip -n rac2

VIP exists.:rac2

VIP exists.: /rac2-vip/182.168.8.54/255.255.255.0/eth0

  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • css實現N宮格佈局