ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Oracle 11g 11.2.0.4 RAC ASM 설치 (Last Ver.) - 1. 서버 세팅
    ORACLE/Installation 2016.08.04 21:28

    오라클 리눅스 6 버전 64bit 기준 (영문)

     - 영문으로 설치하는 이유: 리눅스의 한글 시스템은 UTF-8 이기 때문에 EUC-KR로 DB를 세팅할 경우 로그에 나오는 한글이 전부 깨짐는 현상 발생. UTF-8로 세팅할 경우 한글로 설치 해도 무방.


    ★ 주의 - 오라클 11g 11.2.0.4 RAC 설치시 서버의 HOSTNAME이 대문자 일경우 인스톨러에서 SSH 통신이 되지 않아서 설치가 불가능하다. 


    설치 환경 VMWare 12

    네트워크는 Bridged 와 Host Only

    HDD 120GB (/, swap, /app)



    리눅스 설치시 설치 패키지


        Base System > Base
        Base System > Client management tools
        Base System > Compatibility libraries
        Base System > Hardware monitoring utilities
        Base System > Large Systems Performance
        Base System > Network file system client
        Base System > Performance Tools
        Base System > Perl Support
        Servers > Server Platform
        Servers > System administration tools
        Desktops > Desktop
        Desktops > Desktop Platform
        Desktops > Fonts
        Desktops > General Purpose Desktop
        Desktops > Graphical Administration Tools
        Desktops > Input Methods
        Desktops > X Window System
        Applications > Internet Browser
        Development > Additional Development
        Development > Development Tools


    리눅스 설치 후 설정


    필수 패키지 설치

    # yum -y install libaio-devel ksh libstdc++ elfutils-libelf elfutils-libelf-devel libtool-ltdl ncurses readline unixODBC


    OS 업데이트

    # yum -y update


    6.7 버전은 3.8 커널 탑재  업데이트시  커널이 올라가는데 4.1 버전까지 올라간다.

    6.8 버전은 처음부터 4.1 버전이 탑재 되어 있다.

    ACFS 모듈은 3.8 버전까지만 지원한다.


    # vi /etc/sysctl.conf

    fs.aio-max-nr = 1048576
    fs.file-max = 6815744
    #kernel.shmall = 2097152 
    #kernel.shmmax = 1054504960
    kernel.shmmni = 4096
    # semaphores: semmsl, semmns, semopm, semmni
    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

    # sysctl -p


    # vi /etc/security/limits.conf

    oracle              soft    nproc   2047
    oracle              hard    nproc   16384
    oracle              soft    nofile  4096
    oracle              hard    nofile  65536
    oracle              soft    stack   10240

    # vi /etc/pam.d/login

    session    required     pam_limits.so

    # rpm -Uvh cvuqdisk*

     (Grid 설치 디렉토리의 압축을 풀면 RPM 폴더에 있음)


    그룹 및 유저 추가

    groupadd -g 1000 oinstall
    groupadd -g 1200 dba
    useradd -u 1100 -g oinstall -G dba oracle
    passwd oracle

    ※ Oracle이 제공하는 11.2.0.3이상 버전의 설치 메뉴얼에 따르면 따로 Grid 계정을 생성하지 않는것으로 변경했다.


    # passwd oracle


    # vi /etc/hosts

    127.0.0.1       localhost.localdomain   localhost
    # Public
    192.168.0.111   ol6-112-rac1.localdomain        ol6-112-rac1
    192.168.0.112   ol6-112-rac2.localdomain        ol6-112-rac2
    # Private
    192.168.1.111   ol6-112-rac1-priv.localdomain   ol6-112-rac1-priv
    192.168.1.112   ol6-112-rac2-priv.localdomain   ol6-112-rac2-priv
    # Virtual
    192.168.0.113   ol6-112-rac1-vip.localdomain    ol6-112-rac1-vip
    192.168.0.114   ol6-112-rac2-vip.localdomain    ol6-112-rac2-vip
    # SCAN
    192.168.0.115   ol6-112-scan.localdomain ol6-112-scan
    192.168.0.116   ol6-112-scan.localdomain ol6-112-scan
    192.168.0.117   ol6-112-scan.localdomain ol6-112-scan

    ※ IP 대역은 각자의 설정에 맞게 넣는다.

    ※ 11g는 SCAN IP를 통해 로드밸런싱 및 접속를 할 수 있다. SCAN 1개이상 설정 할 수 있다.


    # vi /etc/security/limits.d/90-nproc.conf

    # 이렇게 되어 있는 부분을 * soft nproc 1024 # 이렇게 고친다. * - nproc 16384

    ※ 왜 고치는지는 MOS Note [ID 1487773.1] 참조


    # vi /etc/selinux/config

    SELINUX=permissive


    리눅스 방화벽 중지

    # service iptables stop
    # chkconfig iptables off


    # vi /etc/sysconfig/ntpd

    OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid"


    ORACLE 설치 폴더 생성

    mkdir -p /app/grid/11.2.0.4/grid mkdir -p /app/oracle/product/11.2.0.4/db_1 chown -R oracle:oinstall /app chmod -R 775 /app/

    ※ 고객사가 원하는 폴더 혹은 자신이 원하는 (관리하기 쉬운) 폴더로 생성.



    ORACLE 계정 Profile 수정


    # su - oracle

    $ vi .bash_profile

    # Oracle Settings TMP=/tmp; export TMP TMPDIR=$TMP; export TMPDIR ORACLE_HOSTNAME=ol6-112-rac1.localdomain; export ORACLE_HOSTNAME ORACLE_UNQNAME=RAC; export ORACLE_UNQNAME ORACLE_BASE=/app/oracle; export ORACLE_BASE GRID_HOME=/app/grid/11.2.0.4/grid; export GRID_HOME DB_HOME=$ORACLE_BASE/product/11.2.0.4/db_1; export DB_HOME ORACLE_HOME=$DB_HOME; export ORACLE_HOME ORACLE_SID=RAC1; export ORACLE_SID ORACLE_TERM=xterm; export ORACLE_TERM BASE_PATH=/usr/sbin:$PATH; export BASE_PATH PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH alias grid_env='. /home/oracle/grid_env' alias db_env='. /home/oracle/db_env'

    $ vi grid_env

    ORACLE_SID=+ASM1; export ORACLE_SID
    ORACLE_HOME=$GRID_HOME; export ORACLE_HOME
    PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH
    
    LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
    CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

    $ vi db_env

    ORACLE_SID=RAC1; export ORACLE_SID
    ORACLE_HOME=$DB_HOME; export ORACLE_HOME
    PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH
    
    LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
    CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

    ※ Grid 계정을 따로 생성해주지 않고 oracle 계정으로 DB와 ASM 모두 관리한다.

     - Alias를 통해 grid_env, db_env 명령을 통해 DB와 ASM 인스턴스 간의 선택을 할 수 있다..


    서버 재구동하여 모든 설정 적용

    # shutdown -r now


    VMware에 HDD Disk를 공유 볼륨에 생성. (생성 방법은 http://db.necoaki.net/49 포스팅 참조)



    ASM Disk 그룹은 크게 4가지로 나뉜다.


    OCR과 VOTING DISK 정보가 들어있는 OCRVOTE

    DATA가 들어가는 DATA

    복구 영역이 들어가는 RECO (FRA)

    Archive log가 저장되는 ARCH


    여기에 들어갈 Disk를 자신이 선택하여 직접 생성해주면 된다.

    OCRVOTE - 3GB

    DATA - 50GB (10GB 5개)

    RECO - 10GB

    ARCH - 5GB


    어차피 현업에서는 공유 볼륨을 잡아주는 일은 스토리지 엔지니어와, OS 엔지니어가 알아서 원하는대로 해준다.

    리눅스를 잘한다면 대용량 디스크 하나만 붙여서 lv 하면 된다.


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

    brw-rw----. 1 root disk 8,  0 Aug  4 21:47 /dev/sda
    brw-rw----. 1 root disk 8,  1 Aug  4 21:48 /dev/sda1
    brw-rw----. 1 root disk 8,  2 Aug  4 21:47 /dev/sda2
    brw-rw----. 1 root disk 8,  3 Aug  4 21:48 /dev/sda3
    brw-rw----. 1 root disk 8, 16 Aug  4 21:47 /dev/sdb
    brw-rw----. 1 root disk 8, 32 Aug  4 21:47 /dev/sdc
    brw-rw----. 1 root disk 8, 48 Aug  4 21:47 /dev/sdd
    brw-rw----. 1 root disk 8, 64 Aug  4 21:47 /dev/sde
    brw-rw----. 1 root disk 8, 80 Aug  4 21:47 /dev/sdf
    brw-rw----. 1 root disk 8, 96 Aug  4 21:47 /dev/sdg


    각각의 디스크를 Fdisk 한다.


    [root@rac1 ~]# fdisk /dev/sdb
    Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
    Building a new DOS disklabel with disk identifier 0xec049fb2.
    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)

    WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
             switch off the mode (command 'c') and change display units to
             sectors (command 'u').

    Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    p
    Partition number (1-4): 1
    First cylinder (1-391, default 1):
    Using default value 1
    Last cylinder, +cylinders or +size{K,M,G} (1-391, default 391):
    Using default value 391

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

    Calling ioctl() to re-read partition table.
    Syncing disks.


    fdisk를 다하면 아래와 같이 된다.


    [root@rac1 ~]# ls -l /dev/sd*
    brw-rw----. 1 root disk 8,  0 Aug  4 21:47 /dev/sda
    brw-rw----. 1 root disk 8,  1 Aug  4 21:48 /dev/sda1
    brw-rw----. 1 root disk 8,  2 Aug  4 21:47 /dev/sda2
    brw-rw----. 1 root disk 8,  3 Aug  4 21:48 /dev/sda3
    brw-rw----. 1 root disk 8, 16 Aug  4 21:54 /dev/sdb
    brw-rw----. 1 root disk 8, 17 Aug  4 21:54 /dev/sdb1
    brw-rw----. 1 root disk 8, 32 Aug  4 21:54 /dev/sdc
    brw-rw----. 1 root disk 8, 33 Aug  4 21:54 /dev/sdc1
    brw-rw----. 1 root disk 8, 48 Aug  4 21:54 /dev/sdd
    brw-rw----. 1 root disk 8, 49 Aug  4 21:54 /dev/sdd1
    brw-rw----. 1 root disk 8, 64 Aug  4 21:54 /dev/sde
    brw-rw----. 1 root disk 8, 65 Aug  4 21:54 /dev/sde1
    brw-rw----. 1 root disk 8, 80 Aug  4 21:54 /dev/sdf
    brw-rw----. 1 root disk 8, 81 Aug  4 21:54 /dev/sdf1
    brw-rw----. 1 root disk 8, 96 Aug  4 21:56 /dev/sdg
    brw-rw----. 1 root disk 8, 97 Aug  4 21:56 /dev/sdg1


    기존에는 oracleasm 이라는 패키지를 통해 모듈을 띄워서 ASM 디스크를 적용했었는데 그 과정이 사라졌다.

    Udev를 통해 그냥 Direct로 붙인다.


    # vi /etc/scsi_id.config (없으니까 만든다.)

    options=-g

    #[root@rac1 ~]# /sbin/scsi_id -g -u -d /dev/sdb
    36000c292d9f969dda718b42875402ba4
    [root@rac1 ~]# /sbin/scsi_id -g -u -d /dev/sdc
    36000c2966133c5d6de9c4f15e2c2b977
    [root@rac1 ~]# /sbin/scsi_id -g -u -d /dev/sdd
    36000c29446c31cffc46c1a9073719639
    [root@rac1 ~]# /sbin/scsi_id -g -u -d /dev/sde
    36000c29597c280fe33b8f0e9831ccfef
    [root@rac1 ~]# /sbin/scsi_id -g -u -d /dev/sdf
    36000c295fdea390d70fbf564d399a614
    [root@rac1 ~]# /sbin/scsi_id -g -u -d /dev/sdg
    36000c29571ed9c2b0aa031c228cb4098


    # vi /etc/udev/rules.d/99-oracle-asmdevices.rules


    KERNEL=="sdb1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="36000c292d9f969dda718b42875402ba4",NAME="asm-ocrvote01", OWNER="oracle", GROUP="dba", MODE="0660"
    KERNEL=="sdc1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="36000c2966133c5d6de9c4f15e2c2b977",NAME="asm-data01", OWNER="oracle", GROUP="dba", MODE="0660"
    KERNEL=="sdd1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="36000c29446c31cffc46c1a9073719639",NAME="asm-data02", OWNER="oracle", GROUP="dba", MODE="0660"
    KERNEL=="sde1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="36000c29597c280fe33b8f0e9831ccfef",NAME="asm-data03", OWNER="oracle", GROUP="dba", MODE="0660"
    KERNEL=="sdf1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="36000c295fdea390d70fbf564d399a614",NAME="asm-reco01", OWNER="oracle", GROUP="dba", MODE="0660"
    KERNEL=="sdg1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="36000c29571ed9c2b0aa031c228cb4098",NAME="asm-arch01", OWNER="oracle", GROUP="dba", MODE="0660"


    블락 디바이스 파티션 테이블로 로딩 한다.

    # /sbin/partprobe /dev/sdb1
    # /sbin/partprobe /dev/sdc1
    # /sbin/partprobe /dev/sdd1
    # /sbin/partprobe /dev/sde1

    UDEV 룰을 다시 불러 온다.

    # /sbin/udevadm control --reload-rules
    # /sbin/start_udev

    [root@rac1 ~]# ls -l /dev/asm*
    brw-rw----. 1 oracle dba 8, 97 Aug  4 22:53 /dev/asm-arch01
    brw-rw----. 1 oracle dba 8, 33 Aug  4 22:53 /dev/asm-data01
    brw-rw----. 1 oracle dba 8, 49 Aug  4 22:53 /dev/asm-data02
    brw-rw----. 1 oracle dba 8, 65 Aug  4 22:53 /dev/asm-data03
    brw-rw----. 1 oracle dba 8, 65 Aug  4 22:51 /dev/asm-disk1
    brw-rw----. 1 oracle dba 8, 17 Aug  4 22:53 /dev/asm-ocrvote01
    brw-rw----. 1 oracle dba 8, 81 Aug  4 22:53 /dev/asm-reco01


    # shutdown -h now


    서버를 끄고 2번으로 복사. (복사 방법은 http://db.necoaki.net/49 포스팅 참조)


    호스트 네임 수정

    # vi /etc/sysconfig/network


    NETWORKING=yes
    HOSTNAME=rac2
    GATEWAY=192.168.219.1
    NTPSERVERARGS=iburst


    2번으로 복사하면 네트워크가 다른 이름으로 잡힌다.

    eth0, eth1 로 바꿔준다.


    [root@rac1 ~]# cd /etc/sysconfig/network-scripts/

    [root@rac1 network-scripts]# mv ifcfg-Auto_eth2 ifcfg-eth0
    [root@rac1 network-scripts]# mv ifcfg-Auto_eth3 ifcfg-eth1


    ip 변경

    # vi ifcfg-eth0

    IPADDR=192.168.xxx.xxx


    # vi ifcfg-eth1

    IPADDR=192.168.xxx.xxx



    [root@rac1 network-scripts]# vi /etc/udev/rules.d/70-persistent-net.rules


    # PCI device 0x1022:0x2000 (pcnet32)
    SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:55:a4:0f", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

    # PCI device 0x8086:0x100f (e1000)
    SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:55:a4:05", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"


    # PCI device 0x8086:0x100f (e1000)
    SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:eb:bc:2e", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"

    # PCI device 0x1022:0x2000 (pcnet32)
    SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:eb:bc:38", ATTR{type}=="1", KERNEL=="eth*", NAME="eth3"



    이렇게 4개가 나오는데, 위에 두개를 지우고 아래 두개는 수정해준다.


    # PCI device 0x8086:0x100f (e1000)
    SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:eb:bc:2e", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

    # PCI device 0x1022:0x2000 (pcnet32)
    SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:eb:bc:38", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"



    2번에서도 디스크 마운트가 되어 있는지 확인

    [root@rac1 network-scripts]# ls-lh /dev/asm*
    brw-rw----. 1 oracle dba 8, 97 Aug  4 22:59 /dev/asm-arch01
    brw-rw----. 1 oracle dba 8, 33 Aug  4 22:59 /dev/asm-data01
    brw-rw----. 1 oracle dba 8, 49 Aug  4 22:59 /dev/asm-data02
    brw-rw----. 1 oracle dba 8, 65 Aug  4 22:59 /dev/asm-data03
    brw-rw----. 1 oracle dba 8, 17 Aug  4 22:59 /dev/asm-ocrvote01
    brw-rw----. 1 oracle dba 8, 81 Aug  4 22:59 /dev/asm-reco01


    # su - oracle

    $ vi .bash_profile


    # Oracle Settings
    TMP=/tmp; export TMP
    TMPDIR=$TMP; export TMPDIR

    ORACLE_HOSTNAME=rac2; export ORACLE_HOSTNAME
    ORACLE_UNQNAME=rac; export ORACLE_UNQNAME
    ORACLE_BASE=/app/oracle; export ORACLE_BASE
    GRID_HOME=/app/grid/11.2.0.4/grid; export GRID_HOME
    DB_HOME=$ORACLE_BASE/product/11.2.0.4/db_1; export DB_HOME
    ORACLE_HOME=$DB_HOME; export ORACLE_HOME
    ORACLE_SID=rac2; export ORACLE_SID
    ORACLE_TERM=xterm; export ORACLE_TERM
    BASE_PATH=/usr/sbin:$PATH; export BASE_PATH
    PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH

    LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
    CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

    alias grid_env='. /home/oracle/grid_env'
    alias db_env='. /home/oracle/db_env'
    alias ll='ls -lh'


    rac2 로 모두 수정


    $ vi grid_env


    ORACLE_SID=+ASM2; export ORACLE_SID
    ORACLE_HOME=$GRID_HOME; export ORACLE_HOME
    PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH

    LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
    CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH


    $ vi db_env


    ORACLE_SID=rac2; export ORACLE_SID
    ORACLE_HOME=$DB_HOME; export ORACLE_HOME
    PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH

    LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
    CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH



    준비가 완료 됐으니 2번을 재부팅하고 1번을 같이 켜준다.


    # shutdown -r now

    TAG

    댓글 1

    • 프로필사진

      vmware에서 asm 디스크 추가시 /sbin/scsi_id -g -u -d /dev/sdb 실행하면 코드가 안나왔는데
      http://allthatlinux.com/dokuwiki/doku.php?id=vmware_%EC%97%90%EC%84%9C_scsi_id_%EA%B0%92%EC%9D%B4_%EB%82%98%EC%98%A4%EC%A7%80_%EC%95%8A%EB%8A%94%EA%B2%BD%EC%9A%B0_%ED%95%B4%EA%B2%B0%EB%B0%A9%EB%B2%95

      여기서 해결했네요 ^^

      2016.09.26 10:59 신고
Designed by black7375.

티스토리 툴바