# ROA Oracle Database Setup for Windows ## Overview Scripts and documentation for setting up ROA Oracle Database on Windows servers: | Scenario | Description | |----------|-------------| | **New Server** | Oracle 21c SE (non-CDB) or XE (CDB/PDB) + CONTAFIN_ORACLE.dmp | | **Migration** | Import existing DMP files (CONTAFIN_ORACLE + 30-50 companies) | | **Add Company** | Add new company schema to existing server | --- ## Prerequisites - Windows Server 2016+ or Windows 10/11 - Oracle 21c Standard Edition or Express Edition installed - Administrator privileges - PowerShell 5.1+ - Minimum 8GB RAM (16GB recommended for SE) - 50GB free disk space --- ## Quick Start 1. Download Oracle 21c XE or SE from Oracle 2. Install Oracle (see `docs/00-INSTALL-ORACLE-XE.md` or `docs/00-INSTALL-ORACLE-SE.md`) 3. Copy DMP files to `C:\DMPDIR\` 4. Copy `config.example.ps1` to `config.ps1` and edit values 5. Run scripts in order: `01` -> `07` ```powershell # Example workflow .\01-setup-database.ps1 .\02-create-sys-objects.ps1 .\03-import-contafin.ps1 .\04-create-synonyms-grants.ps1 .\05-import-companies.ps1 .\07-verify-installation.ps1 ``` --- ## Configuration Copy `config.example.ps1` to `config.ps1` and edit: | Parameter | XE Value | SE Value | |-----------|----------|----------| | `ORACLE_HOME` | `C:\app\oracle\product\21c\dbhomeXE` | `C:\app\oracle\product\21c\dbhome_1` | | `SERVICE_NAME` | `XEPDB1` | `ROA` | | `DATAFILE_DIR` | `C:\app\oracle\oradata\XE\XEPDB1` | `C:\app\oracle\oradata\ROA` | --- ## Directory Structure ``` roa-windows-setup/ ├── README.md # This file ├── config.example.ps1 # Configuration template │ ├── docs/ # Installation guides │ ├── 00-INSTALL-ORACLE-XE.md # Oracle 21c XE installation │ └── 00-INSTALL-ORACLE-SE.md # Oracle 21c SE installation │ ├── scripts/ # PowerShell setup scripts │ ├── 01-setup-database.ps1 # Tablespace, profile, CONTAFIN_ORACLE user │ ├── 02-create-sys-objects.ps1# SYS objects (AUTH_PACK, NEWSCHEMA, etc.) │ ├── 03-import-contafin.ps1 # Import CONTAFIN_ORACLE schema │ ├── 04-create-synonyms-grants.ps1 # Public synonyms and grants │ ├── 05-import-companies.ps1 # Batch import company schemas │ ├── 06-add-company.ps1 # Add new company to existing server │ └── 07-verify-installation.ps1# Verify installation completeness │ ├── config/ # Configuration templates │ └── sqlnet.ora # Compatibility for Instant Client 10/11 │ ├── par/ # Data Pump parameter files │ ├── import-contafin.par # CONTAFIN_ORACLE import parameters │ └── import-company.par # Company schema import template │ ├── sql/ # SQL scripts │ └── (to be added) │ └── test/ # Testing scripts └── clone-vm300.sh # Proxmox VM cloning for testing ``` --- ## Scripts Overview | Script | Purpose | Required | |--------|---------|----------| | `01-setup-database.ps1` | Create tablespace ROA, configure profile, create CONTAFIN_ORACLE user | Yes | | `02-create-sys-objects.ps1` | Install SYS objects: AUTH_PACK, NEWSCHEMA, EXECUTESCRIPTOS, UTL_MAIL | Yes | | `03-import-contafin.ps1` | Import CONTAFIN_ORACLE schema from DMP | Yes | | `04-create-synonyms-grants.ps1` | Create public synonyms and grants for CONTAFIN_ORACLE | Yes | | `05-import-companies.ps1` | Batch import company schemas from DMP files | Yes | | `06-add-company.ps1` | Add new company to existing server | Optional | | `07-verify-installation.ps1` | Verify installation completeness (objects, grants, synonyms) | Yes | --- ## Architecture Differences ### Oracle 21c Standard Edition (non-CDB) Traditional single-database architecture (legacy compatibility). | Feature | Value | |---------|-------| | Architecture | Single database (non-CDB) | | Database Name | ROA | | Service Name | ROA | | SID | ROA | | Connection | `system/pass@ROA` | | Datafiles | `C:\app\oracle\oradata\ROA\` | **Advantages:** - Simpler administration - Compatible with Oracle 10g migration scripts - No PDB management overhead ### Oracle 21c Express Edition (CDB/PDB) Modern multitenant architecture with Container Database. | Feature | Value | |---------|-------| | Architecture | Container + Pluggable Database | | CDB Name | XE | | PDB Name | XEPDB1 | | Service Name | XEPDB1 (for applications) | | Connection | `system/pass@XEPDB1` | | Datafiles | `C:\app\oracle\oradata\XE\XEPDB1\` | **Advantages:** - Free license (Express Edition) - Modern architecture - Easy backup/clone of PDB **Connection Warning:** > Always connect to **XEPDB1** (PDB), not to **XE** (CDB root) for ROA operations! --- ## Standard Passwords | User | Password | Notes | |------|----------|-------| | SYS | romfastsoft | SYSDBA | | SYSTEM | romfastsoft | DBA | | CONTAFIN_ORACLE | ROMFASTSOFT | Common schema | | Company schemas | From NOM_FIRME.parola | See company-specific config | > **Security Note:** Change passwords in production environments! --- ## DMP Files Required ### For New Installation | File | Description | Size | |------|-------------|------| | `contafin_oracle.dmp` | Common schema (rights, updates, etc.) | ~50MB | | `[company].dmp` | Company schema (one per company) | ~100-500MB each | ### Obtaining DMP Files Export from existing Oracle 18c server (for compatibility): ```bash # From LXC 108 (Oracle 18c - port 1522) docker exec oracle18-xe expdp system/romfastsoft@localhost:1521/XEPDB1 \ SCHEMAS=CONTAFIN_ORACLE DIRECTORY=DMPDIR DUMPFILE=contafin_oracle.dmp \ LOGFILE=export_contafin.log VERSION=11.2 ``` Copy to Windows: ```powershell # Using SCP from WSL/Linux scp root@10.0.20.201:/opt/oracle18/oradata/dmpdir/contafin_oracle.dmp C:\DMPDIR\ ``` --- ## Workflow Examples ### New Server Installation ```powershell # 1. Install Oracle 21c XE (see docs/00-INSTALL-ORACLE-XE.md) # 2. Configure Copy-Item config.example.ps1 config.ps1 notepad config.ps1 # Edit values # 3. Copy DMP files mkdir C:\DMPDIR Copy-Item \\server\dmp\*.dmp C:\DMPDIR\ # 4. Run setup scripts .\01-setup-database.ps1 .\02-create-sys-objects.ps1 .\03-import-contafin.ps1 .\04-create-synonyms-grants.ps1 .\05-import-companies.ps1 .\07-verify-installation.ps1 ``` ### Add New Company ```powershell # Copy company DMP Copy-Item \\server\dmp\NEWCOMPANY.dmp C:\DMPDIR\ # Run add company script .\06-add-company.ps1 -CompanyName "NEWCOMPANY" -Password "ROMFASTSOFT" ``` ### Migration from Oracle 10g ```powershell # 1. Export from Oracle 10g (on source Windows server) exp system/password@ORCL file=C:\backup\COMPANY.dmp owner=COMPANY # 2. Convert with Oracle 21c imp (if needed) # Or use impdp with VERSION parameter # 3. Import using scripts .\05-import-companies.ps1 -DmpFile "COMPANY.dmp" ``` --- ## Troubleshooting ### ORA-28040: No matching authentication protocol **Problem:** Old clients (Instant Client 10/11) cannot connect to Oracle 21c. **Solution:** Configure `sqlnet.ora` for backward compatibility: ```powershell # Copy sqlnet.ora template Copy-Item config\sqlnet.ora $env:ORACLE_HOME\network\admin\sqlnet.ora # Restart listener lsnrctl reload ``` ### ORA-01017: invalid username/password **After configuring sqlnet.ora for old clients, reset passwords:** ```sql ALTER USER CONTAFIN_ORACLE IDENTIFIED BY ROMFASTSOFT; ALTER USER [COMPANY] IDENTIFIED BY [PASSWORD]; ``` ### ORA-12514: TNS:listener does not currently know of service **Check listener status:** ```powershell lsnrctl status lsnrctl services ``` **For XE, ensure PDB is open:** ```sql ALTER SESSION SET CONTAINER = XEPDB1; ALTER PLUGGABLE DATABASE XEPDB1 OPEN; ALTER PLUGGABLE DATABASE XEPDB1 SAVE STATE; ``` ### Import Errors **ORA-00959: tablespace 'ROA' does not exist:** ```powershell # Use REMAP_TABLESPACE in impdp impdp ... REMAP_TABLESPACE=ROA:USERS ``` **ORA-39405: Oracle Data Pump does not support importing from a source database with TSTZ version newer:** Use DMP files exported from Oracle 18c (TSTZ 31) instead of Oracle 21c (TSTZ 35). ### Service Not Starting Check Windows Services: - `OracleServiceXE` (for XE) - `OracleServiceROA` (for SE) - `OracleOraDB21Home1TNSListener` ```powershell # Restart services net stop OracleServiceXE net start OracleServiceXE net stop OracleOraDB21Home1TNSListener net start OracleOraDB21Home1TNSListener ``` --- ## Connection Strings ### SQL*Plus ```bash # Oracle XE (connect to PDB) sqlplus system/romfastsoft@localhost:1521/XEPDB1 sqlplus CONTAFIN_ORACLE/ROMFASTSOFT@localhost:1521/XEPDB1 # Oracle SE (connect to database) sqlplus system/romfastsoft@localhost:1521/ROA sqlplus CONTAFIN_ORACLE/ROMFASTSOFT@localhost:1521/ROA ``` ### JDBC ``` # Oracle XE jdbc:oracle:thin:@localhost:1521/XEPDB1 # Oracle SE jdbc:oracle:thin:@localhost:1521/ROA ``` ### ODBC (Instant Client) | Parameter | XE Value | SE Value | |-----------|----------|----------| | Host | localhost | localhost | | Port | 1521 | 1521 | | Service Name | XEPDB1 | ROA | | User | CONTAFIN_ORACLE | CONTAFIN_ORACLE | | Password | ROMFASTSOFT | ROMFASTSOFT | ### TNS Entry ``` # For Oracle XE ROA = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = XEPDB1)) ) # For Oracle SE ROA = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = ROA)) ) ``` --- ## Testing with Proxmox VM Clone For testing installations, use the VM cloning script: ```bash # On Proxmox host (pvemini) ./test/clone-vm300.sh 301 # Creates VM 301 from template 300 ``` See `test/clone-vm300.sh` for details. --- ## Related Documentation - **Oracle LXC 108 (Docker):** `../README.md` - **Migration Oracle 10g -> 21c:** `../migration/README.md` - **SQL Migration Guidelines:** `/system_instructions/system_prompt.md` - **Proxmox Infrastructure:** `../../README.md` --- **Last Updated:** 2026-01-28 **Author:** Marius Mutu **Project:** ROMFASTSQL - ROA Oracle Database Windows Setup