Add ROA Oracle Database Windows setup scripts with old client support
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>
This commit is contained in:
@@ -0,0 +1,337 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user