天天看點

Oracle10g RAC的安裝部署

安裝操作

author:Guoyj;

createdate:2012-05-05

一、安裝完Linux後修改VMware的配置檔案字尾帶.vmx:

disk.locking = "false"

diskLib.dataCacheMaxSize = "0"

diskLib.dataCacheMaxReadAheadSize = "0"

diskLib.DataCacheMinReadAheadSize = "0"

diskLib.dataCachePageSize = "4096"

diskLib.maxUnsyncedWrites = "0"

scsi1.sharedBus = "virtual"

scsi1:0.deviceType = "disk"

scsi1:1.deviceType = "disk"

scsi1:2.deviceType = "disk"

scsi1:3.deviceType = "disk"

scsi1:4.deviceType = "disk"

scsi1:5.deviceType = "disk"

*注:兩節點上的共享存儲檔案名的絕對路徑指向同一個共享磁盤!

二、網絡

1、IP位址規劃

公共IP位址

私有IP位址

虛拟IP位址

2、vi /etc/hosts

10.1.0.173 rac1

10.1.0.174 rac2

10.1.0.175 rac1-vip

10.1.0.176 rac2-vip

192.168.0.173 rac1-priv

192.168.0.174 rac2-priv

172.25.27.101 rac1

172.25.27.102 rac2

172.25.27.103 rac1-vip

172.25.27.104 rac2-vip

三、建使用者及目錄

[root@rac1 ~]# groupadd oinstall

[root@rac1 ~]# groupadd dba

[root@rac1 ~]# useradd -d /home/oracle -g oinstall -G dba oracle

[root@rac1 ~]# passwd oracle

[root@rac1 ~]# id oracle

[root@rac1 ~]# mkdir -p /u01/app/oracle/product/10.2.0

[root@rac1 ~]# chown -R oracle:oinstall /u01/app/oracle

[root@rac1 ~]# chmod -R 755 /u01/app/oracle

四、Oracle環境變量

export PS1="

/bin/hostname -s

-> "

export EDITOR=vi

export ORACLE_SID=rac2

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1

export ORA_CRS_HOME=$ORACLE_BASE/product/10.2.0/crs_1

export LD_LIBRARY_PATH=$ORACLE_HOME/lib

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

umask 022

source .bash_profile

五、系統變量

[root@rac1 ~]# vi /etc/sysctl.conf

kernel.shmall = 2097152

kernel.shmmax = 536870912

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

fs.file-max = 65536

net.ipv4.ip_local_port_range = 1024 65000

net.core.rmem_default = 1048576

net.core.rmem_max = 1048576

net.core.wmem_default = 262144

net.core.wmem_max = 262144

[root@node1 Server]# sysctl -p

六、存儲規劃

LUN1 512M ORC /dev/sdb1 --raw1

LUN2 512M VOTE /dev/sdc1 --raw2

LUN3 2G DATA1 /dev/sdd1 --asm1

LUN4 2G DATA2 /dev/sde1 --asm2

LUN3 2G ARCH1 /dev/sdf1 --asm3

LUN4 2G ARCH2 /dev/sdg1 --asm4

七、配置裸裝置

[root@node1 ~]# vi /etc/udev/rules.d/60-raw.rules

增加如下内容:參照/proc/partitions

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

ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="17",RUN+="/bin/raw /dev/raw/raw1 %M %m"

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

ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="33",RUN+="/bin/raw /dev/raw/raw2 %M %m"

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

ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="49",RUN+="/bin/raw /dev/raw/raw3 %M %m"

ACTION=="add", KERNEL=="/dev/sde1",RUN+="/bin/raw /dev/raw/raw4 %N"

ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="65",RUN+="/bin/raw /dev/raw/raw4 %M %m"

ACTION=="add", KERNEL=="/dev/sdf1",RUN+="/bin/raw /dev/raw/raw5 %N"

ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="81",RUN+="/bin/raw /dev/raw/raw5 %M %m"

ACTION=="add", KERNEL=="/dev/sdg1",RUN+="/bin/raw /dev/raw/raw6 %N"

ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="97",RUN+="/bin/raw /dev/raw/raw6 %M %m"

KERNEL=="raw1", WNER="root", GROUP="oinstall", MODE="640"

KERNEL=="raw[2-6]", WNER="oracle", GROUP="oinstall", MODE="660"

[root@rac1 ~]# start_udev

[root@rac1 ~]# ls /dev/raw/ -l

*注意:在第二節點沒有看到祼裝置,重新開機即可!

八、其他配置:

設定oracle使用的檔案數權限

[root@node1 ~]# vi /etc/security/limits.conf

oracle soft nproc 2047

oracle hard nproc 163844

oracle soft nofile 1024

oracle hard nofile 65536

修改安全限制

[root@rac1 ~]# vi /etc/pam.d/login

session required /lib/security/pam_limits.so

[root@rac1 ~]# vi /etc/profile

if [ $USER = "oracle" ]; then

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

ulimit -p 16384

ulimit -n 65536

else

ulimit -u 16384 -n 65536

fi

配置Hangcheck 計時器

[root@rac1 ~]# vi /etc/rc.local

modprobe hangcheck-timer hangcheck-tick=30 hangcheck_margin=180

要立即加載子產品,執行“modprobe -v hangcheck-timer”。

九、配置兩台機器的SSH信任:

(注意:在開始配置前,檢查/etc/hosts檔案,并使用Ping指令檢查一下各個節點是否可達)

在 rac1 上執行

rac1-> mkdir ~/.ssh

rac1-> chmod 700 ~/.ssh

rac1-> ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/export/home/oracle/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /export/home/oracle/.ssh/id_rsa.

Your public key has been saved in /export/home/oracle/.ssh/id_rsa.pub.

The key fingerprint is:

87:54:4f:92:ba:ed:7b:51:5d:1d:59:5b:f9:44:da:b6

rac1-> ssh-keygen -t dsa

Generating public/private dsa key pair.

Enter file in which to save the key (/export/home/oracle/.ssh/id_dsa):

Your identification has been saved in /export/home/oracle/.ssh/id_dsa.

Your public key has been saved in /export/home/oracle/.ssh/id_dsa.pub.

31:76:96:e6:fc:b7:25:04:fd:70:42:04:1f:fc:9a:26

在 rac2 上執行

rac2-> mkdir ~/.ssh

rac2-> chmod 700 ~/.ssh

rac2-> ssh-keygen -t rsa

29:5a:35:ac:0a:03:2c:38:22:3c:95:5d:68:aa:56:66

rac2-> ssh-keygen -t dsa

4c:b2:5a:8d:56:0f:dc:7b:bc:e0:cd:3b:8e:b9:5c:7c

rac1-> cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

rac1-> cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

rac1-> ssh rac2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

The authenticity of host 'rac2 (192.168.2.132)' can't be established.

RSA key fingerprint is 63:d3:52:d4:4d:e2:cb:ac:8d:4a:66:9f:f1:ab:28:1f.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added 'rac2,192.168.2.132' (RSA) to the list of known hosts.

password:

rac1-> ssh rac2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

rac1-> scp ~/.ssh/authorized_keys rac2:~/.ssh/authorized_keys

authorized_keys 100% 1716 1.7KB/s 00:00

在每個節點上測試連接配接。驗證當您再次運作以下指令時,系統是否不提示您輸入密碼。

ssh rac1 date

ssh rac2 date

ssh rac1-priv date

ssh rac2-priv date

十、安裝Cluster

1、可以先檢查環境,在Oracle使用者執行

[oracle@rac1 cluvfy]$ ./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -verbose

注意,此步執行時,最好兩台機器處于同一狀态下,/etc/hosts檔案中的内容最好一模一樣,連空格數、跳格數最好都一模一樣。

2、安裝到Specify Cluster Configuration時:

點選右下方的Add按鈕,依次輸入rac2的主機名、私有連接配接名和虛拟連接配接名

(注意此步,如果兩台機器的/etc/hosts配置不一樣,很可能會出現錯誤。注意都要有127.0.0.1,此IP隻能對應localhost.localdomain localhost)

3、設定網卡

會出現兩卡,将eth0設為公共的

4、OCR設定,選外部備援,位置/dev/raw/raw1

5、voting disk的存儲位置,外部備援,位置/dev/raw/raw2

6、安裝過程很快

7、運作要求的腳本:

在 rac1 上執行:/opt/ora10g/oraInventory/orainstRoot.sh;

在 rac2 上執行:/opt/ora10g/oraInventory/orainstRoot.sh;

在 rac1 上執行:/opt/ora10g/product/10.2.0/crs_1/root.sh;

在 rac2 上執行:/opt/ora10g/product/10.2.0/crs_1/root.sh;

8.VIP報錯(在第二個節點執行第二個腳本之前最好就要修改避免報錯)

報錯資訊:

/opt/ora10g/product/10.2.0/crs_1/jdk/jre//bin/java: error while loading shared libraries: libpthread.so.0:

cannot open shared object file: No such file or directory

那麼就在第二個節點修改:

[root@rac2 ~]# vi /home/oracle/product/10.2.1/crs_1/bin/vipca

if [ "$arch" = "i686" -o "$arch" = "ia64" -o "$arch" = "x86_64" ]

then

LD_ASSUME_KERNEL=2.4.19

export LD_ASSUME_KERNEL

unset LD_ASSUME_KERNEL #增加此内容

[root@rac2 ~]# vi /home/oracle/product/10.2.1/crs_1/bin/srvctl

8.在第二個節點執行第二個腳本,如有報錯如下操作

Error 0(Native: listNetInterfaces:[3])

[Error 0(Native: listNetInterfaces:[3])]

執行以下指令:

cd $CRS_ORA_HOME/bin

[root@rac2 bin]# ./oifcfg setif -global eth0/172.25.27.0:public

[root@rac2 bin]# ./oifcfg setif -global eth1/192.168.0.0:cluster_interconnect

[root@rac2 bin]# ./oifcfg getif

eth0 121.49.0.128 global public

eth2 192.168.1.0 global cluster_interconnect

[root@rac2 opt]# /opt/ora10g/product/10.2.0/crs_1/bin/vipca

9、安裝Oracle軟體

安裝完成後要執行一個腳本,應該在兩台機器分别執行。

10、ORACLE 10gR2 RAC更新至10

11、建立資料庫

(1)、注意在第二(或第三個)畫面中,選擇主機時要選兩台主機

(2)、輸入全局資料庫名時注意大、小寫

(3)、選擇在ASM中建立資料庫,ASM的參數檔案選擇使用PFILE(沒試過選擇SPFILE會怎樣)

(4)、建立ASM磁盤組 (建立ASM執行個體前會報告無效的監聽器,點OK就行了,它自己會建立一個)

(5)、選擇使用OMF,文本框中的内容不必改,直接下一步

(6)、把remote_listener參數注釋掉

11、配置網絡

所有檔案都已經自動配置好,隻需要在任意節點進入資料庫,釋出如下指令:

SQL> alter system set remote_listener=LISTENERS_RACDB sid='*';

System altered.

注意,LISTENERS_RACDB是在Tnsnames.ora中自動配置的端監聽器指令。

解決ORA-12545連接配接失敗問題

Oracle在文檔Note:364855.1:RAC Connection Redirected To Wrong Host/IP ORA-12545中進行了相信的描述。

并給出了解決方法:修改資料庫中的初始化參數LOCAL_LISTENER:

SQL> CONN AS SYSDBA輸入密碼: **已連接配接。

SQL> ALTER SYSTEM SET LOCAL_LISTENER = '(ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.198.224)(PORT = 1521))' SID = 'testrac1';

系統已更改。

SQL> ALTER SYSTEM SET LOCAL_LISTENER = '(ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.198.225)(PORT = 1521))' SID = 'testrac2';

vi tnsnames.ora

LISTENERS_NCDATA =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = nchost01-vip)(PORT = 1521))

(ADDRESS = (PROTOCOL = TCP)(HOST = nchost02-vip)(PORT = 1521))

)

NCDATA =

(DESCRIPTION =

(LOAD_BALANCE = yes)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = ncdata)

(FAILOVER_MODE =

(TYPE = SELECT)

(METHOD = BASIC)

(RETRIES = 180)

(DELAY = 5)

NCDATA2 =

(INSTANCE_NAME = ncdata2)

NCDATA1 =

(INSTANCE_NAME = ncdata1)

十一、添加服務、配置歸檔

1、添加服務

看這篇文檔:Oracle Clusterware and Oracle Real Application Clusters Administration and Deployment Guide

注意有三步:

(1)、建立服務:

srvctl add service -d RACDB -s test1 -r RACDB1,RACDB2 -a RACDB1,RACDB2 -P Preconnect

(2)、激活服務

這指令隻建立服務,在啟動建立的服務前,service_name參數不變。下面的指令啟動服務:

srvctl start service -d RACDB -s test1

(3)、在Tnsnames.ora中添加TEST2。

2、配置歸檔

修改參數:

alter system set log_archive_dest_1="location=+DG1";

停止所有執行個體,重新開機到Mount狀态:

srvctl stop instance -d RACDB -i RACDB1,RACDB2 -o immediate

srvctl start instance -d RACDB -i RACDB1,RACDB2 -o mount

在任一執行個體執行如下指令:

SQL> alter database archivelog;

Database altered.

在兩個執行個體中都執行alter database open

歸檔配置完成

3、配置閃回資料庫

(1)、設定兩個參數:

SQL> alter system set DB_RECOVERY_FILE_DEST_SIZE=500m;

SQL> alter system set db_recovery_file_dest='+DG1';

(2)、關閉并重新開機執行個體到Mount

[oracle@rac1 admin]$ srvctl stop instance -d RACDB -i RACDB1,RACDB2 -o immediate

注意,隻能在某一個節點上啟動到Mount狀态:

[oracle@rac1 admin]$ srvctl start instance -d RACDB -i RACDB1 -o mount

(3)、開啟閃回資料庫:

alter database flashback on;