Oracle Database Express Edition 이하 Oracle Database XE는 Oracle Database Enterprise Edition을 기반으로 만든 Oracle Database Edition의 한 종류입니다. 이전 버전으로는 Oracle Database Express Edition 18c가 있었습니다. 이 글에서 설치하는 버전은 멀티테넌트 아키텍처(multitenant architecture) 로만 설치됩니다.
라이센스 해석(공짜 사용?)
Oracle Database Express Edition은 무료로 이용할 수 있지만 그 목적은 시연, 교육으로 한정됩니다. 또한 기능과 성능에 제한이 걸려 있으며 패치는 제공 되지 않고 또한 기술 지원도 받을 수 없습니다. 라이센스에 대한 자세한 내용은 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
버전 22H2
설치 날짜 2021-02-04
OS 빌드 19045.3570
경험 Windows Feature Experience Pack 1000.19052.1000.0
XE 다운로드
다운로드에는 다음과 같이 오라클 계정이 필요할 수도 있습니다. 없는 경우 다음 화면 최하단의 [계정 만들기]부터 시작하십시오.
Oracle Database 21c Express Edition for Windows x64를 다음 사이트에서 다운로드합니다. 다운로드되는 파일은 OracleXE213_Win64.zip입니다.
참고)아래 링크는 최신버전 사이트URL이기 때문에 버전이 갱신될 경우 다른 버전의 인스톨 페이지가 될 수도 있습니다.
공식 매뉴얼은 다음을 참조하십시오.
XE setup.exe명령으로 설치하기
- OracleXE213_Win64.zip파일을 C:\temp\OracleXE213_Win64에 압축을 풉니다.
- setup.exe파일을 실행합니다.
다음과 같이 설치 준비 중… 메시지를 표시 후 다음 화면으로 진행됩니다.
[Oracle Database 21c Express Edition용 InstallShield 마법사 시작] 화면에서 [다음(N)]버튼을 눌러 다음 화면으로 진행합니다.
[라이센스 계약] 화면에서 [동의함(A)]을 선택하고 [다음(N)]버튼을 눌러 다음 화면으로 진행합니다.
[설치할 대상 폴더 선택] 화면에서 [변경(C)...]버튼을 눌러 [Oracle Database 21c Express Edition 설치 위치:]를 c:\app\product\21.0.0\으로 변경합니다. 그리고 [다음(N)]버튼을 눌러 다음 화면으로 진행합니다.
[데이터베이스 비밀번호 지정]화면에서 sys, system, PDBADMIN의 비밀번호를 manager로 입력합니다. 그리고 [다음(N)]버튼을 눌러 다음 화면으로 진행합니다.
[설정 요약]화면에서 위에서 지정한 대상폴더 등을 확인한 후 문제가 없다면 [설치(I)]버튼을 눌러 다음 화면으로 진행합니다.
[Oracle Database 21c Express Edition 설치] 진행 화면이 표시되고 자동으로 다음화면으로 진행합니다.
설치 진행 도중에 다음과 같이 Java(TM) Platform SE binary의 통신 허용에 대한 [Windows 보안 경고]화면이 표시되면[홈 네크워크, 회사 네트워크 둥의 개인 네트워크(R)]을 선택한 후 [액세스 허용(A)]버튼을 눌러 다음 화면으로 진행합니다.
다시 한번 설치 진행 화면으로 돌아온 다음 [Oracle Database 21c Express Edition 설치]가 완료 되면 자동으로 다음 화면으로 진행합니다.
설치가 완료되면 다음과 같이 [Oracle Database가 성공적으로 설치되었습니다.] 메시지가 표시된 설치 종료 화면이 표시됩니다. [완료(F)]버튼을 눌러 화면을 종료합니다.
- localhost:1521은 다중 테넌트 컨테이너 데이터 베이스(CDB)의 Root 컨테이너 CDB$ROOT에 접속합니다.
- localhost:1521/XEPDB1는 플러그인할 수 있는 데이터베이스(PDB)에 접속합니다.
환경 변수 확인
Oracle Database 21c Express Edition용 InstallShield 마법사 는 자동으로 관련 환경 변수를 설정합니다. 이를 regedit.exe명령을 실행해 확인 하면 다음과 같습니다.
[Windows키] + [R] 키를 눌러 “실행”대화 상자를 열고 “regedit”를 입력 실행 해서 [레지스트리 편집기] 화면을 표시합니다.
[컴퓨터\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDB21Home1]을 선택 하면 오른쪽 영역에 환경 변수 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\21.0.0\dbhomeXE\bin 경로가 추가되었음을 확인할 수 있습니다. 참고로 환경변수 %PATH% 에 대해서는 Windows MS-DOS 특수 환경 변수 %PATH% 글을 참조하십시오.
데이터베이스 서비스 확인
[Windows 로고 키 + R] -> [실행] 창 -> [services.msc] 입력 후 엔터 키를 눌러 [서비스]화면을 표시합니다.
[서비스]화면 OracleOraDB21Home1TNSListener, OracleServiceXE가 실행 중 임을 확인합니다.
메뉴 등록 확인하기
[윈도우 시작] – [Oracle – OraDB21Home1]를 선택하면 다음과 같이 등록된 Oracle Menu를 확인 할 수 있습니다.
sqlnet.ora의 기본값 확인하기
C:\app\product\21.0.0\homes\OraDB21Home1\network\admin\sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
참고로 SQLNET.AUTHENTICATION_SERVICES 대한 자세한 내용을 sqlplus / as sysdba 명령으로 접속이 안될 때 (ORA-01017) 글을 참조 하십시오.
listener.ora 수정하기
Oracle XE21c 설치 후, 설정 값 HOST=PC-A.localdomain은 IP Address변경시 서비스 기동 또는 리스너 상태에 문제가 발생할 수 있습니다.listener.ora 파일의 HOST 초기치 PC-A.localdomain 를 PC-A로 변경합니다.
C:\app\product\21.0.0\homes\OraDB21Home1\network\admin\listener.ora
...생략...
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = PC-A.localdomain)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
...생략...
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = PC-A)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
tnsnames.ora 수정하기
Oracle XE21c 설치 후, 설정 값 HOST=PC-A.localdomain은 IP Address변경시 서비스 기동 또는 리스너 상태에 문제가 발생할 수 있습니다. tnsnames.ora 설정 파일의 HOST 초기치 PC-A.localdomain 를 PC-A로 변경합니다.
C:\app\product\21.0.0\homes\OraDB21Home1\network\admin\tnsnames.ora
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = PC-A.localdomain)(PORT = 1521))
...생략...
LISTENER_XE =
(ADDRESS = (PROTOCOL = TCP)(HOST = PC-A.localdomain)(PORT = 1521))
...생략...
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = PC-A)(PORT = 1521))
...생략...
LISTENER_XE =
(ADDRESS = (PROTOCOL = TCP)(HOST = PC-A)(PORT = 1521))
...생략...
Listener 상태확인
다음 명령으로 Oracle Listener 상태를 확인합니다.
C:\> lsnrctl status
LSNRCTL for 64-bit Windows: Version 21.0.0.0.0 - Production on 09-5월 -2024 15:34:05
Copyright (c) 1991, 2021, Oracle. All rights reserved.
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=PC-A)(PORT=1521)))에 연결되었습니다
리스너의 상태
------------------------
별칭 LISTENER
버전 TNSLSNR for 64-bit Windows: Version 21.0.0.0.0 - Production
시작 날짜 09-5월 -2024 14:59:16
업타임 0 일 0 시간. 34 분. 53 초
트레이스 수준 off
보안 ON: Local OS Authentication
SNMP OFF기본 서비스 XE
리스너 매개변수 파일 C:\app\product\21.0.0\homes\OraDB21Home1\network\admin\listener.ora
리스너 로그 파일 C:\app\product\21.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\21.0.0\admin\XE\xdb_wallet))(Presentation=HTTP)(Session=RAW))
서비스 요약...
"CLRExtProc" 서비스는 1개의 인스턴스를 가집니다.
"CLRExtProc" 인스턴스(UNKNOWN 상태)는 이 서비스에 대해 1 처리기를 가집니다.
"XE" 서비스는 1개의 인스턴스를 가집니다.
"xe" 인스턴스(READY 상태)는 이 서비스에 대해 2 처리기를 가집니다.
"XEXDB" 서비스는 1개의 인스턴스를 가집니다.
"xe" 인스턴스(READY 상태)는 이 서비스에 대해 1 처리기를 가집니다.
"b377ce9e6bc1467999a035965cc30d9b" 서비스는 1개의 인스턴스를 가집니다.
"xe" 인스턴스(READY 상태)는 이 서비스에 대해 2 처리기를 가집니다.
"xepdb1" 서비스는 1개의 인스턴스를 가집니다.
"xe" 인스턴스(READY 상태)는 이 서비스에 대해 2 처리기를 가집니다.
명령이 성공적으로 수행되었습니다
sqlplus.exe명령으로 로컬 접속 확인하기
명령 프롬프트에서 sqlplus system/manager 로 접속할 수 있는지 확인합니다. 접속에 문제 없다면 다음과 같이 접속결과를 표시합니다.
C:\> sqlplus system/manager
SQL*Plus: Release 21.0.0.0.0 - Production on 목 5월 9 15:38:41 2024
Version 21.3.0.0.0
Copyright (c) 1982, 2021, Oracle. All rights reserved.
마지막 성공한 로그인 시간: 목 5월 09 2024 15:05:27 +09:00
다음에 접속됨:
Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production
Version 21.3.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 21c Express Edition Release 21.0.0.0.0 - Production
XE CDB$ROOT컨테이너 데이터베이스(CDB)에 연결하기
다음과 같이 컨테이너 데이터 베이스(CDB)의 Root 컨테이너 CDB$ROOT에 접속 합니다. 그리고 데이터베이스에서 사용 가능한 서비스를 v$services에서 표시합니다.
C:\> sqlplus / as sysdba
COLUMN name FORMAT A15
COLUMN pdb FORMAT A10
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 입니다. 21c 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 21.0.0.0.0 - Production on 토 5월 11 13:28:54 2024
Version 21.3.0.0.0
Copyright (c) 1982, 2021, Oracle. All rights reserved.
다음에 접속됨:
Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production
Version 21.3.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
... 중간생략 ...
SYSDG LOCKED DEFAULT
ORDSYS LOCKED DEFAULT
37 행이 선택되었습니다.
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_CIS_PROFILE PASSWORD 5
ORA_STIG_PROFILE PASSWORD 3
XE CDB$ROOT Oracle 초기 파라미터 정보
다음 SQL문으로 Oracle XE 인스턴스 작성 직후의 초기 파라미터 정보를 확인할 수 있습니다. oracle18c_xe_v$parameter.txt 파일의 자세한 내용은 여기를 참조하십시오.
C:\> sqlplus / as sysdba
spool oracle21c_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 480
sessions 744
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
shard_queries_restricted_by_key FALSE
native_blockchain_features
blockchain_table_max_no_drop
pmem_filestore
474 행이 선택되었습니다.
SQL> spool off
XEPDB1 플러그인 데이터베이스(PDB)에 연결하기
localhost:1521/XEPDB1로 플러그인 데이터베이스(PDB)에 접속합니다. port번호 1521은 생략할 수 있습니다.
C:\> sqlplus /@localhost:1521/XEPDB1 as sysdba
COLUMN name FORMAT A15
COLUMN pdb FORMAT A10
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