본문 바로가기
Database/Installation

[Oracle 19c 설치 (2)] Linux 8에 Oracle 19c 설치, DB 생성(HR 스키마), scott 스키마

by jsyona 2026. 4. 9.

이전 글에서 Oracle 설치를 위한 OS 사전 환경 구성을 완료하였다.
이번 글에서는 이어서 Oracle Database 19c 소프트웨어 설치 및 데이터베이스 생성(DBCA) 과정을 진행한다.


설치 파일 구성

Oracle 19c 설치 파일은 아래 공식 사이트에서 다운받을 수 있다.

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

 

※ 다운로드를 위해 Oracle 계정 로그인 필요 (계정이 없다면 회원가입 진행)

  • LINUX.X64_193000_db_home.zip

Oracle 19c 설치의 핵심 파일이다.
약 3GB 크기의 압축 파일이며, 해당 파일만으로 설치가 가능하다.

  • LINUX.X64_193000_examples.zip

예제 스키마가 포함되어 있어, 실습용이라면 다운받는 것이 좋다. (필수는 X)


VMware에서 Shared Folder 설정 확인

설치 파일을 가상머신으로 옮기기 위해 Shared Folder 설정을 확인한다.

가상머신을 먼저 Shut down한다.

[Edit virtual machine settings] 클릭

[Edit virtual machine settings] 클릭

Shared Folder 경로 확인

다음 항목 확인

  • Folder sharing : [Always enabled]
  • 공유 폴더 경로 존재 여부

경로가 없다면 [Add] 버튼 클릭 후 추가


Linux에서 Shared Folder mount

root 계정에서 실행

mkdir -p /mnt/hgfs

vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other

.host:/ → VMware 공유폴더 전체 의미
/mnt/hgfs → 리눅스에서 접근할 경로

ls 해보면, shared 폴더가 뜨며 정상적으로 mount된 것을 확인할 수 있다.


Oracle 설치 파일 압축 해제

파일 다운로드가 끝났다면, 파일들을 shared 폴더에 넣는다.

mv /mnt/hgfs/shared/LINUX.X64_193000_db_home.zip /u01/app/oracle/product/19.3.0/dbhome_1/
cd /u01/app/oracle/product/19.3.0/dbhome_1
unzip -q LINUX.X64_193000_db_home.zip

파일을 $ORACLE_HOME 경로로 이동시키고, unzip 명령어로 압축을 해제한다.

unzip 뒤에 -q 옵션(quiet mode)을 붙여서 명령어를 실행하면, 압축을 푸는 파일들을 화면에 출력하지 않는다.

/u01/app/oracle/product/19.3.0/dbhome_1/ 경로는 $ORACLE_HOME 으로 간단하게 적을 수 있다.

 

이동(mv)하는 과정까지 한번에 실행하려면

unzip -q /mnt/hgfs/shared/LINUX.X64_193000_db_home.zip -d $ORACLE_HOME

-d 옵션은 압축을 풀 위치(destination)를 지정하는 것이다.


runInstaller 실행 (+ 오류 해결 과정)

ls해보면 압축이 풀린 것을 확인할 수 있다.

이 중에서 runInstaller를 실행시킨다.

./runInstaller

▼ 오류 발생 시

더보기

※ Oracle 19c는 출시 당시 기준으로 Oracle Linux 7을 지원하기 떄문에, 나처럼 Oracle Linux 8을 사용한다면 runInstaller 실행 시 오류가 발생할 수 있다. 그런 경우 아래와 같이 따라하면 된다.

cd $ORACLE_HOME/cv/admin
vi cvu_config
# 맨 아래 추가
CV_ASSUME_DISTID=OL7

다시 runInstaller 실행시 정상 작동한다.


설치

구성 옵션 선택

[Set Up Software Only] 선택 후 [Next]

DBCA로 데이터베이스를 별도로 생성할 예정이므로 소프트웨어만 설치한다.


데이터베이스 설치 옵션

 

[Single instance database installation] 선택 후 [Next]

Single Instance : 하나의 서버에서 하나의 DB 운영 방식

더보기

※ Oracle Real Application Clusters (RAC)는 여러 대의 서버가 하나의 DB를 공유하는 방식이다. 


데이터베이스 에디션 선택

모든 기능이 포함된 [Enterprise Edition] 선택


설치 경로 확인

Oracle base (/u01/app/oracle)는 오라클 소프트웨어와 db 관련 설정 파일들이 설치되는 디렉토리이다.

엔진은 /u01/app/oracle/product/19.3.0/dbhome_1에 설치된다.

기본값 그대로 사용 후 [Next] 클릭


Inventory Directory 설정

Inventory Directory 는 설치 메타데이터가 저장되는 경로이다.

인벤토리 권한 그룹은 [dba]로 지정하고 [Next]


OS 그룹 권한 설정

OSDBA : 데이터베이스 관리자 권한
OSOPER : DB 시작/종료 권한
OSBACKUPDBA : 백업 권한
OSDGDBA : Data Guard 관리 권한
OSKMDBA : 암호화 키 관리 권한

→ 모두 [dba]로 변경 후 [Next]


Root Script 자동 실행 설정

설치 과정에서 root 권한으로 스크립트를 실행해야 하는 경우, 자동으로 실행하도록 한다.

[Automatically run configuration scripts] 체크

root 비밀번호 입력하고 [Next]


사전 점검 경고 (compat-libcap1)

사전점검 화면에서 compat-libcap1-1.10이 존재하지 않는다고 경고창이 뜬다.

Oracle 19c 설치 체크 로직이 linux 7 버전 기준으로 검사하기 때문에 생기는 에러이다.

linux 7에서는 compat-libcap1이었지만, linux 8에서는 libcap으로 바뀌었다.

 

preinstall 패키지를 설치한 상황이라면, libcap은 이미 설치되어 있다. 따라서 무시해도 되는 에러이다.


설치 요약

[Install] 클릭

[Yes]

설치가 완료되었다.

[Close] 클릭


Listener 실행

리스너는 DB 접속을 가능하게 하는 네트워크 프로세스이다.

lsnrctl
start


SQL*Plus 기본 환경 설정 (glogin.sql)

glogin.sql은 sqlplus에 접속할 때, 모든 사용자에게 적용되는 설정이다.

※ login.sql은 사용자별 설정이다.

cd $ORACLE_HOME/sqlplus/admin
vi glogin.sql

# 아래 내용 추가
set sqlprompt '&_USER@&_CONNECT_IDENTIFIER> '
define_editor=vi

sqlplus 접속 시 기본 프롬프트 표시 형식은 SQL >이다.

이렇게 설정해주면, SYS@ORCL > 형식으로 변경된다

&_USER 현재 접속 사용자
&_CONNECT_IDENTIFIER 접속한 DB 이름

따라서 누가 어떤 DB에 접속했는지 편리하게 확인할 수 있게 된다.

 

define_editor=vi

sqlplus에서 edit 명령 실행 시 사용할 에디터를 vi로 설정하는 명령이다.

 

SYS@ORCL > edit

이렇게 입력하면, vi 에디터가 실행된다.

 


DBCA 실행 (데이터베이스 생성)

dbca &

&를 붙이면 터미널창을 계속 사용할 수 있도록 백그라운드 실행하는 명령이다.


[Create a database] 선택 후 [Next]


구성 방식 선택

메모리 할당, 샘플 스키마 설치 등 세부 사항들을 직접 설정할 것이기 때문에

[Advanced configuration] 선택한다.


데이터베이스 유형

[Custom Database] 선택 후 [Next]


SID 설정

나중에 추가로 다른 데이터베이스 생성 시 SID를 대문자로 만들 거라서, orcl도 SID를 대문자로 변경해준다.

이거만 소문자면 헷갈리기 때문에...

 

[Create as Container database] 체크 해제 후 [Next]

더보기

※ Container database?

하나의 컨테이너(CDB)에 여러 개의 독립적인 데이터베이스(PDB)를 포함하는 구조이다.


데이터파일 경로 지정

데이터베이스 파일의 경로를 /u02/oradata/orcl로 지정한다

[OMF] 체크 해제 후 [Next]

더보기

※ Oracle-Managed Files(OMF)

파일명을 자동 생성하는 기능이다.

 

OMF 사용 X

  • /u02/oradata/orcl/system01.dbf
  • /u02/oradata/orcl/sysaux01.dbf
  • /u02/oradata/orcl/users01.dbf

OMF 사용

  • /u02/oradata/ORCL/datafile/o1_mf_system_k3j2h4l9_.dbf
  • /u02/oradata/ORCL/datafile/o1_mf_sysaux_j8sk2k3_.dbf

이렇게 자동으로 파일명을 생성해준다.

 

OMF와 ASM이 둘다 파일을 자동 관리한다는 관점에서 비슷한 것 아닌가..? 라는 궁금증에 ASM도 함께 알아보았다.

 

※ ASM (Automatic Storage Management)

ASM은 디스크 자체를 관리하는 기능이다.

OS 파일 시스템 대신 Oracle이 직접 디스크를 관리한다

디스크
 └── OS 파일시스템 (ext4, xfs 등)
      └── /u01
      └── /u02
            └── oradata
                 └── system01.dbf

→ 파일 시스템 방식

디스크
 └── ASM (Oracle이 직접 관리)
      └── +DATA
            └── ORCL
                 └── DATAFILE

→ ASM 방식

ASM 환경에서는 OS에서 ls 명령으로 파일이 보이지 않, Oracle 내부에서만 보인다.


Fast Recovery Area 설정

 

# root에서
mkdir -p /u02/oradata/fast_recovery_area/orcl
chown -R oracle:dba /u02
chmod -R 775 /u02

fast_recovery_area 디렉토리를 미리 생성해둔다.

/u02/oradata/fast_recovery_area/orcl로 경로 지정한다.

용량은 8GB로 설정하였다. = 8192MB

 

더보기

※ Enable archiving

체크 시 실시간으로 발생하는 모든 archive log가 저장된다.

장애가 발생하면 최신 시점으로 모두 복구할 수 있지만, 계속 쌓이면서 용량을 많이 차지하기 때문에 체크하지 않는다.

체크하지 않으면 default가 No_Archive_Log 모드가 된다.


[Next]


[Next]


메모리 설정

Shared Memory 약 2GB로 설정한다.


EM Express 설정

EM database Express는 웹 브라우저를 통해 데이터베이스의 상태를 모니터링할 수있는 도구이다.

포트번호가 5500으로 되어있는데, 나중에 브라우저 주소창에서 https://localhost:5500/em을 입력하여 접속하게 된다.

기본값 유지 후 [Next]

리스너가 선택되지 않았다고 경고창이 뜨는데, [Yes] 누르면 된다.


비밀번호 oracle로 설정

비밀번호가 간단하여 생기는 경고창이다. [Yes]를 누른다.


DB 생성 옵션

[Create database] 체크

더보기

[Save as a database template]를 체크하면, 현재 설정한 값들을 나중에 또 쓸 수 있도록 템플릿으로 저장한다.

[Generate database creation scripts]는 데이터베이스를 만들지 않고 SQL 스크립트 파일만 생성한다.

[customize storage locations] 클릭

redo log Group 1, 2, 3을 모두 100MB로 변경해준다. 하나씩 변경할 때마다 [Apply]를 눌러야 정상 적용된다.

완료되면 [Ok], [Next] 클릭

설치가 완료되었다. [Close]


예제 스키마 설치

unzip /mnt/hgfs/shared/LINUX.X64_193000_examples.zip

압축을 해제한다.

cd examples/
./runInstaller
더보기

※ 오류 발생 시

export CV_ASSUME_DISTID=OL7
echo $CV_ASSUME_DISTID
# OL7 출력되면 됨

사진과 동일하게 진행한다.


HR 스키마 생성

cd $ORACLE_HOME/demo/schema

cd human_resources/

경로를 이동한다.

sqlplus / as sysdba
@hr_main.sql

sqlplus 접속하고, hr_main.sql 파일 실행

파일을 실행하면 4가지 매개변수를 입력해야 한다. 사진과 동일하게 입력한다.

  • 비밀번호: hr
  • default 데이터 저장소: users
  • 임시 저장소: temp
  • 설치 기록(로그) 저장 경로: 지정된 폴더에 스키마 설치 과정과 에러 내역을 저장

Oracle Database 19c 소프트웨어 설치 및 데이터베이스 생성이 완료되었다.

create user scott identified by tiger
default tablespace users
quota unlimited on users;

grant connect, resource to scott;

!vi demobld.sql
더보기
--
-- Copyright (c) Oracle Corporation 1988, 1999.  All Rights Reserved.
--
--  NAME
--    demobld.sql
--
-- DESCRIPTION
--   This script creates the SQL*Plus demonstration tables in the
--   current schema.  It should be STARTed by each user wishing to
--   access the tables.  To remove the tables use the demodrop.sql
--   script.
--
--  USAGE
--       SQL> START demobld.sql
--
--

SET TERMOUT ON
PROMPT Building demonstration tables.  Please wait.
SET TERMOUT OFF

CREATE TABLE BONUS
        (ENAME VARCHAR2(10),
         JOB   VARCHAR2(9),
         SAL   NUMBER,
         COMM  NUMBER);

CREATE TABLE EMP
       (EMPNO NUMBER(4) NOT NULL,
        ENAME VARCHAR2(10),
        JOB VARCHAR2(9),
        MGR NUMBER(4),
        HIREDATE DATE,
        SAL NUMBER(7, 2),
        COMM NUMBER(7, 2),
        DEPTNO NUMBER(2));

INSERT INTO EMP VALUES
        (7369, 'SMITH',  'CLERK',     7902,
        TO_DATE('17-DEC-1980', 'DD-MON-YYYY'),  800, NULL, 20);
INSERT INTO EMP VALUES
        (7499, 'ALLEN',  'SALESMAN',  7698,
        TO_DATE('20-FEB-1981', 'DD-MON-YYYY'), 1600,  300, 30);
INSERT INTO EMP VALUES
        (7521, 'WARD',   'SALESMAN',  7698,
        TO_DATE('22-FEB-1981', 'DD-MON-YYYY'), 1250,  500, 30);
INSERT INTO EMP VALUES
        (7566, 'JONES',  'MANAGER',   7839,
        TO_DATE('2-APR-1981', 'DD-MON-YYYY'),  2975, NULL, 20);
INSERT INTO EMP VALUES
        (7654, 'MARTIN', 'SALESMAN',  7698,
        TO_DATE('28-SEP-1981', 'DD-MON-YYYY'), 1250, 1400, 30);
INSERT INTO EMP VALUES
        (7698, 'BLAKE',  'MANAGER',   7839,
        TO_DATE('1-MAY-1981', 'DD-MON-YYYY'),  2850, NULL, 30);
INSERT INTO EMP VALUES
        (7782, 'CLARK',  'MANAGER',   7839,
        TO_DATE('9-JUN-1981', 'DD-MON-YYYY'),  2450, NULL, 10);
INSERT INTO EMP VALUES
        (7788, 'SCOTT',  'ANALYST',   7566,
        TO_DATE('09-DEC-1982', 'DD-MON-YYYY'), 3000, NULL, 20);
INSERT INTO EMP VALUES
        (7839, 'KING',   'PRESIDENT', NULL,
        TO_DATE('17-NOV-1981', 'DD-MON-YYYY'), 5000, NULL, 10);
INSERT INTO EMP VALUES
        (7844, 'TURNER', 'SALESMAN',  7698,
        TO_DATE('8-SEP-1981', 'DD-MON-YYYY'),  1500, NULL, 30);
INSERT INTO EMP VALUES
        (7876, 'ADAMS',  'CLERK',     7788,
        TO_DATE('12-JAN-1983', 'DD-MON-YYYY'), 1100, NULL, 20);
INSERT INTO EMP VALUES
        (7900, 'JAMES',  'CLERK',     7698,
        TO_DATE('3-DEC-1981', 'DD-MON-YYYY'),   950, NULL, 30);
INSERT INTO EMP VALUES
        (7902, 'FORD',   'ANALYST',   7566,
        TO_DATE('3-DEC-1981', 'DD-MON-YYYY'),  3000, NULL, 20);
INSERT INTO EMP VALUES
        (7934, 'MILLER', 'CLERK',     7782,
        TO_DATE('23-JAN-1982', 'DD-MON-YYYY'), 1300, NULL, 10);

CREATE TABLE DEPT
       (DEPTNO NUMBER(2),
        DNAME VARCHAR2(14),
        LOC VARCHAR2(13) );

INSERT INTO DEPT VALUES (10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO DEPT VALUES (20, 'RESEARCH',   'DALLAS');
INSERT INTO DEPT VALUES (30, 'SALES',      'CHICAGO');
INSERT INTO DEPT VALUES (40, 'OPERATIONS', 'BOSTON');

CREATE TABLE SALGRADE
        (GRADE NUMBER,
         LOSAL NUMBER,
         HISAL NUMBER);

INSERT INTO SALGRADE VALUES (1,  700, 1200);
INSERT INTO SALGRADE VALUES (2, 1201, 1400);
INSERT INTO SALGRADE VALUES (3, 1401, 2000);
INSERT INTO SALGRADE VALUES (4, 2001, 3000);
INSERT INTO SALGRADE VALUES (5, 3001, 9999);

COMMIT;

SET TERMOUT ON
PROMPT Demonstration table build is complete.
connn scott/tiger
@demobld
select * from tab;

TNAME      TABTYPE        CLUSTERID
---------- ------------- ----------
BONUS      TABLE
EMP        TABLE
DEPT       TABLE
SALGRADE   TABLE

'Database > Installation' 카테고리의 다른 글

[Oracle 19c 설치 (1)] 19c 설치 전 사전 환경 설정  (0) 2026.04.08