PowerShell scripts for setting up Oracle 21c/XE with ROA application: - Automated tablespace, user creation and imports - sqlnet.ora config for Instant Client 11g/ODBC compatibility - Oracle 21c read-only Home path handling (homes/OraDB21Home1) - Listener restart + 10G password verifier for legacy auth - Tested on VM 302 with CONTAFIN_ORACLE schema import Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
7.4 KiB
Installing Oracle 21c Express Edition on Windows
Overview
Oracle 21c Express Edition (XE) is free to use with the following limitations:
- 2 CPU threads
- 2 GB RAM for database
- 12 GB user data
For ROA installations with up to 50 companies, XE is sufficient.
Download
-
Go to Oracle XE Downloads: https://www.oracle.com/database/technologies/xe-downloads.html
-
Download OracleXE213_Win64.zip (~1.5 GB)
- Requires Oracle account (free registration)
-
Verify download integrity (optional):
Get-FileHash OracleXE213_Win64.zip -Algorithm SHA256
System Requirements
| Requirement | Minimum | Recommended |
|---|---|---|
| OS | Windows 10/11, Server 2016+ | Windows Server 2019+ |
| RAM | 4 GB | 8 GB |
| Disk | 15 GB | 50 GB |
| CPU | 2 cores | 4 cores |
Installation
Step 1: Extract ZIP
Expand-Archive OracleXE213_Win64.zip -DestinationPath C:\OracleXE_Install
Step 2: Run Installer
-
Open Command Prompt or PowerShell as Administrator
-
Navigate to extracted folder:
cd C:\OracleXE_Install\Disk1 -
Run setup:
.\setup.exe
Step 3: Installation Wizard
-
Welcome Screen - Click Next
-
License Agreement - Accept and click Next
-
Oracle Home Location
- Default:
C:\app\oracle\product\21c\dbhomeXE - Keep default unless disk space is an issue
- Default:
-
Database Passwords
- Enter password for SYS and SYSTEM:
romfastsoft - Confirm password
- Important: Remember this password!
- Enter password for SYS and SYSTEM:
-
Summary - Review and click Install
-
Installation Progress - Wait (~10-20 minutes)
-
Finish - Note the connection information:
- Multitenant container database: XE
- Pluggable database: XEPDB1
- EM Express URL: https://localhost:5500/em/
Post-Installation Configuration
Verify Services Running
Open Services (services.msc) and verify:
| Service | Status | Startup Type |
|---|---|---|
| OracleServiceXE | Running | Automatic |
| OracleOraDB21Home1TNSListener | Running | Automatic |
Or via PowerShell:
Get-Service Oracle* | Format-Table Name, Status, StartType
Test Connection
# Set Oracle environment
$env:ORACLE_HOME = "C:\app\oracle\product\21c\dbhomeXE"
$env:PATH = "$env:ORACLE_HOME\bin;$env:PATH"
# Test connection to CDB
sqlplus system/romfastsoft@localhost:1521/XE
# Test connection to PDB (for applications)
sqlplus system/romfastsoft@localhost:1521/XEPDB1
Expected output:
Connected to:
Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
SQL>
Configure for Old Client Compatibility
If using Instant Client 10/11 (ODBC), configure sqlnet.ora:
# Edit sqlnet.ora
notepad C:\app\oracle\product\21c\dbhomeXE\network\admin\sqlnet.ora
Add these lines:
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
Reload listener:
lsnrctl reload
CDB/PDB Architecture
Oracle XE uses Container Database (CDB) architecture:
+---------------------------------------------+
| CDB: XE |
| +---------------------------------------+ |
| | CDB$ROOT - System, SYS objects | |
| +---------------------------------------+ |
| +---------------------------------------+ |
| | PDB$SEED - Template (read-only) | |
| +---------------------------------------+ |
| +---------------------------------------+ |
| | XEPDB1 - Application Data (ROA) | |
| +---------------------------------------+ |
+---------------------------------------------+
| Container | Purpose | Connect To |
|---|---|---|
| XE (CDB$ROOT) | Administration, SYS | Admin only |
| XEPDB1 | Application data | ROA applications |
Important: Always connect to XEPDB1 for ROA operations, not XE!
Verify PDB Status
-- Connect as SYSDBA
sqlplus sys/romfastsoft@localhost:1521/XE as sysdba
-- Check PDB status
SELECT name, open_mode FROM v$pdbs;
-- Expected output:
-- NAME OPEN_MODE
-- --------- ----------
-- PDB$SEED READ ONLY
-- XEPDB1 READ WRITE
If XEPDB1 is MOUNTED (not READ WRITE):
ALTER PLUGGABLE DATABASE XEPDB1 OPEN;
ALTER PLUGGABLE DATABASE XEPDB1 SAVE STATE;
Create DMPDIR Directory
-- Connect to PDB
sqlplus sys/romfastsoft@localhost:1521/XEPDB1 as sysdba
-- Create Windows directory
host mkdir C:\DMPDIR
-- Create Oracle DIRECTORY object
CREATE OR REPLACE DIRECTORY DMPDIR AS 'C:\DMPDIR';
GRANT READ, WRITE ON DIRECTORY DMPDIR TO PUBLIC;
-- Verify
SELECT directory_name, directory_path FROM dba_directories WHERE directory_name = 'DMPDIR';
Configure Password Policy
Disable password expiration for application users:
-- Connect to PDB
sqlplus sys/romfastsoft@localhost:1521/XEPDB1 as sysdba
-- Modify DEFAULT profile
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
ALTER PROFILE DEFAULT LIMIT PASSWORD_REUSE_TIME UNLIMITED;
ALTER PROFILE DEFAULT LIMIT PASSWORD_REUSE_MAX UNLIMITED;
ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;
-- Verify
SELECT resource_name, limit FROM dba_profiles WHERE profile = 'DEFAULT' AND resource_type = 'PASSWORD';
Enterprise Manager Express
Access EM Express web interface:
https://localhost:5500/em/
Login:
- Username: system
- Password: romfastsoft
- Container: XEPDB1 (or leave empty for CDB)
Memory Configuration
Check current memory settings:
SHOW PARAMETER memory;
SHOW PARAMETER sga;
SHOW PARAMETER pga;
XE defaults (cannot exceed due to license):
- SGA: 2 GB max
- PGA: 2 GB max
For better performance within limits:
-- Automatic memory management
ALTER SYSTEM SET MEMORY_TARGET = 2G SCOPE = SPFILE;
ALTER SYSTEM SET MEMORY_MAX_TARGET = 2G SCOPE = SPFILE;
Troubleshooting
OracleServiceXE Not Starting
- Check Windows Event Viewer for errors
- Verify disk space (need 15+ GB free)
- Check Oracle alert log:
Get-Content C:\app\oracle\diag\rdbms\xe\XE\trace\alert_XE.log -Tail 50
Cannot Connect to XEPDB1
-- Connect to CDB
sqlplus sys/romfastsoft@localhost:1521/XE as sysdba
-- Check PDB status
SELECT name, open_mode FROM v$pdbs;
-- Open if mounted
ALTER PLUGGABLE DATABASE XEPDB1 OPEN;
ALTER PLUGGABLE DATABASE XEPDB1 SAVE STATE;
ORA-12514: TNS listener does not know of service
# Check listener status
lsnrctl status
lsnrctl services
# Restart listener
lsnrctl stop
lsnrctl start
Uninstall Oracle XE
If needed, run the universal installer in deinstall mode:
C:\app\oracle\product\21c\dbhomeXE\deinstall\deinstall.bat
Or via Control Panel > Programs and Features.
Next Steps
After Oracle XE installation:
- Copy
config.example.ps1toconfig.ps1 - Edit
config.ps1with your settings - Run
01-setup-database.ps1
See main README.md for complete workflow.
Last Updated: 2026-01-28 Project: ROMFASTSQL - Oracle XE Installation Guide