Windows10 Pro에서 무상으로 이용가능한 Oracle Database Express Edition 18c 설치하기

Oracle DB

Oracle Database Express Edition 이하 Oracle Database XE는 Oracle Database Enterprise Edition을 기반으로 만든 Oracle Database Edition의 한 종류입니다. 이전 버전으로는 Oracle Database Express Edition 11g가 있었습니다. 이 글에서 설치하는 버전은 멀티테넌트 아키텍처(multitenant architecture) 로만 설치 됩니다.

라이센스 해석(공짜 사용?)

Oracle Database Express Edition은 상업적 용도의 무상 이용 가능합니다.  진정한 의미에서 아무 생각없이 공짜로 사용할 수있는 Oracle Database입니다. 그러나 기능과 성능에 제한이 걸려 있으며 패치는 제공 되지 않고  또한 기술 지원도 받을 수 없습니다. 라이센스에 대한 자세한 내용은 Oracle Database Express Edition 라이센스 공식 사이트 를 참조 하십시오.

리소스 제한

 사용할 수 있는 리소스 최대 값은 다음과 같습니다.

  • 2 CPU threads
  • 2GB RAM
  • 12GB까지의 사용자 데이터

상세 옵션 및 사양

  • Multitenant PDB를 3개까지 만들 수 있습니다.
  • Oracle SQL Developer를 이용할 수 있습니다.
  • 파티션 기능을 사용할 수 있습니다.
  • DB 작성 전에 변경 가능한 데이터베이스 문자 세트는 AL32UTF8입니다. Oracle Client에서 UFT-8 이외의 문자 코드를 응용 프로그램에서 사용하려는 경우에 NLS_LANG의 Character set설정으로 문자변환을 할 수 있기 때문에 기본 문자 세트로 설정 XE를 설치해도 문제 없습니다.
  • Database In-memory는 기본 기능을 사용할 수 있습니다. 
  • 보안 관련 기능은 TDE (Transparent Data Encryption)를 비롯한 대부분의 기능을 사용할 수 있습니다.
  • Spatial and Graph는 사용할 수 있습니다. 
  • 지리 데이터베이스로 그래프 데이터베이스로 사용할 수 있습니다.
  • 압축 관련 기능은 대부분의 기능을 사용할 수 있습니다.
  • Advanced Analytics는 사용할 수 있습니다.
  • 기계 학습과 데이터 마이닝, R 언어에서 액세스 할 수 있습니다.

다음의 내용은 이용할 수 없습니다.

  • 병렬 처리 관련 기능을 사용할 수 없습니다.
  • Enterprise Manager 옵션 팩을 사용할 수 없습니다.
  • RAT (Real Application Testing)도 사용할 수 없습니다. 
  • EM Express는 해제 가능하면 사용할 수 있지만 처음에는 로컬에서 액세스 제한되어 있습니다 .
  • RAC (Real Application Clusters) 및 DataGuard, Sharding 같은 여러 노드를 연계시키는 기능을 사용할 수 없습니다.
  • 또한 GoldenGate도 사용할 수 없습니다.
  • APEX (Oracle Application Express)와 ORDS (Oracle REST Data Services)는 포함되어 있지 않습니다. 그러나 별도로 다운로드하여 이용할 수 있습니다.

Windows 버전 설치

작업 환경

에디션	Windows 10 Pro
버전	21H1
설치 날짜	‎2021-‎02-‎04
OS 빌드	19043.1237
경험	Windows Feature Experience Pack 120.2212.3530.0

XE 다운로드

다운로드에는 다음과 같이 오라클 계정이 필요합니다. 없는경우 다음 화면 최 하단의 [계정 만들기]부터 시작하십시오

Oracle Database 18c Express Edtion for Windows x64를 다음 사이트에서 OracleXE184_Win64.zip 파일을 다운로드합니다.

Oracle Database Express Edition (XE) 18c Downloads
Oracle Database Express Edition (XE) 18c Downloads

참고)최신버전 사이트

Oracle Database Express Edition (XE) Downloads | Oracle 日本
Oracle Database Express Edition (XE) Downloads

공식 매뉴얼은 다음을 참조하십시오.

Installation Guide

XE setup.exe명령으로 설치하기

  • OracleXE184_Win64.zip파일을 C:\temp\OracleXE184_Win64에 압축을 풉니다.
  • setup.exe파일을 실행합니다.

다음과 같이 설치 준비 중… 메시지를 표시후 다음 화면으로 진행 됩니다.

[Oracle Database 18c Express Edition용 InstallShield 마법사 시작] 화면에서 [다음(N)]버튼을 눌러 다음 화면으로 진행합니다.

[라이센스 계약] 화면에서 [동의함(A)]을 선택하고 [다음(N)]버튼을 눌러 다음 화면으로 진행합니다.

[설치할 대상 폴더 선택] 화면에서 [변경(C)...]버튼을 눌러 [Oracle Database 18c Express Edition 설치 위치:]를 c:\app\product\18.0.0\으로 변경합니다. 그리고 [다음(N)]버튼을 눌러 다음 화면으로 진행합니다.

[데이터베이스 비밀번호 지정]화면에서 sys, system, PDBADMIN의 비밀번호를 manager로 입력합니다. 그리고 [다음(N)]버튼을 눌러 다음 화면으로 진행합니다.

[설정 요약]화면에서 위에서 지정한 대상폴더 등을 확인한 후 문제가 없다면 [설치(I)]버튼을 눌러 다음 화면으로 진행합니다.

[Oracle Database 18c Express Edition 설치] 진행화면이 표시되고 자동으로 다음화면으로 진행합니다.

설치 진행 도중에 다음과 같이 Java(TM) Platform SE binary의 통신 허용에 대한 [Windows 보안 경고]화면이 표시되면[홈 네크워크, 회사 네트워크 둥의 개인 네트워크(R)]을 선택한 후 [액세스 허용(A)]버튼을 눌러 다음 화면으로 진행합니다.

다시 한번 설치 진행화면으로 돌아온 다음 [Oracle Database 18c Express Edition 설치]가 완료 되면 자동으로 다음화면으로 진행합니다.

설치가 완료되면 다음과 같이 [Oracle Database가 성공적으로 설치되었습니다.] 메시지가 표시된 설치 종료 화면이 표시됩니다. [완료(F)]버튼을 눌러 화면을 종료합니다.

  • localhost:1521은 다중 테넌트 컨테이너 데이터 베이스(CDB)의 Root 컨테이너 CDB$ROOT에 접속합니다.
  • localhost:1521/XEPDB1는 플러그인할 수 있는 데이터베이스(PDB)에 접속합니다.

환경 변수 확인

Oracle Database 18c Express Edition용 InstallShield 마법사 는 자동으로 관련 환경 변수를 설정합니다. 이를 regedit.exe명령을 실행해 확인 하면 다음과 같습니다.

[Windows키Windows Key] + [R] 키를 눌러 “실행”대화 상자를 열고 “regedit”를 입력 실행 해서 [레지스트리 편집기] 화면을 표시합니다.

[컴퓨터\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDB18Home1]을 선택 하면 오른쪽 영역에 환경 변수 NLS_LANG, ORACLE_HOME, ORACLE_SID, ORACLE_BASE가 설정되어 있음을 확인 할 수 있습니다. 참고로NLS_LANG에 대해서는 ORA-12705: Cannot access NLS data files or invalid environment specified 글을 참조하십시오.

명령 프롬프트에서 환경변수 %PATH%값을 echo명령으로 확인하면 다음과 같이 c:\app\product\18.0.0\dbhomeXE\bin경로가 추가 되어음을 확인 할 수 있습니다. 참고로 환경변수 %PATH% 에 대해서는 Windows MS-DOS 특수 환경 변수 %PATH% 글을 참조하십시오.

데이터베이스 서비스 확인

[Windows 로고 키Windows Key + R] -> [실행] 창 -> [services.msc] 입력 후 엔터 키를 눌러 [서비스]화면을 표시합니다.

[서비스]화면 OracleOraDB18Home1TNSListener, OracleServiceXE가 실행 중 임을 확인합니다.

메뉴 등록 확인하기

[Windows Key윈도우 시작] – [Oracle – OraDB18Home1]를 선택하면 다음과 같이 등록된 Oracle Menu를 확인 할 수 있습니다.

sqlnet.ora의 기본값 확인하기

C:\app\product\18.0.0\dbhomeXE\NETWORK\ADMIN\sqlnet.ora

SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

참고로 SQLNET.AUTHENTICATION_SERVICES 대한 자세한 내용을 sqlplus / as sysdba 명령으로 접속이 안될 때 (ORA-01017) 글을 참조 하십시오.

Listener 상태확인

다음 명령으로 Oracle Listener 상태를 확인합니다.

C:\>lsnrctl status
LSNRCTL for 64-bit Windows: Version 18.0.0.0.0 - Production on 24-9월 -2021 19:06:19
Copyright (c) 1991, 2018, Oracle.  All rights reserved.
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=PC-A.localdomain)(PORT=1521)))에 연결되었습니다
리스너의 상태
------------------------
별칭                     LISTENER
버전                     TNSLSNR for 64-bit Windows: Version 18.0.0.0.0 - Production
시작 날짜                 24-9월 -2021 13:09:24
업타임                   0 일 5 시간. 56 분. 56 초
트레이스 수준            off
보안                     ON: Local OS Authentication
SNMP                     OFF기본 서비스           XE
리스너 매개변수 파일   C:\app\product\18.0.0\dbhomeXE\network\admin\listener.ora
리스너 로그 파일         C:\app\product\18.0.0\diag\tnslsnr\PC-A\listener\alert\log.xml
끝점 요약 청취 중...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=PC-A)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=127.0.0.1)(PORT=5500))(Security=(my_wallet_directory=C:\APP\PRODUCT\18.0.0\admin\XE\xdb_wallet))(Presentation=HTTP)(Session=RAW))
서비스 요약...
"9acb8e36c7c44a499353f094602850ca" 서비스는 1개의 인스턴스를 가집니다.
  "xe" 인스턴스(READY 상태)는 이 서비스에 대해 1 처리기를 가집니다.
"CLRExtProc" 서비스는 1개의 인스턴스를 가집니다.
  "CLRExtProc" 인스턴스(UNKNOWN 상태)는 이 서비스에 대해 1 처리기를 가집니다.
"XE" 서비스는 1개의 인스턴스를 가집니다.
  "xe" 인스턴스(READY 상태)는 이 서비스에 대해 1 처리기를 가집니다.
"XEXDB" 서비스는 1개의 인스턴스를 가집니다.
  "xe" 인스턴스(READY 상태)는 이 서비스에 대해 1 처리기를 가집니다.
"xepdb1" 서비스는 1개의 인스턴스를 가집니다.
  "xe" 인스턴스(READY 상태)는 이 서비스에 대해 1 처리기를 가집니다.
명령이 성공적으로 수행되었습니다

주의사항) Oracle을 설치한 후 Listener상태를 확인해서 (HOST=PC-A.localdomain) 가 localhost 또는 127.0.0.1 로 되어 있다면 외부 컴퓨터에서 sqlplus.exe명령으로 원격 접속을 할 수 없습니다. 외부에서 접속가능한 컴퓨터명 (예: PC-A.localdomain ) 또는 IP Address (예: 192.168.220.128 ) 를 지정해 주십시오.

sqlplus.exe명령으로 로컬 접속 확인하기

명령 프롬프트에서 sqlplus system/manager 로 접속할 수 있는지 확인합니다. 접속에 문제 없다면 다음과 같이 접속결과를 표시합니다.

C:\>sqlplus system/manager
SQL*Plus: Release 18.0.0.0.0 - Production on 일 9월 19 13:47:45 2021
Version 18.4.0.0.0
Copyright (c) 1982, 2018, Oracle.  All rights reserved.
마지막 성공한 로그인 시간: 일 9월  19 2021 00:47:22 +09:00
다음에 접속됨:
Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0
SQL>

외부 컴퓨터에서 sqlplus.exe명령으로 원격 접속 확인하기

외부 컴퓨터에서 sqlplus명령으로 원격 접속하면 다음과 같이 Error가 발생합니다.

C:\>sqlplus system/manager@192.168.220.128/xe
SQL*Plus: Release 12.2.0.1.0 Production on Sun Sep 19 17:28:01 2021
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
ERROR:
ORA-12170: TNS:Connect timeout occurred
Enter user-name:

“ORA-12170: TNS:Connect timeout occurred” Error를 해결하기 위해서는 다음과 같이 Windows Defender 방화벽에 Oracle Listener Port 1521을 허가합니다.

[제어판\모든 제어판 항목] 화면에서 “Windows Defender 방화벽” 아이콘을 클릭해서[제어판\모든 제어판 항목\ Windows Defender 방화벽]설정 화면을 표시합니다.

그리고 [제어판\모든 제어판 항목\ Windows Defender 방화벽]설정 화면의 왼쪽 메뉴에서 [고급 설정] 링크를 눌러 [고급 보안이 포함된 Windows Defender 방화벽] 화면을 표시합니다.

제어판\모든 제어 항목\Windows Defender 방화벽

마지막으로 [고급 보안이 포함된 Windows Defender 방화벽] 화면에서 [새 규칙…]을 눌러 [새 인바운드 규칙 마법사]화면을 표시합니다.

[새 인바운드 규칙 마법사]화면의 [단계:규칙 종류]에서 [포트(O)]를 선택해 [다음(N)]버튼을 눌러 다음 화면으로 진행합니다.

[새 인바운드 규칙 마법사]화면의 [단계:프로토콜 및 포트]에서 [TCP(T)]를 선택, [특정 로컬 포트(S)]에서 1521 값을 입력하고 [다음(N)]버튼을 눌러 다음 화면으로 진행합니다.

[새 인바운드 규칙 마법사]화면의 [단계:작업]에서 [연결 허용(A)]를 선택하고 [다음(N)]버튼을 눌러 다음 화면으로 진행합니다.

[새 인바운드 규칙 마법사]화면의 [단계:프로필]에서 [도메인(D)], [개인(P)], [공용(U)] 모두 체크를 하고 [다음(N)]버튼을 눌러 다음 화면으로 진행합니다.

[새 인바운드 규칙 마법사]화면의 [단계:이름]에서 [이름(N)]과 [설명(옵션)(D)]을 입력하고 [마침(N)]버튼을 눌러 [고급 보안이 포함된 Windows Defender 방화벽] 화면으로 돌아갑니다.

[새 인바운드 규칙 마법사]화면의 인바우드 규칙에서 오른쪽 마우스 클릭하면 [새로 고침]콘텍스트 메뉴가 표시됩니다. 여기서 [새로 고침]을 눌러 OracleXE 인바운드 규칙이 추가 되었음을 확인합니다.

Windows Defender 방화벽에 Oracle Listener Port 1521을 허가함으로서 다음과 같이 외부 컴퓨터에서 sqlplus명령으로 원격 접속됨을 확인 할 수 있습니다.

C:\>set nls_lang=KOREAN_KOREA.KO16MSWIN949
C:\>sqlplus system/manager@192.168.220.128/xe
SQL*Plus: Release 12.2.0.1.0 Production on 일 9월 19 18:24:28 2021
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
마지막 성공한 로그인 시간: 일 9월  19 2021 18:24:17 +09:00
다음에 접속됨:
Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production

XE CDB$ROOT컨테이너 데이터베이스(CDB)에 연결하기

다음과 같이 컨테이너 데이터 베이스(CDB)의 Root 컨테이너 CDB$ROOT에 접속 합니다. 그리고 데이터베이스에서 사용 가능한 서비스를 v$services에서 표시합니다.

C:\>sqlplus / as sysdba
SQL> COLUMN name FORMAT A15
SQL> COLUMN pdb FORMAT A10
SQL> SELECT name, pdb FROM v$services;
NAME            PDB
--------------- ----------
xeXDB           CDB$ROOT
SYS$BACKGROUND  CDB$ROOT
SYS$USERS       CDB$ROOT
xe              CDB$ROOT
xepdb1          XEPDB1
SQL>

show con_nameshow con_id 명령으로 현재 컨테이너 이름과 ID를 표시합니다.

SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT

SQL> show con_id
CON_ID
------------------------------
1

현재 컨테이너가 CDB인경우 show pdbs 명령으로 모든 플러그인할 수 있는 데이터베이스(PDB)를 표시합니다. PDB$SEED는 신규 PDB를 만들기위한 템플릿 PDB 입니다. 현재 사용할 수 있는 플러그인 컨테이너는 XEPDB1 입니다. 18c Express Edition 버전은 앞으로 2개 더 만들 수 있습니다.

SQL> show pdbs
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 XEPDB1                         READ WRITE NO

XE CDB$ROOT컨테이너 데이터 베이스(CDB) 기본 정보

XE CDB$ROOT Oracle Default 사용자 확인하기

다음 명령으로 기본적으로 작성된 Oracle 사용자 명, 계정 상태 , 적용 Profile 를 확인할 수 있습니다.

C:\>sqlplus / as sysdba
SQL*Plus: Release 18.0.0.0.0 - Production on 금 9월 24 00:19:13 2021
Version 18.4.0.0.0
Copyright (c) 1982, 2018, Oracle.  All rights reserved.
다음에 접속됨:
Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0
SQL> COLUMN username format A23
     COLUMN account_status format A17
     COLUMN profile FORMAT A16
     SET PAGESIZE 100
     SELECT username,account_status,profile FROM dba_users;
USERNAME                ACCOUNT_STATUS    PROFILE
----------------------- ----------------- ----------------
SYS                     OPEN              DEFAULT
SYSTEM                  OPEN              DEFAULT
... 중간생략 ...
ORACLE_OCM              EXPIRED & LOCKED  DEFAULT
SYSDG                   EXPIRED & LOCKED  DEFAULT
35 행이 선택되었습니다.
SQL>

XE CDB$ROOT Oracle 사용자의 default profile설정값을 확인하기

다음 SQL문으로 Oracle 사용자의 default profile설정값을 확인할 수 있습니다. 다음은 로그인 실패 허용 횟수(FAILED_LOGIN_ATTEMPTS)에 대한 각각의 profile설정값을 확인하고 있습니다.

C:\>sqlplus / as sysdba
     COLUMN profile FORMAT A16
     COLUMN resource_type FORMAT A13
     COLUMN limit FORMAT A6
     SELECT profile,resource_type,limit 
       FROM dba_profiles 
      WHERE resource_name='FAILED_LOGIN_ATTEMPTS';
 PROFILE          RESOURCE_TYPE LIMIT
 ---------------- ------------- ------
 DEFAULT          PASSWORD      10
 ORA_STIG_PROFILE PASSWORD      3

XE CDB$ROOT Oracle초기 파라미터 정보

다음 SQL문으로 Oracle XE 인스턴스 작성 직후의 초기 파라미터 정보를 확인할 수 있습니다. oracle18c_xe_v$parameter.txt 파일의 자세한 내용은 여기를 참조하십시오.

C:\>sqlplus / as sysdba
     spool oracle18c_xe_v$parameter.txt
     set linesize 146
     SET PAGESIZE 500
     COLUMN value FORMAT A95
     COLUMN name FORMAT A45
     select name , value FROM v$parameter;

NAME                                VALUE
----------------------------------- ------------
lock_name_space
processes                           300
sessions                            472
timed_statistics                    TRUE
timed_os_statistics                 0
... 중간 생략 ...
pdb_template
shrd_dupl_table_refresh_rate        60
multishard_query_data_consistency   strong
multishard_query_partial_results    not allowed
432 행이 선택되었습니다.
SQL> spool off

XEPDB1 플러그인 데이터베이스(PDB)에 연결하기

localhost:1521/XEPDB1로 플러그인 데이터베이스(PDB)에 접속합니다. port번호 1521은 생략할 수 있습니다.

C:\>sqlplus /@localhost:1521/XEPDB1 as sysdba
SQL> COLUMN name FORMAT A15
SQL> COLUMN pdb FORMAT A10
SQL> SELECT name, pdb FROM v$services;
NAME            PDB
--------------- ----------
xepdb1          XEPDB1
SQL>

show con_nameshow con_id 명령으로 현재 컨테이너 이름과 ID를 표시합니다.

SQL> show con_name
CON_NAME
------------------------------
XEPDB1

SQL> show con_id
CON_ID
------------------------------
3

현재 컨테이너 가 PDB인경우 show pdbs 명령으로는 현재 컨테이너 XEPDB1 만 표시됩니다.

SQL> show pdbs
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         3 XEPDB1                         READ WRITE NO

XEPDB1 플러그인 데이터베이스(PDB) 기본 정보

sqlplus /@localhost:1521/XEPDB1 as sysdba 접속으로 위 XE 컨테이너 데이터 베이스(CDB) 기본 정보와 같은 SQL문을 사용했을 때의 차이점은 다음과 같습니다.

XEPDB1 Default 사용자 확인하기

실행 결과 다음 사용자가 추가로 출력됩니다.

PDBADMIN                OPEN              DEFAULT
SYS$UMF                 EXPIRED & LOCKED  DEFAULT

XEPDB1 사용자의 default profile설정값을 확인하기

실행 결과는 XE CDB$ROOT컨테이너 데이터 베이스(CDB) 의 결과 값과 같습니다.

XEPDB1 초기 파라미터 정보

다음 파라미터 값만 차이가 있습니다.

XE CDB$ROOT컨테이너 데이터 베이스(CDB) 의 경우

sga_target                                    1291845632
common_user_prefix                            C##

XEPDB1 플러그인 데이터베이스(PDB) 의 경우

sga_target                                    0 
common_user_prefix                            
제목과 URL을 복사했습니다