Recent Posts
Recent Comments
Link
06-30 12:53
Today
Total
관리 메뉴

삶 가운데 남긴 기록 AACII.TISTORY.COM

CentOS 7 oracle 19c 설치 본문

DEV&OPS/Linux & Cloud

CentOS 7 oracle 19c 설치

ALEPH.GEM 2022. 7. 19. 11:22

 

오라클 데이터베이스 19c 다운로드

https://www.oracle.com/database/technologies/oracle-database-software-downloads.html

파일: Linux x86-64 

종류: zip 

자신의 운영체제에 맞는 zip 파일을 다운로드합니다.

 

 

호스트 네임 등록

root 권한을 획득합니다.

su -

호스트 네임을 등록합니다.

vi /etc/hosts

리눅스 서버의 ip 주소(192.168.1.6)에 호스트 네임을 정해줍니다.

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.1.6 ora01

만약 자신의 리눅스 ip주소를 알고 싶으면 아래 명령어로 확인하시기 바랍니다.

ifconfig -a

혹시 selinux를 사용하고 있다면 permissive로 설정을 변경해주셔야 합니다.

vi /etc/selinux/config
SELINUX=permissive

 

 

설치 환경

oracle 설치 시 GUI환경이 필요하기 때문에 centos 7을 설치시 GUI 환경으로 설치해야 합니다.

예전에는 일일이 수동으로 세팅해주었으나 오라클에서 자동으로 OS 설치 환경을 세팅해주는 RPM을 제공하고 있습니다.

아래 명령어로 설치하면 필수 패키지 설치 및 OS 커널 파라미터와 자원 제한 설정을 자동으로 실행해 줍니다.

yum install https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm

 

yes/no를 물어보면 y를 입력해 설치하면 환경설정이 자동으로 이루어집니다.

 

커널 파리 미터 확인이 정상적으로 설정되었는지 확인

cat /etc/sysctl.conf
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).

# oracle-database-preinstall-19c setting for fs.file-max is 6815744
fs.file-max = 6815744

# oracle-database-preinstall-19c setting for kernel.sem is '250 32000 100 128'
kernel.sem = 250 32000 100 128

# oracle-database-preinstall-19c setting for kernel.shmmni is 4096
kernel.shmmni = 4096

# oracle-database-preinstall-19c setting for kernel.shmall is 1073741824 on x86_64
kernel.shmall = 1073741824

# oracle-database-preinstall-19c setting for kernel.shmmax is 4398046511104 on x86_64
kernel.shmmax = 4398046511104

# oracle-database-preinstall-19c setting for kernel.panic_on_oops is 1 per Orabug 19212317
kernel.panic_on_oops = 1

# oracle-database-preinstall-19c setting for net.core.rmem_default is 262144
net.core.rmem_default = 262144

# oracle-database-preinstall-19c setting for net.core.rmem_max is 4194304
net.core.rmem_max = 4194304

# oracle-database-preinstall-19c setting for net.core.wmem_default is 262144
net.core.wmem_default = 262144

# oracle-database-preinstall-19c setting for net.core.wmem_max is 1048576
net.core.wmem_max = 1048576

# oracle-database-preinstall-19c setting for net.ipv4.conf.all.rp_filter is 2
net.ipv4.conf.all.rp_filter = 2

# oracle-database-preinstall-19c setting for net.ipv4.conf.default.rp_filter is 2
net.ipv4.conf.default.rp_filter = 2

# oracle-database-preinstall-19c setting for fs.aio-max-nr is 1048576
fs.aio-max-nr = 1048576

# oracle-database-preinstall-19c setting for net.ipv4.ip_local_port_range is 9000 65500
net.ipv4.ip_local_port_range = 9000 65500

항목들을 확인합니다. 표시되는 숫자는 각자 다를 수 있습니다.

자동으로 설정되어 있기 때문에 수정할 필요는 없습니다.

 

자원 제한 관련 설정 확인

역시 자동으로 설정되었기 때문에 잘 설정되어있나 확인만 하면 됩니다.

cat /etc/security/limits.d/oracle-database-preinstall-19c.conf
# oracle-database-preinstall-19c setting for nofile soft limit is 1024
oracle   soft   nofile    1024

# oracle-database-preinstall-19c setting for nofile hard limit is 65536
oracle   hard   nofile    65536

# oracle-database-preinstall-19c setting for nproc soft limit is 16384
# refer orabug15971421 for more info.
oracle   soft   nproc    16384

# oracle-database-preinstall-19c setting for nproc hard limit is 16384
oracle   hard   nproc    16384

# oracle-database-preinstall-19c setting for stack soft limit is 10240KB
oracle   soft   stack    10240

# oracle-database-preinstall-19c setting for stack hard limit is 32768KB
oracle   hard   stack    32768

# oracle-database-preinstall-19c 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-19c setting for memlock soft limit is maximum of 128GB on x86_64 or 3GB on x86 OR 90% of RAM
oracle   soft   memlock    134217728

 

 

oracle 그룹 및 oracle 계정 생성 확인

root 계정으로 작업합니다.

su -

위의 환경 설정을 자동으로 하면 oracle 그룹과 oracle 계정이 생성되었을 것입니다.

oracle 그룹이 생성되어 있는지 확인

cat /etc/group
oinstall:x:54321:oracle
dba:x:54322:oracle
oper:x:54323:oracle
backupdba:x:54324:oracle
dgdba:x:54325:oracle
kmdba:x:54326:oracle
racdba:x:54330:oracle

수동 그룹 추가

asmdba 그룹을 수동으로 추가합니다.

groupadd asmdba

oracle 계정 패스워드 설정

passwd oracle

oracle 계정 설정을 변경해줍니다. 

usermod -g oinstall -G dba,oper,backupdba,dgdba,kmdba,asmdba,racdba oracle

 

 

수동 패키지 설치

자동으로 패키지가 설치되지만 데이터베이스 생성 시 에러가 난다면 아래 패키지를 수동으로 설치하십시오.

root 권한으로 작업합니다.

su -
yum install gcc-c++

설치 시 질문이 나오면 y를 입력하십시오.

 

 

방화벽 설정

root 계정으로 실행합니다.

su -

방화벽을 설정합니다.

firewall-cmd --zone=public --add-port=1521/tcp --add-port=5500/tcp --add-port=5520/tcp --add-port=3938/tcp --permanent

방화벽 설정 적용

firewall-cmd --reload

포트 확인

firewall-cmd --list-ports

 

 

oracle 설치 경로 생성 및 권한 설정

root 권한으로 작업합니다.

su -

설치 경로 생성, 경로에 소유권 권한 설정

mkdir -p /app/oracle/product/19.0.0/dbhome_1
chown -R oracle:oinstall /app
chmod -R 775 /app

 

 

oracle 계정 환경 설정

oracle 계정으로 접속합니다.

su - oracle

환경 설정 파일을 편집합니다.

vi ~/.bash_profile

아래 설정 값을 추가합니다.

export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOMENAME=ora01
export ORACLE_UNQNAME=oracle19
export ORACLE_BASE=/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
export ORA_INVENTORY=/app/oraInventory
export ORACLE_SID=ORCL
export DATA_DIR=/app/oradata
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACL_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export NLS_LANG=KOREAN_KOREA.AL32UTF8

추가한 설정을 적용합니다.

source ~/.bash_profile

 

 

oracle 설치 파일 복사

oracle 계정으로 작업합니다.

su oracle

다운로드 한 오라클 설치 파일(zip)을 (/app/oracle/product/19.0.0/dbhome_1)로 옮깁니다. 

mv linux.x64_193000_database.zip /app/oracle/product/19.0.0/dbhome_1

그런 다음 해당 경로에 이동하여 압축을 해제합니다.

cd /app/oracle/product/19.0.0/dbhome_1
unzip linux.x64_193000_database.zip

 

 

oracle  설치

기존 로그인 계정을 로그아웃 하고 반드시 GUI 환경으로 위에서 생성한 oracle 계정으로 접속합니다.

터미널을 열고 압축을 풀었던 경로(/app/oracle/product/19.0.0/dbhome_1) 에서 ./runInstaller 를 실행합니다.

GUI환경 oracle 계정으로 로그인 하지 않으면 인스톨러 실행시 오류가 발생합니다.

소프트웨어만 설정 선택 후 다음
단일인스턴스 데이터베이스 설치 선택 후 다음
Enterprise Edition 선택 후 다음

 

.bash_profile 설정한 ORACLE_BASE 기반 경로를 기본 값으로 표시 됩니다.

 

다음

 

다음
root 권한을 요구하는 작업이 있기 때문에 자동으로 구성 스크립트 실행 선택 후 root 계정 암호를 입력해준 뒤 다음
요약

설치

예를 선택합니다.
완료

 

 

리스너 설정

 

리스너 설정

마찬가지로 oracle 계정으로 작업합니다.

압축을 풀었던 경로 /app/oracle/product/19.0.0/db_home_1/bin/netca 를 실행해서 리스너를 설정합니다.

./netca

완료

종료할 때 터미널 콘솔창에 종료 코드가 0인지 확인합니다.

 

 

데이터베이스 설정

oracle 계정으로 작업합니다.

/app/oracle/product/19.0.0/dbhome_1/bin 경로에서 작업한다고 가정합니다.

./dbca

아래 과정을 따라 진행하면서 자신의 환경에 맞도록 설정해야 합니다.

고급 구성 선택
컨테이너 데이터베이스로 생성 체크 해제
빠른 복구 영역 지정 선택
메모리 탭
크기 조정 탭
문자 집합
접속 모드 탭
샘플 스키마 추가를 선택하고 다음
관리자(SYS, SYSTEM) 비밀번호를 설정합니다. 잊어버리지 않도록 주의 합시다.
무시하고 계속
데이터베이스 생성
요약
완료

 

 

오라클 네트워크 설정

root 계정으로 작업합니다.

su -

설치 경로에서 네트워크 관리자 경로로 이동

cd /app/oracle/product/19.0.0/dbhome_1/network/admin

vim 에디터로 listener.ora 편집

vi listener.ora
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = ORCL)
      (ORACLE_HOME = /app/oracle/product/19.0.0/dbhome_1)
    )
  )
 
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.6)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

여기서 HOST IP 주소는 오라클이 설치된 IP주소를 입력하시면 됩니다.

SID_NAME과 ORACLE_HOME 경로도 확인해주시고 PORT번호도 편집하거나 확인해줍니다.

 

 

vim 에디터로 tnsnames.ora 편집

vi tnsnames.ora
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.6)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORCL)
      (SID = ORCL)
    )
  )

여기서도 HOST의 IP주소와 포트번호를 확인해주시고 SERVICE_NAME과 SID 도 편집하거나 확인해줍니다.

 

 

vim 에디터로 sqlnet.ora 편집

vi sqlnet.ora
# sqlnet.ora Network Configuration File: /app/oracle/product/19.0.0/dbhome_1/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.
 
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
#ADR_BASE=/app/oracle

 

scott 계정 생성 및 접속 테스트

oracle 계정으로 작업합니다.

su - oracle
sqlplus

계정은 sys as sysdba 으로 접속합니다. (그냥 sys로 접속 시도하면 안되고 as sysdba를 붙여야 됩니다.)

패스워드는 설치 할 때 설정했던 관리계정 SYS, SYSTEM 계정 패스워드입니다.

create user scott identified by tiger;
grant connect, resource, dba to scott;
exit

이제 sqlplus로 계정 scott  비밀번호 tiger 으로 로그인 해봅니다.

sqlplus scott/tiger@ORCL

 

 

리눅스 재부팅 후 수동으로 오라클 구동 테스트

oracle 유저로 작업합니다.

su - oracle
sqlplus / as sysdba

오라클 데이터베이스 구동

startup

sqlplus 종료

exit

리스너 시작

lsnrctl start

이후 DB tool로 SYSTEM 혹은 SYS AS SYSDBA 계정으로 로그인 되는지 확인해봅시다.

 

 

오라클 sqlplus startup 오류 시

sqlplus / as sysdba

ORA-01078, LRM-00109 가 나오면서 startup이 안되는 경우

$ORACLE_BASE/admin/ORCL/pfile/ 

경로에서 init.ora.xxxxxxxx 파일을 initORCL.ora 으로 변경해서 $ORACLE_HOME/dbs 경로로 복사합니다.

그후 다시 sqlplus / as sysdba로 접속하여 startup 합니다.

 

 

부팅 시 자동 실행 등록

재부팅하고 수동으로 오라클과 리스너를 구동하는데 성공했다면 재부팅시 오라클과 리스너를 자동 실행하는 서비스를 등록해보도록 합시다.

root 계정으로 실행합니다.

su -

oratab 수정

vi /etc/oratab

아래 내용을

ORCL:/app/oracle/product/19.0.0/dbhome_1:N

아래처럼 수정합니다.

ORCL:/app/oracle/product/19.0.0/dbhome_1:Y

여기서 ORCL은  ORACLE_SID 로 설정했던 값입니다.

설치 경로를 변경했다면 바뀐 경로대로 수정해야 합니다.

 

파일 생성

아래 파일을 추가해서 설치 시 설정한 SID를 반영해야 합니다.

vi /etc/sysconfig/ORCL.oracledb

아래 내용을 추가합니다.

ORACLE_BASE=/app/oracle
ORACLE_HOME=/app/oracle/product/19.0.0/dbhome_1
ORACLE_SID=ORCL

아래 파일을 또 추가합니다.

vi /usr/lib/systemd/system/ORCL@lsnrctl.service

아래 내용을 추가합니다.

[Unit]
Description=Oracle Net Listener
After=network.target

[Service]
Type=forking
User=oracle
Group=dba
EnvironmentFile=/etc/sysconfig/ORCL.oracledb
ExecStart=/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl start
ExecStop=/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl stop

[Install]
WantedBy=multi-user.target

아래 파일을 또 추가합니다.

vi /usr/lib/systemd/system/ORCL@oracledb.service

아래 내용을 추가합니다.

[Unit]
Description=Oracle Database service
After=network.target lsnrctl.service

[Service]
Type=forking
User=oracle
Group=dba
EnvironmentFile=/etc/sysconfig/ORCL.oracledb
ExecStart=/app/oracle/product/19.0.0/dbhome_1/bin/dbstart $ORACLE_HOME
ExecStop=/app/oracle/product/19.0.0/dbhome_1/bin/dbshut $ORACLE_HOME

[Install]
WantedBy=multi-user.target

 

자동 실행 등록

systemctl daemon-reload
systemctl enable ORCL@lsnrctl 
systemctl enable ORCL@oracledb

재부팅 후 접속이 되는지 확인합니다.

systemctl status ORCL@lsnrctl

systemctl status ORCL@oracledb

 

 

 

 

 

 

 

 

 

728x90