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>
338 lines
7.4 KiB
Markdown
338 lines
7.4 KiB
Markdown
# 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>
|
|
```
|
|
|
|
### Configure for Old Client Compatibility
|
|
|
|
If using Instant Client 10/11 (ODBC), configure `sqlnet.ora`:
|
|
|
|
```powershell
|
|
# 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:
|
|
```powershell
|
|
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
|
|
|
|
```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;
|
|
```
|
|
|
|
---
|
|
|
|
## Create DMPDIR Directory
|
|
|
|
```sql
|
|
-- 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:
|
|
|
|
```sql
|
|
-- 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:
|
|
```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
|