從Oracle 10g開始,Oracle 開始推廣ASM的使用,到了11g,RAC 集群已經必須使用ASM,所以對ASM的掌握程度也決定RAC的運維水平,這篇Blog 演示 Oracle12c 基於ASM 的單實例的的環境搭建。
這樣即可以玩12c 的ASM,又不需要起2個集群,從而方便學習。具體環境搭建步驟如下。
binutils-2.20.51.0.2-5.11.el6 (x86_64)
glibc-2.12-1.7.el6 (x86_64)
libgcc-4.4.4-13.el6 (x86_64)
libstdc++-4.4.4-13.el6 (x86_64)
libaio-0.3.107-10.el6 (x86_64)
libXext-1.1 (x86_64)
libXtst-1.0.99.2 (x86_64)
libX11-1.3 (x86_64)
libXau-1.0.5 (x86_64)
libxcb-1.5 (x86_64)
libXi-1.3 (x86_64)
make-3.81-19.el6
sysstat-9.0.4-11.el6 (x86_64)
compat-libcap1-1.10-1 (x86_64)
compat-libstdc++-33-3.2.3-69.el6 (x86_64)
gcc-4.4.4-13.el6 (x86_64)
gcc-c++-4.4.4-13.el6 (x86_64)
glibc-devel-2.12-1.7.el6 (x86_64)
ksh <== 任何版本的 ksh 都可以。
libstdc++-devel-4.4.4-13.el6 (x86_64)
libaio-devel-0.3.107-10.el6 (x86_64)
compat-libstdc++-33-3.2.3-69.el6 (i686)
glibc-2.12-1.7.el6 (i686)
glibc-devel-2.12-1.7.el6 (i686)
libgcc-4.4.4-13.el6 (i686)
libstdc++-4.4.4-13.el6 (i686)
libstdc++-devel-4.4.4-13.el6 (i686)
libaio-0.3.107-10.el6 (i686)
libaio-devel-0.3.107-10.el6 (i686)
libXext-1.1 (i686)
libXtst-1.0.99.2 (i686)
libX11-1.3 (i686)
libXau-1.0.5 (i686)
libxcb-1.5 (i686)
libXi-1.3 (i686)
創建6個3G 的disk,這個直接使用VirtualBox命令來創建。 創建之前需要先關閉虛擬機。
用如下腳本獲取綁定腳本:
for i in b c d e f g;
do
echo"KERNEL==\"sd*\", BUS==\"scsi\",PROGRAM==\"/sbin/scsi_id -g -u /dev/\$name\", RESULT==\"`/sbin/scsi_id -g -u/dev/sd$i`\", NAME=\"12casm-disk$i\", OWNER=\"grid\",GROUP=\"asmadmin\", MODE=\"0660\""
done
KERNEL=="sd*",BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u /dev/$name",RESULT=="1ATA_VBOX_HARDDISK_VB626d9087-8bf68e7e",NAME="12casm-diskb", OWNER="grid",GROUP="asmadmin", MODE="0660"
KERNEL=="sd*",BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u /dev/$name",RESULT=="1ATA_VBOX_HARDDISK_VBf5a8c435-19b9adf9",NAME="12casm-diskc", OWNER="grid",GROUP="asmadmin", MODE="0660"
KERNEL=="sd*",BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u /dev/$name",RESULT=="1ATA_VBOX_HARDDISK_VB13895f62-318c2cb4",NAME="12casm-diskd", OWNER="grid",GROUP="asmadmin", MODE="0660"
KERNEL=="sd*",BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u /dev/$name",RESULT=="1ATA_VBOX_HARDDISK_VB5049991a-741b6a85",NAME="12casm-diske", OWNER="grid",GROUP="asmadmin", MODE="0660"
KERNEL=="sd*",BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u /dev/$name",RESULT=="1ATA_VBOX_HARDDISK_VB6ad43135-cac8a708",NAME="12casm-diskf", OWNER="grid",GROUP="asmadmin", MODE="0660"
KERNEL=="sd*",BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u /dev/$name",RESULT=="1ATA_VBOX_HARDDISK_VBe6fb6130-2a921dde",NAME="12casm-diskg", OWNER="grid",GROUP="asmadmin", MODE="0660"
將產生的結果添加到/etc/udev/rules.d/99-oracle-asmdevices.rules文件。
--重啟udev:
[root@12cAsm dave]# start_udev
Starting udev: [ OK ]
[root@12cAsm dave]#
--查看設備:
[root@12cAsm dave]# ll /dev/12casm*
brw-rw----. 1 grid asmadmin 8, 16 Nov 2900:35 /dev/12casm-diskb
brw-rw----. 1 grid asmadmin 8, 32 Nov 2900:35 /dev/12casm-diskc
brw-rw----. 1 grid asmadmin 8, 48 Nov 2900:35 /dev/12casm-diskd
brw-rw----. 1 grid asmadmin 8, 64 Nov 2900:35 /dev/12casm-diske
brw-rw----. 1 grid asmadmin 8, 80 Nov 2900:35 /dev/12casm-diskf
brw-rw----. 1 grid asmadmin 8, 96 Nov 2900:35 /dev/12casm-diskg
[root@12cAsm dave]#
至此配置結束,在ASM的配置中,ASM_DISKSTRING參數指向'/dev/asm-disk*'就可以了。
關閉防火牆:
service iptables status
service iptables stop
chkconfig iptables off
chkconfig iptables --list
設置/etc/selinux/config 文件,將SELINUX設置為disabled。
mkdir -p /u01/grid
mkdir -p /u01/app/grid/12.1.0
chown -R grid:oinstall /u01
mkdir -p /u01/app/oracle/12.1.0/db_1
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01
groupadd -g 1000 oinstall
groupadd -g 1200 asmadmin
groupadd -g 1201 asmdba
groupadd -g 1202 asmoper
groupadd -g 1300 dba
groupadd -g 1301 oper
useradd -m -u 1100 -g oinstall -Gasmadmin,asmdba,asmoper,dba -d /home/grid -s /bin/bash grid
useradd -m -u 1101 -g oinstall -Gdba,oper,asmdba -d /home/oracle -s /bin/bash oracle
確認用戶信息:
[root@rac1 ~]# id oracle
uid=502(oracle) gid=507(oinstall)groups=507(oinstall),502(dba),503(oper),506(asmdba)
[root@rac1 ~]# id grid
uid=1100(grid) gid=507(oinstall)groups=507(oinstall),504(asmadmin),506(asmdba),505(asmoper)
修改密碼:
passwd oracle
passwd grid
配置環境變量
--Grid用戶
修改grid用戶的.bash_profile.注意每個節點的不同內容:
export ORACLE_SID=+ASM
export ORACLE_BASE=/u01/grid
export ORACLE_HOME=/u01/app/grid/12.1.0
exportPATH=$ORACLE_HOME/bin:$PATH:/usr/local/bin/:.
export TEMP=/tmp
export TMP=/tmp
export TMPDIR=/tmp
umask 022
--Oracle 用戶
修改oracle 用戶的.bash_profile,注意每個節點的不同內容:
ORACLE_SID=dave;export ORACLE_SID
ORACLE_UNQNAME=dave;export ORACLE_UNQNAME
JAVA_HOME=/usr/local/java; export JAVA_HOME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/12.1.0/db_1; exportORACLE_HOME
ORACLE_TERM=xterm; export ORACLE_TERM
NLS_DATE_FORMAT="YYYY:MM:DD HH24:MI:SS";export NLS_DATE_FORMAT
NLS_LANG=american_america.ZHS16GBK; exportNLS_LANG
TNS_ADMIN=$ORACLE_HOME/network/admin; exportTNS_ADMIN
ORA_NLS11=$ORACLE_HOME/nls/data; export ORA_NLS11
PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin:$ORA_CRS_HOME/bin
PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export CLASSPATH
THREADS_FLAG=native; export THREADS_FLAG
export TEMP=/tmp
export TMPDIR=/tmp
umask 022