목차
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 파일을 다운로드합니다.
공식 매뉴얼은 다음을 참조하십시오.
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키] + [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 로고 키 + R] -> [실행] 창 -> [services.msc] 입력 후 엔터 키를 눌러 [서비스]화면을 표시합니다.

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

메뉴 등록 확인하기
[윈도우 시작] - [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 방화벽] 화면에서 [새 규칙...]을 눌러 [새 인바운드 규칙 마법사]화면을 표시합니다.

[새 인바운드 규칙 마법사]화면의 [단계:규칙 종류]에서 [포트(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_name및 show 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_name및 show 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