1. 리눅스 환경 설정
A) 설치 정보 확인
uname -a cat /etc/oracle-release
[root@rac1 ~]# uname -a Linux rac1 4.1.12-112.16.4.el7uek.x86_64 #2 SMP Mon Mar 12 23:57:12 PDT 2018 x86_64 x86_64 x86_64 GNU/Linux [root@rac1 ~]# cat /etc/oracle-release Oracle Linux Server release 7.5
먼저 설치된 리눅스의 버전 정보를 확인합니다.
B) 미사용 서비스 정리
### 방화벽 중지 systemctl stop firewalld systemctl disable firewalld ### 블루투스 중지 systemctl stop bluetooth systemctl disable bluetooth ### 시간 동기화 중지 systemctl stop chronyd systemctl disable chronyd mv /etc/chrony.conf /etc/chrony.conf.bak ### NTP 중지 systemctl stop ntpdate systemctl disable ntpdate ### AVAHI 중지 systemctl stop avahi-daemon.socket systemctl disable avahi-daemon.socket systemctl stop avahi-daemon systemctl disable avahi-daemon ### 가상 시스템 관리 중지 systemctl stop libvirtd systemctl disable libvirtd
[root@rac1 ~]# systemctl stop firewalld [root@rac1 ~]# systemctl disable firewalld Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [root@rac1 ~]# systemctl stop bluetooth [root@rac1 ~]# systemctl disable bluetooth Removed symlink /etc/systemd/system/dbus-org.bluez.service. Removed symlink /etc/systemd/system/bluetooth.target.wants/bluetooth.service. [root@rac1 ~]# systemctl stop chronyd [root@rac1 ~]# systemctl disable chronyd Removed symlink /etc/systemd/system/multi-user.target.wants/chronyd.service. [root@rac1 ~]# mv /etc/chrony.conf /etc/chrony.conf.bak [root@rac1 ~]# systemctl stop ntpdate [root@rac1 ~]# systemctl disable ntpdate [root@rac1 ~]# systemctl stop avahi-daemon.socket [root@rac1 ~]# systemctl disable avahi-daemon.socket Removed symlink /etc/systemd/system/sockets.target.wants/avahi-daemon.socket. [root@rac1 ~]# systemctl stop avahi-daemon [root@rac1 ~]# systemctl disable avahi-daemon Removed symlink /etc/systemd/system/multi-user.target.wants/avahi-daemon.service. Removed symlink /etc/systemd/system/dbus-org.freedesktop.Avahi.service. [root@rac1 ~]# systemctl stop libvirtd [root@rac1 ~]# systemctl disable libvirtd Removed symlink /etc/systemd/system/multi-user.target.wants/libvirtd.service. Removed symlink /etc/systemd/system/sockets.target.wants/virtlogd.socket. Removed symlink /etc/systemd/system/sockets.target.wants/virtlockd.socket.
테스트 환경에서 사용하지 않는 서비스를 정리합니다.
실습 환경에서는 CTSS를 활성화 모드로 운영할 것이므로 NTP나 chrony 등의 시간 동기화 서비스를 중지할 것입니다.
그러나 실제 운영환경에서는 구성 환경을 고려하여 사용 여부를 결정해야하며, 가급적 NTP를 설정(-x 포함)하여 사용하는 것을 권장합니다.
C) 리눅스 제공 필수 패키지 설치
cd <리눅스 설치 디스크 마운트 경로>/Packages rpm -ivh ksh-*.el7.x86_64.rpm rpm -ivh libaio-devel-*.el7.x86_64.rpm rpm -ivh oracleasm-support-*.el7.x86_64.rpm
[root@rac1 ~]# cd /run/media/root/OL-7.5\ Server.x86_64/Packages [root@rac1 Packages]# rpm -ivh ksh-20120801-137.0.1.el7.x86_64.rpm 경고: ksh-20120801-137.0.1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY 준비 중... ################################# [100%] Updating / installing... 1:ksh-20120801-137.0.1.el7 ################################# [100%] [root@rac1 Packages]# rpm -ivh libaio-devel-0.3.109-13.el7.x86_64.rpm 경고: libaio-devel-0.3.109-13.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY 준비 중... ################################# [100%] Updating / installing... 1:libaio-devel-0.3.109-13.el7 ################################# [100%] [root@rac1 Packages]# rpm -ivh oracleasm-support-2.1.11-2.el7.x86_64.rpm 경고: oracleasm-support-2.1.11-2.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY 준비 중... ################################# [100%] Updating / installing... 1:oracleasm-support-2.1.11-2.el7 ################################# [100%] 알림: 'systemctl enable oracleasm.service'에 요청을 전송하고 있습니다. Created symlink from /etc/systemd/system/multi-user.target.wants/oracleasm.service to /usr/lib/systemd/system/oracleasm.service.
리눅스 설치시에 기본적으로 설치된 패키지 외에 추가로 3개의 패키지를 설치해야 합니다.
리눅스 설치 이미지를 mount한 후에 Package 디렉토리로 이동하여 패키지를 설치합니다.
D) 11g 설치를 위한 필수 패키지 추가 설치
rpm -ivh zlib-devel-*.el7.x86_64.rpm rpm -ivh elfutils-libelf-devel-*.el7.x86_64.rpm
[root@rac1 Packages]# rpm -ivh zlib-devel-1.2.7-17.el7.x86_64.rpm 경고: zlib-devel-1.2.7-17.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY 준비 중... ################################# [100%] Updating / installing... 1:zlib-devel-1.2.7-17.el7 ################################# [100%] [root@rac1 Packages]# rpm -ivh elfutils-libelf-devel-0.170-4.el7.x86_64.rpm 경고: elfutils-libelf-devel-0.170-4.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY 준비 중... ################################# [100%] Updating / installing... 1:elfutils-libelf-devel-0.170-4.el7################################# [100%]
리눅스 7에 오라클 11g R2를 설치하기 위해서는 추가로 elfutils-libelf-devel 패키지를 설치해야 하며, 이 패키지를 설치하기 위해서는 zlib-devel 패키지가 먼서 설치되어야 합니다.
E) OCFS2를 위한 패키지 추가 설치
rpm -ivh ocfs2-tools-*.el7.x86_64.rpm rpm -ivh libcom_err-devel-*.el7.x86_64.rpm rpm -ivh e2fsprogs-devel-*.el7.x86_64.rpm rpm -ivh pcre-devel-*.el7.x86_64.rpm rpm -ivh glib2-devel-*.el7.x86_64.rpm rpm -ivh ocfs2-tools-devel-*.x86_64.rpm cd eject
[root@rac1 Packages]# rpm -ivh ocfs2-tools-1.8.6-9.el7.x86_64.rpm 경고: ocfs2-tools-1.8.6-9.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY 준비 중... ################################# [100%] Updating / installing... 1:ocfs2-tools-1.8.6-9.el7 ################################# [100%] [root@rac1 Packages]# rpm -ivh libcom_err-devel-1.42.9-11.0.1.el7.x86_64.rpm 경고: libcom_err-devel-1.42.9-11.0.1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY 준비 중... ################################# [100%] Updating / installing... 1:libcom_err-devel-1.42.9-11.0.1.el################################# [100%] [root@rac1 Packages]# rpm -ivh e2fsprogs-devel-1.42.9-11.0.1.el7.x86_64.rpm 경고: e2fsprogs-devel-1.42.9-11.0.1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY 준비 중... ################################# [100%] Updating / installing... 1:e2fsprogs-devel-1.42.9-11.0.1.el7################################# [100%] [root@rac1 Packages]# rpm -ivh pcre-devel-8.32-17.el7.x86_64.rpm 경고: pcre-devel-8.32-17.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY 준비 중... ################################# [100%] Updating / installing... 1:pcre-devel-8.32-17.el7 ################################# [100%] [root@rac1 Packages]# rpm -ivh glib2-devel-2.54.2-2.el7.x86_64.rpm 경고: glib2-devel-2.54.2-2.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY 준비 중... ################################# [100%] Updating / installing... 1:glib2-devel-2.54.2-2.el7 ################################# [100%] [root@rac1 Packages]# rpm -ivh ocfs2-tools-devel-1.8.6-9.el7.x86_64.rpm 경고: ocfs2-tools-devel-1.8.6-9.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY 준비 중... ################################# [100%] Updating / installing... 1:ocfs2-tools-devel-1.8.6-9.el7 ################################# [100%] [root@rac1 Packages]# cd [root@rac1 ~]# eject
Raw Device에서 아카이브 로그 저장을 위한 공유 스토리즈를 사용하기 위해 OCFS2를 위한 패키지를 추가로 설치합니다.
설치가 완료되면 설치 이미지 밖의 경로로 이동한 후에 이미지를 eject 시켜줍니다.
그러지 않을 경우, 재부팅시 다시 리눅스 설치 화면으로 돌아오게 됩니다.
rpm -q binutils rpm -q compat-libcap1 rpm -q compat-libstdc++-33 rpm -q glibc rpm -q glibc-devel rpm -q ksh rpm -q libaio rpm -q libaio-devel rpm -q libgcc rpm -q libstdc++ rpm -q libstdc++-devel rpm -q libX11 rpm -q libXau rpm -q libxcb rpm -q libXi rpm -q libXtst rpm -q make rpm -q net-tools rpm -q nfs-utils rpm -q smartmontools rpm -q sysstat
[root@rac1 ~]# rpm -q binutils binutils-2.27-27.base.el7.x86_64 [root@rac1 ~]# rpm -q compat-libcap1 compat-libcap1-1.10-7.el7.x86_64 [root@rac1 ~]# rpm -q compat-libstdc++-33 compat-libstdc++-33-3.2.3-72.el7.x86_64 [root@rac1 ~]# rpm -q glibc glibc-2.17-222.el7.x86_64 [root@rac1 ~]# rpm -q glibc-devel glibc-devel-2.17-222.el7.x86_64 [root@rac1 ~]# rpm -q ksh ksh-20120801-137.0.1.el7.x86_64 [root@rac1 ~]# rpm -q libaio libaio-0.3.109-13.el7.x86_64 [root@rac1 ~]# rpm -q libaio-devel libaio-devel-0.3.109-13.el7.x86_64 [root@rac1 ~]# rpm -q libgcc libgcc-4.8.5-28.0.1.el7.x86_64 [root@rac1 ~]# rpm -q libstdc++ libstdc++-4.8.5-28.0.1.el7.x86_64 [root@rac1 ~]# rpm -q libstdc++-devel libstdc++-devel-4.8.5-28.0.1.el7.x86_64 [root@rac1 ~]# rpm -q libX11 libX11-1.6.5-1.el7.x86_64 [root@rac1 ~]# rpm -q libXau libXau-1.0.8-2.1.el7.x86_64 [root@rac1 ~]# rpm -q libxcb libxcb-1.12-1.el7.x86_64 [root@rac1 ~]# rpm -q libXi libXi-1.7.9-1.el7.x86_64 [root@rac1 ~]# rpm -q libXtst libXtst-1.2.3-1.el7.x86_64 [root@rac1 ~]# rpm -q make make-3.82-23.el7.x86_64 [root@rac1 ~]# rpm -q net-tools net-tools-2.0-0.22.20131004git.el7.x86_64 [root@rac1 ~]# rpm -q nfs-utils nfs-utils-1.3.0-0.54.0.1.el7.x86_64 [root@rac1 ~]# rpm -q smartmontools smartmontools-6.5-1.el7.x86_64 [root@rac1 ~]# rpm -q sysstat sysstat-10.1.5-13.el7.x86_64
오라클 설치에 필요한 리눅스 패키지들이 모두 설치되어 있는지 검증합니다.
누락된 패키지가 있다면 반드시 설치해야 합니다.
패키지 파일은 yum을 이용하여 직접 설치하거나 Oracle Linux Repository에서 다운로드 할 수 있습니다.
대부분의 패키지는 설치 미디어에 함께 제공되고 있습니다.
F) hosts 파일 수정
### Public 10.0.1.101 rac1 rac1.localdomain 10.0.1.102 rac2 rac2.localdomain ### Private 10.0.5.101 rac1-priv rac1-priv.localdomain 10.0.5.102 rac2-priv rac2-priv.localdomain ### Virtual 10.0.1.201 rac1-vip rac1-vip.localdomain 10.0.1.202 rac2-vip rac2-vip.localdomain ### DNS 10.0.1.150 dns dns.localdomain ### SCAN 10.0.1.191 rac-scan rac-scan.localdomain 10.0.1.192 rac-scan rac-scan.localdomain 10.0.1.193 rac-scan rac-scan.localdomain
/etc/hosts 파일에 설치할 모든 서버의 IP와 호스트명을 추가합니다.
오라클 소프트웨어 설치를 정상적으로 진행하기 위해 로컬 노드와 원격 노드에 대한 정보를 정확히 입력해야 합니다.
SCAN IP는 1개만 할당해도 설치에 지장은 없습니다. 다만, 18c부터는 3개를 할당하지 않을 경우, 필요 조건 검사 과정에서 검증 실패 메시지가 출력됩니다.
G) 보안 설정 변경
SELINUX=permissive
setenforce permissive
Selinux 모드를 permissive로 변경합니다.
H) dnsmasq 활성화
local=/localdomain/
dnsmasq 서비스의 환경 설정 파일에 로컬 도메인에 대한 정보를 입력합니다.
cat /etc/resolv.conf systemctl start dnsmasq systemctl enable dnsmasq nslookup rac-scan.localdomain # 재기동 필요
[root@rac1 ~]# cat /etc/resolv.conf # Generated by NetworkManager search localdomain nameserver 127.0.0.1 [root@rac1 ~]# systemctl start dnsmasq [root@rac1 ~]# systemctl enable dnsmasq Created symlink from /etc/systemd/system/multi-user.target.wants/dnsmasq.service to /usr/lib/systemd/system/dnsmasq.service. [root@rac1 ~]# nslookup rac-scan.localdomain Server: 127.0.0.1 Address: 127.0.0.1#53 Name: rac-scan.localdomain Address: 10.0.1.191 Name: rac-scan.localdomain Address: 10.0.1.192 Name: rac-scan.localdomain Address: 10.0.1.193 [root@rac1 ~]# nslookup rac-scan.localdomain Server: 127.0.0.1 Address: 127.0.0.1#53 Name: rac-scan.localdomain Address: 10.0.1.192 Name: rac-scan.localdomain Address: 10.0.1.193 Name: rac-scan.localdomain Address: 10.0.1.191 [root@rac1 ~]# nslookup rac-scan.localdomain Server: 127.0.0.1 Address: 127.0.0.1#53 Name: rac-scan.localdomain Address: 10.0.1.193 Name: rac-scan.localdomain Address: 10.0.1.191 Name: rac-scan.localdomain Address: 10.0.1.192
별도의 DNS 서비스 없이 SCAN을 사용하기 위해 dnsmasq 서비스를 활성화합니다.
DNS 설정 파일(resolv.conf)에는 "nameserver 127.0.0.1"가 입력되어 있어야 합니다.
I) 가상 메모리 파일 시스템 할당
tmpfs /dev/shm tmpfs size=8g 0 0
mount -o remount /dev/shm
tmpfs /dev/shm tmpfs size=8g 0 0
[root@rac1 ~]# mount -o remount /dev/shm [root@rac1 ~]# df -h | grep shm tmpfs 8.0G 84K 8.0G 1% /dev/shm
가상 메모리 파일 시스템(tmpfs) 값을 설정하고 remount하여 적용시킵니다.
J) oracle 제공 추가 패키지 설치
rpm -ivh oracle-database-preinstall-19c-*.el7.x86_64.rpm rpm -ivh oracleasmlib-*.el7.x86_64.rpm
[root@rac1 tmp]# rpm -ivh oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm 경고: oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY 준비 중... ################################# [100%] Updating / installing... 1:oracle-database-preinstall-19c-1.################################# [100%] [root@rac1 tmp]# rpm -ivh oracleasmlib-2.0.12-1.el7.x86_64.rpm 경고: oracleasmlib-2.0.12-1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY 준비 중... ################################# [100%] Updating / installing... 1:oracleasmlib-2.0.12-1.el7 ################################# [100%]
preinstall 패키지는 Oracle Linux Repository에서 받을 수 있고, ASMLib 패키지는 아래 경로에서 다운로드 합니다.
https://www.oracle.com/technetwork/server-storage/linux/asmlib/rhel7-2773795.html
K) 그룹 및 사용자 계정 작업
### 그룹 등록 (정책에 따라 생략) # groupadd oper # groupadd backupdba # groupadd dgdba # groupadd kmdba # groupadd racdba groupadd asmadmin groupadd asmdba groupadd asmoper ### 유저 그룹 설정 변경 (vboxsf는 VirtualBox의 Guest Additions 사용시 설정) usermod -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba,asmadmin,asmdba,asmoper,vboxsf oracle # usermod -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba,asmadmin,asmdba,asmoper oracle ### 계정 암호 변경 passwd oracle
[root@rac1 ~]# groupadd asmadmin [root@rac1 ~]# groupadd asmdba [root@rac1 ~]# groupadd asmoper [root@rac1 ~]# usermod -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba,asmadmin,asmdba,asmoper,vboxsf oracle [root@rac1 ~]# passwd oracle oracle 사용자의 비밀 번호 변경 중 새 암호: 잘못된 암호: 암호는 8 개의 문자 보다 짧습니다 새 암호 재입력: passwd: 모든 인증 토큰이 성공적으로 업데이트 되었습니다.
소프트웨어를 설치할 사용자 계정과 그룹을 생성 또는 추가합니다.
preinstall 패키지가 설치되었다면 oracle 유저와 oinstall, dba, oper, backupdba, dgdba, kmdba, racdba 그룹은 이미 생성되어 있습니다.
vboxsf 그룹은 VirtualBox의 Guest Addition을 사용하기 위한 그룹으로, 실제 운영 환경에서 Guest Addition을 사용하지 않는다면 추가하지 않습니다.
passwd 명령어로 각 계정의 암호를 지정해주면 됩니다.
L) 설치 경로 생성
mkdir -p /u01/app/oracle chown -R oracle:oinstall /u01 chmod -R 775 /u01
[root@rac1 ~]# mkdir -p /u01/app/oracle [root@rac1 ~]# chown -R oracle:oinstall /u01 [root@rac1 ~]# chmod -R 775 /u01
오라클 소프트웨어 설치를 위한 경로를 생성하고, 해당 경로에 대한 권한과 소유권을 수정합니다.
M) 사용자 환경 설정
export TMP=/tmp export TMPDIR=$TMP export EDITOR=vi export ORACLE_HOSTNAME=rac1 # 호스트명에 맞게 변경 export ORACLE_UNQNAME=racdb export ORACLE_BASE=/u01/app/oracle export GRID_HOME=/u01/app/11.2.0/grid export DB_HOME=$ORACLE_BASE/product/11.2.0/db_1 export ORACLE_HOME=$DB_HOME export ORACLE_SID=racdb1 # 2번 노드 racdb2 export ORACLE_TERM=xterm export BASE_PATH=/usr/sbin:$PATH export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_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_LANG=AMERICAN_KOREA.AL32UTF8 PS1='[$ORACLE_SID:$PWD]> '
oracle 유저의 .bash_profile을 수정합니다.
root계정에서 해당 파일을 직접 수정할 수 있습니다.
먼저 11g R2의 RAC를 구축할 것이므로 경로는 이에 맞게 설정합니다.
alias grid_env='export ORACLE_HOME=$GRID_HOME;export ORACLE_SID=+ASM1;export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$BASE_PATH' alias db_env='export ORACLE_HOME=$DB_HOME;export ORACLE_SID=racdb1;export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$BASE_PATH'
Grid와 DB 인스턴스 간의 변환을 쉽게 하기 위해 alias를 설정합니다.
export ORACLE_BASE=/u01/app/oracle export GRID_HOME=/u01/app/11.2.0/grid export DB_HOME=$ORACLE_BASE/product/11.2.0/db_1 export PATH=$PATH:$GRID_HOME/bin
작업의 편의를 위해 root 계정의 .bash_profile에도 경로 정보를 추가로 입력합니다.
{}