EC2 오라클 설치
2022. 6. 20. 01:07ㆍ99. 정리전 - IT/11. Java
글 남기는 시점 : 2022년 6월20일 |
EC2 Instance : Redhat free tier
Oracle : oracle-database-ee-19c-1.0-1.x86_64.rpm
01. aws.amazon.com/ko/free 가입 |
02. Region을 아시아-서울 로 설정 |
03. 프리티어로 인스턴스 생성 : t2.micro - 레드햇 설정 (★★★ 조언 : 괜히 다른 OS로 삽질하지 말고 처음부터 레드햇으로 설치하세요 ★★★) - 볼륨 20G 설정 - 용량확인 명령어 : https://velog.io/@hyeonseop/ec2-용량-full일-때-대처법 df -gT 또는 lsblk : 프로젝트 중간에 용량을 증설하면 재기동 해줘야 함 |
04. putty 설정시 ppk 파일로 접속 - d2coding으로 폰트변경 - Ubuntu AMI : ubuntu Amazon Linux2 : ec2-user Amazon Lunux AMI : ec2-user Debian AMI : admin or root Fedora AMI : ec2-user or fedora |
05. 리눅스 버전 확인 - 리눅스의 배포판 버전 확인 1) $ grep . /etc/*-release 2) $ cat /etc/*-release | uniq - 리눅스 커널 버전 확인 1) uname 2) uname -r 3) cat /proc/version |
06. root 계정 활성화 $ sudo passwd root $ sudo vi /etc/ssh/sshd_config #PermitRootLogin yes 부분의 주석(#)을 삭제하고 저장 $ sudo mkdir /root/.ssh $ sudo cp /home/ec2-user/.ssh/authorized_keys /root/.ssh $ sudo systemctl restart sshd ┌──────────────────────────────────┐ │ 이후 root로 재접속하여 작업 진행 └──────────────────────────────────┘ |
07. git, zsh 설치 - git설치 : sudo yum update -y , sudo yum install git -y , git version - zsh설치 : https://codingrabbit.tistory.com/28 |
08. fileziller 접속 - sftp로 발급받은 key파일 지정하여 접속 |
09. oracle 환결설정 - 레드햇에 오라클 설치 참조 : https://pliss.tistory.com/105 - EC2 보안그룹에 1521 포트 추가 - (Free Tier 메모리 부족으로 필요시 설정함) swap memory설정 $ cd / $ mkdir /swap $ dd if=/dev/zero of=/swap/swapfile bs=1024 count=2097152 $ cd /swap $ mkswap swapfile $ swapon swapfile - 권한그룹설정 (oracle rpm 은 oinstall 이라는 그룹의 oracle 이라는 사용자로 설치되기 때문에 미리 계정 생성) $ cd /home $ groupadd oinstall $ groupadd dba $ tail /etc/group $ useradd -g oinstall -G dba oracle $ passwd oracle $ systemctl restart sshd - 커널 설정 $ vi /etc/sysctl.conf fs.aio-max-nr = 1048576 fs.file-max = 6815744 #kernel.shmall = 2097152 #kernel.shmmax = 536870912 kernel.shmmni = 4096 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 = 1048576 - 자원 제한 설정 $ vi /etc/security/limits.conf oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 - 전체적용 및 확인 $ reboot $ /sbin/sysctl –p ★ oracle 로 사용자전환하여 하위 작업 진행 ★ ┌───────────────┐ │ $ su - oracle └───────────────┘ - 오라클 환경 변수 설정 $ vi /home/oracle/.bash_profile ORACLE_BASE=/opt/oracle ORACLE_SID=XE ORACLE_HOME=$ORACLE_BASE/product/19c/dbhome_1 ORACLE_HOME_LISTNER=$ORACLE_HOME/bin/lsnrctl PATH=$ORACLE_HOME/bin:$PATH export PATH export ORACLE_BASE export ORACLE_SID export ORACLE_HOME export ORACLE_LISTNER export TMP=/tmp export TMPDIR=$TMP $ source /home/oracle/.bash_profile |
10. oracle 설치 (Ubuntu) ┌─디펜던시 설치 (우분투일 경우)─────────────────────────── │ │ 1) 우분투 디스크 늘려주기 : 안늘려주면 2기가짜리 rpm -> deb 변환하다가 "No space left on device" 에러남 │ $ lsblk -f │ NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS │ loop0 squashfs 4.0 0 100% /snap/amazon-ssm-agent/5656 │ loop1 squashfs 4.0 0 100% /snap/core18/2409 │ loop2 squashfs 4.0 0 100% /snap/core20/1518 │ loop3 squashfs 4.0 0 100% /snap/lxd/22923 │ loop4 squashfs 4.0 0 100% /snap/snapd/16010 │ xvda │ ├─xvda1 ext4 1.0 cloudimg-rootfs 767f2b75-d030-4999-951c-d4ab6b37f31f 7.2G 53% / │ ├─xvda14 │ └─xvda15 vfat FAT32 UEFI 83EA-FFE2 99.1M 5% /boot/efi │ │ $ mount -o size=10M,rw,nodev,nosuid -t tmpfs tmpfs /tmp │ $ xfs_growfs -d / │ xfs_growfs: / is not a mounted XFS filesystem │ $ resize2fs /dev/xvda1 : ec2에서 용량 늘려 설정 후 ex4 파일 시스템일 경우 resize2fs 명령어로 적용 │ resize2fs 1.46.5 (30-Dec-2021) │ The filesystem is already 4165883 (4k) blocks long. Nothing to do! │ $ df -h │ Filesystem Size Used Avail Use% Mounted on │ /dev/root 16G 8.1G 7.3G 53% / │ tmpfs 484M 0 484M 0% /dev/shm │ tmpfs 194M 844K 193M 1% /run │ tmpfs 5.0M 0 5.0M 0% /run/lock │ /dev/xvda15 105M 5.3M 100M 5% /boot/efi │ tmpfs 97M 4.0K 97M 1% /run/user/0 │ tmpfs 10M 0 10M 0% /tmp │ $ umount /tmp │ │ 2) 우분투 메모리 늘려주기 │ $ dd if=/dev/zero of=/swapfile bs=128M count=32 : 스왑 파일의 읽기 및 쓰기 권한을 업데이트 │ $ chmod 600 /swapfile : Linux 스왑 영역을 설정 │ $ mkswap /swapfile : 스왑 공간에 스왑 파일을 추가하여 스왑 파일을 즉시 사용할 수 있도록 │ $ swapon /swapfile : 프로시저가 성공적인지 확인 │ $ swapon -s : /etc/fstab 파일을 편집하여 부팅 시 스왑 파일을 시작 │ $ sudo vi /etc/fstab : 재부팅 후에도 적용되도록 파일 끝에 다음 줄을 새로 추가 │ /swapfile swap swap defaults 0 0 │ $ swapon --show │ $ free -h │ - 스왑파일삭제 │ $ swapoff -v /swapfile : 스왑 비활성 │ $ vi /etc/fstab : fstab파일 오픈 │ $ /swapfile swap swap defaults 0 0 : 추가했던 라인 삭제 │ $ rm /swapfile : 스왑 파일 삭제 │ │ 3) apt-get으로 yum, python, java 설치 │ $ apt-get update && sudo apt-get upgrade : apt(Advanced Packaging Tools) 은 리눅스에서 패키지 관리를 담당 │ $ apt-get update : 설치 되어있는 패키지들의 새로운 버젼이 있는지 확인할 때 해당 명령어를 사용합니다 │ $ apt-get upgrade : 위에 있는 apt-get update를 통해서 확인한 패키지들의 최신 버전에 따라서 패키지들의 버전을 업그레이드 해주는 명령어입니다 │ $ apt install yum │ $ apt-get -y install yum │ $ apt update │ $ apt -y install yum │ $ apt-get update │ $ apt-get install yum │ $ apt install python-lzma │ $ apt install python-sqlitecachec │ $ apt install python-urlgrabber │ $ apt install python-pycurl │ $ apt install python-urlgrabber │ $ apt-get install openjdk-11-jdk │ $ javac -version │ $ vi ~/.bashrc │ export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java)))) │ export PATH=$PATH:$JAVA_HOME/bin │ $ source ~/.bashrc : 현재 실행중인 shell에 즉시 적용 (새로 실행한 shell에서는 필요없음) │ $ echo $JAVA_HOME │ │ 4) Alien 버전업 설치 │ Alien은 레드햇 패키지(.rpm) 를 데비안 패키지(.deb) 로 변환해 주는 프로그램 │ RPM은 RedHat Package Manager 로 Linux Standaard Base의 표준 패키지포맷 중 하나이며, │ 레드헷 계열(Redhat, CentOS, Fedora)계열의 리눅스에서 사용. │ 반면 Debian, Ubuntu 같은 데비안 계열에서는 deb 포맷의 파일을 사용하고, │ apt-get라는 패키지관리도구를 이용하는데, 확장자가 .rpm 인 파일은 apt-get 으로 설치가 되지 않아 │ 이때 Alien을 이용하면 rpm파일을 바로 설치하거나 deb파일로 변환하여 설치가 가능함 │ │ ★ 이전 alien 이 문제가 있어 재설치 ★ │ $ uname -i : 서버 버젼 확인 64 bit │ $ apt-get install -y alien libaio1 unixodbc │ $ apt-get --fix-broken install │ $ apt-get remove alien │ $ curl -O http://archive.ubuntu.com/ubuntu/pool/main/a/alien/alien_8.90_all.deb │ $ dpkg -i alien_8.90_all.deb : dpkg(Debian Package) 패키지 │ │ 5) 오라클 rpm -> dev 변경 │ $ alien --scripts -d oracle-database-preinstall-21c-1.0-1.el7.x86_64.rpm : 파일변환 rpm -> deb │ $ alien -i -c -v oracle-database-preinstall-21c-1.0-1.el7.x86_64.rpm : 파일변환없이 바로설치 │ $ apt-get install dpkg-dev debhelper build-essential │ $ yum -y localinstall oracle-database-preinstall-21c-1.0-1.el7.x86_64.rpm │ │ $ dpkg --install ora*.deb └───────────────────────────────────────── |
10. oracle 설치 - EC2에서 사용가능한 ORACLE 버전 확인 : https://teratail.com/questions/318951 - 다운로드 : https://www.oracle.com/database/technologies/oracle-database-software-downloads.html -> oracle-database-ee-19c-1.0-1.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/index_src.html -> oracle-database-preinstall-19c-1.0-3.el7.x86_64.rpm ┌───────────────┐ │ $ su - root └───────────────┘ - 내컴퓨터로 받은 오라클 파일을 EC2로 옮긴 후 파일 소유자/그룹 변경 $ chown oracle /home/oracle/install/oracle-database-* $ chown :oinstall /home/oracle/install/oracle-database-* - 디펜던시 설치 $ yum update $ yum install -y http://mirror.centos.org/centos/7/os/x86_64/Packages/compat-libcap1-1.10-7.el7.x86_64.rpm $ yum -y install bc bind-utils binutils glibc-devel ksh libnsl libaio libaio-devel libstdc++-devel make net-tools nfs-utils smartmontools sysstat unzip xorg-x11-utils xorg-x11-xauth - 오라클 rpm 설치 $ rpm -Uvh /home/oracle/install/oracle-database-preinstall-19c-1.0-3.el7.x86_64.rpm warning: /home/oracle/install/oracle-database-preinstall-19c-1.0-3.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY Verifying... ################################# [100%] Preparing... ################################# [100%] Updating / installing... 1:oracle-database-preinstall-19c-1.################################# [100%] $ rpm -Uvh /home/oracle/install/oracle-database-ee-19c-1.0-1.x86_64.rpm warning: /home/oracle/install/oracle-database-ee-19c-1.0-1.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY Verifying... ################################# [100%] Preparing... ################################# [100%] Updating / installing... 1:oracle-database-ee-19c-1.0-1 ################################# [100%] [INFO] Executing post installation scripts... [INFO] Oracle home installed successfully and ready to be configured. To configure a sample Oracle Database you can execute the following service configuration script as root: /etc/init.d/oracledb_ORCLCDB-19c configure |
11. oracle 설정 - 환경변수 설정 $ cd /opt/oracle/product/19c/dbhome_1/network/admin $ vi listener.ora SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /opt/oracle/product/19c/dbhome_1) (PROGRAM = extproc) ) (SID_DESC = (GLOBAL_DBNAME = XE) (ORACLE_HOME = /opt/oracle/product/19c/dbhome_1) (SID_NAME = XE) (SERVICE_NAME = XE) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) ) DEFAULT_SERVICE_LISTENER = (XE) $ vi tnsnames.ora XE = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE) ) ) EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) ) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) ) |
12. oracle 기동 $ lsnrctl -> start -> status - 기동화면 $ lsnrctl LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 19-JUN-2022 15:44:05 Copyright (c) 1991, 2019, Oracle. All rights reserved. Welcome to LSNRCTL, type "help" for information. LSNRCTL> start Starting /opt/oracle/product/19c/dbhome_1/bin/tnslsnr: please wait... TNSLSNR for Linux: Version 19.0.0.0.0 - Production System parameter file is /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora Log messages written to /opt/oracle/diag/tnslsnr/ip-172-31-7-255/listener/alert/log.xml Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC_FOR_XE))) Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521))) Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production Start Date 19-JUN-2022 15:44:08 Uptime 0 days 0 hr. 0 min. 0 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Default Service XE Listener Parameter File /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora Listener Log File /opt/oracle/diag/tnslsnr/ip-172-31-7-255/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC_FOR_XE))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521))) Services Summary... Service "PLSExtProc" has 1 instance(s). Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service... Service "XE" has 1 instance(s). Instance "XE", status UNKNOWN, has 1 handler(s) for this service... The command completed successfully LSNRCTL> status Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production Start Date 19-JUN-2022 15:44:08 Uptime 0 days 0 hr. 0 min. 11 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Default Service XE Listener Parameter File /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora Listener Log File /opt/oracle/diag/tnslsnr/ip-172-31-7-255/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC_FOR_XE))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521))) Services Summary... Service "PLSExtProc" has 1 instance(s). Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service... Service "XE" has 1 instance(s). Instance "XE", status UNKNOWN, has 1 handler(s) for this service... The command completed successfully |
13. SQL PLUS 확인 $ ........................ 알아보는 중 |
99. 추가작업 - EC2(Linux) 사용자 별 .pem 파일 생성하기 및 ec2-user 비활성화 https://junhyeong-jang.tistory.com/10 |