天天看點

11g搭建RAC叢集

1 系統要求

1.1 硬體要求

硬體配置

硬體 要求

實體記憶體 >16GB

交換區 Swap空間大于或等于實體記憶體

/tmp大小 大于1000MB

Oracle安裝目錄檔案系統空間/home/db/oracle 20GB本地硬碟

grid安裝目錄檔案系統空間/home/db/grid 60GB本地硬碟

網絡 五塊網卡,public網卡2個進行雙網卡綁定,private網卡兩個,主備綁定;帶管網卡一個;public IP、private IP、VIP每節點一個,SCAN IP每套RAC一個;public IP、VIP、SCAN IP必須在同一網段,與private IP不得在同一網段;

磁盤 共享磁盤空間,空間磁盤的字元裝置名稱各節點必須一緻。初始至少配置設定5塊磁盤:3塊用于SYS磁盤組,1塊用于生産資料DATA磁盤組,1塊用于ARCH歸檔日志磁盤組。

時間伺服器 按中心要求配置連接配接時間伺服器

其他 必須安裝openSSH

2 作業系統配置要求

2.1 系統軟體包需求

查系統軟體包

rpm -q –queryformat “%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n” \

binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel glibc \

ksh libgcc libstdc++ libstdc++-devel libaio libaio-devel libgcc \

make sysstat unixODBC unixODBC-devel

11g搭建RAC叢集

修複:

yum install –y

2.2 配置yum 安裝缺失的軟體包

如果缺少某些軟體包,可以使用yum來安裝, 首先加載Linux安裝媒體到系統的挂載點,然後進行以下操作安裝軟體包,

  1. 編輯yum軟體包資料資訊

    vi /etc/yum.repos.d/local-server.repo

    [rhel]

    name=MyRPM

    baseurl=file:///mnt/cdrom/

    enabled=1

    gpgcheck=1

    gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release

2.移除/etc/yum.repos.d下其他的repo檔案,重新生成yum的緩存

yum clean all

yum makecache

3.安裝缺失的軟體包

yum install libaio-devel*

2.3 安裝cvuqdisk Package for Linux

Cvuqdisk軟體包在[Oracle軟體包解壓路徑]/grid/rpm路徑下可以找到,

[[email protected] rpm]# rpm -ivh ./cvuqdisk-1.0.9-1.rpm

Preparing… ########################################### [100%]

Using default group oinstall to install package

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

2.4 記憶體參數設定

2.4.1修改limits.conf 檔案

vi /etc/security/limits.conf

在檔案最下面加入以下内容:

add for oracle user add for grid user

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 65536

oracle hard nofile 65536

oracle soft stack 10240

oracle hard stack 32768

grid soft nproc 2047

grid hard nproc 16384

grid soft nofile 65536

grid hard nofile 65536

grid soft stack 10240

grid hard stack 32768

2.4.2添加pam_limits.so子產品

在檔案最下面加入以下内容:

vi /etc/pam.d/login

ORACLE SETTING

session required pam_limits.so

2.4.3 修改/etc/sysctl.conf檔案

檢查sysctl.conf檔案,在檔案最下面增加以下内容:

注意,如果系統sysctl.conf檔案中已經包含了下列參數的設定,建議在檔案中删除原行再增加新行,或者直接在該行上修改參數值。 在sysctl.conf中對同一參數的多次設定,最終的設定值取決于最後一次設定的參數值大小,但是多次設定參數值容易造成Oracle 安裝軟體在前置檢查時隻讀到其中一次的設定值,進而使Oracle的檢測值與實際存在偏差。同時此處也可不設定,而使用安裝過程中生成的runfixup腳本來設定這些值。

vm.swappiness = 0

vm.dirty_background_ratio = 3

vm.dirty_ratio = 80

vm.dirty_expire_centisecs = 500

vm.dirty_writeback_centisecs = 100

kernel.sem = 250 32000 100 128

fs.file-max needs to be set to at least 6815744 for the Oracle RAC Installation.

fs.file-max = 64252772

fs.aio-max-nr = 1048576

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

set to the appropriate private eth devices: bond1

net.ipv4.conf.bond1.rp_filter = 2

vm.nr_hugepages=126980

vm.hugetlb_shm_group=300

kernel.shmmax = 608551649280

kernel.shmall = 148572180

kernel.shmmni = 4096

vm.min_free_kbytes=1048576

11g搭建RAC叢集
11g搭建RAC叢集

使修改的核心參數生效

sysctl -p

2.5 增加使用者

groupadd -g 300 dba

groupadd -g 301 oinstall

groupadd -g 302 oper

groupadd -g 303 asmadmin

groupadd -g 304 asmdba

groupadd -g 305 asmoper

useradd -u 300 -g oinstall -G dba,oper,asmdba,asmoper -d /oracle/home oracle

useradd -u 301 -g oinstall -G asmadmin,asmdba,asmoper,dba -d /grid/home grid

使用者建立完成後,必須重新登入修改密碼(可與原密碼相同),否則稍後配置SSH時無法通過。

passwd oracle

passwd grid

2.6 增加資料庫安裝檔案系統

使用root使用者執行以下指令,

chown -R grid:oinstall /grid

chown -R oracle:oinstall /oracle

chmod -R 755 /grid

chmod -R 755 /oracle

2.7 設定Grid/Oracle使用者的環境變量

GRID

使用如下指令檢視目前shell 類型,

echo SHELL

根據使用者使用的預設shell類型,在shell環境變量設定參數檔案,

Bash shell ===〉. ./.bash_profile

Bourne or Korn shell ===〉. ./.profile

C shell ===〉~/.login

将以下段落加入到使用者home目錄下的環境變量參數檔案中的最下面,其中ORACLE_SID部分根據實際需求進行調整,例如節點一:ORACLE_SID=+ASM1,節點二:ORACLE_SID=+ASM2。

umask 022

export ORACLE_BASE=/grid/app/grid

export ORACLE_SID=+ASM1

export ORACLE_HOME=/grid/app/11.2.0/grid

export LD_LIBRARY_PATH= ORACLEHOME/lib: ORACLE_HOME/lib32

export LIBPATH= LDLIBRARYPATHexportPATH= ORACLE_HOME/bin: ORACLEHOME/OPatch:/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/java5/bin: PATH

export PS1=’ LOGNAME@′‘hostname‘:′ PWD”$ ’

if [ -t 0 ]; then

stty intr ^C

fi

umask 022

export ORACLE_BASE=/grid/app/grid

export ORACLE_SID=+ASM2

export ORACLE_HOME=/grid/app/11.2.0/grid

export LD_LIBRARY_PATH= ORACLEHOME/lib: ORACLE_HOME/lib32

export LIBPATH= LDLIBRARYPATHexportPATH= ORACLE_HOME/bin: ORACLEHOME/OPatch:/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/java5/bin: PATH

export PS1=’ LOGNAME@′‘hostname‘:′ PWD”$ ’

if [ -t 0 ]; then

stty intr ^C

fi

2.8 設定Oracle使用者的環境變量

将以下段落加入到使用者home目錄下的環境變量參數檔案中的最下面,其中ORACLE_SID部分根據實際需求進行調整,例如節點一:ORACLE_SID=testdb1,節點二:ORACLE_SID=testdb2。

umask 022

export ORACLE_BASE=/oracle/app/oracle

export ORACLE_HOME= ORACLEBASE/product/11.2.0/dbexportORACLESID=prdmdmn1exportPATH= ORACLE_HOME/bin: ORACLEHOME/OPatch:/usr/bin:/usr/sbin:/usr/ucb:/usr/java5/bin: PATH

export LD_LIBRARY_PATH= ORACLEHOME/lib: ORACLE_HOME/lib32

export LIBPATH= LDLIBRARYPATHexportPS1=′ [email protected]'`hostname`:' PWD” ’

alias bdump=’cd /oracle/app/oracle/diag/rdbms/prdmdmn/prdmdnn1/trace’

if [ -t 0 ]; then

stty intr ^C

fi

umask 022

export ORACLE_BASE=/oracle/app/oracle

export ORACLE_HOME= ORACLEBASE/product/11.2.0/dbexportORACLESID=prdmdmn2exportPATH= ORACLE_HOME/bin: ORACLEHOME/OPatch:/usr/bin:/usr/sbin:/usr/ucb:/usr/java5/bin: PATH

export LD_LIBRARY_PATH= ORACLEHOME/lib: ORACLE_HOME/lib32

export LIBPATH= LDLIBRARYPATHexportPS1=′ [email protected]'`hostname`:' PWD” ’

alias bdump=’cd /oracle/app/oracle/diag/rdbms/prdmdmn/prdmdnn2/trace’

if [ -t 0 ]; then

stty intr ^C

fi

2.9 修改/etc/hosts

注意/etc/hosts中必須包含内容如下:

127.0.0.1 localhost localhost .localdomain

RAC機器需要在/etc/hosts中配置各節點IP的别名,命名規則如下:

1) Public IP:别名直接使用主機名,即uname –a中傳回的機器名;

2) Private IP:别名為機器辨別名-pri{n},機器辨別名為不包括前三個字元的主機名(前三個字元用于辨別主機位置、用途),如主機名為bj1ocrdb01,機器辨別名為ocrdb01。n表示私有IP序号,1或2。11g要求配置兩個私有IP是以需要有序号辨別。;

3) Virtual IP:别名為機器辨別名-vip。

4) SCAN IP:别名為資料庫執行個體名-scan。

在/etc/hosts中還必須按增加相應注釋,辨別出網卡位址用途,示例如下:

127.0.0.1 localhost localhost.lenovo.com

public bond0

10.96.80.185 blmdmn1p blmdmn1p.lenovo.com

10.96.80.189 blmdmn2p blmdmn2p.lenovo.com

private bond1

10.96.81.9 blmdmn1p-priv blmdmn1p-priv.lenovo.com

10.96.81.10 blmdmn2p-priv blmdmn2p-priv.lenovo.com

virtual

10.96.80.186 blmdmn1p-vip blmdmn1p-vip.lenovo.com

10.96.80.187 blmdmn2p-vip blmdmn1p-vip.lenovo.com

scan

10.96.80.188 prdmdmn-scan prdmdmn-scan.lenovo.com

2.10 兩個節點上的主機名配置

确認兩個節點上的主機名,

vi /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=rhat02.testccb.com

2.11 關閉額外的服務

chkconfig sendmail off

chkconfig bluetooth off

chkconfig yum-updatesd off

chkconfig ip6tables off

chkconfig isdn off

chkconfig irda off

2.12 關閉SELINUX

在所有節點上編輯SELINUX軟體配置檔案,注釋掉其中兩行,同時新增一行配置内容,

vi /etc/selinux/config

SELINUX=enforcing #注釋掉

SELINUXTYPE=targeted #注釋掉

SELINUX=disabled #增加

編輯結束後退出,可以選擇重新開機機器使配置生效,也可以選擇使用root使用者運作以下指令立即關閉SELINUX,

setenforce 0

2.13 關閉iptables(防火牆)

使用root使用者運作以下指令關閉iptables,

service iptables stop

運作以下指令設定下次啟動系統不啟動iptables,

chkconfig iptables off

或者

chkconfig –level 35 iptables off

2.14 配置udev

1.磁盤劃分采用多路徑軟體

檢視盤配置設定情況

multipath –ll

修改聚合後的盤别名

vim /etc/multipath.conf,修改完成後,重新開機multipathd service

service multipathd restart

multipath –ll 确認alias是否修改

再将/etc/multipath.conf 拷貝節點2,重新開機multipathd service

配置檔案參見multipath_conf.txt檔案。

其中blacklist為本地盤,defaults為存儲屬性,multipath為盤别名

sys1-10:為OCR,VOTEING DISK磁盤組,(1-5使用,6-10為備用),聚合盤容量1GB

datadg1-40:為DATADG磁盤組使用盤,聚合盤容量400GB

archdg1-4:為ARCHDG磁盤組使用盤,聚合盤容量400GB

2.建立/etc/udev/rules.d/99-oracle-asmdevices.rules檔案

檔案參見99-oracle-asmdevices_rules.txt

執行start_udev

檢查:ls -lh /dev/dm-*

brw-rw—-. 1 grid asmadmin 253, 14 Aug 1 16:02 /dev/dm-14

brw-rw—-. 1 grid asmadmin 253, 15 Aug 1 16:02 /dev/dm-15

。。

multipath -F

multipath -v2

2.15 配置hugepage

1./etc/sysctl.conf添加如下内容

vm.nr_hugepages=126980 (Sga / Hugepagesize,Hugepagesize=cat /proc/meminfo,此處SGA=248G,hugepages=2048k,算出nr_hugepages=126980)

vm.hugetlb_shm_group=300 (insert oracle group ID here)

2./boot/grub/grub.conf (/etc/grub.conf)

kernel /vmlinuz- ro root=/dev/vg01/lv01 elevator=deadline hugepages=126980 rhgb quiet transparent_hugepage=never

3./etc/security/limits.conf

oracle soft memlock 260055040( Huge Pages*Hugepagesize)

oracle hard memlock 260055040

4.共享記憶體 (執行後删除檔案中較小的值)

mem= (free−b|awk′/Mem/print$2′)page= (getconf PAGE_SIZE)

all= (expr mem * 75 / 100 / page+1)max= (expr all∗ page)

echo “kernel.shmmax = max”>>/etc/sysctl.confecho“kernel.shmall= all” >> /etc/sysctl.conf

echo “kernel.shmmni = 4096” >> /etc/sysctl.conf

echo “vm.min_free_kbytes=1048576” >>/etc/sysctl.conf

sysctl -p

5.Semaphores

echo “kernel.sem = 250 32000 100 128” >> /etc/sysctl.conf

6.關閉相關服務

service tuned stop

chkconfig tuned off

service ktune stop

chkconfig ktune off

8.Enabling the deadline io scheduler at runtime via the /sys filesystem (RHEL 5, 6, 7)

echo‘deadline′>/sys/block/sda/queue/scheduler cat /sys/block/sda/queue/scheduler

noop anticipatory [deadline] cfq

2.16 配置SSH信任關系

開始配置前,在每個節點分别用重新打開的root使用者運作(一個節點配置成功後,就不能再執行該删除操作。重新打開的root使用者可以避免環境變量幹擾):

rm -rf /grid/home/.ssh

rm -rf /oracle/home/.ssh

從grid使用者su – oracle驗證oracle使用者密碼未過期;從oracle使用者su –grid驗證grid使用者密碼未過期;

進入grid安裝媒體目錄,在一個節點上執行:

sshsetup/sshUserSetup.sh -user grid -hosts “blmdmn1p blmdmn2p” -advanced -noPromptPassphrase

sshsetup/sshUserSetup.sh -user oracle -hosts “blmdmn1p blmdmn2p” -advanced no-PromptPassphrase

node1 node2分别為兩個節點hostname

根據提示要求輸入時直接回車,然後輸入4次指定使用者密碼,螢幕傳回:SSH verification complete.表明配置成功。如果多次提示輸入密碼,可能是使用者建立後未修改密碼,根據螢幕提示處理。

驗證辦法:

所有節點配置成功後,分别在各節點grid和oracle使用者下執行

ssh blmdmn2p date

ssh blmdmn1p date

ssh blmdmn2p-priv date

ssh blmdmn1p-priv date

能不需要密碼傳回時間即表示已經配置成功。如果兩節點的時間不一緻,說明時間伺服器配置有問題,聯系作業系統管理者解決

3 安裝前檢查

3.1 檔案系統檢查

确認磁盤大小滿足安裝需求

3.2 runcluvfy.sh

Grid的安裝盤目錄執行如下指令:

./runcluvfy.sh stage -pre crsinst -n ‘rac1,rac2’ -r 11gR2 -verbose >/tmp/runcluvfy.log

注:其他的檢查選項:

用oracle使用者在有安裝盤的node中檢查網絡連接配接配置是否正确

./runcluvfy.sh comp nodecon rac1, rac2 –verbose > /tmp/runcluvfy_network.log

用oracle使用者在安裝盤的node中檢查硬體和作業系統是否合适:

./runcluvfy.sh stage -post hwos -n rac1, rac2 –verbose > /tmp/runcluvfy_hw.log

用oracle使用者在有安裝盤的node中檢查有效的共享存儲:

./runcluvfy.sh comp ssa -n rac1, rac2 -s /dev/raw/raw1,/ /dev/raw/raw2,./ /dev/raw/raw3,/ /dev/raw/raw4,/ /dev/raw/raw5, /dev/raw/raw6,/ /dev/raw/raw7,/ /dev/raw/raw8

oracle使用者檢查是否滿足安裝clusterware:

./runcluvfy.sh stage -pre crsinst -n testaix1, testaix2

以oracle使用者檢查安裝oracle software的條件是否具備:

./runcluvfy.sh stage -pre dbinst -n testaix1, testaix2 -verbose

oracle使用者檢視目前安裝情況是否滿足RAC db的建立

./runcluvfy.sh stage -pre dbcfg -n testaix1, testaix2 -d $ORACLE_HOME –verbose

4 安裝Oracle Grid Infrastrue

将安裝媒體上傳至兩邊主機,安裝時僅需要前3個zip檔案,PSU更新檔及其他推薦的零星更新檔。

su–grid cd /tmp/oracle/11g/grid

$./runInstaller

4.1 選擇安裝選項

11g搭建RAC叢集

4.2 選擇安裝類型

11g搭建RAC叢集
11g搭建RAC叢集

4.3 選擇産品語言

11g搭建RAC叢集

添加簡體中文後,進入下一步。

選擇簡體中文的目的是為今後可能使用Grid Control避免字元顯示不一緻的問題。

4.4 指定叢集SCAN配置

11g搭建RAC叢集

Clustername命名:資料庫名-cls(不超過15個字元)

SCAN命名:資料庫名-scan(不超過15個字元)

4.5 叢集節點資訊

11g搭建RAC叢集

點選Add,輸入另側節點名和VIP名,測試SSH連通性後,下一步。此處注意命名要求中VIP名稱中的“-“是中劃線,不是下劃線”_”。

4.6 叢集網卡用途

11g搭建RAC叢集

4.7 指定OCR和VotingDisk存儲媒體

11g搭建RAC叢集

4.8 建立ASM磁盤組

11g搭建RAC叢集
11g搭建RAC叢集

4.9 指定ASM密碼

11g搭建RAC叢集
11g搭建RAC叢集

選擇”Yes”

11g搭建RAC叢集

4.10 指定ASM執行個體作業系統組

11g搭建RAC叢集

4.11 指定指定安裝路徑

11g搭建RAC叢集

4.12 指定oraInventory路徑

11g搭建RAC叢集

4.13 OUI安裝前檢查

11g搭建RAC叢集
11g搭建RAC叢集
11g搭建RAC叢集
11g搭建RAC叢集

4.14 OUI安裝備注

11g搭建RAC叢集

确定所有資訊無誤後,點”Finish”,OUI将開始安裝。

4.15 OUI安裝過程

11g搭建RAC叢集

該過程約需1小時。

結束後不必立即打PSU更新檔,待安裝完資料庫軟體後一起打。

4.16 提示運作腳本

11g搭建RAC叢集

注:rootinstRoot.sh可以兩個節點同時運作,但root.sh必須等一個節點選行完後才能在另一個節點運作,而且首先應該在安裝節點先運作。

4.17 安裝檢查并安裝完成

11g搭建RAC叢集

INS-20802錯誤可忽略

11g搭建RAC叢集

YES

11g搭建RAC叢集

5 安裝Oracel RDBMS 11gR2 On Clusters

su–oracle cd /tmp/oracle/11g/database

$./runInstaller

按照提示在兩個節點運作rootpre.sh

5.1 配置安全更新

11g搭建RAC叢集

取消選擇”I wish to receive security updates via My Oracle Support”,點”Next”,

出現警告時選”Yes”。

11g搭建RAC叢集

5.2 配置下載下傳軟體更新

11g搭建RAC叢集

選擇”Skip software updates”,點下一步,選擇“僅安裝資料庫”,點下一步。

11g搭建RAC叢集

5.3 選擇安裝選項

11g搭建RAC叢集

選擇 Oracle Real Application clusters database installation,并select all nodes;

5.4 選擇産品語言支援

11g搭建RAC叢集

添加簡體中文後,點下一步

5.5 選擇資料庫版本元件

11g搭建RAC叢集

5.6 選擇産品安裝目錄

11g搭建RAC叢集

5.7 作業系統組

11g搭建RAC叢集

5.8 執行安裝前檢查

11g搭建RAC叢集

5.9 安裝前檢查結果

11g搭建RAC叢集

5.10 安裝備注資訊

11g搭建RAC叢集

确認所有的資訊都符合預期,點Install開始安裝

5.11 安裝過程

11g搭建RAC叢集

5.12 運作root.sh

11g搭建RAC叢集

根據提示,以root身份運作root.sh。

5.13 安裝完成

11g搭建RAC叢集

6 打更新檔

6.1 更新使用最新的Opatch版本

分别在兩個節點都運作:

Grid使用者

cp -R ORACLEHOME/OPatch/tmp/OPatchgridunzipp6880880112000Linux−x86−64.zip−d ORACLE_HOME

ORACLEHOME/OPatch/opatchversionOracle使用者cp−R ORACLE_HOME/OPatch /tmp/OPatch_oracle

unzip p6880880_112000_Linux-x86-64.zip -d ORACLEHOME ORACLE_HOME/OPatch/opatch version

6.2 PSU更新檔

1.叢集PSU,在兩個節點分别順序執行(注意不能并行):

首先生成響應檔案,安裝更新檔時需要。

用grid使用者運作

$ORACLE_HOME/OPatch/ocm/bin/emocmrsp -output /tmp/psu.rsp

root使用者,保留grid環境變量(. /home/grid/.bash_profile),執行:

opatch auto /tmp/soft_oracle/21523375 -ocmrf /tmp/psu.rsp

/home/software

2.資料庫PSU(在一個節點執行即可):

當psu不包含dbpsu時,在oracle使用者環境變量下使用如下指令

opatch lsinventory|grep -i applied

沒有傳回記錄,證明未打上資料庫PSU更新檔,需要運作如下指令:

cd /oratools/sw/21352635

opatch prereq CheckConflictAgainstOHWithDetail -ph ./

opatch apply

7 配置ASM

Logis as grid

$asmca

7.1 檢視現有磁盤組資訊

Grid使用者asmca,點create可以建立新的磁盤組

7.2 建立磁盤組資訊

11g搭建RAC叢集
11g搭建RAC叢集
11g搭建RAC叢集
11g搭建RAC叢集
11g搭建RAC叢集
11g搭建RAC叢集

7.3 修改SYS磁盤組預設參數

使用grid使用者,sqlplus “/ as sysasm”

alter diskgroup OCRVOTE set attribute ‘compatible.rdbms’=’11.2’;

alter diskgroup OCRVOTE set attribute ‘compatible.asm’=’11.2’;

alter diskgroup DATA set attribute ‘compatible.rdbms’=’11.2’;

alter diskgroup DATA set attribute ‘compatible.asm’=’11.2’;

alter diskgroup ARCH set attribute ‘compatible.rdbms’=’11.2’;

alter diskgroup ARCH set attribute ‘compatible.asm’=’11.2’;

7.4 ASM參數調整

用下列方法調整ASM執行個體memory_target參數為460m,processes為1000。注意:調整這兩個參數需重新開機ASM執行個體生效,使用grid執行。

SQL> show parameter target

NAME TYPE VALUE

memory_max_target big integer 272M

memory_target big integer 272M

pga_aggregate_target big integer 0

sga_target big integer 0

alter system set memory_target =1088M scope=spfile sid=’*’;

alter system set sga_target =0 scope=spfile sid=’*’;

alter system set processes = 1000 scope=spfile sid=’*’;

select value from v$parameter where name=’max_dump_file_size’;

alter system set MAX_DUMP_FILE_SIZE=’100M’ sid=’*’ scope=both;

7.5 備份ASM的metadata

使用grid使用者

asmcmd

md_backup /grid/app/grid/dgbackup20160122

/home/u01/app/grid/ asmbackup_metadata20171115

8 DBCA建立資料庫

Login as oracle

$dbca

選擇建立RAC資料庫,選擇Custom Database。

8.1 Database Identification

11g搭建RAC叢集
11g搭建RAC叢集

輸入全局資料庫名和執行個體字首;

選擇所有節點;

11g搭建RAC叢集

8.2 Management Options

11g搭建RAC叢集

取消Configure Enterprise manager的選中。

8.3 Database Credentials

11g搭建RAC叢集

出現警告點YES

11g搭建RAC叢集

8.4 Database file Locations

11g搭建RAC叢集

8.5 Recover Configuration

11g搭建RAC叢集
11g搭建RAC叢集

取消設定快速閃回區,啟用歸檔。

在歸檔設定中,設定ARCHIVE 目的地為+ARCH,注意不要指定其他目錄,Oracle會自動安排目錄,否則會報錯。

8.6 Database Content

建議:根據需要選擇元件,無用元件不安裝,降低日後更新所需時間。

11g搭建RAC叢集

8.7 Initialization Parameters

主要設定為塊大小、字元集,根據實際需要設定,其他參數後期可調整。

11g搭建RAC叢集
11g搭建RAC叢集
11g搭建RAC叢集

8.8 Creation Options

11g搭建RAC叢集
11g搭建RAC叢集
11g搭建RAC叢集
11g搭建RAC叢集
11g搭建RAC叢集

8.9 Password Management

11g搭建RAC叢集

8.10 參數設定參考

參數名稱 建議值 備注

DB_CACHE_SIZE 根據應用确定。初始設定:

OLTP可用實體記憶體的30%;

OLAP可用實體記憶體的20%。

應根據壓力測試結果調整

SHARED_POOL_SIZE 根據應用确定。初始設定:可用實體記憶體的10%,同時512m-2G。(SGA較大記憶體系統中oracle會計算并提示最小值) 應根據壓力測試結果調整

LARGE_POOL_SIZE OLTP系統為256M,OLAP系統為512M 應根據壓力測試結果調整

SGA_MAX_SIZE 初始設定:

DB_CACHE_SIZE +SHARED_POOL_SIZE +LARGE_POOL_SIZE+200M(SGA較大系統中該值設定由于粒度變化而增大) 應根據壓力測試結果調整

SGA_TARGET 設定為0

DB_BLOCK_SIZE 8k、16k、32k;根據業務要求設定。

Spfile +DATA/{DB_NAME}/spfile{DB_NAME}.ora

PGA_AGGREGATE_TARGE 根據應用确定。初始設定:

OLTP=可用實體記憶體 * 16%

OLAP=可用實體記憶體 * 40% 應根據壓力測試結果調整

PROCESSES >=1000

(每個process需要額外消耗10M左右記憶體)

OPEN_CURSORS >=300

SESSION_CACHED_CURSOR 200

MAX_DUMP_FILE_SIZE

‘100M’ 必須為字元,不得為數字

PARALLEL_EXECUTION_MESSAGE_SIZE OLTP系統為16384,OLAP系統為32768

PARALLEL_MAX_SERVER 實體CPU*2

FAST_START_MTTR_TARGET 150

INSTANCE_GROUPS(RAC) node_01,node_both

node_02,node_both 僅RAC需要設定

PARALLEL_INSTANCE_GROUP(RAC) INSTANCE_GROUPS設定為node_01,node_both則PARALLEL INSTANCE_GROUP設定為node_01;

INSTANCE_GROUPS設定為node_02,node_both則PARALLEL INSTANCE_GROUP設定為node_02。 僅RAC需要設定

與DRM有關的隐藏參數(RAC) _gc_policy_time=0 僅RAC需要設定

REMOTE_LISTENER 設定為空 僅RAC需要設定

PARALLEL_FORCE_LOCAL 設定為true 僅RAC需要設定

_GC_DEFER_TIME 設定為3 僅RAC需要設定

EVENT “28401 TRACE NAME CONTEXT FOREVER, LEVEL 1”

_HIGHTHRESHOLD_UNDORETENTION 240000

_HIGH_PRIORITY_PROCESSES “LGWR|LMS*|VKTM”

Resource_limit true

Db_block_checking medium

Db_block_checksum full

LOG_CHECKPOINT_INTERVAL 150

BACKUP_TAPE_IO_SLAVES true

CELL_OFFLOAD_PROCESSING false

ARCHIVE_LAG_TARGET 1200

RESULT_CACHE_MAX_SIZE 0

DEFERRED_SEGMENT_CREATION false

_diag_hm_rc_enabled false

_optim_peek_user_binds false

_DATAFILE_WRITE_ERRORS_CRASH_INSTANCE false

_OPTIMIZER_USE_FEEDBACK false

_optimizer_distinct_agg_transform false

_enable_row_shipping false

9 附加修改内容

9.1 Sqlplus連接配接設定

為了顯示目前連接配接的使用者名、執行個體名,降低風險,要求分别在兩個節點以Oracle使用者、grid使用者編輯$ORACLE_HOME/sqlplus/admin/glogin.sql,在檔案末尾,添加如下行:

set linesize 132 pagesize 50

set sqlprompt “_user’@’_connect_identifier> ”

define_editor=vi

9.2 AWR快照儲存時間及間隔修改

快照儲存時間從1周增加為90天,快照間隔從1小時增加為半小時:

exec dbms_workload_repository.modify_snapshot_settings(interval=>30,retention=>90*24*60);

确認辦法:

SQL> select * from dba_hist_wr_control ;

DBID SNAP_INTERVAL        RETENTION            TOPNSQL
           

776098800 +00000 00:30:00.0 +00040 00:00:00.0 DEFAULT

9.3 初始統計資訊收集

實際運作中發現如果不收集固定對象統計資訊會影響patrol監控SQL的執行效率,在使用者對象建立前運作:

exec dbms_stats.GATHER_DATABASE_STATS(no_invalidate=>false);

exec dbms_stats.GATHER_FIXED_OBJECTS_STATS(no_invalidate=>false);

exec dbms_stats.GATHER_SYSTEM_STATS (gathering_mode=>’NOWORKLOAD’);

9.4 OCM自動化配置工具安裝(11.2.0.4應該不用了-待觀察)

該工具有助于出現問題時為Oracle背景工程師全面送出系統資訊,11.2.0.3版本自動定時運作時會報錯,需要手工安裝,兩個節點分别執行:

export ORACLE_CONFIG_HOME= ORACLEHOME ORACLE_HOME/ccr/bin/setupCCR -d

$ORACLE_HOME/ccr/admin/scripts/installCCRSQL.sh collectconfig -s

9.5 預設profile設定

ALTER PROFILE DEFAULT limit

FAILED_LOGIN_ATTEMPTS UNLIMITED

PASSWORD_LIFE_TIME UNLIMITED

PASSWORD_VERIFY_FUNCTION verify_function;

9.6 最優化配置參考

可以參考設定以下配置:

BEGIN

dbms_auto_task_admin.disable(

client_name => ‘sql tuning advisor’,

operation => NULL,

window_name => NULL);

END;

/

BEGIN

dbms_auto_task_admin.disable(

client_name => ‘auto space advisor’,

operation => NULL,

window_name => NULL);

END;

/

alter system set ARCHIVE_LAG_TARGET=900 sid=’*’ scope=both;

alter system set EVENT=”28401 TRACE NAME CONTEXT FOREVER, LEVEL 1” scope=spfile sid=’*’;

alter system set parallel_force_local=true scope=spfile sid=’*’;

alter system set “_gc_defer_time”=3 scope=spfile sid=’*’;

alter system set “_highthreshold_undoretention”=240000 scope=both sid=’*’;

alter system set “_HIGH_PRIORITY_PROCESSES”=”LGWR|LMS*|VKTM” scope=spfile sid=’*’;

alter system set “_OPTIMIZER_USE_FEEDBACK”=FALSE scope=spfile sid=’*’;

10 其他設定

10.1 審計

10.1.1開啟審計功能

啟用資料庫審計功能,修改參數audit_trail=db。對有sysdba角色使用者進行審計,需要設定AUDIT_SYS_OPERATIONS=true:

su - oracle

sqlplus / as sysdba

alter system set audit_trail= db, extended scope=spfile;

alter system set AUDIT_SYS_OPERATIONS=true scope=spfile;

重新開機資料庫

su - oracle

sqlplus / as sysdba

shutdown immediate;

startup;

10.1.2制定審計内容

對于sys使用者的審計資訊存放在audit_file_dest指定的目錄下,其他使用者資訊存放在表sys.aud$中。

審計所有連接配接

su - oracle

sqlplus / as sysdba

audit connect;

審計修改對象的DDL資訊

su - oracle

sqlplus / as sysdba

audit connect;

audit table;

audit index;

audit procedure;

audit trigger;

audit system grant;

audit user;

audit role;

audit grant any role;

從試圖sys.dba_stmt_audit_opts中檢視審計政策。從DBA_AUDIT_TRAIL中檢視審計的資訊。

10.1.3表aud 表空間管理建立表空間存放審計表,減輕系統表空間的壓力。createtablespaceaudittbsdatafile‘+DATADG′size10Gautoextendoff;altertablesys.aud move tablespace audittbs;

alter table sys.aud movelob(sqlbind)storeas(tablespaceaudittbs);altertablesys.aud move lob(SQLTEXT) store as( tablespace audittbs);

–alter index sys.I_AUD1 rebuild tablespace audittbs;

10.1.4 sysdba 遠端連接配接管理

參數REMOTE_LOGIN_PASSWORDFILE預設值是exclusive,這時候資料庫可以使用密碼檔案連接配接到資料庫,即使用者可以使用sysdba角色遠端連到Oracle資料庫。REMOTE_LOGIN_PASSWORDFILE=none時候,不能使用Oracle的密碼檔案,使用者不能使用sysdba不能通過listener遠端連接配接到資料庫:

alter system set REMOTE_LOGIN_PASSWORDFILE=none scope=spfile;

10.2 安全

10.2.1密碼複雜度

建立密碼複雜度函數verify_function,要求:

使用者名與密碼不能一緻

密碼長度大于8位

應至少包含一個數字,一個字母,一個特殊字元

至少有3個字元與上一次密碼不同

密碼錯誤嘗試次數為5次

密碼生命周期為90天

密碼變更寬限期為15天

CREATE OR REPLACE FUNCTION verify_function

(username varchar2,

password varchar2,

old_password varchar2)

RETURN boolean IS

n boolean;

m integer;

differ integer;

isdigit boolean;

ischar boolean;

ispunct boolean;

digitarray varchar2(20);

punctarray varchar2(25);

chararray varchar2(52);

BEGIN

digitarray:= ‘0123456789’;

chararray:= ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’;

punctarray:=’!”#$%&()“*+,-/:;<=>?_’;

– Check if the password is same as the username

IF NLS_LOWER(password) = NLS_LOWER(username) THEN

raise_application_error(-20001, ‘Password same as or similar to user’);

END IF;

– Check for the minimum length of the password

IF length(password) < 4 THEN

raise_application_error(-20002, ‘Password length less than 4’);

END IF;

– Check if the password is too simple. A dictionary of words may be

– maintained and a check may be made so as not to allow the words

– that are too simple for the password.

IF NLS_LOWER(password) IN (‘welcome’, ‘database’, ‘account’, ‘user’, ‘password’, ‘oracle’, ‘computer’, ‘abcd’) THEN

raise_application_error(-20002, ‘Password too simple’);

END IF;

– Check if the password contains at least one letter, one digit and one

– punctuation mark.

– 1. Check for the digit

isdigit:=FALSE;

m := length(password);

FOR i IN 1..10 LOOP

FOR j IN 1..m LOOP

IF substr(password,j,1) = substr(digitarray,i,1) THEN

isdigit:=TRUE;

GOTO findchar;

END IF;

END LOOP;

END LOOP;

IF isdigit = FALSE THEN

raise_application_error(-20003, ‘Password should contain at least one digit, one character and one punctuation’);

END IF;

– 2. Check for the character

<>

ischar:=FALSE;

FOR i IN 1..length(chararray) LOOP

FOR j IN 1..m LOOP

IF substr(password,j,1) = substr(chararray,i,1) THEN

ischar:=TRUE;

GOTO findpunct;

END IF;

END LOOP;

END LOOP;

IF ischar = FALSE THEN

raise_application_error(-20003, ‘Password should contain at least one \

digit, one character and one punctuation’);

END IF;

– 3. Check for the punctuation

<>

ispunct:=FALSE;

FOR i IN 1..length(punctarray) LOOP

FOR j IN 1..m LOOP

IF substr(password,j,1) = substr(punctarray,i,1) THEN

ispunct:=TRUE;

GOTO endsearch;

END IF;

END LOOP;

END LOOP;

IF ispunct = FALSE THEN

raise_application_error(-20003, ‘Password should contain at least one \

digit, one character and one punctuation’);

END IF;

<>

– Check if the password differs from the previous password by at least

– 3 letters

IF old_password IS NOT NULL THEN

differ := length(old_password) - length(password);

IF abs(differ) < 3 THEN
   IF length(password) < length(old_password) THEN
     m := length(password);
   ELSE
     m := length(old_password);
   END IF;

   differ := abs(differ);
   FOR i IN 1..m LOOP
     IF substr(password,i,1) != substr(old_password,i,1) THEN
       differ := differ + 1;
     END IF;
   END LOOP;

   IF differ < 3 THEN
     raise_application_error(-20004, 'Password should differ by at \
     least 3 characters');
   END IF;
 END IF;
           

END IF;

– Everything is fine; return TRUE ;

RETURN(TRUE);

END;

/

10.2.2建立應用profile

建立應用profile(app_profile),所有應用ID均采用此政策。

CREATE PROFILE APP_PROFILE

LIMIT CPU_PER_SESSION DEFAULT CPU_PER_CALL DEFAULT

CONNECT_TIME DEFAULT IDLE_TIME DEFAULT SESSIONS_PER_USER

DEFAULT LOGICAL_READS_PER_SESSION DEFAULT

LOGICAL_READS_PER_CALL DEFAULT PRIVATE_SGA DEFAULT

COMPOSITE_LIMIT DEFAULT FAILED_LOGIN_ATTEMPTS 5

PASSWORD_LOCK_TIME DEFAULT PASSWORD_GRACE_TIME 15

PASSWORD_LIFE_TIME UNLIMITED PASSWORD_REUSE_MAX 5

PASSWORD_REUSE_TIME DEFAULT PASSWORD_VERIFY_FUNCTION

VERIFY_FUNCTION;

10.2.3 清理預設使用者的預設密碼

alter user APEX_040000 identified by system2009;

alter user APPOQSSYS identified by system2009;

alter user CTXSYS identified by system2009;

alter user DBSNMP identified by system2009;

alter user DIP identified by system2009;

alter user EXFSYS identified by system2009;

alter user MDDATA identified by system2009;

alter user MDSYS identified by system2009;

alter user LBACSYS identified by system2009;

alter user OLAPSYS identified by system2009;

alter user ORACLE_OCM identified by system2009;

alter user ORDDATA identified by system2009;

alter user ORDSYS identified by system2009;

alter user OUTLN identified by system2009;

alter user OWBSYS_AUDIT identified by system2009;

alter user OWBSYS identified by system2009;

alter user SI_INFORMTN_SCHEMA identified by system2009;

alter user SPATIAL_CSW_ADMIN_USR identified by system2009;

alter user WK_TEST identified by system2009;

alter user WKPROXY identified by system2009;

alter user WKSYS identified by system2009;

alter user WMSYS identified by system2009;

alter user XDB identified by system2009;

10.3 統計資訊

10.3.1系統自動收集

檢視統計資訊收集方式

Select window_name,window_next_time,optimizer_stats ,aa.WINDOW_ACTIVE,aa.

SEGMENT_ADVISOR,aa.AUTOTASK_STATUS,

aa.OPTIMIZER_STATS

from dba_autotask_window_clients aa

order by window_next_time ;

關閉系統自動收集-(暫不實行除非業務要求)

BEGIN

DBMS_AUTO_TASK_ADMIN.DISABLE(

client_name => ‘auto optimizer stats collection’,

operation => NULL,

window_name => NULL);

END;

/

啟動系統自動收集-參考

BEGIN

DBMS_AUTO_TASK_ADMIN.ENABLE(

client_name => ‘auto optimizer stats collection’,

operation => NULL,

window_name => NULL);

END;

/

10.3.2手動收集

執行包函數收集

exec sys.dbms_stats.gather_schema_stats(ownname=>’schema’,options=>’gather stale’,estimate_percent => 10,method_opt => ‘FOR ALL INDEXED COLUMNS’,degree => 4,cascade => TRUE);

腳本收集

$ORACLE_HOME/bin/sqlplus -S / as sysdba <