# 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 1. Go to Oracle XE Downloads: https://www.oracle.com/database/technologies/xe-downloads.html 2. Download **OracleXE213_Win64.zip** (~1.5 GB) - Requires Oracle account (free registration) 3. Verify download integrity (optional): ```powershell 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 ```powershell Expand-Archive OracleXE213_Win64.zip -DestinationPath C:\OracleXE_Install ``` ### Step 2: Run Installer 1. Open Command Prompt or PowerShell **as Administrator** 2. Navigate to extracted folder: ```powershell cd C:\OracleXE_Install\Disk1 ``` 3. Run setup: ```powershell .\setup.exe ``` ### Step 3: Installation Wizard 1. **Welcome Screen** - Click Next 2. **License Agreement** - Accept and click Next 3. **Oracle Home Location** - Default: `C:\app\oracle\product\21c\dbhomeXE` - Keep default unless disk space is an issue 4. **Database Passwords** - Enter password for SYS and SYSTEM: `romfastsoft` - Confirm password - **Important:** Remember this password! 5. **Summary** - Review and click Install 6. **Installation Progress** - Wait (~10-20 minutes) 7. **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: ```powershell Get-Service Oracle* | Format-Table Name, Status, StartType ``` ### Test Connection ```powershell # 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> ``` ## 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 ```sql -- 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): ```sql ALTER PLUGGABLE DATABASE XEPDB1 OPEN; ALTER PLUGGABLE DATABASE XEPDB1 SAVE STATE; ``` --- ## Ce NU trebuie făcut manual Următoarele sunt create **automat** de scriptul `01-setup-database.ps1`: | Component | Script | |-----------|--------| | Tablespace ROA | `01-setup-database.ps1` | | DMPDIR directory | `01-setup-database.ps1` | | Password profile (UNLIMITED) | `01-setup-database.ps1` | | User CONTAFIN_ORACLE | `01-setup-database.ps1` | | sqlnet.ora (client vechi) | `01-setup-database.ps1` | **NU rula manual comenzile SQL pentru acestea** - scripturile le fac automat! --- ## 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: ```sql 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: ```sql -- Automatic memory management ALTER SYSTEM SET MEMORY_TARGET = 2G SCOPE = SPFILE; ALTER SYSTEM SET MEMORY_MAX_TARGET = 2G SCOPE = SPFILE; ``` --- ## Troubleshooting ### OracleServiceXE Not Starting 1. Check Windows Event Viewer for errors 2. Verify disk space (need 15+ GB free) 3. Check Oracle alert log: ```powershell Get-Content C:\app\oracle\diag\rdbms\xe\XE\trace\alert_XE.log -Tail 50 ``` ### Cannot Connect to XEPDB1 ```sql -- 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 ```powershell # 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: ```powershell C:\app\oracle\product\21c\dbhomeXE\deinstall\deinstall.bat ``` Or via Control Panel > Programs and Features. --- ## Next Steps After Oracle XE installation: 1. Copy `config.example.ps1` to `config.ps1` 2. Edit `config.ps1` with your settings 3. Run `01-setup-database.ps1` See main `README.md` for complete workflow. --- **Last Updated:** 2026-01-28 **Project:** ROMFASTSQL - Oracle XE Installation Guide