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:
Marius
2026-01-28 17:08:02 +02:00
parent 665c2b5d37
commit 989477f7a4
26 changed files with 8972 additions and 0 deletions

View File

@@ -0,0 +1,131 @@
-- ============================================================================
-- COMPANY SCHEMA USER CREATION (Template)
-- ============================================================================
-- Creates a company schema user for ROA application
-- Each company in ROA has its own schema with identical structure
--
-- Usage:
-- @create-user-company.sql "SCHEMA_NAME" "Password123"
--
-- Parameters:
-- &1 - Schema/User name (e.g., FIRMA1, TESTFIRMA, ROMCONSTRUCT)
-- &2 - Password for the schema user
--
-- Privileges granted:
-- - CONNECT, RESOURCE roles
-- - CREATE SESSION, TABLE, VIEW, SEQUENCE, PROCEDURE, TRIGGER, TYPE, SYNONYM
-- - CREATE MATERIALIZED VIEW, DATABASE LINK, JOB
-- - DEBUG CONNECT SESSION
-- - SELECT ANY TABLE (for cross-schema queries)
-- - UNLIMITED TABLESPACE
--
-- Connect as: SYSDBA or SYSTEM
-- ============================================================================
SET ECHO OFF
SET FEEDBACK ON
SET SERVEROUTPUT ON
WHENEVER SQLERROR CONTINUE
PROMPT
PROMPT ========================================
PROMPT Creating Company Schema User
PROMPT ========================================
PROMPT
-- Define parameters
DEFINE schema_name = "&1"
DEFINE schema_password = "&2"
PROMPT Schema name: &schema_name
-- Check if user already exists
DECLARE
v_count NUMBER;
BEGIN
SELECT COUNT(*) INTO v_count
FROM dba_users
WHERE username = UPPER('&schema_name');
IF v_count > 0 THEN
DBMS_OUTPUT.PUT_LINE('WARNING: User &schema_name already exists.');
DBMS_OUTPUT.PUT_LINE('Use DROP USER &schema_name CASCADE to remove if needed.');
ELSE
DBMS_OUTPUT.PUT_LINE('User &schema_name does not exist. Proceeding with creation.');
END IF;
END;
/
-- Create user
PROMPT Creating user &schema_name...
CREATE USER &schema_name
IDENTIFIED BY "&schema_password"
DEFAULT TABLESPACE ROA
TEMPORARY TABLESPACE TEMP
QUOTA UNLIMITED ON ROA;
-- Grant roles
PROMPT Granting roles...
GRANT CONNECT TO &schema_name;
GRANT RESOURCE TO &schema_name;
-- Grant session and object creation privileges
PROMPT Granting system privileges...
GRANT CREATE SESSION TO &schema_name;
GRANT CREATE TABLE TO &schema_name;
GRANT CREATE VIEW TO &schema_name;
GRANT CREATE SEQUENCE TO &schema_name;
GRANT CREATE PROCEDURE TO &schema_name;
GRANT CREATE TRIGGER TO &schema_name;
GRANT CREATE TYPE TO &schema_name;
GRANT CREATE SYNONYM TO &schema_name;
GRANT CREATE MATERIALIZED VIEW TO &schema_name;
GRANT CREATE DATABASE LINK TO &schema_name;
GRANT CREATE JOB TO &schema_name;
-- Grant debug capability
GRANT DEBUG CONNECT SESSION TO &schema_name;
-- Grant select any table for cross-schema reporting
GRANT SELECT ANY TABLE TO &schema_name;
-- Grant unlimited tablespace
GRANT UNLIMITED TABLESPACE TO &schema_name;
PROMPT
PROMPT ========================================
PROMPT Verifying User Creation
PROMPT ========================================
PROMPT
-- Verify user creation
SELECT username, default_tablespace, temporary_tablespace, account_status
FROM dba_users
WHERE username = UPPER('&schema_name');
-- Verify roles
PROMPT
PROMPT Granted roles:
SELECT granted_role
FROM dba_role_privs
WHERE grantee = UPPER('&schema_name');
-- Verify tablespace quota
PROMPT
PROMPT Tablespace quotas:
SELECT tablespace_name,
CASE WHEN max_bytes = -1 THEN 'UNLIMITED'
ELSE TO_CHAR(max_bytes/1024/1024) || ' MB'
END AS quota
FROM dba_ts_quotas
WHERE username = UPPER('&schema_name');
PROMPT
PROMPT ========================================
PROMPT Company Schema &schema_name Created
PROMPT ========================================
PROMPT
PROMPT Next steps:
PROMPT 1. Import schema data from FIRMANOUA.dmp or existing backup
PROMPT 2. Run schema update scripts via PACK_UPDATE
PROMPT