cd <리눅스 설치 디스크 경로>/Packages rpm -ivh ksh-20120801-26.el7.x86_64.rpm rpm -ivh libaio-devel-0.3.109-13.el7.x86_64.rpm
[root@rac1 ~]# cd /run/media/admin/OL-7.3\ Server.x86_64/Packages [root@rac1 Packages]# rpm -ivh ksh-20120801-26.el7.x86_64.rpm 경고: ksh-20120801-26.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY 준비 중... ################################# [100%] Updating / installing... 1:ksh-20120801-26.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%]
리눅스 설치시에 기본적으로 설치된 패키지 외에 추가로 2개의 패키지를 설치해야 합니다.
설치 CD를 mount한 후에 Package 디렉토리로 이동하여 패키지를 설치합니다.
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 oracle]# rpm -q binutils
rpm -q sysstatbinutils-2.25.1-22.base.el7.x86_64
[root@rac1 oracle]# rpm -q compat-libcap1
compat-libcap1-1.10-7.el7.x86_64
[root@rac1 oracle]# rpm -q compat-libstdc++-33
compat-libstdc++-33-3.2.3-72.el7.x86_64
[root@rac1 oracle]# rpm -q glibc
glibc-2.17-157.el7.x86_64
[root@rac1 oracle]# rpm -q glibc-devel
glibc-devel-2.17-157.el7.x86_64
[root@rac1 oracle]# rpm -q ksh
ksh-20120801-26.el7.x86_64
[root@rac1 oracle]# rpm -q libaio
libaio-0.3.109-13.el7.x86_64
[root@rac1 oracle]# rpm -q libaio-devel
libaio-devel-0.3.109-13.el7.x86_64
[root@rac1 oracle]# rpm -q libgcc
libgcc-4.8.5-11.el7.x86_64
[root@rac1 oracle]# rpm -q libstdc++
libstdc++-4.8.5-11.el7.x86_64
[root@rac1 oracle]# rpm -q libstdc++-devel
libstdc++-devel-4.8.5-11.el7.x86_64
[root@rac1 oracle]# rpm -q libX11
libX11-1.6.3-3.el7.x86_64
[root@rac1 oracle]# rpm -q libXau
libXau-1.0.8-2.1.el7.x86_64
[root@rac1 oracle]# rpm -q libxcb
libxcb-1.11-4.el7.x86_64
[root@rac1 oracle]# rpm -q libXi
libXi-1.7.4-2.el7.x86_64
[root@rac1 oracle]# rpm -q libXtst
libXtst-1.2.2-2.1.el7.x86_64
[root@rac1 oracle]# rpm -q make
make-3.82-23.el7.x86_64
[root@rac1 oracle]# rpm -q net-tools
net-tools-2.0-0.17.20131004git.el7.x86_64
[root@rac1 oracle]# rpm -q nfs-utils
nfs-utils-1.3.0-0.33.0.1.el7.x86_64
[root@rac1 oracle]# rpm -q smartmontools
smartmontools-6.2-7.el7.x86_64
[root@rac1 oracle]# rpm -q sysstat
sysstat-10.1.5-11.el7.x86_64
오라클 설치에 필요한 리눅스 패키지들이 모두 설치되어 있는지 검증합니다.
누락된 패키지가 있다면 반드시 설치해야 합니다.
패키지 파일은 yum을 이용하여 직접 설치하거나 Oracle Linux Repository에서 다운로드 할 수 있습니다.
https://public-yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/index.html
rpm -ivh oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm
[root@rac1 ~]# rpm -ivh oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm 경고: oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY 준비 중... ################################# [100%] Updating / installing... 1:oracle-database-preinstall-18c-1.################################# [100%]
추가로 Oracle Database 설치를 위한 preinstall 패키지를 설치합니다.
패키지 파일은 위에서 안내한 Oracle Linux Repository에서 다운로드 가능합니다.
### Public 192.168.0.111 rac1 192.168.0.112 rac2 ### Private 192.168.5.111 rac1-priv 192.168.5.112 rac2-priv ### Virtual 192.168.0.121 rac1-vip 192.168.0.122 rac2-vip ### DNS 192.168.0.181 rac-scan 192.168.0.182 rac-scan 192.168.0.183 rac-scan
[root@rac1 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 ### Public 192.168.0.111 rac1 192.168.0.112 rac2 ### Private 192.168.5.111 rac1-priv 192.168.5.112 rac2-priv ### Virtual 192.168.0.121 rac1-vip 192.168.0.122 rac2-vip ### DNS 192.168.0.181 rac-scan 192.168.0.182 rac-scan 192.168.0.183 rac-scan
/etc/hosts 파일에 설치할 모든 서버의 IP와 호스트명을 추가합니다.
오라클 소프트웨어 설치를 정상적으로 진행하기 위해 로컬 노드와 원격 노드에 대한 정보를 정확히 입력해야 합니다.
SCAN IP는 1개만 할당해도 설치에 지장은 없습니다. 다만, 18c부터는 3개를 할당하지 않을 경우, 필요 조건 검사 과정에서 검증 실패 메시지가 출력됩니다.
SELINUX=permissive
setenforce permissive
[root@rac1 ~]# cat /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=permissive #SELINUX=enforcing # SELINUXTYPE= can take one of three two values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted
[root@rac1 ~]# setenforce permissive
Selinux 모드를 permissive로 변경합니다.
### 방화벽 중지 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 ### DNS 중지 systemctl stop avahi-daemon.socket systemctl stop avahi-daemon systemctl disable avahi-daemon ### 가상 시스템 관리 중지 virsh net-destroy default virsh net-undefine default systemctl stop libvirtd systemctl disable libvirtd
[root@rac1 ~]# systemctl stop firewalld [root@rac1 ~]# systemctl disable firewalld Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. Removed symlink /etc/systemd/system/basic.target.wants/firewalld.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.soket [root@rac1 ~]# systemctl stop avahi-daemon Warning: Stopping avahi-daemon.service, but it can still be activated by: avahi-daemon.socket [root@rac1 ~]# systemctl disable avahi-daemon Removed symlink /etc/systemd/system/multi-user.target.wants/avahi-daemon.service. Removed symlink /etc/systemd/system/sockets.target.wants/avahi-daemon.socket. Removed symlink /etc/systemd/system/dbus-org.freedesktop.Avahi.service. [root@rac1 ~]# virsh net-destroy default default 네트워크 강제 종료 [root@rac1 ~]# virsh net-undefine default default 네트워크가 정의되지 않음 [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 포함)하여 사용하는 것이 좋습니다.
cat /etc/resolv.conf systemctl start dnsmasq systemctl enable dnsmasq nslookup rac-scan
[root@rac1 ~]# cat /etc/resolv.conf # Generated by NetworkManager 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 Server: 127.0.0.1 Address: 127.0.0.1#53 Name: rac-scan Address: 192.168.0.181 Name: rac-scan Address: 192.168.0.182 Name: rac-scan Address: 192.168.0.183
별도의 DNS 서비스 없이 SCAN을 DNS에 등록된 것처럼 처리하기 위해 DNSMASQ 프로세스를 활성화합니다.
resolv.conf 파일에는 "nameserver 127.0.0.1"가 입력되어 있어야 합니다.
### 그룹 등록 (필요에 따라 생략 가능) groupadd oper groupadd backupdba groupadd dgdba groupadd kmdba groupadd racdba groupadd asmadmin groupadd asmdba groupadd asmoper #groupadd vboxsf ### 유저 그룹 설정 변경 useradd -g oinstall -G dba,racdba,asmadmin,asmdba,asmoper,vboxsf grid #useradd -g oinstall -G dba,racdba,asmadmin,asmdba,asmoper grid usermod -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba,asmadmin,asmdba,vboxsf oracle #usermod -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba,asmadmin,asmdba oracle ### 유저 암호 변경 passwd grid passwd oracle
[root@rac1 ~]# groupadd oper [root@rac1 ~]# groupadd backupdba [root@rac1 ~]# groupadd dgdba [root@rac1 ~]# groupadd kmdba [root@rac1 ~]# groupadd racdba [root@rac1 ~]# groupadd asmadmin [root@rac1 ~]# groupadd asmdba [root@rac1 ~]# groupadd asmoper [root@rac1 ~]# useradd -g oinstall -G dba,racdba,asmadmin,asmdba,asmoper,vboxsf grid [root@rac1 ~]# usermod -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba,asmadmin,asmdba,asmoper,vboxsf oracle [root@rac1 ~]# passwd grid grid 사용자의 비밀 번호 변경 중 새 암호: 잘못된 암호: 암호는 8 개의 문자 보다 짧습니다 새 암호 재입력: passwd: 모든 인증 토큰이 성공적으로 업데이트 되었습니다. [root@rac1 ~]# passwd oracle oracle 사용자의 비밀 번호 변경 중 새 암호: 잘못된 암호: 암호는 8 개의 문자 보다 짧습니다 새 암호 재입력: passwd: 모든 인증 토큰이 성공적으로 업데이트 되었습니다.
소프트웨어를 설치할 사용자 계정과 그룹을 생성 또는 추가합니다.
preinstall 패키지가 설치되었다면 oracle 유저와 oinstall, dba 그룹은 이미 생성되어 있습니다.
grid 유저로 Grid Infrastructure(이하 GI)를 설치할 것이므로 grid 유저를 별도로 생성합니다. (oracle 유저로 모두 설치시에는 생략합니다.)
vboxsf 그룹은 VirtualBox의 Guest Addition을 사용하기 위한 그룹으로, 실제 운영 환경에서 Guest Addition을 사용하지 않는다면 추가하지 않습니다.
passwd 명령어로 각 계정의 암호를 지정해주면 됩니다.
mkdir -p /u01/app/18.3.0/grid mkdir -p /u01/app/oracle/product/18.3.0/db_1 chown -R grid:oinstall /u01 chown -R oracle:oinstall /u01/app/oracle/product chmod -R 775 /u01
[root@rac1 ~]# mkdir -p /u01/app/18.3.0/grid [root@rac1 ~]# mkdir -p /u01/app/oracle/product/18.3.0/db_1 [root@rac1 ~]# chown -R grid:oinstall /u01 [root@rac1 ~]# chown -R oracle:oinstall /u01/app/oracle/product [root@rac1 ~]# chmod -R 775 /u01
오라클 소프트웨어 설치를 위한 경로를 생성하고, 해당 경로에 대한 권한과 소유권을 수정합니다.
grid hard nofile 65536 grid soft stack 10240
/etc/security/limits.d/oracle-database-preinstall-18c.conf 내용
[root@rac1 limits.d]# cat oracle-database-preinstall-18c.conf # oracle-database-preinstall-18c setting for nofile soft limit is 1024 oracle soft nofile 1024 # oracle-database-preinstall-18c setting for nofile hard limit is 65536 oracle hard nofile 65536 # oracle-database-preinstall-18c setting for nproc soft limit is 16384 # refer orabug15971421 for more info. oracle soft nproc 16384 # oracle-database-preinstall-18c setting for nproc hard limit is 16384 oracle hard nproc 16384 # oracle-database-preinstall-18c setting for stack soft limit is 10240KB oracle soft stack 10240 # oracle-database-preinstall-18c setting for stack hard limit is 32768KB oracle hard stack 32768 # oracle-database-preinstall-18c setting for memlock hard limit is maximum of 128GB on x86_64 or 3GB on x86 OR 90 % of RAM oracle hard memlock 134217728 # oracle-database-preinstall-18c setting for memlock soft limit is maximum of 128GB on x86_64 or 3GB on x86 OR 90% of RAM oracle soft memlock 134217728
grid 유저로 GI를 설치하기 위해 grid 유저에 대한 리소스 설정값을 입력합니다.
oracle 유저는 preinstall 패키지를 설치하면 /etc/security/limits.d/oracle-database-preinstall-18c.conf 파일이 자동으로 생성됩니다.
export TMP=/tmp export TMPDIR=$TMP export EDITOR=vi export ORACLE_HOSTNAME=rac1 # 호스트명에 맞게 변경 export ORACLE_BASE=/u01/app/oracle export GRID_HOME=/u01/app/18.3.0/grid export DB_HOME=$ORACLE_BASE/product/18.3.0/db_1 export ORACLE_HOME=$GRID_HOME export ORACLE_SID=+ASM1 # 2번 노드 +ASM2 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]> '
grid 계정으로 접속한 후에 .bash_profile을 수정합니다.
root계정에서 grid 유저로 접속하려면 아래와 같이 su 명령을 입력하면 됩니다
su - grid
수정이 완료되고 root 유저로 돌아오려면 exit 명령을 grid 유저에서 실행하면 됩니다.
exit
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/18.3.0/grid export DB_HOME=$ORACLE_BASE/product/18.3.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을 수정합니다.
oracle 유저로 변경하려면 아래와 같이 su 명령을 입력하면 됩니다
su - oracle