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,99 @@
|
||||
-- ============================================================================
|
||||
-- PASSWORD PROFILE CONFIGURATION
|
||||
-- ============================================================================
|
||||
-- Configures DEFAULT profile for no password expiration
|
||||
-- CRITICAL for ROA application compatibility
|
||||
--
|
||||
-- This script disables all password restrictions to prevent:
|
||||
-- - Password expiration issues during long-running installations
|
||||
-- - Account lockouts from failed login attempts
|
||||
-- - Password reuse restrictions
|
||||
--
|
||||
-- WARNING: This reduces security. For production environments, consider
|
||||
-- creating a custom profile with appropriate settings.
|
||||
--
|
||||
-- Usage:
|
||||
-- @configure-profile.sql
|
||||
--
|
||||
-- Connect as: SYSDBA
|
||||
-- ============================================================================
|
||||
|
||||
SET ECHO OFF
|
||||
SET FEEDBACK ON
|
||||
SET SERVEROUTPUT ON
|
||||
WHENEVER SQLERROR CONTINUE
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT Configuring Password Profile
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
|
||||
-- Show current profile settings
|
||||
PROMPT Current DEFAULT profile settings:
|
||||
SELECT resource_name, limit
|
||||
FROM dba_profiles
|
||||
WHERE profile = 'DEFAULT'
|
||||
AND resource_type = 'PASSWORD'
|
||||
ORDER BY resource_name;
|
||||
|
||||
PROMPT
|
||||
PROMPT Modifying DEFAULT profile for ROA compatibility...
|
||||
PROMPT
|
||||
|
||||
-- Disable password expiration
|
||||
ALTER PROFILE DEFAULT LIMIT
|
||||
PASSWORD_LIFE_TIME UNLIMITED
|
||||
PASSWORD_REUSE_TIME UNLIMITED
|
||||
PASSWORD_REUSE_MAX UNLIMITED
|
||||
PASSWORD_VERIFY_FUNCTION NULL
|
||||
PASSWORD_LOCK_TIME UNLIMITED
|
||||
PASSWORD_GRACE_TIME UNLIMITED
|
||||
FAILED_LOGIN_ATTEMPTS UNLIMITED;
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT Profile Configuration Complete
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
|
||||
-- Verify new settings
|
||||
PROMPT New DEFAULT profile settings:
|
||||
SELECT resource_name, limit
|
||||
FROM dba_profiles
|
||||
WHERE profile = 'DEFAULT'
|
||||
AND resource_type = 'PASSWORD'
|
||||
ORDER BY resource_name;
|
||||
|
||||
PROMPT
|
||||
PROMPT WARNING: Password restrictions have been disabled.
|
||||
PROMPT For production environments, consider creating a custom
|
||||
PROMPT profile with appropriate security settings.
|
||||
PROMPT
|
||||
|
||||
-- Unlock any locked accounts (optional)
|
||||
PROMPT
|
||||
PROMPT Unlocking ROA-related accounts if locked...
|
||||
DECLARE
|
||||
v_sql VARCHAR2(200);
|
||||
BEGIN
|
||||
FOR rec IN (SELECT username FROM dba_users
|
||||
WHERE account_status LIKE '%LOCKED%'
|
||||
AND username IN ('CONTAFIN_ORACLE', 'SYSTEM')) LOOP
|
||||
v_sql := 'ALTER USER ' || rec.username || ' ACCOUNT UNLOCK';
|
||||
EXECUTE IMMEDIATE v_sql;
|
||||
DBMS_OUTPUT.PUT_LINE('Unlocked user: ' || rec.username);
|
||||
END LOOP;
|
||||
END;
|
||||
/
|
||||
|
||||
-- Reset expired passwords (optional - requires manual password)
|
||||
PROMPT
|
||||
PROMPT If any accounts show EXPIRED status, reset their passwords:
|
||||
SELECT username, account_status
|
||||
FROM dba_users
|
||||
WHERE username IN ('CONTAFIN_ORACLE', 'SYSTEM', 'SYS')
|
||||
OR username LIKE 'FIRMA%'
|
||||
OR username LIKE 'TEST%';
|
||||
|
||||
PROMPT
|
||||
@@ -0,0 +1,88 @@
|
||||
-- ============================================================================
|
||||
-- ROA TABLESPACE CREATION
|
||||
-- ============================================================================
|
||||
-- Creates ROA tablespace with 1GB initial size, autoextend enabled
|
||||
-- Works for both non-CDB (Oracle SE) and PDB (Oracle XE in XEPDB1)
|
||||
--
|
||||
-- Usage:
|
||||
-- @create-tablespace.sql "D:\Oracle\oradata\ORCL"
|
||||
-- @create-tablespace.sql "D:\Oracle\oradata\XE\XEPDB1"
|
||||
--
|
||||
-- Parameters:
|
||||
-- &1 - Datafile directory path (e.g., D:\Oracle\oradata\ORCL)
|
||||
--
|
||||
-- Connect as: SYSDBA
|
||||
-- ============================================================================
|
||||
|
||||
SET ECHO OFF
|
||||
SET FEEDBACK ON
|
||||
SET SERVEROUTPUT ON
|
||||
WHENEVER SQLERROR CONTINUE
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT Creating ROA Tablespace
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
|
||||
-- Define datafile path
|
||||
DEFINE datafile_dir = "&1"
|
||||
|
||||
PROMPT Datafile directory: &datafile_dir
|
||||
|
||||
-- Check if tablespace already exists
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count
|
||||
FROM dba_tablespaces
|
||||
WHERE tablespace_name = 'ROA';
|
||||
|
||||
IF v_count > 0 THEN
|
||||
DBMS_OUTPUT.PUT_LINE('WARNING: Tablespace ROA already exists. Skipping creation.');
|
||||
ELSE
|
||||
DBMS_OUTPUT.PUT_LINE('Creating tablespace ROA...');
|
||||
END IF;
|
||||
END;
|
||||
/
|
||||
|
||||
-- Create tablespace if it doesn't exist
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
v_sql VARCHAR2(1000);
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count
|
||||
FROM dba_tablespaces
|
||||
WHERE tablespace_name = 'ROA';
|
||||
|
||||
IF v_count = 0 THEN
|
||||
v_sql := 'CREATE SMALLFILE TABLESPACE "ROA" ' ||
|
||||
'DATAFILE ''&datafile_dir\ROA.DBF'' ' ||
|
||||
'SIZE 1000M ' ||
|
||||
'AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED ' ||
|
||||
'LOGGING ' ||
|
||||
'EXTENT MANAGEMENT LOCAL ' ||
|
||||
'SEGMENT SPACE MANAGEMENT AUTO';
|
||||
EXECUTE IMMEDIATE v_sql;
|
||||
DBMS_OUTPUT.PUT_LINE('Tablespace ROA created successfully.');
|
||||
END IF;
|
||||
END;
|
||||
/
|
||||
|
||||
PROMPT
|
||||
PROMPT Verifying tablespace creation:
|
||||
SELECT tablespace_name, status, contents, extent_management, segment_space_management
|
||||
FROM dba_tablespaces
|
||||
WHERE tablespace_name = 'ROA';
|
||||
|
||||
PROMPT
|
||||
PROMPT Datafile information:
|
||||
SELECT file_name, bytes/1024/1024 AS size_mb, autoextensible, maxbytes/1024/1024 AS max_mb
|
||||
FROM dba_data_files
|
||||
WHERE tablespace_name = 'ROA';
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT ROA Tablespace Creation Complete
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
@@ -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
|
||||
@@ -0,0 +1,131 @@
|
||||
-- ============================================================================
|
||||
-- CONTAFIN_ORACLE USER CREATION
|
||||
-- ============================================================================
|
||||
-- Creates CONTAFIN_ORACLE user with DBA-like privileges
|
||||
-- This is the main administrative user for the ROA application
|
||||
--
|
||||
-- Usage:
|
||||
-- @create-user-contafin.sql "YourSecurePassword"
|
||||
--
|
||||
-- Parameters:
|
||||
-- &1 - Password for CONTAFIN_ORACLE user
|
||||
--
|
||||
-- Privileges granted:
|
||||
-- - CONNECT, RESOURCE roles
|
||||
-- - CREATE ANY CONTEXT, DROP ANY CONTEXT
|
||||
-- - EXECUTE ANY PROCEDURE
|
||||
-- - SELECT ANY TABLE/DICTIONARY/SEQUENCE
|
||||
-- - INSERT/UPDATE/DELETE ANY TABLE
|
||||
-- - UNLIMITED TABLESPACE
|
||||
-- - CREATE/DROP PUBLIC SYNONYM
|
||||
-- - CREATE VIEW, CREATE SESSION
|
||||
--
|
||||
-- Connect as: SYSDBA or SYSTEM
|
||||
-- ============================================================================
|
||||
|
||||
SET ECHO OFF
|
||||
SET FEEDBACK ON
|
||||
SET SERVEROUTPUT ON
|
||||
WHENEVER SQLERROR CONTINUE
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT Creating CONTAFIN_ORACLE User
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
|
||||
-- Define password
|
||||
DEFINE co_password = "&1"
|
||||
|
||||
-- Drop user if exists (optional, comment out if you want to preserve data)
|
||||
PROMPT Checking for existing CONTAFIN_ORACLE user...
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count
|
||||
FROM dba_users
|
||||
WHERE username = 'CONTAFIN_ORACLE';
|
||||
|
||||
IF v_count > 0 THEN
|
||||
DBMS_OUTPUT.PUT_LINE('WARNING: User CONTAFIN_ORACLE already exists.');
|
||||
DBMS_OUTPUT.PUT_LINE('Use DROP USER CONTAFIN_ORACLE CASCADE to remove if needed.');
|
||||
ELSE
|
||||
DBMS_OUTPUT.PUT_LINE('User CONTAFIN_ORACLE does not exist. Proceeding with creation.');
|
||||
END IF;
|
||||
END;
|
||||
/
|
||||
|
||||
-- Create user
|
||||
PROMPT Creating user CONTAFIN_ORACLE...
|
||||
CREATE USER CONTAFIN_ORACLE
|
||||
IDENTIFIED BY "&co_password"
|
||||
DEFAULT TABLESPACE ROA
|
||||
TEMPORARY TABLESPACE TEMP
|
||||
PROFILE DEFAULT;
|
||||
|
||||
-- Grant roles
|
||||
PROMPT Granting roles...
|
||||
GRANT CONNECT TO CONTAFIN_ORACLE;
|
||||
GRANT RESOURCE TO CONTAFIN_ORACLE;
|
||||
|
||||
-- Grant system privileges
|
||||
PROMPT Granting system privileges...
|
||||
GRANT CREATE ANY CONTEXT TO CONTAFIN_ORACLE;
|
||||
GRANT DROP ANY CONTEXT TO CONTAFIN_ORACLE;
|
||||
GRANT CREATE SESSION TO CONTAFIN_ORACLE;
|
||||
GRANT CREATE VIEW TO CONTAFIN_ORACLE;
|
||||
GRANT CREATE TABLE TO CONTAFIN_ORACLE;
|
||||
GRANT CREATE SEQUENCE TO CONTAFIN_ORACLE;
|
||||
GRANT CREATE PROCEDURE TO CONTAFIN_ORACLE;
|
||||
GRANT CREATE TRIGGER TO CONTAFIN_ORACLE;
|
||||
GRANT CREATE TYPE TO CONTAFIN_ORACLE;
|
||||
GRANT CREATE SYNONYM TO CONTAFIN_ORACLE;
|
||||
GRANT CREATE MATERIALIZED VIEW TO CONTAFIN_ORACLE;
|
||||
GRANT CREATE DATABASE LINK TO CONTAFIN_ORACLE;
|
||||
GRANT CREATE JOB TO CONTAFIN_ORACLE;
|
||||
|
||||
-- Grant ANY privileges for application management
|
||||
GRANT EXECUTE ANY PROCEDURE TO CONTAFIN_ORACLE;
|
||||
GRANT SELECT ANY DICTIONARY TO CONTAFIN_ORACLE;
|
||||
GRANT SELECT ANY SEQUENCE TO CONTAFIN_ORACLE;
|
||||
GRANT SELECT ANY TABLE TO CONTAFIN_ORACLE;
|
||||
GRANT INSERT ANY TABLE TO CONTAFIN_ORACLE;
|
||||
GRANT UPDATE ANY TABLE TO CONTAFIN_ORACLE;
|
||||
GRANT DELETE ANY TABLE TO CONTAFIN_ORACLE;
|
||||
|
||||
-- Grant tablespace and synonym privileges
|
||||
GRANT UNLIMITED TABLESPACE TO CONTAFIN_ORACLE;
|
||||
GRANT CREATE PUBLIC SYNONYM TO CONTAFIN_ORACLE;
|
||||
GRANT DROP PUBLIC SYNONYM TO CONTAFIN_ORACLE;
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT Verifying User Creation
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
|
||||
-- Verify user creation
|
||||
SELECT username, default_tablespace, temporary_tablespace, account_status, profile
|
||||
FROM dba_users
|
||||
WHERE username = 'CONTAFIN_ORACLE';
|
||||
|
||||
-- Verify roles
|
||||
PROMPT
|
||||
PROMPT Granted roles:
|
||||
SELECT granted_role, admin_option, default_role
|
||||
FROM dba_role_privs
|
||||
WHERE grantee = 'CONTAFIN_ORACLE';
|
||||
|
||||
-- Verify system privileges
|
||||
PROMPT
|
||||
PROMPT Granted system privileges:
|
||||
SELECT privilege, admin_option
|
||||
FROM dba_sys_privs
|
||||
WHERE grantee = 'CONTAFIN_ORACLE'
|
||||
ORDER BY privilege;
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT CONTAFIN_ORACLE User Creation Complete
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
393
proxmox/lxc108-oracle/roa-windows-setup/sql/grants-public.sql
Normal file
393
proxmox/lxc108-oracle/roa-windows-setup/sql/grants-public.sql
Normal file
@@ -0,0 +1,393 @@
|
||||
-- ============================================================================
|
||||
-- PUBLIC GRANTS FOR ROA APPLICATION
|
||||
-- ============================================================================
|
||||
-- Grants necessary permissions on CONTAFIN_ORACLE objects to PUBLIC
|
||||
-- and configures network ACLs for CONTAFIN_ORACLE
|
||||
--
|
||||
-- Usage:
|
||||
-- @grants-public.sql
|
||||
--
|
||||
-- Connect as: SYSTEM or SYS as SYSDBA
|
||||
-- Must run AFTER:
|
||||
-- 1. CONTAFIN_ORACLE schema objects are imported
|
||||
-- 2. synonyms-public.sql has been executed
|
||||
-- ============================================================================
|
||||
|
||||
SET ECHO OFF
|
||||
SET FEEDBACK ON
|
||||
SET SERVEROUTPUT ON
|
||||
WHENEVER SQLERROR CONTINUE
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT Granting Permissions to PUBLIC
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 1: GRANTS ON CORE USER/PROGRAM TABLES
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [1/9] Granting SELECT/REFERENCES on core tables...
|
||||
|
||||
-- DEF_GRUP
|
||||
GRANT SELECT ON SYN_DEF_GRUP TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_DEF_GRUP TO PUBLIC;
|
||||
|
||||
-- DEF_PROGRAME
|
||||
GRANT SELECT ON SYN_DEF_PROGRAME TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_DEF_PROGRAME TO PUBLIC;
|
||||
|
||||
-- VDEF_PROGRAME
|
||||
GRANT SELECT ON SYN_VDEF_PROGRAME TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_VDEF_PROGRAME TO PUBLIC;
|
||||
|
||||
-- LUNILEAN
|
||||
GRANT SELECT ON SYN_LUNILEAN TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_LUNILEAN TO PUBLIC;
|
||||
|
||||
-- NOM_FIRME
|
||||
GRANT SELECT ON SYN_NOM_FIRME TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_NOM_FIRME TO PUBLIC;
|
||||
|
||||
-- NOM_PROGRAME
|
||||
GRANT SELECT ON SYN_NOM_PROGRAME TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_NOM_PROGRAME TO PUBLIC;
|
||||
|
||||
-- UTILIZATORI
|
||||
GRANT SELECT ON SYN_UTILIZATORI TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_UTILIZATORI TO PUBLIC;
|
||||
|
||||
-- VDEF_UTIL_PROGRAME
|
||||
GRANT SELECT ON SYN_VDEF_UTIL_PROGRAME TO PUBLIC;
|
||||
|
||||
-- VDEF_UTIL_FIRME
|
||||
GRANT SELECT ON SYN_VDEF_UTIL_FIRME TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_VDEF_UTIL_FIRME TO PUBLIC;
|
||||
|
||||
-- VDEF_UTIL_OBIECTE
|
||||
GRANT SELECT ON SYN_VDEF_UTIL_OBIECTE TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_VDEF_UTIL_OBIECTE TO PUBLIC;
|
||||
|
||||
-- VUTILIZATORI
|
||||
GRANT SELECT ON SYN_VUTILIZATORI TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_VUTILIZATORI TO PUBLIC;
|
||||
|
||||
-- VDEF_UTIL_GRUP
|
||||
GRANT SELECT ON SYN_VDEF_UTIL_GRUP TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_VDEF_UTIL_GRUP TO PUBLIC;
|
||||
|
||||
-- DEF_GRUP_DREPT
|
||||
GRANT SELECT ON SYN_DEF_GRUP_DREPT TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_DEF_GRUP_DREPT TO PUBLIC;
|
||||
|
||||
-- OPTIUNI_PROGRAME
|
||||
GRANT SELECT ON SYN_OPTIUNI_PROGRAME TO PUBLIC;
|
||||
|
||||
-- HELPCONT
|
||||
GRANT SELECT ON SYN_HELPCONT TO PUBLIC;
|
||||
|
||||
-- V_NOM_FIRME
|
||||
GRANT SELECT ON SYN_V_NOM_FIRME TO PUBLIC;
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 2: GRANTS ON UTILITY TYPES AND FUNCTIONS
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [2/9] Granting EXECUTE on utility types/functions...
|
||||
|
||||
GRANT EXECUTE ON STRINGAGG TO PUBLIC;
|
||||
GRANT EXECUTE ON CONTAFIN_ORACLE.STRINGAGGTYPE TO PUBLIC;
|
||||
|
||||
GRANT EXECUTE ON CHAR_ROW TO PUBLIC;
|
||||
GRANT EXECUTE ON CHAR_TAB TO PUBLIC;
|
||||
GRANT EXECUTE ON NUM_ROW TO PUBLIC;
|
||||
GRANT EXECUTE ON NUM_TAB TO PUBLIC;
|
||||
|
||||
GRANT EXECUTE ON UW_SEL_ROW TO PUBLIC;
|
||||
GRANT EXECUTE ON UW_SEL_TAB TO PUBLIC;
|
||||
|
||||
GRANT EXECUTE ON VALOARETAG TO PUBLIC;
|
||||
GRANT EXECUTE ON GETWORDCOUNT TO PUBLIC;
|
||||
GRANT EXECUTE ON GETWORDNUM TO PUBLIC;
|
||||
GRANT EXECUTE ON CHARC2COLLECTION TO PUBLIC;
|
||||
GRANT EXECUTE ON CHARN2COLLECTION TO PUBLIC;
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 3: GRANTS ON NOMENCLATURE TABLES
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [3/9] Granting SELECT/REFERENCES on nomenclature tables...
|
||||
|
||||
-- Legal forms
|
||||
GRANT SELECT ON SYN_NOM_FORME_JURIDICE TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_NOM_FORME_JURIDICE TO PUBLIC;
|
||||
|
||||
GRANT SELECT ON SYN_NOM_FORME_ORGANIZARE TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_NOM_FORME_ORGANIZARE TO PUBLIC;
|
||||
|
||||
GRANT SELECT ON SYN_NOM_TIP_SOCIETATE TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_NOM_TIP_SOCIETATE TO PUBLIC;
|
||||
|
||||
GRANT SELECT ON SYN_NOM_FORME_PROPRIETATE TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_NOM_FORME_PROPRIETATE TO PUBLIC;
|
||||
|
||||
-- Geography
|
||||
GRANT SELECT ON SYN_NOM_CETATENII TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_NOM_CETATENII TO PUBLIC;
|
||||
|
||||
GRANT SELECT ON SYN_NOM_TARI TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_NOM_TARI TO PUBLIC;
|
||||
|
||||
GRANT SELECT ON SYN_NOM_JUDETE TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_NOM_JUDETE TO PUBLIC;
|
||||
|
||||
GRANT SELECT ON SYN_NOM_LOCALITATI TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_NOM_LOCALITATI TO PUBLIC;
|
||||
|
||||
GRANT SELECT ON SYN_VNOM_JUDETE TO PUBLIC;
|
||||
GRANT SELECT ON SYN_VNOM_LOCALITATI TO PUBLIC;
|
||||
GRANT SELECT ON SYN_VNOM_TARI TO PUBLIC;
|
||||
|
||||
GRANT SELECT ON SYN_NOM_CODURI_CAEN TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_NOM_CODURI_CAEN TO PUBLIC;
|
||||
|
||||
GRANT SELECT ON SYN_NOM_TIPAPATRID TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_NOM_TIPAPATRID TO PUBLIC;
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 4: GRANTS ON CURRENCY/EXCHANGE TABLES
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [4/9] Granting SELECT/REFERENCES on currency tables...
|
||||
|
||||
GRANT SELECT ON SYN_VNOM_VALUTE_ISO TO PUBLIC;
|
||||
|
||||
GRANT SELECT ON SYN_NOM_VALUTE_ISO TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_NOM_VALUTE_ISO TO PUBLIC;
|
||||
|
||||
GRANT SELECT ON SYN_CURS_COTATII TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_CURS_COTATII TO PUBLIC;
|
||||
|
||||
GRANT SELECT ON SYN_CURS_ACTUALIZARI TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_CURS_ACTUALIZARI TO PUBLIC;
|
||||
|
||||
GRANT SELECT, REFERENCES ON SYN_VNOM_UM_ISO TO PUBLIC;
|
||||
GRANT SELECT, REFERENCES ON CONTAFIN_ORACLE.NOM_UM_ISO TO PUBLIC;
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 5: GRANTS ON SALARY MODULE TABLES AND TYPES
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [5/9] Granting permissions on salary module objects...
|
||||
|
||||
-- Nomenclature tables
|
||||
GRANT SELECT ON SYN_SAL_NOM_TEMEI TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_SAL_NOM_TEMEI TO PUBLIC;
|
||||
|
||||
GRANT SELECT ON SYN_SAL_NOM_TIPAUTORIZATIE TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_SAL_NOM_TIPAUTORIZATIE TO PUBLIC;
|
||||
|
||||
GRANT SELECT ON SYN_SAL_NOM_TIP_SPOR TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_SAL_NOM_TIP_SPOR TO PUBLIC;
|
||||
|
||||
GRANT SELECT ON SYN_SAL_NOM_TIP_NORME TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_SAL_NOM_TIP_NORME TO PUBLIC;
|
||||
|
||||
GRANT SELECT ON SYN_SAL_NOM_STARI_CTR TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_SAL_NOM_STARI_CTR TO PUBLIC;
|
||||
|
||||
GRANT SELECT ON SYN_SAL_NOM_DURATA_MUNCA TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_SAL_NOM_DURATA_MUNCA TO PUBLIC;
|
||||
|
||||
GRANT SELECT ON SYN_SAL_NOM_REPARTIZARE_MUNCA TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_SAL_NOM_REPARTIZARE_MUNCA TO PUBLIC;
|
||||
|
||||
GRANT SELECT ON SYN_SAL_NOM_INTERVALE_MUNCA TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_SAL_NOM_INTERVALE_MUNCA TO PUBLIC;
|
||||
|
||||
GRANT SELECT ON SYN_SAL_COR TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_SAL_COR TO PUBLIC;
|
||||
|
||||
GRANT SELECT ON SYN_SAL_ACTUALIZARE_COR TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_SAL_ACTUALIZARE_COR TO PUBLIC;
|
||||
|
||||
-- Salary types
|
||||
GRANT EXECUTE ON CONTAFIN_ORACLE.SAL_CONTRACT_M TO PUBLIC;
|
||||
GRANT EXECUTE ON CONTAFIN_ORACLE.CONTRACT_M TO PUBLIC;
|
||||
GRANT EXECUTE ON SAL_CONTRACT_M TO PUBLIC;
|
||||
GRANT EXECUTE ON CONTRACT_M TO PUBLIC;
|
||||
GRANT EXECUTE ON SAL_RED TO PUBLIC;
|
||||
GRANT EXECUTE ON SAL_CAMPURI_RED TO PUBLIC;
|
||||
GRANT EXECUTE ON TABSTERS TO PUBLIC;
|
||||
GRANT EXECUTE ON SAL_TABELESTERS TO PUBLIC;
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 6: GRANTS ON ATTACHMENT TABLES
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [6/9] Granting permissions on attachment tables...
|
||||
|
||||
GRANT SELECT ON SYN_ATAS_ATASAMENTE TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_ATAS_ATASAMENTE TO PUBLIC;
|
||||
|
||||
GRANT SELECT ON SYN_ATAS_REFERINTE TO PUBLIC;
|
||||
GRANT REFERENCES ON SYN_ATAS_REFERINTE TO PUBLIC;
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 7: GRANTS ON PACKAGES AND ADDITIONAL TYPES
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [7/9] Granting EXECUTE on packages and types...
|
||||
|
||||
-- Packages
|
||||
GRANT EXECUTE ON SYN_PACK_DREPTURI TO PUBLIC;
|
||||
GRANT EXECUTE ON PACK_UPDATE TO PUBLIC;
|
||||
GRANT EXECUTE ON PACK_UTILS TO PUBLIC;
|
||||
GRANT EXECUTE ON PACK_UTILS_FILE TO PUBLIC;
|
||||
GRANT EXECUTE ON SYN_PACK_DEF_CO TO PUBLIC;
|
||||
GRANT EXECUTE ON PACK_ROARTVAI TO PUBLIC;
|
||||
|
||||
-- Additional types
|
||||
GRANT EXECUTE ON FF_SUME TO PUBLIC;
|
||||
GRANT EXECUTE ON FF_PERSINTRET TO PUBLIC;
|
||||
GRANT EXECUTE ON VANZARI_DETALII_TAB TO PUBLIC;
|
||||
GRANT EXECUTE ON PIVOT_TABLE TO PUBLIC;
|
||||
GRANT EXECUTE ON PIVOT_ROW TO PUBLIC;
|
||||
GRANT EXECUTE ON TABINCHIDERETVA TO PUBLIC;
|
||||
GRANT EXECUTE ON TABELAVALORITAGURI TO PUBLIC;
|
||||
GRANT EXECUTE ON RANDINCHIDERETVA TO PUBLIC;
|
||||
|
||||
-- SERVER_INFO table
|
||||
GRANT SELECT, UPDATE ON SERVER_INFO TO PUBLIC;
|
||||
|
||||
-- RTVAI module
|
||||
GRANT SELECT ON RTVAI_AGENTI TO PUBLIC;
|
||||
GRANT SELECT ON RTVAI_ISTORIC TO PUBLIC;
|
||||
|
||||
-- License view synonym
|
||||
GRANT SELECT ON CONTAFIN_ORACLE.VDEF_PROGRAME_SERII TO CONTAFIN_ORACLE;
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 8: DIRECTORY AND SYSTEM GRANTS
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [8/9] Granting directory and system permissions...
|
||||
|
||||
-- Create DMPDIR directory if it doesn't exist (adjust path as needed)
|
||||
BEGIN
|
||||
EXECUTE IMMEDIATE 'CREATE OR REPLACE DIRECTORY DMPDIR AS ''D:\Oracle\admin\ORCL\dpdump''';
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
DBMS_OUTPUT.PUT_LINE('Note: DMPDIR directory may already exist or path needs adjustment');
|
||||
END;
|
||||
/
|
||||
|
||||
-- Grant directory access
|
||||
GRANT ALL ON DIRECTORY DMPDIR TO PUBLIC;
|
||||
|
||||
-- Grant UTL packages to PUBLIC
|
||||
GRANT EXECUTE ON UTL_FILE TO PUBLIC;
|
||||
GRANT EXECUTE ON DBMS_LOCK TO PUBLIC;
|
||||
|
||||
-- Grant UTL packages to CONTAFIN_ORACLE specifically
|
||||
GRANT EXECUTE ON UTL_INADDR TO CONTAFIN_ORACLE;
|
||||
GRANT EXECUTE ON UTL_TCP TO CONTAFIN_ORACLE;
|
||||
GRANT EXECUTE ON UTL_SMTP TO CONTAFIN_ORACLE;
|
||||
GRANT EXECUTE ON UTL_HTTP TO CONTAFIN_ORACLE;
|
||||
|
||||
-- UTL_MAIL may not exist in all Oracle editions
|
||||
BEGIN
|
||||
EXECUTE IMMEDIATE 'GRANT EXECUTE ON UTL_MAIL TO CONTAFIN_ORACLE';
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
DBMS_OUTPUT.PUT_LINE('Note: UTL_MAIL not available (requires configuration)');
|
||||
END;
|
||||
/
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 9: NETWORK ACL CONFIGURATION
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [9/9] Configuring Network ACL for CONTAFIN_ORACLE...
|
||||
|
||||
-- Drop existing ACL (if exists)
|
||||
BEGIN
|
||||
DBMS_NETWORK_ACL_ADMIN.DROP_ACL(acl => 'roaupdate.xml');
|
||||
DBMS_OUTPUT.PUT_LINE('Dropped existing roaupdate.xml ACL');
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
DBMS_OUTPUT.PUT_LINE('Note: roaupdate.xml ACL did not exist (this is OK)');
|
||||
END;
|
||||
/
|
||||
|
||||
-- Create new ACL with permissions for CONTAFIN_ORACLE
|
||||
BEGIN
|
||||
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(
|
||||
acl => 'roaupdate.xml',
|
||||
description => 'Permissions for ROA application network access',
|
||||
principal => 'CONTAFIN_ORACLE',
|
||||
is_grant => TRUE,
|
||||
privilege => 'connect'
|
||||
);
|
||||
|
||||
DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(
|
||||
acl => 'roaupdate.xml',
|
||||
principal => 'CONTAFIN_ORACLE',
|
||||
is_grant => TRUE,
|
||||
privilege => 'resolve'
|
||||
);
|
||||
|
||||
-- Allow all hosts (use specific hosts in production)
|
||||
DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(
|
||||
acl => 'roaupdate.xml',
|
||||
host => '*'
|
||||
);
|
||||
|
||||
DBMS_OUTPUT.PUT_LINE('Network ACL created successfully for CONTAFIN_ORACLE');
|
||||
END;
|
||||
/
|
||||
|
||||
COMMIT;
|
||||
|
||||
-- ============================================================================
|
||||
-- VERIFICATION
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT Grants Complete - Verification
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
|
||||
PROMPT Grants to PUBLIC on CONTAFIN_ORACLE objects:
|
||||
SELECT grantee, table_name, privilege
|
||||
FROM dba_tab_privs
|
||||
WHERE grantee = 'PUBLIC'
|
||||
AND grantor = 'SYS'
|
||||
AND table_name LIKE 'SYN_%'
|
||||
ORDER BY table_name, privilege;
|
||||
|
||||
PROMPT
|
||||
PROMPT Network ACL assignments for CONTAFIN_ORACLE:
|
||||
SELECT host, lower_port, upper_port, acl
|
||||
FROM dba_network_acls
|
||||
WHERE acl LIKE '%roaupdate%';
|
||||
|
||||
PROMPT
|
||||
PROMPT ACL privileges:
|
||||
SELECT acl, principal, privilege, is_grant
|
||||
FROM dba_network_acl_privileges
|
||||
WHERE acl LIKE '%roaupdate%';
|
||||
|
||||
PROMPT
|
||||
PROMPT Directory permissions:
|
||||
SELECT grantee, table_name, privilege
|
||||
FROM dba_tab_privs
|
||||
WHERE table_name = 'DMPDIR';
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT Grant Configuration Complete
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
313
proxmox/lxc108-oracle/roa-windows-setup/sql/synonyms-public.sql
Normal file
313
proxmox/lxc108-oracle/roa-windows-setup/sql/synonyms-public.sql
Normal file
@@ -0,0 +1,313 @@
|
||||
-- ============================================================================
|
||||
-- PUBLIC SYNONYMS FOR ROA APPLICATION
|
||||
-- ============================================================================
|
||||
-- Creates all public synonyms required by the ROA application
|
||||
-- These synonyms provide cross-schema access to CONTAFIN_ORACLE objects
|
||||
--
|
||||
-- Usage:
|
||||
-- @synonyms-public.sql
|
||||
--
|
||||
-- Connect as: SYSTEM or user with CREATE PUBLIC SYNONYM privilege
|
||||
-- Must run AFTER CONTAFIN_ORACLE schema objects are imported
|
||||
-- ============================================================================
|
||||
|
||||
SET ECHO OFF
|
||||
SET FEEDBACK ON
|
||||
SET SERVEROUTPUT ON
|
||||
WHENEVER SQLERROR CONTINUE
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT Creating Public Synonyms
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 1: CLEANUP - Drop existing synonyms (optional, for idempotency)
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT Cleaning up existing synonyms...
|
||||
|
||||
-- Core user/program synonyms
|
||||
DROP PUBLIC SYNONYM SYN_LUNILEAN;
|
||||
DROP PUBLIC SYNONYM SYN_PACK_DREPTURI;
|
||||
DROP PUBLIC SYNONYM SYN_VDEF_UTIL_GRUP;
|
||||
DROP PUBLIC SYNONYM SYN_DEF_GRUP_DREPT;
|
||||
DROP PUBLIC SYNONYM SYN_UTILIZATORI;
|
||||
DROP PUBLIC SYNONYM SYN_VDEF_UTIL_PROGRAME;
|
||||
DROP PUBLIC SYNONYM SYN_VDEF_UTIL_OBIECTE;
|
||||
DROP PUBLIC SYNONYM SYN_VUTILIZATORI;
|
||||
DROP PUBLIC SYNONYM SYN_NOM_PROGRAME;
|
||||
DROP PUBLIC SYNONYM SYN_DEF_PROGRAME;
|
||||
DROP PUBLIC SYNONYM SYN_VDEF_PROGRAME;
|
||||
DROP PUBLIC SYNONYM SYN_DEF_GRUP;
|
||||
DROP PUBLIC SYNONYM SYN_NOM_FIRME;
|
||||
DROP PUBLIC SYNONYM SYN_V_NOM_FIRME;
|
||||
DROP PUBLIC SYNONYM SYN_VDEF_UTIL_FIRME;
|
||||
DROP PUBLIC SYNONYM SYN_HELPCONT;
|
||||
DROP PUBLIC SYNONYM SYN_OPTIUNI_PROGRAME;
|
||||
|
||||
-- Utility types/functions
|
||||
DROP PUBLIC SYNONYM STRINGAGG;
|
||||
DROP PUBLIC SYNONYM CHAR_ROW;
|
||||
DROP PUBLIC SYNONYM CHAR_TAB;
|
||||
DROP PUBLIC SYNONYM NUM_ROW;
|
||||
DROP PUBLIC SYNONYM NUM_TAB;
|
||||
DROP PUBLIC SYNONYM UW_SEL_ROW;
|
||||
DROP PUBLIC SYNONYM UW_SEL_TAB;
|
||||
DROP PUBLIC SYNONYM GETWORDCOUNT;
|
||||
DROP PUBLIC SYNONYM GETWORDNUM;
|
||||
DROP PUBLIC SYNONYM CHARC2COLLECTION;
|
||||
DROP PUBLIC SYNONYM CHARN2COLLECTION;
|
||||
DROP PUBLIC SYNONYM VALOARETAG;
|
||||
|
||||
-- Nomenclature synonyms
|
||||
DROP PUBLIC SYNONYM SYN_NOM_FORME_JURIDICE;
|
||||
DROP PUBLIC SYNONYM SYN_NOM_FORME_ORGANIZARE;
|
||||
DROP PUBLIC SYNONYM SYN_NOM_TIP_SOCIETATE;
|
||||
DROP PUBLIC SYNONYM SYN_NOM_FORME_PROPRIETATE;
|
||||
DROP PUBLIC SYNONYM SYN_NOM_CETATENII;
|
||||
DROP PUBLIC SYNONYM SYN_NOM_TARI;
|
||||
DROP PUBLIC SYNONYM SYN_NOM_JUDETE;
|
||||
DROP PUBLIC SYNONYM SYN_NOM_LOCALITATI;
|
||||
DROP PUBLIC SYNONYM SYN_VNOM_JUDETE;
|
||||
DROP PUBLIC SYNONYM SYN_VNOM_LOCALITATI;
|
||||
DROP PUBLIC SYNONYM SYN_VNOM_TARI;
|
||||
DROP PUBLIC SYNONYM SYN_NOM_CODURI_CAEN;
|
||||
DROP PUBLIC SYNONYM SYN_NOM_TIPAPATRID;
|
||||
|
||||
-- Currency/exchange synonyms
|
||||
DROP PUBLIC SYNONYM SYN_VNOM_VALUTE_ISO;
|
||||
DROP PUBLIC SYNONYM SYN_NOM_VALUTE_ISO;
|
||||
DROP PUBLIC SYNONYM SYN_CURS_COTATII;
|
||||
DROP PUBLIC SYNONYM SYN_CURS_ACTUALIZARI;
|
||||
|
||||
-- Salary module synonyms
|
||||
DROP PUBLIC SYNONYM SYN_SAL_NOM_TEMEI;
|
||||
DROP PUBLIC SYNONYM SYN_SAL_NOM_TIPAUTORIZATIE;
|
||||
DROP PUBLIC SYNONYM SYN_SAL_NOM_TIP_SPOR;
|
||||
DROP PUBLIC SYNONYM SYN_SAL_NOM_TIP_NORME;
|
||||
DROP PUBLIC SYNONYM SYN_SAL_NOM_STARI_CTR;
|
||||
DROP PUBLIC SYNONYM SYN_SAL_NOM_DURATA_MUNCA;
|
||||
DROP PUBLIC SYNONYM SYN_SAL_NOM_REPARTIZARE_MUNCA;
|
||||
DROP PUBLIC SYNONYM SYN_SAL_NOM_INTERVALE_MUNCA;
|
||||
DROP PUBLIC SYNONYM SYN_SAL_COR;
|
||||
DROP PUBLIC SYNONYM SYN_SAL_ACTUALIZARE_COR;
|
||||
DROP PUBLIC SYNONYM SAL_CONTRACT_M;
|
||||
DROP PUBLIC SYNONYM CONTRACT_M;
|
||||
DROP PUBLIC SYNONYM SAL_RED;
|
||||
DROP PUBLIC SYNONYM SAL_CAMPURI_RED;
|
||||
DROP PUBLIC SYNONYM TABSTERS;
|
||||
DROP PUBLIC SYNONYM SAL_TABELESTERS;
|
||||
|
||||
-- Attachment synonyms
|
||||
DROP PUBLIC SYNONYM SYN_ATAS_ATASAMENTE;
|
||||
DROP PUBLIC SYNONYM SYN_ATAS_REFERINTE;
|
||||
|
||||
-- Utility packages
|
||||
DROP PUBLIC SYNONYM PACK_UPDATE;
|
||||
DROP PUBLIC SYNONYM PACK_UTILS;
|
||||
DROP PUBLIC SYNONYM PACK_UTILS_FILE;
|
||||
DROP PUBLIC SYNONYM SYN_PACK_DEF_CO;
|
||||
DROP PUBLIC SYNONYM PACK_ROARTVAI;
|
||||
|
||||
-- RTVAI module
|
||||
DROP PUBLIC SYNONYM RTVAI_AGENTI;
|
||||
DROP PUBLIC SYNONYM RTVAI_ISTORIC;
|
||||
|
||||
-- Additional types
|
||||
DROP PUBLIC SYNONYM FF_SUME;
|
||||
DROP PUBLIC SYNONYM FF_PERSINTRET;
|
||||
DROP PUBLIC SYNONYM VANZARI_DETALII_TAB;
|
||||
DROP PUBLIC SYNONYM PIVOT_TABLE;
|
||||
DROP PUBLIC SYNONYM PIVOT_ROW;
|
||||
DROP PUBLIC SYNONYM TABINCHIDERETVA;
|
||||
DROP PUBLIC SYNONYM TABELAVALORITAGURI;
|
||||
DROP PUBLIC SYNONYM RANDINCHIDERETVA;
|
||||
DROP PUBLIC SYNONYM SERVER_INFO;
|
||||
DROP PUBLIC SYNONYM SYN_VNOM_UM_ISO;
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 2: CORE USER/PROGRAM MANAGEMENT SYNONYMS
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT
|
||||
PROMPT [1/10] Creating core user/program synonyms...
|
||||
|
||||
CREATE PUBLIC SYNONYM SYN_DEF_GRUP FOR CONTAFIN_ORACLE.DEF_GRUP;
|
||||
CREATE PUBLIC SYNONYM SYN_DEF_PROGRAME FOR CONTAFIN_ORACLE.DEF_PROGRAME;
|
||||
CREATE PUBLIC SYNONYM SYN_VDEF_PROGRAME FOR CONTAFIN_ORACLE.VDEF_PROGRAME;
|
||||
CREATE PUBLIC SYNONYM SYN_LUNILEAN FOR CONTAFIN_ORACLE.LUNILEAN;
|
||||
CREATE PUBLIC SYNONYM SYN_NOM_FIRME FOR CONTAFIN_ORACLE.NOM_FIRME;
|
||||
CREATE PUBLIC SYNONYM SYN_NOM_PROGRAME FOR CONTAFIN_ORACLE.NOM_PROGRAME;
|
||||
CREATE PUBLIC SYNONYM SYN_PACK_DREPTURI FOR CONTAFIN_ORACLE.PACK_DREPTURI;
|
||||
CREATE PUBLIC SYNONYM SYN_UTILIZATORI FOR CONTAFIN_ORACLE.UTILIZATORI;
|
||||
CREATE PUBLIC SYNONYM SYN_VDEF_UTIL_PROGRAME FOR CONTAFIN_ORACLE.VDEF_UTIL_PROGRAME;
|
||||
CREATE PUBLIC SYNONYM SYN_VDEF_UTIL_FIRME FOR CONTAFIN_ORACLE.VDEF_UTIL_FIRME;
|
||||
CREATE PUBLIC SYNONYM SYN_VDEF_UTIL_OBIECTE FOR CONTAFIN_ORACLE.VDEF_UTIL_OBIECTE;
|
||||
CREATE PUBLIC SYNONYM SYN_VUTILIZATORI FOR CONTAFIN_ORACLE.VUTILIZATORI;
|
||||
CREATE PUBLIC SYNONYM SYN_VDEF_UTIL_GRUP FOR CONTAFIN_ORACLE.VDEF_UTIL_GRUP;
|
||||
CREATE PUBLIC SYNONYM SYN_DEF_GRUP_DREPT FOR CONTAFIN_ORACLE.DEF_GRUP_DREPT;
|
||||
CREATE PUBLIC SYNONYM SYN_OPTIUNI_PROGRAME FOR CONTAFIN_ORACLE.OPTIUNI_PROGRAME;
|
||||
CREATE PUBLIC SYNONYM SYN_HELPCONT FOR CONTAFIN_ORACLE.HELPCONT;
|
||||
CREATE PUBLIC SYNONYM SYN_V_NOM_FIRME FOR CONTAFIN_ORACLE.V_NOM_FIRME;
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 3: UTILITY TYPES AND FUNCTIONS
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [2/10] Creating utility type synonyms...
|
||||
|
||||
CREATE PUBLIC SYNONYM STRINGAGG FOR CONTAFIN_ORACLE.STRINGAGG;
|
||||
CREATE PUBLIC SYNONYM CHAR_ROW FOR CONTAFIN_ORACLE.CHAR_ROW;
|
||||
CREATE PUBLIC SYNONYM CHAR_TAB FOR CONTAFIN_ORACLE.CHAR_TAB;
|
||||
CREATE PUBLIC SYNONYM NUM_ROW FOR CONTAFIN_ORACLE.NUM_ROW;
|
||||
CREATE PUBLIC SYNONYM NUM_TAB FOR CONTAFIN_ORACLE.NUM_TAB;
|
||||
CREATE PUBLIC SYNONYM UW_SEL_ROW FOR CONTAFIN_ORACLE.UW_SEL_ROW;
|
||||
CREATE PUBLIC SYNONYM UW_SEL_TAB FOR CONTAFIN_ORACLE.UW_SEL_TAB;
|
||||
CREATE PUBLIC SYNONYM VALOARETAG FOR CONTAFIN_ORACLE.VALOARETAG;
|
||||
CREATE PUBLIC SYNONYM GETWORDCOUNT FOR CONTAFIN_ORACLE.GETWORDCOUNT;
|
||||
CREATE PUBLIC SYNONYM GETWORDNUM FOR CONTAFIN_ORACLE.GETWORDNUM;
|
||||
CREATE PUBLIC SYNONYM CHARC2COLLECTION FOR CONTAFIN_ORACLE.CHARC2COLLECTION;
|
||||
CREATE PUBLIC SYNONYM CHARN2COLLECTION FOR CONTAFIN_ORACLE.CHARN2COLLECTION;
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 4: NOMENCLATURE SYNONYMS (Legal Forms, Geography)
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [3/10] Creating nomenclature synonyms...
|
||||
|
||||
CREATE PUBLIC SYNONYM SYN_NOM_FORME_JURIDICE FOR CONTAFIN_ORACLE.NOM_FORME_JURIDICE;
|
||||
CREATE PUBLIC SYNONYM SYN_NOM_FORME_ORGANIZARE FOR CONTAFIN_ORACLE.NOM_FORME_ORGANIZARE;
|
||||
CREATE PUBLIC SYNONYM SYN_NOM_TIP_SOCIETATE FOR CONTAFIN_ORACLE.NOM_TIP_SOCIETATE;
|
||||
CREATE PUBLIC SYNONYM SYN_NOM_FORME_PROPRIETATE FOR CONTAFIN_ORACLE.NOM_FORME_PROPRIETATE;
|
||||
CREATE PUBLIC SYNONYM SYN_NOM_CETATENII FOR CONTAFIN_ORACLE.NOM_CETATENII;
|
||||
CREATE PUBLIC SYNONYM SYN_NOM_TARI FOR CONTAFIN_ORACLE.NOM_TARI;
|
||||
CREATE PUBLIC SYNONYM SYN_NOM_JUDETE FOR CONTAFIN_ORACLE.NOM_JUDETE;
|
||||
CREATE PUBLIC SYNONYM SYN_NOM_LOCALITATI FOR CONTAFIN_ORACLE.NOM_LOCALITATI;
|
||||
CREATE PUBLIC SYNONYM SYN_VNOM_JUDETE FOR CONTAFIN_ORACLE.VNOM_JUDETE;
|
||||
CREATE PUBLIC SYNONYM SYN_VNOM_LOCALITATI FOR CONTAFIN_ORACLE.VNOM_LOCALITATI;
|
||||
CREATE PUBLIC SYNONYM SYN_VNOM_TARI FOR CONTAFIN_ORACLE.VNOM_TARI;
|
||||
CREATE PUBLIC SYNONYM SYN_NOM_CODURI_CAEN FOR CONTAFIN_ORACLE.NOM_CODURI_CAEN;
|
||||
CREATE PUBLIC SYNONYM SYN_NOM_TIPAPATRID FOR CONTAFIN_ORACLE.NOM_TIPAPATRID;
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 5: CURRENCY AND EXCHANGE RATE SYNONYMS
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [4/10] Creating currency/exchange synonyms...
|
||||
|
||||
CREATE PUBLIC SYNONYM SYN_VNOM_VALUTE_ISO FOR CONTAFIN_ORACLE.VNOM_VALUTE_ISO;
|
||||
CREATE PUBLIC SYNONYM SYN_NOM_VALUTE_ISO FOR CONTAFIN_ORACLE.NOM_VALUTE_ISO;
|
||||
CREATE PUBLIC SYNONYM SYN_CURS_COTATII FOR CONTAFIN_ORACLE.CURS_COTATII;
|
||||
CREATE PUBLIC SYNONYM SYN_CURS_ACTUALIZARI FOR CONTAFIN_ORACLE.CURS_ACTUALIZARI;
|
||||
CREATE PUBLIC SYNONYM SYN_VNOM_UM_ISO FOR CONTAFIN_ORACLE.VNOM_UM_ISO;
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 6: SALARY MODULE SYNONYMS
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [5/10] Creating salary module synonyms...
|
||||
|
||||
CREATE PUBLIC SYNONYM SYN_SAL_NOM_TEMEI FOR CONTAFIN_ORACLE.SAL_NOM_TEMEI;
|
||||
CREATE PUBLIC SYNONYM SYN_SAL_NOM_TIPAUTORIZATIE FOR CONTAFIN_ORACLE.SAL_NOM_TIPAUTORIZATIE;
|
||||
CREATE PUBLIC SYNONYM SYN_SAL_NOM_TIP_SPOR FOR CONTAFIN_ORACLE.SAL_NOM_TIP_SPOR;
|
||||
CREATE PUBLIC SYNONYM SYN_SAL_NOM_TIP_NORME FOR CONTAFIN_ORACLE.SAL_NOM_TIP_NORME;
|
||||
CREATE PUBLIC SYNONYM SYN_SAL_NOM_STARI_CTR FOR CONTAFIN_ORACLE.SAL_NOM_STARI_CTR;
|
||||
CREATE PUBLIC SYNONYM SYN_SAL_NOM_DURATA_MUNCA FOR CONTAFIN_ORACLE.SAL_NOM_DURATA_MUNCA;
|
||||
CREATE PUBLIC SYNONYM SYN_SAL_NOM_REPARTIZARE_MUNCA FOR CONTAFIN_ORACLE.SAL_NOM_REPARTIZARE_MUNCA;
|
||||
CREATE PUBLIC SYNONYM SYN_SAL_NOM_INTERVALE_MUNCA FOR CONTAFIN_ORACLE.SAL_NOM_INTERVALE_MUNCA;
|
||||
CREATE PUBLIC SYNONYM SYN_SAL_COR FOR CONTAFIN_ORACLE.SAL_COR;
|
||||
CREATE PUBLIC SYNONYM SYN_SAL_ACTUALIZARE_COR FOR CONTAFIN_ORACLE.SAL_ACTUALIZARE_COR;
|
||||
|
||||
-- Salary types (must be created after CONTAFIN_ORACLE types exist)
|
||||
PROMPT [6/10] Creating salary contract types...
|
||||
CREATE PUBLIC SYNONYM SAL_CONTRACT_M FOR CONTAFIN_ORACLE.SAL_CONTRACT_M;
|
||||
CREATE PUBLIC SYNONYM CONTRACT_M FOR CONTAFIN_ORACLE.CONTRACT_M;
|
||||
CREATE PUBLIC SYNONYM SAL_RED FOR CONTAFIN_ORACLE.SAL_RED;
|
||||
CREATE PUBLIC SYNONYM SAL_CAMPURI_RED FOR CONTAFIN_ORACLE.SAL_CAMPURI_RED;
|
||||
CREATE PUBLIC SYNONYM TABSTERS FOR CONTAFIN_ORACLE.TABSTERS;
|
||||
CREATE PUBLIC SYNONYM SAL_TABELESTERS FOR CONTAFIN_ORACLE.SAL_TABELESTERS;
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 7: ATTACHMENT SYNONYMS
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [7/10] Creating attachment synonyms...
|
||||
|
||||
CREATE PUBLIC SYNONYM SYN_ATAS_ATASAMENTE FOR CONTAFIN_ORACLE.ATAS_ATASAMENTE;
|
||||
CREATE PUBLIC SYNONYM SYN_ATAS_REFERINTE FOR CONTAFIN_ORACLE.ATAS_REFERINTE;
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 8: UTILITY PACKAGES
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [8/10] Creating utility package synonyms...
|
||||
|
||||
CREATE PUBLIC SYNONYM PACK_UPDATE FOR CONTAFIN_ORACLE.PACK_UPDATE;
|
||||
CREATE PUBLIC SYNONYM PACK_UTILS FOR CONTAFIN_ORACLE.PACK_UTILS;
|
||||
CREATE PUBLIC SYNONYM PACK_UTILS_FILE FOR CONTAFIN_ORACLE.PACK_UTILS_FILE;
|
||||
CREATE PUBLIC SYNONYM SYN_PACK_DEF_CO FOR CONTAFIN_ORACLE.PACK_DEF_CO;
|
||||
CREATE PUBLIC SYNONYM PACK_ROARTVAI FOR CONTAFIN_ORACLE.PACK_ROARTVAI;
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 9: RTVAI MODULE AND ADDITIONAL TYPES
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [9/10] Creating RTVAI and additional type synonyms...
|
||||
|
||||
CREATE PUBLIC SYNONYM RTVAI_AGENTI FOR CONTAFIN_ORACLE.RTVAI_AGENTI;
|
||||
CREATE PUBLIC SYNONYM RTVAI_ISTORIC FOR CONTAFIN_ORACLE.RTVAI_ISTORIC;
|
||||
|
||||
CREATE PUBLIC SYNONYM FF_SUME FOR CONTAFIN_ORACLE.FF_SUME;
|
||||
CREATE PUBLIC SYNONYM FF_PERSINTRET FOR CONTAFIN_ORACLE.FF_PERSINTRET;
|
||||
CREATE PUBLIC SYNONYM VANZARI_DETALII_TAB FOR CONTAFIN_ORACLE.VANZARI_DETALII_TAB;
|
||||
CREATE PUBLIC SYNONYM PIVOT_TABLE FOR CONTAFIN_ORACLE.PIVOT_TABLE;
|
||||
CREATE PUBLIC SYNONYM PIVOT_ROW FOR CONTAFIN_ORACLE.PIVOT_ROW;
|
||||
CREATE PUBLIC SYNONYM TABINCHIDERETVA FOR CONTAFIN_ORACLE.TABINCHIDERETVA;
|
||||
CREATE PUBLIC SYNONYM TABELAVALORITAGURI FOR CONTAFIN_ORACLE.TABELAVALORITAGURI;
|
||||
CREATE PUBLIC SYNONYM RANDINCHIDERETVA FOR CONTAFIN_ORACLE.RANDINCHIDERETVA;
|
||||
CREATE PUBLIC SYNONYM SERVER_INFO FOR CONTAFIN_ORACLE.SERVER_INFO;
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 10: APPLICATION CONTEXT AND SPECIAL SYNONYMS
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [10/10] Creating application context and special synonyms...
|
||||
|
||||
-- Create application context for session variables
|
||||
CREATE CONTEXT SESIUNE USING CONTAFIN_ORACLE.SET_VARIABILE;
|
||||
|
||||
-- Private synonym for license view (in CONTAFIN_ORACLE schema)
|
||||
-- This links to the SYS.VAUTH_SERII view
|
||||
BEGIN
|
||||
EXECUTE IMMEDIATE 'DROP SYNONYM CONTAFIN_ORACLE.VDEF_PROGRAME_SERII';
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN NULL;
|
||||
END;
|
||||
/
|
||||
|
||||
CREATE SYNONYM CONTAFIN_ORACLE.VDEF_PROGRAME_SERII FOR SYS.VAUTH_SERII;
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT Public Synonym Creation Complete
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
|
||||
-- Verification
|
||||
PROMPT Total public synonyms created:
|
||||
SELECT COUNT(*) AS synonym_count
|
||||
FROM dba_synonyms
|
||||
WHERE owner = 'PUBLIC'
|
||||
AND table_owner = 'CONTAFIN_ORACLE';
|
||||
|
||||
PROMPT
|
||||
PROMPT Public synonyms list:
|
||||
SELECT synonym_name, table_name
|
||||
FROM dba_synonyms
|
||||
WHERE owner = 'PUBLIC'
|
||||
AND table_owner = 'CONTAFIN_ORACLE'
|
||||
ORDER BY synonym_name;
|
||||
|
||||
PROMPT
|
||||
952
proxmox/lxc108-oracle/roa-windows-setup/sql/sys-objects.sql
Normal file
952
proxmox/lxc108-oracle/roa-windows-setup/sql/sys-objects.sql
Normal file
@@ -0,0 +1,952 @@
|
||||
-- ============================================================================
|
||||
-- SYS CUSTOM OBJECTS FOR ROA APPLICATION
|
||||
-- ============================================================================
|
||||
-- Oracle 21c/18c Compatible Version
|
||||
-- Updated: January 2026
|
||||
--
|
||||
-- This file contains all custom SYS objects required by the ROA application:
|
||||
-- - Tables: AUTH_DETALII, AUTH_SERII, INFO
|
||||
-- - View: VAUTH_SERII
|
||||
-- - Sequence: SEQ_AUTH_SERII
|
||||
-- - Package: AUTH_PACK (uses DBMS_CRYPTO for Oracle 21c compatibility)
|
||||
-- - Procedures: EXECUTESCRIPTOS, NEWSCHEMA, NEWSCHEMAJOB, UPDATESQLPLUS, pINFO
|
||||
--
|
||||
-- IMPORTANT: Run this script as SYS with SYSDBA privileges
|
||||
--
|
||||
-- Usage:
|
||||
-- sqlplus sys/password@service as sysdba @sys-objects.sql
|
||||
--
|
||||
-- ============================================================================
|
||||
|
||||
SET SERVEROUTPUT ON
|
||||
SET FEEDBACK ON
|
||||
WHENEVER SQLERROR CONTINUE
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT Installing SYS Custom Objects
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 1: TABLES
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [1/11] Creating SYS.AUTH_DETALII table...
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM dba_tables
|
||||
WHERE owner = 'SYS' AND table_name = 'AUTH_DETALII';
|
||||
IF v_count > 0 THEN
|
||||
DBMS_OUTPUT.PUT_LINE(' Table AUTH_DETALII already exists, skipping.');
|
||||
ELSE
|
||||
EXECUTE IMMEDIATE '
|
||||
CREATE TABLE SYS.AUTH_DETALII (
|
||||
DETALII VARCHAR2(15) NOT NULL
|
||||
) TABLESPACE SYSTEM';
|
||||
DBMS_OUTPUT.PUT_LINE(' Table AUTH_DETALII created.');
|
||||
END IF;
|
||||
END;
|
||||
/
|
||||
|
||||
PROMPT [2/11] Creating SYS.AUTH_SERII table...
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM dba_tables
|
||||
WHERE owner = 'SYS' AND table_name = 'AUTH_SERII';
|
||||
IF v_count > 0 THEN
|
||||
DBMS_OUTPUT.PUT_LINE(' Table AUTH_SERII already exists, skipping.');
|
||||
ELSE
|
||||
EXECUTE IMMEDIATE '
|
||||
CREATE TABLE SYS.AUTH_SERII (
|
||||
ID_SERIE NUMBER(5,0) NOT NULL,
|
||||
ID_PROGRAM NUMBER(5,0) NOT NULL,
|
||||
SERIE RAW(128) NOT NULL,
|
||||
STERS NUMBER(1,0) DEFAULT 0 NOT NULL,
|
||||
DATAORA DATE DEFAULT SYSDATE NOT NULL,
|
||||
ID_UTIL NUMBER(5,0) NOT NULL,
|
||||
DATAORAS DATE,
|
||||
ID_UTILS NUMBER(5,0),
|
||||
CONSTRAINT PK_AUTH_SERII PRIMARY KEY (ID_SERIE)
|
||||
) TABLESPACE SYSTEM';
|
||||
DBMS_OUTPUT.PUT_LINE(' Table AUTH_SERII created.');
|
||||
END IF;
|
||||
END;
|
||||
/
|
||||
|
||||
PROMPT [3/11] Creating SYS.INFO table (logging)...
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM dba_tables
|
||||
WHERE owner = 'SYS' AND table_name = 'INFO';
|
||||
IF v_count > 0 THEN
|
||||
DBMS_OUTPUT.PUT_LINE(' Table INFO already exists, skipping.');
|
||||
ELSE
|
||||
EXECUTE IMMEDIATE '
|
||||
CREATE TABLE SYS.INFO (
|
||||
INFO CLOB,
|
||||
DATAORA TIMESTAMP(6) DEFAULT SYSTIMESTAMP,
|
||||
LOCATIA VARCHAR2(200) NULL
|
||||
) TABLESPACE SYSTEM';
|
||||
DBMS_OUTPUT.PUT_LINE(' Table INFO created.');
|
||||
END IF;
|
||||
END;
|
||||
/
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 2: SEQUENCE
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [4/11] Creating SYS.SEQ_AUTH_SERII sequence...
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM dba_sequences
|
||||
WHERE sequence_owner = 'SYS' AND sequence_name = 'SEQ_AUTH_SERII';
|
||||
IF v_count > 0 THEN
|
||||
DBMS_OUTPUT.PUT_LINE(' Sequence SEQ_AUTH_SERII already exists, skipping.');
|
||||
ELSE
|
||||
EXECUTE IMMEDIATE '
|
||||
CREATE SEQUENCE SYS.SEQ_AUTH_SERII
|
||||
MINVALUE 1
|
||||
MAXVALUE 99999
|
||||
INCREMENT BY 1
|
||||
START WITH 1
|
||||
NOCACHE
|
||||
NOORDER
|
||||
NOCYCLE';
|
||||
DBMS_OUTPUT.PUT_LINE(' Sequence SEQ_AUTH_SERII created.');
|
||||
END IF;
|
||||
END;
|
||||
/
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 3: LOGGING PROCEDURE (pINFO)
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [5/11] Creating SYS.pINFO procedure (logging)...
|
||||
CREATE OR REPLACE PROCEDURE SYS.pINFO(
|
||||
p_info IN CLOB,
|
||||
p_locatia IN VARCHAR2 DEFAULT NULL
|
||||
) IS
|
||||
PRAGMA AUTONOMOUS_TRANSACTION;
|
||||
BEGIN
|
||||
INSERT INTO SYS.INFO (INFO, DATAORA, LOCATIA)
|
||||
VALUES (p_info, SYSTIMESTAMP, p_locatia);
|
||||
COMMIT;
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
-- Silently fail to avoid breaking caller
|
||||
ROLLBACK;
|
||||
END pINFO;
|
||||
/
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 4: AUTH_PACK PACKAGE (Oracle 21c compatible with DBMS_CRYPTO)
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [6/11] Creating SYS.AUTH_PACK package specification...
|
||||
CREATE OR REPLACE PACKAGE SYS.AUTH_PACK IS
|
||||
-- ========================================================================
|
||||
-- AUTH_PACK - License and Authentication Management
|
||||
-- ========================================================================
|
||||
-- Author : MARIUS.ATANASIU
|
||||
-- Created : 11/5/2005
|
||||
-- Updated : 2026-01-14 - Migrated to Oracle 21c with DBMS_CRYPTO
|
||||
--
|
||||
-- Purpose:
|
||||
-- Manages ROA application licensing, including:
|
||||
-- - Program license verification on login
|
||||
-- - User count verification per program
|
||||
-- - License expiration checks
|
||||
-- - Company count limits
|
||||
-- ========================================================================
|
||||
|
||||
PROCEDURE verifica_program;
|
||||
|
||||
PROCEDURE verifica_licenta(v_sid IN NUMBER, v_program IN VARCHAR2);
|
||||
|
||||
PROCEDURE verifica_licenta_luna(
|
||||
v_an IN NUMBER,
|
||||
v_luna IN NUMBER,
|
||||
v_tip IN NUMBER
|
||||
);
|
||||
|
||||
PROCEDURE verifica_numar_firme;
|
||||
|
||||
PROCEDURE adauga_serie(
|
||||
V_ID_PROGRAM IN NUMBER,
|
||||
V_SERIE IN VARCHAR2,
|
||||
V_ID_UTILAD IN NUMBER
|
||||
);
|
||||
|
||||
PROCEDURE sterge_serie(V_ID_PROGRAM IN NUMBER, V_ID_UTILS IN NUMBER);
|
||||
|
||||
PROCEDURE verifica_serie(V_ID_PROGRAM IN NUMBER, V_SERIE IN RAW);
|
||||
|
||||
FUNCTION selecteaza_serie(V_ID_PROGRAM IN NUMBER) RETURN VARCHAR2;
|
||||
|
||||
FUNCTION selecteaza_nr_util(V_ID_PROGRAM IN NUMBER) RETURN NUMBER;
|
||||
|
||||
FUNCTION selecteaza_data_val(V_ID_PROGRAM IN NUMBER) RETURN DATE;
|
||||
|
||||
FUNCTION decripteaza_serie(
|
||||
V_ID_PROGRAM IN NUMBER,
|
||||
V_SERIE IN RAW,
|
||||
V_DATAORA IN DATE
|
||||
) RETURN VARCHAR2;
|
||||
|
||||
FUNCTION decripteaza_nr_util(V_SERIEC IN VARCHAR2) RETURN NUMBER;
|
||||
|
||||
FUNCTION decripteaza_data_val(
|
||||
V_SERIEC IN VARCHAR2,
|
||||
V_ZI IN VARCHAR2
|
||||
) RETURN DATE;
|
||||
|
||||
FUNCTION hextodec(V_HEXA IN VARCHAR2) RETURN NUMBER;
|
||||
|
||||
FUNCTION dectohex(V_NUMAR IN NUMBER) RETURN VARCHAR2;
|
||||
|
||||
END AUTH_PACK;
|
||||
/
|
||||
|
||||
PROMPT [7/11] Creating SYS.AUTH_PACK package body...
|
||||
CREATE OR REPLACE PACKAGE BODY SYS.AUTH_PACK IS
|
||||
-- ========================================================================
|
||||
-- MODIFICATION HISTORY:
|
||||
-- 2026-01-14: Migration Oracle 10g -> Oracle 21c
|
||||
-- - Replaced DBMS_OBFUSCATION_TOOLKIT.DES3Decrypt with DBMS_CRYPTO.DECRYPT
|
||||
-- - Using ENCRYPT_3DES_2KEY (16-byte key) + CHAIN_CBC + PAD_ZERO
|
||||
-- - Added PINFO logging calls for debugging
|
||||
-- ========================================================================
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- VERIFICA_PROGRAM
|
||||
-- Called on database login (via LOGON trigger) to verify license
|
||||
---------------------------------------------------------------------------
|
||||
PROCEDURE verifica_program IS
|
||||
v_program VARCHAR2(256);
|
||||
v_modul VARCHAR2(256);
|
||||
v_sid NUMBER(16);
|
||||
BEGIN
|
||||
BEGIN
|
||||
SELECT sid, UPPER(TRIM(program)), UPPER(TRIM(module))
|
||||
INTO v_sid, v_program, v_modul
|
||||
FROM v$session
|
||||
WHERE audsid = USERENV('SESSIONID')
|
||||
AND audsid != 0
|
||||
AND ROWNUM = 1
|
||||
AND STATUS <> 'KILLED';
|
||||
|
||||
PINFO('1 LOGIN ' || V_PROGRAM || ' USER ' || USER, 'SYS.AUTH');
|
||||
|
||||
IF v_program NOT IN (
|
||||
'ROASTART.EXE',
|
||||
'PLSQLDEV.EXE',
|
||||
'ROAGEN.EXE',
|
||||
'ROASUPORT.EXE',
|
||||
'EXPDP.EXE',
|
||||
'IMPDP.EXE',
|
||||
'APSNET_WP.EXE',
|
||||
'W3WP.EXE',
|
||||
'RUBY.EXE',
|
||||
'SQLPLUS.EXE',
|
||||
'TASKS.EXE',
|
||||
'VFP9.EXE',
|
||||
'ROAEFACTURA.EXE',
|
||||
'WEBDEV.WEBSERVER.EXE',
|
||||
'ROA2COCACOLA.EXE',
|
||||
'GENERARESCRIPT.EXE',
|
||||
'ROAACTUALIZARI.EXE',
|
||||
'EXP.EXE',
|
||||
'IMP.EXE'
|
||||
) AND USER NOT IN (
|
||||
'SYS',
|
||||
'SYSTEM',
|
||||
'DBSNMP',
|
||||
'CTXSYS',
|
||||
'MDSYS',
|
||||
'DIP',
|
||||
'SYSMAN',
|
||||
'WMSYS'
|
||||
) THEN
|
||||
PINFO('2 LOGIN ' || V_PROGRAM || ' USER ' || USER, 'SYS.AUTH');
|
||||
|
||||
IF v_program <> v_modul THEN
|
||||
RAISE_APPLICATION_ERROR(-20000, 'Acces interzis!');
|
||||
END IF;
|
||||
|
||||
PINFO('3 LOGIN ' || V_PROGRAM || ' USER ' || USER, 'SYS.AUTH');
|
||||
|
||||
IF NOT V_PROGRAM LIKE 'ORACLE%' THEN
|
||||
auth_pack.verifica_licenta(v_sid, v_program);
|
||||
END IF;
|
||||
|
||||
PINFO('4 LOGIN ' || V_PROGRAM || ' USER ' || USER, 'SYS.AUTH');
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND THEN
|
||||
v_program := NULL;
|
||||
END;
|
||||
END verifica_program;
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- VERIFICA_LICENTA
|
||||
-- Verifies license exists for program and checks user count by IP
|
||||
---------------------------------------------------------------------------
|
||||
PROCEDURE verifica_licenta(v_sid IN NUMBER, v_program IN VARCHAR2) IS
|
||||
v_serie VARCHAR2(256);
|
||||
v_seriec VARCHAR2(256);
|
||||
v_nr_util NUMBER(5);
|
||||
v_utilizatori NUMBER(5);
|
||||
v_nume_program SYN_NOM_PROGRAME.DENUMIRE%TYPE;
|
||||
v_id_program CONTAFIN_ORACLE.NOM_PROGRAME.ID_PROGRAM%TYPE;
|
||||
v_dataora DATE;
|
||||
v_data_val DATE;
|
||||
v_zi VARCHAR2(2);
|
||||
BEGIN
|
||||
V_NUME_PROGRAM := TRIM(REPLACE(v_program, '.EXE'));
|
||||
|
||||
BEGIN
|
||||
SELECT A.ID_PROGRAM, B.SERIE, B.DATAORA
|
||||
INTO V_ID_PROGRAM, V_SERIE, V_DATAORA
|
||||
FROM SYN_NOM_PROGRAME A
|
||||
LEFT JOIN AUTH_SERII B ON A.ID_PROGRAM = B.ID_PROGRAM
|
||||
WHERE UPPER(TRIM(A.DENUMIRE)) = V_NUME_PROGRAM
|
||||
AND B.STERS = 0;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND THEN
|
||||
PINFO('1 LOGIN ' || V_PROGRAM || ' USER ' || USER, 'SYS.AUTH2');
|
||||
RAISE_APPLICATION_ERROR(-20000,
|
||||
'Nu aveti licenta pentru ' || V_NUME_PROGRAM || '!' ||
|
||||
CHR(13) || CHR(10) ||
|
||||
' Licenta poate fi introdusa prin programul ROASUPORT!');
|
||||
END;
|
||||
|
||||
PINFO('2 LOGIN ' || V_PROGRAM || ' USER ' || USER, 'SYS.AUTH2');
|
||||
|
||||
v_zi := LPAD(EXTRACT(DAY FROM v_dataora), 2, '0');
|
||||
v_seriec := auth_pack.decripteaza_serie(v_id_program, v_serie, v_dataora);
|
||||
v_utilizatori := auth_pack.decripteaza_nr_util(v_seriec);
|
||||
v_data_val := auth_pack.decripteaza_data_val(v_seriec, v_zi);
|
||||
|
||||
IF v_utilizatori > 0 THEN
|
||||
-- Count distinct IPs (client_info) connected with same program
|
||||
-- excluding current session's IP
|
||||
SELECT COUNT(DISTINCT client_info)
|
||||
INTO v_nr_util
|
||||
FROM v$session
|
||||
WHERE UPPER(TRIM(PROGRAM)) = v_program
|
||||
AND SID != v_sid
|
||||
AND STATUS <> 'KILLED'
|
||||
AND NVL(client_info, 'x') <> SYS_CONTEXT('userenv', 'ip_address');
|
||||
|
||||
IF v_nr_util >= v_utilizatori THEN
|
||||
RAISE_APPLICATION_ERROR(-20000,
|
||||
'Ati depasit numarul de licente (' || v_utilizatori ||
|
||||
') pentru programul ' || v_nume_program || ' !' ||
|
||||
CHR(13) || CHR(10) ||
|
||||
' Licenta poate fi reinnoita prin programul ROASUPORT!');
|
||||
END IF;
|
||||
ELSE
|
||||
RAISE_APPLICATION_ERROR(-20000,
|
||||
'Seria introdusa pentru acest program nu este corecta!' ||
|
||||
CHR(13) || CHR(10) ||
|
||||
' Licenta poate fi modificata prin programul ROASUPORT!');
|
||||
END IF;
|
||||
|
||||
PINFO('3 LOGIN ' || V_PROGRAM || ' USER ' || USER, 'SYS.AUTH2');
|
||||
END verifica_licenta;
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- VERIFICA_LICENTA_LUNA
|
||||
-- Verifies license for opening a new month (triggered on CALENDAR insert)
|
||||
---------------------------------------------------------------------------
|
||||
PROCEDURE verifica_licenta_luna(
|
||||
v_an IN NUMBER,
|
||||
v_luna IN NUMBER,
|
||||
v_tip IN NUMBER
|
||||
) IS
|
||||
v_serie VARCHAR2(256);
|
||||
v_seriec VARCHAR2(256);
|
||||
v_nume_program1 SYN_NOM_PROGRAME.DENUMIRE%TYPE := 'ROASTART';
|
||||
v_nume_program2 SYN_NOM_PROGRAME.DENUMIRE%TYPE := 'ROASAL';
|
||||
v_id_program CONTAFIN_ORACLE.NOM_PROGRAME.ID_PROGRAM%TYPE;
|
||||
v_dataora DATE;
|
||||
v_data_val DATE;
|
||||
v_zi VARCHAR2(2);
|
||||
BEGIN
|
||||
BEGIN
|
||||
SELECT A.ID_PROGRAM, B.SERIE, B.DATAORA
|
||||
INTO V_ID_PROGRAM, V_SERIE, V_DATAORA
|
||||
FROM SYN_NOM_PROGRAME A
|
||||
LEFT JOIN AUTH_SERII B ON A.ID_PROGRAM = B.ID_PROGRAM
|
||||
WHERE UPPER(TRIM(A.DENUMIRE)) =
|
||||
DECODE(V_TIP, 1, V_NUME_PROGRAM1, 2, V_NUME_PROGRAM2, 'XYZ')
|
||||
AND B.STERS = 0;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND THEN
|
||||
RAISE_APPLICATION_ERROR(-20000,
|
||||
'Nu aveti licenta pentru deschiderea de luna noua!' ||
|
||||
CHR(13) || CHR(10) ||
|
||||
' Licenta poate fi introdusa prin programul ROASUPORT!');
|
||||
END;
|
||||
|
||||
v_zi := LPAD(EXTRACT(DAY FROM v_dataora), 2, '0');
|
||||
v_seriec := auth_pack.decripteaza_serie(v_id_program, v_serie, v_dataora);
|
||||
v_data_val := auth_pack.decripteaza_data_val(v_seriec, v_zi);
|
||||
|
||||
IF v_data_val < TO_DATE(v_an || v_luna, 'YYYYMM') THEN
|
||||
RAISE_APPLICATION_ERROR(-20000,
|
||||
'Licenta pentru acest program a expirat!' ||
|
||||
CHR(13) || CHR(10) ||
|
||||
' Licenta poate fi reinnoita prin programul ROASUPORT!');
|
||||
END IF;
|
||||
END verifica_licenta_luna;
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- VERIFICA_NUMAR_FIRME
|
||||
-- Verifies company count doesn't exceed license limit
|
||||
---------------------------------------------------------------------------
|
||||
PROCEDURE verifica_numar_firme IS
|
||||
v_serie VARCHAR2(256);
|
||||
v_seriec VARCHAR2(256);
|
||||
v_nume_program SYN_NOM_PROGRAME.DENUMIRE%TYPE := 'ROASTART';
|
||||
v_id_program CONTAFIN_ORACLE.NOM_PROGRAME.ID_PROGRAM%TYPE;
|
||||
v_dataora DATE;
|
||||
V_NR_MAX_FIRME NUMBER(10) := 0;
|
||||
V_NR_FIRME NUMBER(10) := 0;
|
||||
BEGIN
|
||||
BEGIN
|
||||
SELECT A.ID_PROGRAM, B.SERIE, B.DATAORA
|
||||
INTO V_ID_PROGRAM, V_SERIE, V_DATAORA
|
||||
FROM SYN_NOM_PROGRAME A
|
||||
LEFT JOIN AUTH_SERII B ON A.ID_PROGRAM = B.ID_PROGRAM
|
||||
WHERE UPPER(TRIM(A.DENUMIRE)) = V_NUME_PROGRAM
|
||||
AND B.STERS = 0;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND THEN
|
||||
RAISE_APPLICATION_ERROR(-20000,
|
||||
'Nu aveti licenta pentru deschiderea unei firme noi!' ||
|
||||
CHR(13) || CHR(10) ||
|
||||
' Licenta poate fi introdusa prin programul ROASUPORT!');
|
||||
END;
|
||||
|
||||
v_seriec := auth_pack.decripteaza_serie(v_id_program, v_serie, v_dataora);
|
||||
V_NR_MAX_FIRME := auth_pack.decripteaza_nr_util(V_SERIEC);
|
||||
|
||||
SELECT COUNT(*)
|
||||
INTO V_NR_FIRME
|
||||
FROM SYN_NOM_FIRME
|
||||
WHERE STERS = 0
|
||||
AND NVL(ID_MAMA, 0) = 0;
|
||||
|
||||
IF V_NR_FIRME >= V_NR_MAX_FIRME THEN
|
||||
RAISE_APPLICATION_ERROR(-20000,
|
||||
'Aveti licenta pentru maxim ' || V_NR_MAX_FIRME ||
|
||||
' firme (' || V_NR_FIRME || ' firme deja definite)!' ||
|
||||
CHR(13) || CHR(10) ||
|
||||
' Licenta poate fi introdusa prin programul ROASUPORT!');
|
||||
END IF;
|
||||
END verifica_numar_firme;
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- ADAUGA_SERIE
|
||||
-- Adds a new license serial number for a program
|
||||
---------------------------------------------------------------------------
|
||||
PROCEDURE adauga_serie(
|
||||
V_ID_PROGRAM IN NUMBER,
|
||||
V_SERIE IN VARCHAR2,
|
||||
V_ID_UTILAD IN NUMBER
|
||||
) IS
|
||||
V_ID_SERIE AUTH_SERII.ID_SERIE%TYPE;
|
||||
V_SERIER AUTH_SERII.SERIE%TYPE;
|
||||
eroare_de_conversie EXCEPTION;
|
||||
PRAGMA EXCEPTION_INIT(eroare_de_conversie, -6502);
|
||||
BEGIN
|
||||
BEGIN
|
||||
V_SERIER := HEXTORAW(V_SERIE);
|
||||
EXCEPTION
|
||||
WHEN eroare_de_conversie THEN
|
||||
RAISE_APPLICATION_ERROR(-20000, 'Aceasta serie nu este valida!');
|
||||
END;
|
||||
|
||||
auth_pack.verifica_serie(V_ID_PROGRAM, V_SERIER);
|
||||
|
||||
SELECT SEQ_AUTH_SERII.NEXTVAL INTO V_ID_SERIE FROM DUAL;
|
||||
|
||||
INSERT INTO AUTH_SERII (ID_SERIE, ID_PROGRAM, SERIE, ID_UTIL)
|
||||
VALUES (V_ID_SERIE, V_ID_PROGRAM, V_SERIER, V_ID_UTILAD);
|
||||
END adauga_serie;
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- STERGE_SERIE
|
||||
-- Marks a license serial as deleted (soft delete)
|
||||
---------------------------------------------------------------------------
|
||||
PROCEDURE sterge_serie(V_ID_PROGRAM IN NUMBER, V_ID_UTILS IN NUMBER) IS
|
||||
BEGIN
|
||||
UPDATE AUTH_SERII
|
||||
SET STERS = 1, ID_UTILS = V_ID_UTILS, DATAORAS = SYSDATE
|
||||
WHERE ID_PROGRAM = V_ID_PROGRAM
|
||||
AND STERS = 0;
|
||||
END sterge_serie;
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- SELECTEAZA_SERIE
|
||||
-- Returns the hex-encoded serial for a program
|
||||
---------------------------------------------------------------------------
|
||||
FUNCTION selecteaza_serie(V_ID_PROGRAM IN NUMBER) RETURN VARCHAR2 IS
|
||||
V_SERIE AUTH_SERII.SERIE%TYPE;
|
||||
V_SERIEC VARCHAR2(256);
|
||||
eroare_de_conversie EXCEPTION;
|
||||
PRAGMA EXCEPTION_INIT(eroare_de_conversie, -6502);
|
||||
BEGIN
|
||||
BEGIN
|
||||
SELECT SERIE
|
||||
INTO V_SERIE
|
||||
FROM AUTH_SERII
|
||||
WHERE ID_PROGRAM = V_ID_PROGRAM
|
||||
AND STERS = 0;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND THEN
|
||||
V_SERIE := NULL;
|
||||
END;
|
||||
|
||||
BEGIN
|
||||
V_SERIEC := TRIM(RAWTOHEX(V_SERIE));
|
||||
EXCEPTION
|
||||
WHEN eroare_de_conversie THEN
|
||||
V_SERIEC := NULL;
|
||||
END;
|
||||
|
||||
RETURN V_SERIEC;
|
||||
END selecteaza_serie;
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- SELECTEAZA_NR_UTIL
|
||||
-- Returns the number of licensed users for a program
|
||||
---------------------------------------------------------------------------
|
||||
FUNCTION selecteaza_nr_util(V_ID_PROGRAM IN NUMBER) RETURN NUMBER IS
|
||||
V_SERIE AUTH_SERII.SERIE%TYPE;
|
||||
V_DATAORA DATE;
|
||||
V_NR_UTILIZATORI NUMBER(4);
|
||||
V_SERIEC VARCHAR2(64);
|
||||
BEGIN
|
||||
BEGIN
|
||||
SELECT SERIE, DATAORA
|
||||
INTO V_SERIE, V_DATAORA
|
||||
FROM AUTH_SERII
|
||||
WHERE ID_PROGRAM = V_ID_PROGRAM
|
||||
AND STERS = 0;
|
||||
|
||||
V_SERIEC := auth_pack.decripteaza_serie(V_ID_PROGRAM, V_SERIE, V_DATAORA);
|
||||
V_NR_UTILIZATORI := auth_pack.decripteaza_nr_util(V_SERIEC);
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND THEN
|
||||
V_NR_UTILIZATORI := 0;
|
||||
END;
|
||||
|
||||
RETURN V_NR_UTILIZATORI;
|
||||
END selecteaza_nr_util;
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- SELECTEAZA_DATA_VAL
|
||||
-- Returns the license expiration date for a program
|
||||
---------------------------------------------------------------------------
|
||||
FUNCTION selecteaza_data_val(V_ID_PROGRAM IN NUMBER) RETURN DATE IS
|
||||
V_SERIE AUTH_SERII.SERIE%TYPE;
|
||||
V_DATAORA DATE;
|
||||
V_DATA_VAL DATE;
|
||||
V_SERIEC VARCHAR2(64);
|
||||
V_ZI VARCHAR2(2);
|
||||
BEGIN
|
||||
BEGIN
|
||||
SELECT SERIE, DATAORA
|
||||
INTO V_SERIE, V_DATAORA
|
||||
FROM AUTH_SERII
|
||||
WHERE ID_PROGRAM = V_ID_PROGRAM
|
||||
AND STERS = 0;
|
||||
|
||||
V_SERIEC := auth_pack.decripteaza_serie(V_ID_PROGRAM, V_SERIE, V_DATAORA);
|
||||
V_ZI := LPAD(EXTRACT(DAY FROM V_DATAORA), 2, '0');
|
||||
V_DATA_VAL := auth_pack.decripteaza_data_val(V_SERIEC, V_ZI);
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND THEN
|
||||
V_DATA_VAL := NULL;
|
||||
END;
|
||||
|
||||
RETURN V_DATA_VAL;
|
||||
END selecteaza_data_val;
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- VERIFICA_SERIE
|
||||
-- Validates a license serial checksum
|
||||
---------------------------------------------------------------------------
|
||||
PROCEDURE verifica_serie(V_ID_PROGRAM IN NUMBER, V_SERIE IN RAW) IS
|
||||
v_seriedec VARCHAR2(256);
|
||||
v_checksum NUMBER(2);
|
||||
v_suma NUMBER(2) := 0;
|
||||
BEGIN
|
||||
v_seriedec := auth_pack.decripteaza_serie(V_ID_PROGRAM, V_SERIE, SYSDATE);
|
||||
|
||||
v_checksum := auth_pack.hextodec(SUBSTR(v_seriedec, LENGTH(v_seriedec), 1));
|
||||
|
||||
FOR i IN 1 .. LENGTH(v_seriedec) - 1 LOOP
|
||||
v_suma := v_suma + auth_pack.hextodec(SUBSTR(v_seriedec, i, 1));
|
||||
END LOOP;
|
||||
|
||||
IF MOD(v_suma + v_checksum, 16) <> 0 THEN
|
||||
RAISE_APPLICATION_ERROR(-20000, 'Seria introdusa nu este valida!');
|
||||
END IF;
|
||||
END verifica_serie;
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- DECRIPTEAZA_SERIE
|
||||
-- Decrypts a license serial using DBMS_CRYPTO (Oracle 21c compatible)
|
||||
-- Replaced DBMS_OBFUSCATION_TOOLKIT.DES3Decrypt
|
||||
---------------------------------------------------------------------------
|
||||
FUNCTION decripteaza_serie(
|
||||
V_ID_PROGRAM IN NUMBER,
|
||||
V_SERIE IN RAW,
|
||||
V_DATAORA IN DATE
|
||||
) RETURN VARCHAR2 IS
|
||||
v_denumire CONTAFIN_ORACLE.NOM_PROGRAME.DENUMIRE%TYPE;
|
||||
v_id_client NUMBER(4);
|
||||
v_cheie RAW(16);
|
||||
v_serieval RAW(256);
|
||||
v_seriedec VARCHAR2(32);
|
||||
v_valoare NUMBER(2);
|
||||
eroare_de_conversie EXCEPTION;
|
||||
PRAGMA EXCEPTION_INIT(eroare_de_conversie, -6502);
|
||||
BEGIN
|
||||
IF V_SERIE IS NOT NULL THEN
|
||||
SELECT SUBSTR(a.denumire, 4, 5)
|
||||
INTO V_DENUMIRE
|
||||
FROM SYN_NOM_PROGRAME A
|
||||
WHERE A.ID_PROGRAM = V_ID_PROGRAM;
|
||||
|
||||
SELECT TO_NUMBER(DETALII) INTO V_ID_CLIENT FROM AUTH_DETALII;
|
||||
|
||||
-- Build 16-byte key for 3DES-2KEY
|
||||
v_cheie := UTL_RAW.CAST_TO_RAW(
|
||||
RPAD(
|
||||
LPAD(v_id_program, 3, '0') ||
|
||||
LPAD(v_id_client, 4, '0') ||
|
||||
RPAD(v_denumire, 5, CHR(4)) ||
|
||||
LPAD(TO_CHAR(v_dataora, 'IWYY'), 4, '0'),
|
||||
16,
|
||||
'X'
|
||||
)
|
||||
);
|
||||
|
||||
-- Use DBMS_CRYPTO instead of DBMS_OBFUSCATION_TOOLKIT
|
||||
-- ENCRYPT_3DES_2KEY for 16-byte keys, PAD_ZERO for compatibility
|
||||
v_serieval := DBMS_CRYPTO.DECRYPT(
|
||||
src => v_serie,
|
||||
typ => DBMS_CRYPTO.ENCRYPT_3DES_2KEY +
|
||||
DBMS_CRYPTO.CHAIN_CBC +
|
||||
DBMS_CRYPTO.PAD_ZERO,
|
||||
key => v_cheie
|
||||
);
|
||||
|
||||
BEGIN
|
||||
FOR i IN 1 .. LENGTH(v_serieval) / 2 LOOP
|
||||
v_valoare := TO_NUMBER(SUBSTR(v_serieval, 2 * i - 1, 2));
|
||||
IF v_valoare > 40 THEN
|
||||
v_seriedec := v_seriedec || auth_pack.dectohex(v_valoare - 31);
|
||||
ELSE
|
||||
v_seriedec := v_seriedec || (v_valoare - 30);
|
||||
END IF;
|
||||
END LOOP;
|
||||
EXCEPTION
|
||||
WHEN eroare_de_conversie THEN
|
||||
RAISE_APPLICATION_ERROR(-20100, 'Seria introdusa nu este valida!');
|
||||
END;
|
||||
ELSE
|
||||
v_seriedec := NULL;
|
||||
END IF;
|
||||
|
||||
RETURN v_seriedec;
|
||||
END decripteaza_serie;
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- DECRIPTEAZA_NR_UTIL
|
||||
-- Extracts user count from decrypted serial
|
||||
---------------------------------------------------------------------------
|
||||
FUNCTION decripteaza_nr_util(V_SERIEC IN VARCHAR2) RETURN NUMBER IS
|
||||
BEGIN
|
||||
IF V_SERIEC IS NOT NULL THEN
|
||||
RETURN TO_NUMBER(SUBSTR(v_seriec, 1, 4));
|
||||
ELSE
|
||||
RETURN 0;
|
||||
END IF;
|
||||
END decripteaza_nr_util;
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- DECRIPTEAZA_DATA_VAL
|
||||
-- Extracts expiration date from decrypted serial
|
||||
---------------------------------------------------------------------------
|
||||
FUNCTION decripteaza_data_val(
|
||||
V_SERIEC IN VARCHAR2,
|
||||
V_ZI IN VARCHAR2
|
||||
) RETURN DATE IS
|
||||
v_luna VARCHAR2(2);
|
||||
BEGIN
|
||||
IF V_SERIEC IS NOT NULL THEN
|
||||
v_luna := LPAD(auth_pack.hextodec(SUBSTR(v_seriec, 5, 1)), 2, '0');
|
||||
RETURN LAST_DAY(TO_DATE(v_luna || SUBSTR(v_seriec, 6, 2), 'MMYY'));
|
||||
ELSE
|
||||
RETURN NULL;
|
||||
END IF;
|
||||
END decripteaza_data_val;
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- HEXTODEC
|
||||
-- Converts a hex character to decimal
|
||||
---------------------------------------------------------------------------
|
||||
FUNCTION hextodec(V_HEXA IN VARCHAR2) RETURN NUMBER IS
|
||||
v_numar NUMBER(2);
|
||||
BEGIN
|
||||
IF ASCII(UPPER(TRIM(V_HEXA))) BETWEEN 48 AND 57 OR
|
||||
ASCII(UPPER(TRIM(V_HEXA))) BETWEEN 65 AND 70 THEN
|
||||
CASE UPPER(TRIM(V_HEXA))
|
||||
WHEN 'A' THEN v_numar := 10;
|
||||
WHEN 'B' THEN v_numar := 11;
|
||||
WHEN 'C' THEN v_numar := 12;
|
||||
WHEN 'D' THEN v_numar := 13;
|
||||
WHEN 'E' THEN v_numar := 14;
|
||||
WHEN 'F' THEN v_numar := 15;
|
||||
ELSE v_numar := TO_NUMBER(V_HEXA);
|
||||
END CASE;
|
||||
ELSE
|
||||
RAISE_APPLICATION_ERROR(-20000, 'Caracterul nu este valid!');
|
||||
END IF;
|
||||
RETURN v_numar;
|
||||
END hextodec;
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- DECTOHEX
|
||||
-- Converts a decimal to hex character
|
||||
---------------------------------------------------------------------------
|
||||
FUNCTION dectohex(V_NUMAR IN NUMBER) RETURN VARCHAR2 IS
|
||||
v_hexa VARCHAR2(1);
|
||||
BEGIN
|
||||
CASE v_numar
|
||||
WHEN 10 THEN v_hexa := 'A';
|
||||
WHEN 11 THEN v_hexa := 'B';
|
||||
WHEN 12 THEN v_hexa := 'C';
|
||||
WHEN 13 THEN v_hexa := 'D';
|
||||
WHEN 14 THEN v_hexa := 'E';
|
||||
WHEN 15 THEN v_hexa := 'F';
|
||||
ELSE v_hexa := TO_CHAR(V_NUMAR);
|
||||
END CASE;
|
||||
RETURN v_hexa;
|
||||
END dectohex;
|
||||
|
||||
END AUTH_PACK;
|
||||
/
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 5: VIEW
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [8/11] Creating SYS.VAUTH_SERII view...
|
||||
CREATE OR REPLACE VIEW SYS.VAUTH_SERII (
|
||||
ID_PROGRAM,
|
||||
NUME,
|
||||
SERIE,
|
||||
NR_UTIL,
|
||||
DATA_VAL
|
||||
) AS
|
||||
SELECT a.id_program,
|
||||
a.denumire AS nume,
|
||||
auth_pack.selecteaza_serie(a.id_program) AS serie,
|
||||
auth_pack.selecteaza_nr_util(a.id_program) AS nr_util,
|
||||
auth_pack.selecteaza_data_val(a.id_program) AS data_val
|
||||
FROM syn_nom_programe a
|
||||
LEFT JOIN syn_def_programe b ON a.id_program = b.ide_program
|
||||
WHERE b.sters = 0
|
||||
AND b.instalat = 1;
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 6: ADDITIONAL PROCEDURES
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [9/11] Creating SYS.EXECUTESCRIPTOS procedure...
|
||||
CREATE OR REPLACE PROCEDURE SYS.EXECUTESCRIPTOS(
|
||||
p_nume_script IN VARCHAR2,
|
||||
p_param IN VARCHAR2,
|
||||
p_wait IN VARCHAR2,
|
||||
p_result OUT NUMBER
|
||||
) IS
|
||||
v_job_name VARCHAR2(100);
|
||||
v_state VARCHAR2(30);
|
||||
BEGIN
|
||||
v_job_name := 'EXECUTESCRIPTOS_' || TO_CHAR(SYSDATE, 'YYYYMMDD_HH24MISS');
|
||||
|
||||
DBMS_SCHEDULER.CREATE_JOB(
|
||||
job_name => v_job_name,
|
||||
job_type => 'EXECUTABLE',
|
||||
job_action => p_nume_script,
|
||||
number_of_arguments => 1,
|
||||
start_date => SYSTIMESTAMP,
|
||||
enabled => FALSE,
|
||||
auto_drop => TRUE
|
||||
);
|
||||
|
||||
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(
|
||||
job_name => v_job_name,
|
||||
argument_position => 1,
|
||||
argument_value => p_param
|
||||
);
|
||||
|
||||
DBMS_SCHEDULER.ENABLE(v_job_name);
|
||||
|
||||
IF p_wait = 'Y' THEN
|
||||
LOOP
|
||||
BEGIN
|
||||
SELECT state INTO v_state
|
||||
FROM dba_scheduler_jobs
|
||||
WHERE job_name = v_job_name;
|
||||
|
||||
EXIT WHEN v_state NOT IN ('SCHEDULED', 'RUNNING');
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND THEN
|
||||
EXIT; -- Job completed and was auto-dropped
|
||||
END;
|
||||
DBMS_LOCK.SLEEP(1);
|
||||
END LOOP;
|
||||
END IF;
|
||||
|
||||
p_result := 0;
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
p_result := -1;
|
||||
END EXECUTESCRIPTOS;
|
||||
/
|
||||
|
||||
PROMPT [10/11] Creating SYS.NEWSCHEMA procedure...
|
||||
CREATE OR REPLACE PROCEDURE SYS.NEWSCHEMA(
|
||||
p_schema_name IN VARCHAR2,
|
||||
p_password IN VARCHAR2,
|
||||
p_result OUT NUMBER
|
||||
) IS
|
||||
BEGIN
|
||||
EXECUTE IMMEDIATE 'CREATE USER ' || p_schema_name ||
|
||||
' IDENTIFIED BY ' || p_password ||
|
||||
' DEFAULT TABLESPACE ROA' ||
|
||||
' TEMPORARY TABLESPACE TEMP' ||
|
||||
' QUOTA UNLIMITED ON ROA';
|
||||
|
||||
EXECUTE IMMEDIATE 'GRANT CONNECT, RESOURCE TO ' || p_schema_name;
|
||||
EXECUTE IMMEDIATE 'GRANT CREATE SESSION TO ' || p_schema_name;
|
||||
EXECUTE IMMEDIATE 'GRANT CREATE TABLE TO ' || p_schema_name;
|
||||
EXECUTE IMMEDIATE 'GRANT CREATE VIEW TO ' || p_schema_name;
|
||||
EXECUTE IMMEDIATE 'GRANT CREATE SEQUENCE TO ' || p_schema_name;
|
||||
EXECUTE IMMEDIATE 'GRANT CREATE PROCEDURE TO ' || p_schema_name;
|
||||
EXECUTE IMMEDIATE 'GRANT CREATE TRIGGER TO ' || p_schema_name;
|
||||
EXECUTE IMMEDIATE 'GRANT CREATE TYPE TO ' || p_schema_name;
|
||||
EXECUTE IMMEDIATE 'GRANT CREATE SYNONYM TO ' || p_schema_name;
|
||||
EXECUTE IMMEDIATE 'GRANT CREATE DATABASE LINK TO ' || p_schema_name;
|
||||
EXECUTE IMMEDIATE 'GRANT CREATE JOB TO ' || p_schema_name;
|
||||
|
||||
DBMS_OUTPUT.PUT_LINE('Schema ' || p_schema_name || ' created successfully!');
|
||||
|
||||
p_result := 0;
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
DBMS_OUTPUT.PUT_LINE('Error creating schema: ' || SQLERRM);
|
||||
p_result := -1;
|
||||
END NEWSCHEMA;
|
||||
/
|
||||
|
||||
PROMPT [11/11] Creating SYS.NEWSCHEMAJOB and SYS.UPDATESQLPLUS procedures...
|
||||
CREATE OR REPLACE PROCEDURE SYS.NEWSCHEMAJOB(
|
||||
p_schema_name IN VARCHAR2,
|
||||
p_password IN VARCHAR2
|
||||
) IS
|
||||
v_job_name VARCHAR2(100);
|
||||
BEGIN
|
||||
v_job_name := 'NEWSCHEMA_' || p_schema_name;
|
||||
|
||||
DBMS_SCHEDULER.CREATE_JOB(
|
||||
job_name => v_job_name,
|
||||
job_type => 'STORED_PROCEDURE',
|
||||
job_action => 'SYS.NEWSCHEMA',
|
||||
number_of_arguments => 3,
|
||||
start_date => SYSTIMESTAMP,
|
||||
enabled => FALSE,
|
||||
auto_drop => TRUE
|
||||
);
|
||||
|
||||
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(
|
||||
job_name => v_job_name,
|
||||
argument_position => 1,
|
||||
argument_value => p_schema_name
|
||||
);
|
||||
|
||||
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(
|
||||
job_name => v_job_name,
|
||||
argument_position => 2,
|
||||
argument_value => p_password
|
||||
);
|
||||
|
||||
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(
|
||||
job_name => v_job_name,
|
||||
argument_position => 3,
|
||||
argument_value => '0'
|
||||
);
|
||||
|
||||
DBMS_SCHEDULER.ENABLE(v_job_name);
|
||||
END NEWSCHEMAJOB;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE PROCEDURE SYS.UPDATESQLPLUS IS
|
||||
v_result NUMBER;
|
||||
BEGIN
|
||||
-- Path may need to be adjusted for your Windows installation
|
||||
EXECUTESCRIPTOS('D:\ROMFAST\UPDATE\UPDATE_SQLPLUS.BAT', '', 'N', v_result);
|
||||
END UPDATESQLPLUS;
|
||||
/
|
||||
|
||||
-- ============================================================================
|
||||
-- VERIFICATION
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT Verifying SYS Custom Objects
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
|
||||
PROMPT SYS custom objects status:
|
||||
SELECT object_name, object_type, status
|
||||
FROM dba_objects
|
||||
WHERE owner = 'SYS'
|
||||
AND object_name IN (
|
||||
'AUTH_PACK', 'AUTH_DETALII', 'AUTH_SERII', 'VAUTH_SERII',
|
||||
'EXECUTESCRIPTOS', 'NEWSCHEMA', 'NEWSCHEMAJOB', 'UPDATESQLPLUS',
|
||||
'PINFO', 'INFO', 'SEQ_AUTH_SERII'
|
||||
)
|
||||
ORDER BY object_type, object_name;
|
||||
|
||||
PROMPT
|
||||
PROMPT Invalid objects (should be empty):
|
||||
SELECT object_name, object_type, status
|
||||
FROM dba_objects
|
||||
WHERE owner = 'SYS'
|
||||
AND object_name IN (
|
||||
'AUTH_PACK', 'AUTH_DETALII', 'AUTH_SERII', 'VAUTH_SERII',
|
||||
'EXECUTESCRIPTOS', 'NEWSCHEMA', 'NEWSCHEMAJOB', 'UPDATESQLPLUS',
|
||||
'PINFO', 'INFO', 'SEQ_AUTH_SERII'
|
||||
)
|
||||
AND status != 'VALID';
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT SYS Custom Objects Installation Complete
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
514
proxmox/lxc108-oracle/roa-windows-setup/sql/verify-objects.sql
Normal file
514
proxmox/lxc108-oracle/roa-windows-setup/sql/verify-objects.sql
Normal file
@@ -0,0 +1,514 @@
|
||||
-- ============================================================================
|
||||
-- ROA DATABASE VERIFICATION SCRIPT
|
||||
-- ============================================================================
|
||||
-- Comprehensive verification of all ROA database objects and configuration
|
||||
--
|
||||
-- Usage:
|
||||
-- @verify-objects.sql
|
||||
--
|
||||
-- Connect as: SYSDBA or SYSTEM
|
||||
--
|
||||
-- This script verifies:
|
||||
-- 1. Tablespace ROA exists
|
||||
-- 2. Users CONTAFIN_ORACLE and company schemas exist
|
||||
-- 3. SYS custom objects (AUTH_PACK, NEWSCHEMA, etc.)
|
||||
-- 4. Public synonyms count and status
|
||||
-- 5. Invalid objects
|
||||
-- 6. Profile settings
|
||||
-- 7. Network ACL configuration
|
||||
-- ============================================================================
|
||||
|
||||
SET ECHO OFF
|
||||
SET FEEDBACK ON
|
||||
SET SERVEROUTPUT ON
|
||||
SET LINESIZE 200
|
||||
SET PAGESIZE 100
|
||||
WHENEVER SQLERROR CONTINUE
|
||||
|
||||
PROMPT
|
||||
PROMPT ============================================================
|
||||
PROMPT ROA DATABASE VERIFICATION REPORT
|
||||
PROMPT Generated:
|
||||
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') AS "Report Time" FROM DUAL;
|
||||
PROMPT ============================================================
|
||||
PROMPT
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 1: DATABASE INFORMATION
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT [1/10] DATABASE INFORMATION
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
|
||||
COLUMN name FORMAT A20
|
||||
COLUMN value FORMAT A50
|
||||
|
||||
SELECT name, cdb, open_mode, log_mode
|
||||
FROM v$database;
|
||||
|
||||
PROMPT
|
||||
PROMPT Instance Information:
|
||||
SELECT instance_name, host_name, version_full, status
|
||||
FROM v$instance;
|
||||
|
||||
PROMPT
|
||||
PROMPT Current Container (for Oracle 12c+):
|
||||
SHOW CON_NAME
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 2: TABLESPACE VERIFICATION
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT [2/10] TABLESPACE ROA VERIFICATION
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
|
||||
COLUMN tablespace_name FORMAT A15
|
||||
COLUMN status FORMAT A10
|
||||
COLUMN contents FORMAT A10
|
||||
COLUMN extent_management FORMAT A10
|
||||
|
||||
SELECT tablespace_name, status, contents, extent_management
|
||||
FROM dba_tablespaces
|
||||
WHERE tablespace_name = 'ROA';
|
||||
|
||||
PROMPT
|
||||
PROMPT ROA Datafile(s):
|
||||
COLUMN file_name FORMAT A60
|
||||
COLUMN size_mb FORMAT 999,999.99
|
||||
COLUMN max_mb FORMAT 999,999.99
|
||||
|
||||
SELECT file_name,
|
||||
bytes/1024/1024 AS size_mb,
|
||||
autoextensible,
|
||||
CASE WHEN maxbytes = 0 THEN bytes/1024/1024
|
||||
ELSE maxbytes/1024/1024
|
||||
END AS max_mb
|
||||
FROM dba_data_files
|
||||
WHERE tablespace_name = 'ROA';
|
||||
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM dba_tablespaces WHERE tablespace_name = 'ROA';
|
||||
IF v_count = 0 THEN
|
||||
DBMS_OUTPUT.PUT_LINE('*** ERROR: Tablespace ROA does not exist! ***');
|
||||
ELSE
|
||||
DBMS_OUTPUT.PUT_LINE('OK: Tablespace ROA exists.');
|
||||
END IF;
|
||||
END;
|
||||
/
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 3: USER VERIFICATION
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT [3/10] USER VERIFICATION
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
|
||||
COLUMN username FORMAT A25
|
||||
COLUMN default_tablespace FORMAT A15
|
||||
COLUMN account_status FORMAT A20
|
||||
|
||||
PROMPT CONTAFIN_ORACLE user:
|
||||
SELECT username, default_tablespace, temporary_tablespace, account_status, profile
|
||||
FROM dba_users
|
||||
WHERE username = 'CONTAFIN_ORACLE';
|
||||
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM dba_users WHERE username = 'CONTAFIN_ORACLE';
|
||||
IF v_count = 0 THEN
|
||||
DBMS_OUTPUT.PUT_LINE('*** ERROR: User CONTAFIN_ORACLE does not exist! ***');
|
||||
ELSE
|
||||
DBMS_OUTPUT.PUT_LINE('OK: User CONTAFIN_ORACLE exists.');
|
||||
END IF;
|
||||
END;
|
||||
/
|
||||
|
||||
PROMPT
|
||||
PROMPT Company schemas (users with ROA default tablespace):
|
||||
SELECT username, account_status, created
|
||||
FROM dba_users
|
||||
WHERE default_tablespace = 'ROA'
|
||||
AND username NOT IN ('CONTAFIN_ORACLE')
|
||||
ORDER BY username;
|
||||
|
||||
PROMPT
|
||||
PROMPT CONTAFIN_ORACLE system privileges:
|
||||
SELECT privilege
|
||||
FROM dba_sys_privs
|
||||
WHERE grantee = 'CONTAFIN_ORACLE'
|
||||
ORDER BY privilege;
|
||||
|
||||
PROMPT
|
||||
PROMPT CONTAFIN_ORACLE roles:
|
||||
SELECT granted_role, default_role
|
||||
FROM dba_role_privs
|
||||
WHERE grantee = 'CONTAFIN_ORACLE';
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 4: SYS CUSTOM OBJECTS VERIFICATION
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT [4/10] SYS CUSTOM OBJECTS
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
|
||||
COLUMN object_name FORMAT A25
|
||||
COLUMN object_type FORMAT A15
|
||||
COLUMN status FORMAT A10
|
||||
|
||||
PROMPT Expected SYS custom objects:
|
||||
SELECT object_name, object_type, status, created
|
||||
FROM dba_objects
|
||||
WHERE owner = 'SYS'
|
||||
AND object_name IN (
|
||||
'AUTH_PACK',
|
||||
'AUTH_DETALII',
|
||||
'AUTH_SERII',
|
||||
'VAUTH_SERII',
|
||||
'SEQ_AUTH_SERII',
|
||||
'EXECUTESCRIPTOS',
|
||||
'NEWSCHEMA',
|
||||
'NEWSCHEMAJOB',
|
||||
'UPDATESQLPLUS',
|
||||
'PINFO',
|
||||
'INFO'
|
||||
)
|
||||
ORDER BY object_type, object_name;
|
||||
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
v_expected NUMBER := 12; -- Tables: 3, View: 1, Sequence: 1, Package: 2, Procedures: 5
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count
|
||||
FROM dba_objects
|
||||
WHERE owner = 'SYS'
|
||||
AND object_name IN (
|
||||
'AUTH_PACK', 'AUTH_DETALII', 'AUTH_SERII', 'VAUTH_SERII',
|
||||
'SEQ_AUTH_SERII', 'EXECUTESCRIPTOS', 'NEWSCHEMA', 'NEWSCHEMAJOB',
|
||||
'UPDATESQLPLUS', 'PINFO', 'INFO'
|
||||
)
|
||||
AND status = 'VALID';
|
||||
|
||||
DBMS_OUTPUT.PUT_LINE('Found ' || v_count || ' valid SYS custom objects.');
|
||||
IF v_count < 10 THEN
|
||||
DBMS_OUTPUT.PUT_LINE('*** WARNING: Some SYS objects may be missing or invalid! ***');
|
||||
ELSE
|
||||
DBMS_OUTPUT.PUT_LINE('OK: All expected SYS custom objects are present.');
|
||||
END IF;
|
||||
END;
|
||||
/
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 5: PUBLIC SYNONYMS VERIFICATION
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT [5/10] PUBLIC SYNONYMS
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
|
||||
PROMPT Public synonyms pointing to CONTAFIN_ORACLE:
|
||||
SELECT COUNT(*) AS total_synonyms
|
||||
FROM dba_synonyms
|
||||
WHERE owner = 'PUBLIC'
|
||||
AND table_owner = 'CONTAFIN_ORACLE';
|
||||
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count
|
||||
FROM dba_synonyms
|
||||
WHERE owner = 'PUBLIC'
|
||||
AND table_owner = 'CONTAFIN_ORACLE';
|
||||
|
||||
IF v_count < 50 THEN
|
||||
DBMS_OUTPUT.PUT_LINE('*** WARNING: Expected 50+ public synonyms, found ' || v_count || ' ***');
|
||||
ELSE
|
||||
DBMS_OUTPUT.PUT_LINE('OK: Found ' || v_count || ' public synonyms for CONTAFIN_ORACLE.');
|
||||
END IF;
|
||||
END;
|
||||
/
|
||||
|
||||
PROMPT
|
||||
PROMPT Key public synonyms check:
|
||||
SELECT
|
||||
CASE WHEN EXISTS (SELECT 1 FROM dba_synonyms WHERE owner='PUBLIC' AND synonym_name='SYN_NOM_FIRME')
|
||||
THEN 'OK' ELSE 'MISSING' END AS SYN_NOM_FIRME,
|
||||
CASE WHEN EXISTS (SELECT 1 FROM dba_synonyms WHERE owner='PUBLIC' AND synonym_name='SYN_NOM_PROGRAME')
|
||||
THEN 'OK' ELSE 'MISSING' END AS SYN_NOM_PROGRAME,
|
||||
CASE WHEN EXISTS (SELECT 1 FROM dba_synonyms WHERE owner='PUBLIC' AND synonym_name='SYN_UTILIZATORI')
|
||||
THEN 'OK' ELSE 'MISSING' END AS SYN_UTILIZATORI,
|
||||
CASE WHEN EXISTS (SELECT 1 FROM dba_synonyms WHERE owner='PUBLIC' AND synonym_name='PACK_UPDATE')
|
||||
THEN 'OK' ELSE 'MISSING' END AS PACK_UPDATE,
|
||||
CASE WHEN EXISTS (SELECT 1 FROM dba_synonyms WHERE owner='PUBLIC' AND synonym_name='PACK_UTILS')
|
||||
THEN 'OK' ELSE 'MISSING' END AS PACK_UTILS
|
||||
FROM DUAL;
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 6: CONTAFIN_ORACLE OBJECTS
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT [6/10] CONTAFIN_ORACLE SCHEMA OBJECTS
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
|
||||
PROMPT Object count by type:
|
||||
SELECT object_type, COUNT(*) AS count
|
||||
FROM dba_objects
|
||||
WHERE owner = 'CONTAFIN_ORACLE'
|
||||
GROUP BY object_type
|
||||
ORDER BY object_type;
|
||||
|
||||
PROMPT
|
||||
PROMPT Total objects in CONTAFIN_ORACLE:
|
||||
SELECT COUNT(*) AS total_objects
|
||||
FROM dba_objects
|
||||
WHERE owner = 'CONTAFIN_ORACLE';
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 7: INVALID OBJECTS
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT [7/10] INVALID OBJECTS CHECK
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
|
||||
PROMPT Invalid SYS custom objects:
|
||||
SELECT object_name, object_type, status
|
||||
FROM dba_objects
|
||||
WHERE owner = 'SYS'
|
||||
AND object_name IN (
|
||||
'AUTH_PACK', 'AUTH_DETALII', 'AUTH_SERII', 'VAUTH_SERII',
|
||||
'SEQ_AUTH_SERII', 'EXECUTESCRIPTOS', 'NEWSCHEMA', 'NEWSCHEMAJOB',
|
||||
'UPDATESQLPLUS', 'PINFO', 'INFO'
|
||||
)
|
||||
AND status != 'VALID';
|
||||
|
||||
PROMPT
|
||||
PROMPT Invalid CONTAFIN_ORACLE objects:
|
||||
SELECT object_name, object_type
|
||||
FROM dba_objects
|
||||
WHERE owner = 'CONTAFIN_ORACLE'
|
||||
AND status = 'INVALID'
|
||||
ORDER BY object_type, object_name;
|
||||
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count
|
||||
FROM dba_objects
|
||||
WHERE owner = 'CONTAFIN_ORACLE'
|
||||
AND status = 'INVALID';
|
||||
|
||||
IF v_count > 0 THEN
|
||||
DBMS_OUTPUT.PUT_LINE('*** WARNING: ' || v_count || ' invalid objects in CONTAFIN_ORACLE ***');
|
||||
DBMS_OUTPUT.PUT_LINE('Run: ALTER PACKAGE/PROCEDURE/VIEW ... COMPILE; to fix');
|
||||
ELSE
|
||||
DBMS_OUTPUT.PUT_LINE('OK: No invalid objects in CONTAFIN_ORACLE.');
|
||||
END IF;
|
||||
END;
|
||||
/
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 8: PROFILE SETTINGS
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT [8/10] PROFILE PASSWORD SETTINGS
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
|
||||
COLUMN resource_name FORMAT A30
|
||||
COLUMN limit FORMAT A20
|
||||
|
||||
SELECT resource_name, limit
|
||||
FROM dba_profiles
|
||||
WHERE profile = 'DEFAULT'
|
||||
AND resource_type = 'PASSWORD'
|
||||
ORDER BY resource_name;
|
||||
|
||||
DECLARE
|
||||
v_limit VARCHAR2(40);
|
||||
BEGIN
|
||||
SELECT limit INTO v_limit
|
||||
FROM dba_profiles
|
||||
WHERE profile = 'DEFAULT'
|
||||
AND resource_name = 'PASSWORD_LIFE_TIME';
|
||||
|
||||
IF v_limit != 'UNLIMITED' THEN
|
||||
DBMS_OUTPUT.PUT_LINE('*** WARNING: PASSWORD_LIFE_TIME is not UNLIMITED (' || v_limit || ')');
|
||||
DBMS_OUTPUT.PUT_LINE('Run configure-profile.sql to fix.');
|
||||
ELSE
|
||||
DBMS_OUTPUT.PUT_LINE('OK: PASSWORD_LIFE_TIME is UNLIMITED.');
|
||||
END IF;
|
||||
END;
|
||||
/
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 9: DIRECTORY AND ACL VERIFICATION
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT [9/10] DIRECTORY AND ACL CONFIGURATION
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
|
||||
PROMPT DMPDIR Directory:
|
||||
COLUMN directory_name FORMAT A15
|
||||
COLUMN directory_path FORMAT A60
|
||||
|
||||
SELECT directory_name, directory_path
|
||||
FROM dba_directories
|
||||
WHERE directory_name = 'DMPDIR';
|
||||
|
||||
PROMPT
|
||||
PROMPT Network ACL for CONTAFIN_ORACLE:
|
||||
SELECT host, acl
|
||||
FROM dba_network_acls
|
||||
WHERE acl LIKE '%roaupdate%';
|
||||
|
||||
PROMPT
|
||||
PROMPT ACL Privileges:
|
||||
SELECT principal, privilege, is_grant
|
||||
FROM dba_network_acl_privileges
|
||||
WHERE acl LIKE '%roaupdate%';
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 10: AUTH_DETALII DATA CHECK
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT [10/10] LICENSE DATA CHECK
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
|
||||
PROMPT AUTH_DETALII (Client ID):
|
||||
SELECT * FROM SYS.AUTH_DETALII;
|
||||
|
||||
PROMPT
|
||||
PROMPT AUTH_SERII (License serials - without decryption):
|
||||
SELECT id_serie, id_program, sters, dataora, id_util
|
||||
FROM SYS.AUTH_SERII
|
||||
WHERE sters = 0
|
||||
ORDER BY id_program;
|
||||
|
||||
PROMPT
|
||||
PROMPT License View (via VAUTH_SERII):
|
||||
BEGIN
|
||||
FOR rec IN (SELECT * FROM SYS.VAUTH_SERII) LOOP
|
||||
DBMS_OUTPUT.PUT_LINE('Program: ' || rec.nume ||
|
||||
', Users: ' || rec.nr_util ||
|
||||
', Valid until: ' || TO_CHAR(rec.data_val, 'YYYY-MM-DD'));
|
||||
END LOOP;
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
DBMS_OUTPUT.PUT_LINE('Note: Cannot query VAUTH_SERII - ' || SQLERRM);
|
||||
DBMS_OUTPUT.PUT_LINE('This is normal if synonyms are not yet created.');
|
||||
END;
|
||||
/
|
||||
|
||||
-- ============================================================================
|
||||
-- SUMMARY
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT
|
||||
PROMPT ============================================================
|
||||
PROMPT VERIFICATION SUMMARY
|
||||
PROMPT ============================================================
|
||||
PROMPT
|
||||
|
||||
DECLARE
|
||||
v_errors NUMBER := 0;
|
||||
v_warnings NUMBER := 0;
|
||||
v_count NUMBER;
|
||||
v_limit VARCHAR2(40);
|
||||
BEGIN
|
||||
-- Check tablespace
|
||||
SELECT COUNT(*) INTO v_count FROM dba_tablespaces WHERE tablespace_name = 'ROA';
|
||||
IF v_count = 0 THEN
|
||||
DBMS_OUTPUT.PUT_LINE('ERROR: Tablespace ROA missing');
|
||||
v_errors := v_errors + 1;
|
||||
END IF;
|
||||
|
||||
-- Check CONTAFIN_ORACLE user
|
||||
SELECT COUNT(*) INTO v_count FROM dba_users WHERE username = 'CONTAFIN_ORACLE';
|
||||
IF v_count = 0 THEN
|
||||
DBMS_OUTPUT.PUT_LINE('ERROR: User CONTAFIN_ORACLE missing');
|
||||
v_errors := v_errors + 1;
|
||||
END IF;
|
||||
|
||||
-- Check AUTH_PACK
|
||||
SELECT COUNT(*) INTO v_count FROM dba_objects
|
||||
WHERE owner = 'SYS' AND object_name = 'AUTH_PACK' AND object_type = 'PACKAGE BODY' AND status = 'VALID';
|
||||
IF v_count = 0 THEN
|
||||
DBMS_OUTPUT.PUT_LINE('ERROR: AUTH_PACK package missing or invalid');
|
||||
v_errors := v_errors + 1;
|
||||
END IF;
|
||||
|
||||
-- Check public synonyms
|
||||
SELECT COUNT(*) INTO v_count FROM dba_synonyms
|
||||
WHERE owner = 'PUBLIC' AND table_owner = 'CONTAFIN_ORACLE';
|
||||
IF v_count < 50 THEN
|
||||
DBMS_OUTPUT.PUT_LINE('WARNING: Only ' || v_count || ' public synonyms (expected 50+)');
|
||||
v_warnings := v_warnings + 1;
|
||||
END IF;
|
||||
|
||||
-- Check invalid objects
|
||||
SELECT COUNT(*) INTO v_count FROM dba_objects
|
||||
WHERE owner = 'CONTAFIN_ORACLE' AND status = 'INVALID';
|
||||
IF v_count > 0 THEN
|
||||
DBMS_OUTPUT.PUT_LINE('WARNING: ' || v_count || ' invalid objects in CONTAFIN_ORACLE');
|
||||
v_warnings := v_warnings + 1;
|
||||
END IF;
|
||||
|
||||
-- Check profile
|
||||
SELECT limit INTO v_limit FROM dba_profiles
|
||||
WHERE profile = 'DEFAULT' AND resource_name = 'PASSWORD_LIFE_TIME';
|
||||
IF v_limit != 'UNLIMITED' THEN
|
||||
DBMS_OUTPUT.PUT_LINE('WARNING: Password expiration is enabled');
|
||||
v_warnings := v_warnings + 1;
|
||||
END IF;
|
||||
|
||||
DBMS_OUTPUT.PUT_LINE('');
|
||||
DBMS_OUTPUT.PUT_LINE('----------------------------------------');
|
||||
DBMS_OUTPUT.PUT_LINE('Total Errors: ' || v_errors);
|
||||
DBMS_OUTPUT.PUT_LINE('Total Warnings: ' || v_warnings);
|
||||
DBMS_OUTPUT.PUT_LINE('----------------------------------------');
|
||||
|
||||
IF v_errors = 0 AND v_warnings = 0 THEN
|
||||
DBMS_OUTPUT.PUT_LINE('STATUS: ALL CHECKS PASSED');
|
||||
ELSIF v_errors = 0 THEN
|
||||
DBMS_OUTPUT.PUT_LINE('STATUS: PASSED WITH WARNINGS');
|
||||
ELSE
|
||||
DBMS_OUTPUT.PUT_LINE('STATUS: FAILED - Please fix errors');
|
||||
END IF;
|
||||
END;
|
||||
/
|
||||
|
||||
PROMPT
|
||||
PROMPT ============================================================
|
||||
PROMPT END OF VERIFICATION REPORT
|
||||
PROMPT ============================================================
|
||||
PROMPT
|
||||
Reference in New Issue
Block a user