[Oracle]Linux(Oracle Linux 8)에 Oracle Database 19c 설치하기
환경 구성
Host OS: Mac OS (64bit) / CPU: Apple Silicon (M2)
VM: Virtual Box-7.1.4
Guest OS: Oracle Linux 8.8
Database: Oracle Database 19c
🖐️ 설치하기 이전에
리눅스 설치
아직 리눅스가 설치되어 있지 않다면 아래 포스팅을 참고하여 미리 설치해 주시기 바랍니다. (링크: [Linux]Virtual Box에 리눅스(Oracle Linux 8.x) 설치하기)
[Linux]Virtual Box에 리눅스(Oracle Linux 8.x) 설치하기
환경 구성Host OS: Mac OS (64bit) / CPU: Apple Silicon (M2)VM: Virtual Box-7.1.4Guest OS : Oracle Linux 8.81. Virtual Box 설치 및 이미지 다운로드Virtual Box 다운로드다음 링크로 접속하여 [macOS / Apple Silicon hosts] 항목을 선
retto9522.tistory.com
오라클 데이터베이스 설치 파일 다운로드(aarch64 전용)
아래 사이트에서 리눅스에 설치할 오라클 데이터베이스 설치 파일을 다운로드 받도록 합니다.
https://www.oracle.com/database/technologies/oracle19c-linux-arm64-downloads.html
Oracle Database 19c for LINUX ARM (aarch64)
Oracle Database 19c Grid Infrastructure (19.19) for LINUX ARM (aarch64) Contains the Grid Infrastructure Software including Oracle Clusterware, Automated Storage Management (ASM), and ASM Cluster File System. Download and install prior to installing Oracle
www.oracle.com
- db_home.zip은 RAC 구성의 소프트웨어를 설치하기 위한 파일
- grid_home.zip은 RAC의 Grid Infrastructure를 설치하기 위한 파일
따라서, db_home.zip 파일을 다운로드합니다.
1. Oracle Database 설치를 위한 요구사항 확인
1-1. OS 타입 및 버전, Oracle Database 버전 별 필수 패키지 확인
본격적으로 오라클 데이터베이스를 설치하기 이전에 Oralce Linux8에서 Oracle Database 19c 버전을 설치하기 위해 필수적으로 필요한 패키지들에는 어떠한 것들이 있는지 알아야 합니다.
오라클 데이터베이스를 설치할 때 필요한 필수 패키지는 오라클 공식 웹사이트의 Database Installation Guide에서 확인할 수 있습니다. (링크: https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/oracle-linux-8-distributions-for-arm.html)
Oracle Linux8 버전에서 Oracle Database 19c를 설치하기 위해 필요한 패키지들이 참,,, 많네요ㅎ 하지만, 걱정하실 필요 없습니다. 이 많은 패키지들을 단 한 번의 명령어로 전부 설치할 수 있으니까요 :)
1-2. 시스템 요구사항
오라클 데이터베이스를 설치하기 위한 시스템 요구사항입니다. 그럼 실제로 리눅스에 설치할 수 있는 용량이 충분한지 확인해 보도록 합시다.
메모리 확인
grep MemTotal /proc/meminfo
SWAP 메모리 확인
grep SwapTotal /proc/meminfo
tmp 디렉터리 사이즈 확인
df -h /tmp
디스크 사이즈 확인
df -h
1-3. 커널 버전 및 아키텍처 확인
uname -a
1-4. 네트워크 확인 및 Ping 테스트
우선, yum 명령어를 통해 여러 가지 필수 패키지들을 다운로드하기 위해선 네트워크가 정상적으로 작동해야 합니다. 다음과 같은 명령어를 통해 확인합니다.
## 내 ip주소 확인
ifconfig
## 네트워크 연결 확인 / 구글 DNS주소(8.8.8.8)로 신호 전송
ping 8.8.8.8
2. 호스트 설정 변경
2-1. 호스트 추가
vi 편집기를 통해서 /etc/hosts 파일을 수정합니다.
vi /etc/hosts
파일 하단에 hostname을 추가합니다.
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
# {내 IP주소} {hostname}
192.168.45.126 oracle
2-2. hostname 설정
hostname을 oracle로 설정합니다.
hostnamectl set-hostname oracle
그리고 변경된 값이 잘 적용되었는지 확인합니다.
hostname
3. Oracle Database Preinstallation RPM(요구 패키지) 설치
위 1-1에서 보았다시피 Oracle Database를 설치하기 위해 필요한 패키지들이 정말 많았는데요. 이를 단 한 번의 명령어를 통해 전부 설치할 수 있습니다. Oracle 공식 사이트에서도 이를 설명해주고 있습니다. (링크: https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/running-rpm-packages-to-install-oracle-database.html)
다음 명령어로 Oracle Database를 설치하기 위한 필수 패키지들을 설치합니다.
yum -y install oracle-database-preinstall-19c
4. OS 커널 파라미터 설정
- 커널 파라미터 관련 파일: /etc/sysctl.conf
4-1. OS 커널 파라미터 수정
vi /etc/sysctl.conf
# 아래의 내용 수정
kernel.shmmax =2147483648
kernel.shmall =943719
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
kernel.panic_on_oops = 1
fs.file-max = 6815744
fs.aio-max-nr = 1048576
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.ip_local_port_range = 9000 65500
파일 수정 후 :wq 로 저장하고 나갑니다.
4-2. 변경된 값 적용
# 변경된 값 적용
sysctl -p
5. OS 리소스 파라미터 설정
- 리소스 파라미터: /etc/security/limits.conf
5-1. OS 리소스 파라미터 수정
vi /etc/security/limits.conf
# 아래의 내용 추가
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
oracle soft memlock 3774874
oracle hard memlock 3774874
6. SELinux & 방화벽 해제
6-1. SELinux 해제
6-1-1. SELinux 커널 파라미터 수정
- SELinux 커널 파라미터: /etc/selinux/config
vi /etc/selinux/config
# 아래의 내용을 수정
SELINUX=disabled
SELINUXTYPE=targeted
6-1-2. 재부팅
SELinux 커널 파라미터 적용하기 위해선 재부팅이 필요합니다.
# 리눅스 재부팅하기
reboot
6-2. 방화벽 해제
6-2-1. 방화벽 상태 확인
systemctl status firewalld
6-2-2. 방화벽 중지 및 비활성화
방화벽을 중지한 후에 비활성화합니다.
## 방화벽 중지
systemctl stop firewalld
## 방화벽 비활성화
systemctl disable firewalld
6-2-3. 방화벽 상태 재확인
systemctl status firewalld
7. 오라클 디렉터리 생성 및 유저 설정
7-1. 오라클 디렉터리 생성
7-1-1. 오라클 홈 디렉토리 생성
mkdir -p /oracle/product/19.0.0
7-2. 그룹 및 유저 생성
7-2-1. 그룹 생성
groupadd -g 500 dba
7-2-2. 유저 생성 및 패스워드 변경
# oracle 유저 생성
useradd -u 500 -g dba oracle
# oracle 계정 비밀번호 설정
passwd oracle
7-2-3. 디렉토리 소유권 및 그룹 변경
chown -R oracle:dba /oracle
7-3. 오라클 계정 환경변수 설정
- 계정 환경변수: .bash_profile
7-3-1. oracle 유저 프로파일 생성
# oracle 사용자로 계정 전환
su - oracle
# oracle 사용자의 .bash_profile
vi .bash_profile
7-3-2. .bash_profile 작성
해당 과정은 반드시 oracle 계정으로 진행해야 합니다.
umask 022
export ORACLE_HOSTNAME=oracle
export ORACLE_SID=ORCL
export ORACLE_UNQNAME=ORCL
export ORACLE_BASE=/oracle
export ORACLE_HOME=/oracle/product/19.0.0
export ORACLE_TERM=vt100
export ORACLE_OWNER=oracle
export NLS_LANG=AMERICAN_AMERICA.KO16MSWIN949
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/X11R6/lib
export PATH=$ORACLE_HOME/OPatch:$ORACLE_HOME/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:$PATH:.
export LANG=C
export DISPLAY=localhost:0.0
export CV_ASSUME_DISTID=RHEL7.6
PS1='[${ORACLE_SID}]$PWD> '
7-3-3. .bash_profile 적용
. .bash_profile
8. Oracle Database 소프트웨어 설치(Single, GUI 환경)
8-1. X Window 시스템이란?
- 원격 접속 터미널 프로그램에서 GUI 화면을 사용하기 위한 시스템
- 오라클 유저에서 DISPLAY 환경변수를 설정해야 사용 가능
Mac OS에서 X Window 시스템을 사용하기 위해선 XQuatz 설치가 필요합니다. 다운로드 방법은 어렵지 않으니 생략하겠습니다. (링크: https://www.xquartz.org/index.html)
8-1-1. X Window 시스템에 필요한 패키지 설치
x window 시스템을 사용하기 위해선 해당 리눅스 서버에 xterm 패키지를 설치해야 합니다. xterm이란, X Window System용 터미널 에뮬레이터입니다. 다음 명령어로 쉽게 설치할 수 있습니다.
# root 계정 전환
su
# xterm 패키지 설치
yum -y install xterm
8-2. 오라클 설치 파일 위치 변경
8-2-1. FTP를 이용하여 오라클 데이터베이스 설치 파일 업로드
FTP 접속 시 반드시 oracle 계정으로 접속해야 합니다.
FTP로 접속하여 이전에 다운받은 Oracle Database 설치 파일을 가상머신에 업로드합니다. 오라클 홈 디렉터리 (/oracle/product/19.0.0) 경로에 파일을 업로드하였습니다.
8-2-2. 오라클 설치 파일 압축 해제
unzip 패키지를 설치한 후 oracle 계정으로 접속하여 해당 zip 파일을 압축 해제합니다.
# unzip 패키지 설치
yum -y install unzip
# oracle 계정 전환
su - oracle
# unzip 파일명
unzip LINUX.ARM64_1919000_db_home.zip
8-3. 오라클 데이터베이스 설치
이제 위에서 설치한 XQuatz을 이용하여 GUI 환경에서 오라클 데이터베이스를 설치해봅시다. 터미널을 열어서 다음과 같은 명령어를 입력합니다.
## ssh -X {접속 계정명}@{접속 할 서버의 IP} xterm
ssh -X oracle@192.168.x.x xterm
XQuatz로 접속한 터미널로 이제 설치를 진행해 보겠습니다. 설치 파일이 존재하는 경로(/oracle/product/19.0.0)로 이동합니다.
다음 명령어를 입력하여 오라클 데이터베이스 설치를 시작합니다.
./runInstaller
오라클 데이터베이스 설치 스크립트가 정상적으로 실행될 경우, XQuatz를 통해 위와 같이 GUI 환경이 출력됩니다.
데이터베이스를 생성하고 구성해야 하기 때문에 [Create and configure a single instance database. This option creates a starter database]를 선택합니다.
일반적인 테스트 환경에서 구성하는 경우엔 [Desktop class], 운용 데이터 센터 환경에서 다양한 고급 구성옵션을 사용할 경우 [Server class]를 선택합니다. 저는 테스트 환경에서 진행할 것이라 Desktop class를 선택하여 진행하였습니다.
항목 | 설명 |
Oracle base (자동 입력) | .bash_profile에서 설정한 ORACLE_BASE 환경변수 값 |
Software location (자동 입력) | .bash_profile에서 설정한 ORACLE_HOME 환경변수 값 |
Database file location | .bash_profile에서 설정했었던 DATA_DIR 환경변수 값 |
Database edition | 오라클 DB버전 |
Character set | 데이터베이스 인코딩 (문자 집합) |
OSDBA group | 오라클 |
Global database name | 오라클 DB접속을 위한 고유 식별자 (=SID) |
Password | 오라클DB 비밀번호 |
oracle 계정의 .bash_profile에서 설정한 값과 동일하게 설정해야 합니다.
INS-30011 오류는 그냥 Oracle 비밀번호 표준에 맞지 않아서 발생하는 것이기 때문에 Yes를 눌러 무시하고 넘어가도 상관없습니다.
oracle 계정의 .bash_profile에서 입력한 값과 동일하게 Inventory Directory를 설정합니다. 보통 자동 입력이 되어 있기 때문에 oraInventory Group Name 만 dba 그룹인지 확인하고 설치를 계속 진행하면 됩니다.
만약, "[INS-32055] 중앙 인벤토리는 Oracle Base에 있습니다." 라고 뜰 경우 그냥 [예]를 눌러 계속 진행합니다.
Oracle Database 설치 스크립트를 실행하기 위해 시스템 권한이 필요한데, 이를 root 계정을 전환하여 사용할 것인지 sudo 명령어를 사용해 진행할 것인지 묻는 화면입니다. Automatically run configuration scripts를 체크하고, 해당 리눅스의 root 계정 비밀번호를 입력합니다.
설치 환경을 확인하는 프로세스가 진행되면, 일부 부분에서 잘못된 정의가 있다고 이를 무시할 것인지 물어보는 화면입니다. Swap Size는 무시하고 넘어가도 Oracle Database 구동에 큰 상관이 없으니 Ignore All을 체크하고 계속 진행합시다.
정말 무시할 것인지 확인하는 화면이라 Yes를 누르시고 계속 설치를 진행합니다.
사용자가 설정한 Oracle Database 설치 설정값들을 정리하여 출력해 주는 화면입니다. [Install] 버튼을 눌러 설치합니다.
설치 스크립트를 실행하기 위해 root 계정이 필요한데, Oracle Database 설치 인스턴스가 root 계정에 접근해도 되는지 묻는 화면입니다. 역시 Yes를 눌러 계속 진행합니다.
설치가 완료되었습니다. close 버튼을 눌러 설치 인스턴스를 종료합니다.
8.4 Oracle Listner 상태 확인
exit외부에서 Oracle Database로 접근하기 위한 Listener가 정상 실행되고 있는지 상태를 확인합니다. lsnrctl status {리스너명}을 입력하면 되는데, 따로 설정한 것 없이 Preinstall로 진행했다면 기본적인 리스너 명은 LISTENER로 설정되어 있습니다.
(참고로 환경변수 값이 oracle 계정에만 설정되어 있기 때문에 해당 과정은 oracle 계정으로 진행해야 합니다.)
# lsnrctl status {리스너명} // 특정 리스너 상태 확인하기
lsnrctl status LISTENER
# 전체 리스너 상태 확인하기
lsnrctl status
# 리스너 시작하기
lsnrctl start
# 리스너 중지하기
lsnrctl stop
1521 포트를 통해 LINSTENER가 정상적으로 실행 중인 것을 확인할 수 있습니다.
9. Oracle Database 실행
9-1. Oracle Database 접속
이제 sqlplus 명령어를 통해 시스템 관리 계정인 sysdba로 Oracle Database에 접속합니다.
sqlplus / as sysdba
문제없이 데이터베이스에 잘 연결된 것 같지만, Connected to an idle instance.는 아직 데이터베이스를 기동 하지 않은 휴지 인스턴스에 접속했다는 것입니다.
9-2. Oracle Database 기동
따라서, startup 명령어로 데이터베이스를 기동시켜야 합니다.
SQL> startup
근데, 데이터베이스를 기동 하려 보니 ORA-01078, LRM-00109 오류가 발생했네요.
9-2-1. 오류 해결하기
위 오류를 해석해 보자면 뭔가 parameter file을 열 수 없다는 것 같네요. 한번 해당 경로로 가서 initORCL.ora 파일을 확인해 봅시다.
데이터베이스는 기동 될 때 init<SID>.ora 형식의 초기화 매개변수를 설정하는 파일을 참조하는데, 애초에 해당 파일이 존재하지 않아 오류가 발생한 것 같습니다.
따라서, init.ora 형식의 파일을 먼저 찾아야 합니다. 대부분 $ORACLE_BASE/admin/pfile/ 경로에 init.ora 형식의 파일이 존재합니다. 저는 /oracle/admin/orcl/pfile 경로에 init.ora.xxx 파일이 있었네요.
문제를 해결할 수 있는 방법은 init.ora.xxx 파일로 마운트하여 기동 하거나 해당 파일을 오류가 발생한 경로에 init<SID>.ora 파일명으로 복사하여 다시 기동해야 합니다.
둘 중 한 방법을 선택하여 사용하시면 됩니다. 다만 1번 방법은 매번 데이터베이스를 기동 할 때마다 pfile 값을 지정해줘야 하기 때문에 2번 방법을 추천드립니다.
① 마운트 하는 방법
SQL> startup pfile=/oracle/admin/orcl/pfile/init.ora.xxx
② init.ora.xxx 파일 복사
cp /oracle/admin/orcl/pfile/init.ora.xxx /oracle/product/19.0.0/dbs/initORCL.ora
파일을 복사한 후에 다시 sqlplus로 접속하여 기동 해봅시다.
데이터베이스가 성공적으로 기동 된 것을 볼 수 있습니다.
10. 설치 완료
# 데이터베이스 나가기
SQL> exit
# sysdba 계정으로 접속
sqlplus / as sysdba
정상적으로 기동 된 이후에 다시 sysdba 계정으로 접속해 보니 잘 연결된 것을 볼 수 있습니다.
참고
https://acredev.tistory.com/62