Add post-install configuration for ROA Windows setup
New files: - 08-post-install-config.ps1: Creates ROAUPDATE folders (54 dirs), Oracle DIRECTORY objects, SERVER_INFO config, scheduler jobs - directories-roaupdate.sql: 54 UPD_* directory objects for PACK_UPDATE - server-info-init.sql: Encoded passwords, paths, email settings - scheduler-jobs.sql: UPDATEROA_ZILNIC, UPDATERTVAI_ZILNIC (disabled) - auth-detalii-init.sql: Customer ID for licensing Updates: - RunAll.cmd: Added step 6 (08-post-install-config.ps1) - README.md: Simplified Quick Start, single execution path (RunAll.cmd) - 00-INSTALL-ORACLE-*.md: Removed redundant manual steps (handled by scripts) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
-- ============================================================================
|
||||
-- AUTH_DETALII CUSTOMER_ID INITIALIZATION
|
||||
-- ============================================================================
|
||||
-- Inserts the customer ID for license verification into SYS.AUTH_DETALII
|
||||
-- This is required for AUTH_PACK license decryption
|
||||
--
|
||||
-- Usage:
|
||||
-- sqlplus sys/password@service as sysdba @auth-detalii-init.sql
|
||||
--
|
||||
-- Prerequisites:
|
||||
-- - SYS.AUTH_DETALII table exists (created by sys-objects.sql)
|
||||
--
|
||||
-- Substitution Variables:
|
||||
-- &customer_id - Customer ID for licensing (e.g., 138 or empty for no license)
|
||||
-- ============================================================================
|
||||
|
||||
SET ECHO OFF
|
||||
SET FEEDBACK ON
|
||||
SET SERVEROUTPUT ON
|
||||
SET VERIFY OFF
|
||||
WHENEVER SQLERROR CONTINUE
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT Initializing AUTH_DETALII Customer ID
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
|
||||
-- Define customer_id (will prompt if not defined)
|
||||
DEFINE customer_id = '&customer_id'
|
||||
|
||||
PROMPT Customer ID: &customer_id
|
||||
PROMPT
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 1: CHECK EXISTING DATA
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [1/3] Checking existing AUTH_DETALII data...
|
||||
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
v_existing VARCHAR2(15);
|
||||
BEGIN
|
||||
SELECT COUNT(*), MAX(detalii)
|
||||
INTO v_count, v_existing
|
||||
FROM sys.auth_detalii;
|
||||
|
||||
IF v_count > 0 THEN
|
||||
DBMS_OUTPUT.PUT_LINE(' Existing records found: ' || v_count);
|
||||
DBMS_OUTPUT.PUT_LINE(' Current value: ' || NVL(v_existing, '(null)'));
|
||||
ELSE
|
||||
DBMS_OUTPUT.PUT_LINE(' No existing records found');
|
||||
END IF;
|
||||
END;
|
||||
/
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 2: INSERT/UPDATE CUSTOMER ID
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [2/3] Setting Customer ID...
|
||||
|
||||
DECLARE
|
||||
v_customer_id VARCHAR2(15) := '&customer_id';
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
-- Trim whitespace
|
||||
v_customer_id := TRIM(v_customer_id);
|
||||
|
||||
-- Check if empty or null
|
||||
IF v_customer_id IS NULL OR v_customer_id = '' OR UPPER(v_customer_id) = 'NULL' THEN
|
||||
DBMS_OUTPUT.PUT_LINE(' Customer ID not specified - skipping');
|
||||
RETURN;
|
||||
END IF;
|
||||
|
||||
-- Check for existing records
|
||||
SELECT COUNT(*) INTO v_count FROM sys.auth_detalii;
|
||||
|
||||
IF v_count > 0 THEN
|
||||
-- Update existing
|
||||
UPDATE sys.auth_detalii
|
||||
SET detalii = v_customer_id
|
||||
WHERE ROWNUM = 1;
|
||||
DBMS_OUTPUT.PUT_LINE(' Updated existing record with Customer ID: ' || v_customer_id);
|
||||
ELSE
|
||||
-- Insert new
|
||||
INSERT INTO sys.auth_detalii (detalii)
|
||||
VALUES (v_customer_id);
|
||||
DBMS_OUTPUT.PUT_LINE(' Inserted new record with Customer ID: ' || v_customer_id);
|
||||
END IF;
|
||||
|
||||
COMMIT;
|
||||
END;
|
||||
/
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 3: GRANT ACCESS
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [3/3] Granting access to CONTAFIN_ORACLE...
|
||||
|
||||
GRANT SELECT ON sys.auth_detalii TO contafin_oracle;
|
||||
GRANT SELECT ON sys.auth_detalii TO PUBLIC;
|
||||
|
||||
-- ============================================================================
|
||||
-- VERIFICATION
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT AUTH_DETALII Verification
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
|
||||
PROMPT Current AUTH_DETALII content:
|
||||
SELECT detalii AS customer_id FROM sys.auth_detalii;
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT AUTH_DETALII Initialization Complete
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
@@ -0,0 +1,245 @@
|
||||
-- ============================================================================
|
||||
-- ORACLE DIRECTORY OBJECTS FOR ROA UPDATE SYSTEM
|
||||
-- ============================================================================
|
||||
-- Creates 54 Oracle DIRECTORY objects for PACK_UPDATE module
|
||||
-- Each directory corresponds to a ROAUPDATE subfolder
|
||||
--
|
||||
-- Usage:
|
||||
-- sqlplus sys/password@service as sysdba @directories-roaupdate.sql
|
||||
--
|
||||
-- Prerequisites:
|
||||
-- - Physical folders must exist (created by 08-post-install-config.ps1)
|
||||
-- - Run as SYS with SYSDBA privileges
|
||||
--
|
||||
-- Substitution Variables:
|
||||
-- &roaupdate_path - Base path for ROAUPDATE folder (e.g., D:\ROAUPDATE)
|
||||
-- ============================================================================
|
||||
|
||||
SET ECHO OFF
|
||||
SET FEEDBACK ON
|
||||
SET SERVEROUTPUT ON
|
||||
SET VERIFY OFF
|
||||
WHENEVER SQLERROR CONTINUE
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT Creating ROAUPDATE Directory Objects
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
|
||||
-- Define base path (will prompt if not defined)
|
||||
DEFINE roaupdate_path = '&roaupdate_path'
|
||||
|
||||
PROMPT Using ROAUPDATE path: &roaupdate_path
|
||||
PROMPT
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 1: CREATE MAIN ROAUPDATE DIRECTORY
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [1/3] Creating main ROAUPDATE directory...
|
||||
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROAUPDATE AS '&roaupdate_path';
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 2: CREATE MODULE DIRECTORIES (54 directories)
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [2/3] Creating module directories...
|
||||
|
||||
-- Common/Shared
|
||||
CREATE OR REPLACE DIRECTORY UPD_COMUNROA AS '&roaupdate_path\_ARHIVE\COMUNROA';
|
||||
CREATE OR REPLACE DIRECTORY UPD_USERREPORTS AS '&roaupdate_path\_ARHIVE\USERREPORTS';
|
||||
|
||||
-- Core Applications
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROAAPROV AS '&roaupdate_path\_ARHIVE\ROAAPROV';
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROAAUTO AS '&roaupdate_path\_ARHIVE\ROAAUTO';
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROABAVERT AS '&roaupdate_path\_ARHIVE\ROABAVERT';
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROACASA AS '&roaupdate_path\_ARHIVE\ROACASA';
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROACOMENZI AS '&roaupdate_path\_ARHIVE\ROACOMENZI';
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROACONIMPORT AS '&roaupdate_path\_ARHIVE\ROACONIMPORT';
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROACONSTRUCTII AS '&roaupdate_path\_ARHIVE\ROACONSTRUCTII';
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROACONT AS '&roaupdate_path\_ARHIVE\ROACONT';
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROACONTRACTE AS '&roaupdate_path\_ARHIVE\ROACONTRACTE';
|
||||
|
||||
-- Declarations & Definitions
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROADECL AS '&roaupdate_path\_ARHIVE\ROADECL';
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROADEF AS '&roaupdate_path\_ARHIVE\ROADEF';
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROADEFSALARII AS '&roaupdate_path\_ARHIVE\ROADEFSALARII';
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROADEPOZIT AS '&roaupdate_path\_ARHIVE\ROADEPOZIT';
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROADEVIZE AS '&roaupdate_path\_ARHIVE\ROADEVIZE';
|
||||
|
||||
-- Invoicing & Suppliers
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROAFACTURARE AS '&roaupdate_path\_ARHIVE\ROAFACTURARE';
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROAFURNIZORI AS '&roaupdate_path\_ARHIVE\ROAFURNIZORI';
|
||||
|
||||
-- General & Inventory
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROAGEN AS '&roaupdate_path\_ARHIVE\ROAGEN';
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROAGEST AS '&roaupdate_path\_ARHIVE\ROAGEST';
|
||||
|
||||
-- Restaurant & Hotel
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROAGRESTAURANT AS '&roaupdate_path\_ARHIVE\ROAGRESTAURANT';
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROAHOTEL AS '&roaupdate_path\_ARHIVE\ROAHOTEL';
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROAHOTELCONFIG AS '&roaupdate_path\_ARHIVE\ROAHOTELCONFIG';
|
||||
|
||||
-- Real Estate
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROAIMOB AS '&roaupdate_path\_ARHIVE\ROAIMOB';
|
||||
|
||||
-- Payroll
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROAINCHIDSAL AS '&roaupdate_path\_ARHIVE\ROAINCHIDSAL';
|
||||
|
||||
-- Services & Operations
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROALUCRARI AS '&roaupdate_path\_ARHIVE\ROALUCRARI';
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROAMANAGER AS '&roaupdate_path\_ARHIVE\ROAMANAGER';
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROAMASINI AS '&roaupdate_path\_ARHIVE\ROAMASINI';
|
||||
|
||||
-- Nomenclatures
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROANOR AS '&roaupdate_path\_ARHIVE\ROANOR';
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROANORFRUVIMED AS '&roaupdate_path\_ARHIVE\ROANORFRUVIMED';
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROANORRENAV AS '&roaupdate_path\_ARHIVE\ROANORRENAV';
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROANORUTMIDIA AS '&roaupdate_path\_ARHIVE\ROANORUTMIDIA';
|
||||
|
||||
-- Fixed Assets
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROAOBINV AS '&roaupdate_path\_ARHIVE\ROAOBINV';
|
||||
|
||||
-- Offers & Prices
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROAOFERTARE AS '&roaupdate_path\_ARHIVE\ROAOFERTARE';
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROAPRETURI AS '&roaupdate_path\_ARHIVE\ROAPRETURI';
|
||||
|
||||
-- Printing
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROAPRINT AS '&roaupdate_path\_ARHIVE\ROAPRINT';
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROAPRINT_INITIALIZARI AS '&roaupdate_path\_ARHIVE\ROAPRINT_INITIALIZARI';
|
||||
|
||||
-- Agriculture & Production
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROAPRODAGR AS '&roaupdate_path\_ARHIVE\ROAPRODAGR';
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROAPRODUCTIE AS '&roaupdate_path\_ARHIVE\ROAPRODUCTIE';
|
||||
|
||||
-- Documents
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROAREGISTRATURA AS '&roaupdate_path\_ARHIVE\ROAREGISTRATURA';
|
||||
|
||||
-- Salary Distribution
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROAREPARTIZSAL AS '&roaupdate_path\_ARHIVE\ROAREPARTIZSAL';
|
||||
|
||||
-- Reports & Resources
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROARES AS '&roaupdate_path\_ARHIVE\ROARES';
|
||||
|
||||
-- Retail & Restaurant
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROARESTAURANT AS '&roaupdate_path\_ARHIVE\ROARESTAURANT';
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROARETAIL AS '&roaupdate_path\_ARHIVE\ROARETAIL';
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROARETAILMON AS '&roaupdate_path\_ARHIVE\ROARETAILMON';
|
||||
|
||||
-- Payroll & HR
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROASAL AS '&roaupdate_path\_ARHIVE\ROASAL';
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROASALSPEC AS '&roaupdate_path\_ARHIVE\ROASALSPEC';
|
||||
|
||||
-- Financial Statements
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROASITFIN AS '&roaupdate_path\_ARHIVE\ROASITFIN';
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROASITOP AS '&roaupdate_path\_ARHIVE\ROASITOP';
|
||||
|
||||
-- Startup & Support
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROASTART AS '&roaupdate_path\_ARHIVE\ROASTART';
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROASUPORT AS '&roaupdate_path\_ARHIVE\ROASUPORT';
|
||||
|
||||
-- Telecom & Monitoring
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROATELCOMM AS '&roaupdate_path\_ARHIVE\ROATELCOMM';
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROATELMON AS '&roaupdate_path\_ARHIVE\ROATELMON';
|
||||
|
||||
-- Wine Industry
|
||||
CREATE OR REPLACE DIRECTORY UPD_ROAVIN AS '&roaupdate_path\_ARHIVE\ROAVIN';
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 3: GRANT PERMISSIONS TO CONTAFIN_ORACLE
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [3/3] Granting READ,WRITE permissions to CONTAFIN_ORACLE...
|
||||
|
||||
-- Main directory
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROAUPDATE TO CONTAFIN_ORACLE;
|
||||
|
||||
-- All module directories
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_COMUNROA TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_USERREPORTS TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROAAPROV TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROAAUTO TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROABAVERT TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROACASA TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROACOMENZI TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROACONIMPORT TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROACONSTRUCTII TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROACONT TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROACONTRACTE TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROADECL TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROADEF TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROADEFSALARII TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROADEPOZIT TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROADEVIZE TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROAFACTURARE TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROAFURNIZORI TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROAGEN TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROAGEST TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROAGRESTAURANT TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROAHOTEL TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROAHOTELCONFIG TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROAIMOB TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROAINCHIDSAL TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROALUCRARI TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROAMANAGER TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROAMASINI TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROANOR TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROANORFRUVIMED TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROANORRENAV TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROANORUTMIDIA TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROAOBINV TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROAOFERTARE TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROAPRETURI TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROAPRINT TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROAPRINT_INITIALIZARI TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROAPRODAGR TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROAPRODUCTIE TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROAREGISTRATURA TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROAREPARTIZSAL TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROARES TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROARESTAURANT TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROARETAIL TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROARETAILMON TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROASAL TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROASALSPEC TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROASITFIN TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROASITOP TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROASTART TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROASUPORT TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROATELCOMM TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROATELMON TO CONTAFIN_ORACLE;
|
||||
GRANT READ, WRITE ON DIRECTORY UPD_ROAVIN TO CONTAFIN_ORACLE;
|
||||
|
||||
COMMIT;
|
||||
|
||||
-- ============================================================================
|
||||
-- VERIFICATION
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT Directory Objects Verification
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
|
||||
PROMPT UPD_* directories created:
|
||||
SELECT directory_name, directory_path
|
||||
FROM dba_directories
|
||||
WHERE directory_name LIKE 'UPD_%'
|
||||
ORDER BY directory_name;
|
||||
|
||||
PROMPT
|
||||
PROMPT Directory grants to CONTAFIN_ORACLE:
|
||||
SELECT table_name AS directory_name, privilege
|
||||
FROM dba_tab_privs
|
||||
WHERE grantee = 'CONTAFIN_ORACLE'
|
||||
AND table_name LIKE 'UPD_%'
|
||||
ORDER BY table_name;
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT Directory Objects Creation Complete
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
231
proxmox/lxc108-oracle/roa-windows-setup/sql/scheduler-jobs.sql
Normal file
231
proxmox/lxc108-oracle/roa-windows-setup/sql/scheduler-jobs.sql
Normal file
@@ -0,0 +1,231 @@
|
||||
-- ============================================================================
|
||||
-- SCHEDULER JOBS FOR ROA UPDATE SYSTEM
|
||||
-- ============================================================================
|
||||
-- Creates Oracle Scheduler jobs for automatic daily updates:
|
||||
-- - UPDATEROA_ZILNIC: Daily ROA application update (04:00)
|
||||
-- - UPDATERTVAI_ZILNIC: Daily RTVAI module update (04:30)
|
||||
--
|
||||
-- Jobs are created DISABLED by default - enable manually after verification
|
||||
--
|
||||
-- Usage:
|
||||
-- sqlplus sys/password@service as sysdba @scheduler-jobs.sql
|
||||
--
|
||||
-- Prerequisites:
|
||||
-- - CONTAFIN_ORACLE schema with PACK_UPDATE and PACK_ROARTVAI packages
|
||||
-- - SERVER_INFO configured (server-info-init.sql)
|
||||
-- - Directory objects created (directories-roaupdate.sql)
|
||||
-- ============================================================================
|
||||
|
||||
SET ECHO OFF
|
||||
SET FEEDBACK ON
|
||||
SET SERVEROUTPUT ON
|
||||
WHENEVER SQLERROR CONTINUE
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT Creating ROA Scheduler Jobs
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 1: DROP EXISTING JOBS (if any)
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [1/4] Removing existing jobs (if any)...
|
||||
|
||||
BEGIN
|
||||
BEGIN
|
||||
DBMS_SCHEDULER.DROP_JOB(job_name => 'CONTAFIN_ORACLE.UPDATEROA_ZILNIC', force => TRUE);
|
||||
DBMS_OUTPUT.PUT_LINE(' Dropped existing UPDATEROA_ZILNIC job');
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
DBMS_OUTPUT.PUT_LINE(' UPDATEROA_ZILNIC job did not exist (OK)');
|
||||
END;
|
||||
|
||||
BEGIN
|
||||
DBMS_SCHEDULER.DROP_JOB(job_name => 'CONTAFIN_ORACLE.UPDATERTVAI_ZILNIC', force => TRUE);
|
||||
DBMS_OUTPUT.PUT_LINE(' Dropped existing UPDATERTVAI_ZILNIC job');
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
DBMS_OUTPUT.PUT_LINE(' UPDATERTVAI_ZILNIC job did not exist (OK)');
|
||||
END;
|
||||
END;
|
||||
/
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 2: CREATE UPDATEROA_ZILNIC JOB
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [2/4] Creating UPDATEROA_ZILNIC job...
|
||||
|
||||
BEGIN
|
||||
DBMS_SCHEDULER.CREATE_JOB(
|
||||
job_name => 'CONTAFIN_ORACLE.UPDATEROA_ZILNIC',
|
||||
job_type => 'STORED_PROCEDURE',
|
||||
job_action => 'CONTAFIN_ORACLE.PACK_UPDATE.UPDATEROA',
|
||||
number_of_arguments => 6,
|
||||
start_date => TRUNC(SYSDATE) + 1 + 4/24, -- Tomorrow at 04:00
|
||||
repeat_interval => 'FREQ=DAILY;INTERVAL=1',
|
||||
end_date => NULL,
|
||||
job_class => 'DEFAULT_JOB_CLASS',
|
||||
enabled => FALSE, -- DISABLED by default
|
||||
auto_drop => FALSE,
|
||||
comments => 'Daily ROA application update - runs at 04:00'
|
||||
);
|
||||
|
||||
-- Set job arguments for PACK_UPDATE.UPDATEROA procedure
|
||||
-- Arguments: p_update_baza, p_update_aplicatii, p_update_rapoarte, p_module, p_versiune, p_nivel
|
||||
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(
|
||||
job_name => 'CONTAFIN_ORACLE.UPDATEROA_ZILNIC',
|
||||
argument_position => 1,
|
||||
argument_value => '1' -- p_update_baza: Update database objects
|
||||
);
|
||||
|
||||
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(
|
||||
job_name => 'CONTAFIN_ORACLE.UPDATEROA_ZILNIC',
|
||||
argument_position => 2,
|
||||
argument_value => '1' -- p_update_aplicatii: Update applications
|
||||
);
|
||||
|
||||
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(
|
||||
job_name => 'CONTAFIN_ORACLE.UPDATEROA_ZILNIC',
|
||||
argument_position => 3,
|
||||
argument_value => '1' -- p_update_rapoarte: Update reports
|
||||
);
|
||||
|
||||
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(
|
||||
job_name => 'CONTAFIN_ORACLE.UPDATEROA_ZILNIC',
|
||||
argument_position => 4,
|
||||
argument_value => '' -- p_module: All modules (empty = all)
|
||||
);
|
||||
|
||||
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(
|
||||
job_name => 'CONTAFIN_ORACLE.UPDATEROA_ZILNIC',
|
||||
argument_position => 5,
|
||||
argument_value => '' -- p_versiune: Latest version (empty = latest)
|
||||
);
|
||||
|
||||
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(
|
||||
job_name => 'CONTAFIN_ORACLE.UPDATEROA_ZILNIC',
|
||||
argument_position => 6,
|
||||
argument_value => '-3' -- p_nivel: Update level (-3 = production)
|
||||
);
|
||||
|
||||
DBMS_OUTPUT.PUT_LINE(' UPDATEROA_ZILNIC job created (DISABLED)');
|
||||
DBMS_OUTPUT.PUT_LINE(' Schedule: Daily at 04:00');
|
||||
DBMS_OUTPUT.PUT_LINE(' Action: PACK_UPDATE.UPDATEROA(1, 1, 1, '''', '''', -3)');
|
||||
END;
|
||||
/
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 3: CREATE UPDATERTVAI_ZILNIC JOB
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [3/4] Creating UPDATERTVAI_ZILNIC job...
|
||||
|
||||
BEGIN
|
||||
DBMS_SCHEDULER.CREATE_JOB(
|
||||
job_name => 'CONTAFIN_ORACLE.UPDATERTVAI_ZILNIC',
|
||||
job_type => 'STORED_PROCEDURE',
|
||||
job_action => 'CONTAFIN_ORACLE.PACK_ROARTVAI.UPDATERTVAI',
|
||||
number_of_arguments => 0,
|
||||
start_date => TRUNC(SYSDATE) + 1 + 4.5/24, -- Tomorrow at 04:30
|
||||
repeat_interval => 'FREQ=DAILY;INTERVAL=1',
|
||||
end_date => NULL,
|
||||
job_class => 'DEFAULT_JOB_CLASS',
|
||||
enabled => FALSE, -- DISABLED by default
|
||||
auto_drop => FALSE,
|
||||
comments => 'Daily RTVAI module update - runs at 04:30'
|
||||
);
|
||||
|
||||
DBMS_OUTPUT.PUT_LINE(' UPDATERTVAI_ZILNIC job created (DISABLED)');
|
||||
DBMS_OUTPUT.PUT_LINE(' Schedule: Daily at 04:30');
|
||||
DBMS_OUTPUT.PUT_LINE(' Action: PACK_ROARTVAI.UPDATERTVAI()');
|
||||
END;
|
||||
/
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 4: GRANT SCHEDULER PRIVILEGES TO CONTAFIN_ORACLE
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [4/4] Granting scheduler privileges to CONTAFIN_ORACLE...
|
||||
|
||||
-- Grant CREATE JOB privilege (may already exist)
|
||||
BEGIN
|
||||
EXECUTE IMMEDIATE 'GRANT CREATE JOB TO CONTAFIN_ORACLE';
|
||||
DBMS_OUTPUT.PUT_LINE(' Granted CREATE JOB to CONTAFIN_ORACLE');
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
DBMS_OUTPUT.PUT_LINE(' CREATE JOB privilege already granted or error: ' || SQLERRM);
|
||||
END;
|
||||
/
|
||||
|
||||
-- Grant MANAGE SCHEDULER privilege for job management
|
||||
BEGIN
|
||||
EXECUTE IMMEDIATE 'GRANT MANAGE SCHEDULER TO CONTAFIN_ORACLE';
|
||||
DBMS_OUTPUT.PUT_LINE(' Granted MANAGE SCHEDULER to CONTAFIN_ORACLE');
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
DBMS_OUTPUT.PUT_LINE(' MANAGE SCHEDULER privilege already granted or error: ' || SQLERRM);
|
||||
END;
|
||||
/
|
||||
|
||||
-- Grant CREATE EXTERNAL JOB for ExecuteScriptOS functionality
|
||||
BEGIN
|
||||
EXECUTE IMMEDIATE 'GRANT CREATE EXTERNAL JOB TO CONTAFIN_ORACLE';
|
||||
DBMS_OUTPUT.PUT_LINE(' Granted CREATE EXTERNAL JOB to CONTAFIN_ORACLE');
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
DBMS_OUTPUT.PUT_LINE(' CREATE EXTERNAL JOB privilege already granted or error: ' || SQLERRM);
|
||||
END;
|
||||
/
|
||||
|
||||
COMMIT;
|
||||
|
||||
-- ============================================================================
|
||||
-- VERIFICATION
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT Scheduler Jobs Verification
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
|
||||
PROMPT CONTAFIN_ORACLE scheduled jobs:
|
||||
SELECT job_name,
|
||||
job_type,
|
||||
enabled,
|
||||
state,
|
||||
TO_CHAR(next_run_date, 'YYYY-MM-DD HH24:MI:SS') AS next_run,
|
||||
repeat_interval
|
||||
FROM dba_scheduler_jobs
|
||||
WHERE owner = 'CONTAFIN_ORACLE'
|
||||
AND job_name IN ('UPDATEROA_ZILNIC', 'UPDATERTVAI_ZILNIC')
|
||||
ORDER BY job_name;
|
||||
|
||||
PROMPT
|
||||
PROMPT Job arguments for UPDATEROA_ZILNIC:
|
||||
SELECT argument_position, argument_name, value
|
||||
FROM dba_scheduler_job_args
|
||||
WHERE owner = 'CONTAFIN_ORACLE'
|
||||
AND job_name = 'UPDATEROA_ZILNIC'
|
||||
ORDER BY argument_position;
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT Scheduler Jobs Creation Complete
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
PROMPT IMPORTANT: Jobs are created DISABLED by default.
|
||||
PROMPT To enable a job after verifying configuration:
|
||||
PROMPT
|
||||
PROMPT -- Enable UPDATEROA_ZILNIC
|
||||
PROMPT EXEC DBMS_SCHEDULER.ENABLE('CONTAFIN_ORACLE.UPDATEROA_ZILNIC');
|
||||
PROMPT
|
||||
PROMPT -- Enable UPDATERTVAI_ZILNIC
|
||||
PROMPT EXEC DBMS_SCHEDULER.ENABLE('CONTAFIN_ORACLE.UPDATERTVAI_ZILNIC');
|
||||
PROMPT
|
||||
PROMPT To run a job immediately for testing:
|
||||
PROMPT EXEC DBMS_SCHEDULER.RUN_JOB('CONTAFIN_ORACLE.UPDATEROA_ZILNIC');
|
||||
PROMPT
|
||||
260
proxmox/lxc108-oracle/roa-windows-setup/sql/server-info-init.sql
Normal file
260
proxmox/lxc108-oracle/roa-windows-setup/sql/server-info-init.sql
Normal file
@@ -0,0 +1,260 @@
|
||||
-- ============================================================================
|
||||
-- SERVER_INFO INITIALIZATION FOR ROA UPDATE SYSTEM
|
||||
-- ============================================================================
|
||||
-- Initializes SERVER_INFO table with required values for PACK_UPDATE
|
||||
-- Passwords are encoded using pack_utils.encodebase64(pack_utils.zipblob(pack_utils.Clob2Blob()))
|
||||
--
|
||||
-- Usage:
|
||||
-- sqlplus contafin_oracle/password@service @server-info-init.sql
|
||||
--
|
||||
-- Prerequisites:
|
||||
-- - CONTAFIN_ORACLE schema imported with PACK_UTILS package
|
||||
-- - SERVER_INFO table exists
|
||||
--
|
||||
-- Substitution Variables (prompted if not defined):
|
||||
-- &roaupdate_path - Base path for ROAUPDATE folder (e.g., D:\ROAUPDATE)
|
||||
-- &sqlplus_path - Full path to sqlplus.exe
|
||||
-- &password_sys_encoded - Encoded SYS password (use encode_password helper)
|
||||
-- &password_contafin_encoded - Encoded CONTAFIN_ORACLE password
|
||||
-- &email_from - Email sender address
|
||||
-- &email_to - Email recipient address
|
||||
-- &email_smtp - SMTP server hostname
|
||||
-- &email_username - SMTP authentication username
|
||||
-- &email_password - SMTP authentication password (plain text)
|
||||
-- ============================================================================
|
||||
|
||||
SET ECHO OFF
|
||||
SET FEEDBACK ON
|
||||
SET SERVEROUTPUT ON
|
||||
SET VERIFY OFF
|
||||
WHENEVER SQLERROR CONTINUE
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT Initializing SERVER_INFO Configuration
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
|
||||
-- ============================================================================
|
||||
-- PASSWORD ENCODING HELPER
|
||||
-- ============================================================================
|
||||
-- To encode a password, run in SQL*Plus:
|
||||
-- SELECT CAST(pack_utils.encodebase64(pack_utils.zipblob(
|
||||
-- pack_utils.Clob2Blob('your_password'))) AS VARCHAR2(500)) FROM dual;
|
||||
--
|
||||
-- Examples:
|
||||
-- 'romfastsoft' => 'H4sIAAAAAAAACyvKz01LLC4pzk8rAQC2TmakCwAAAA=='
|
||||
-- 'ROMFASTSOFT' => 'H4sIAAAAAAAACwvy93VzDA4J9ncLAQBe3GUpCwAAAA=='
|
||||
-- ============================================================================
|
||||
|
||||
-- Define variables (will prompt if not defined)
|
||||
DEFINE roaupdate_path = '&roaupdate_path'
|
||||
DEFINE sqlplus_path = '&sqlplus_path'
|
||||
DEFINE password_sys_encoded = '&password_sys_encoded'
|
||||
DEFINE password_contafin_encoded = '&password_contafin_encoded'
|
||||
DEFINE email_from = '&email_from'
|
||||
DEFINE email_to = '&email_to'
|
||||
DEFINE email_smtp = '&email_smtp'
|
||||
DEFINE email_username = '&email_username'
|
||||
DEFINE email_password = '&email_password'
|
||||
|
||||
PROMPT Configuration values:
|
||||
PROMPT ROAUPDATE Path: &roaupdate_path
|
||||
PROMPT SQLPlus Path: &sqlplus_path
|
||||
PROMPT Email From: &email_from
|
||||
PROMPT Email To: &email_to
|
||||
PROMPT SMTP Server: &email_smtp
|
||||
PROMPT
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 1: SYSTEM PASSWORDS (ENCODED)
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [1/5] Configuring system passwords...
|
||||
|
||||
MERGE INTO server_info t
|
||||
USING (SELECT 'PASSWORD_SYS' AS varname, '&password_sys_encoded' AS varvalue FROM dual) s
|
||||
ON (t.varname = s.varname)
|
||||
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
|
||||
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
|
||||
|
||||
MERGE INTO server_info t
|
||||
USING (SELECT 'PASSWORD_CONTAFIN_ORACLE' AS varname, '&password_contafin_encoded' AS varvalue FROM dual) s
|
||||
ON (t.varname = s.varname)
|
||||
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
|
||||
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 2: LOCAL PATHS
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [2/5] Configuring local paths...
|
||||
|
||||
MERGE INTO server_info t
|
||||
USING (SELECT 'ROAUPDATEPATH' AS varname, '&roaupdate_path' AS varvalue FROM dual) s
|
||||
ON (t.varname = s.varname)
|
||||
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
|
||||
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
|
||||
|
||||
MERGE INTO server_info t
|
||||
USING (SELECT 'SQLPLUSPATH' AS varname, '&sqlplus_path' AS varvalue FROM dual) s
|
||||
ON (t.varname = s.varname)
|
||||
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
|
||||
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
|
||||
|
||||
MERGE INTO server_info t
|
||||
USING (SELECT 'POWERSHELLPATH' AS varname, 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe' AS varvalue FROM dual) s
|
||||
ON (t.varname = s.varname)
|
||||
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
|
||||
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 3: UPDATE CONFIGURATION
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [3/5] Configuring update settings...
|
||||
|
||||
-- Enable prerequisites check
|
||||
MERGE INTO server_info t
|
||||
USING (SELECT 'UPDATEPREREQ' AS varname, '1' AS varvalue FROM dual) s
|
||||
ON (t.varname = s.varname)
|
||||
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
|
||||
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
|
||||
|
||||
-- Use PowerShell for downloads (more reliable than UTL_HTTP)
|
||||
MERGE INTO server_info t
|
||||
USING (SELECT 'POWERSHELLDOWNLOAD' AS varname, '1' AS varvalue FROM dual) s
|
||||
ON (t.varname = s.varname)
|
||||
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
|
||||
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
|
||||
|
||||
-- PowerShell download timeout (seconds)
|
||||
MERGE INTO server_info t
|
||||
USING (SELECT 'POWERSHELLTIMEOUT' AS varname, '30' AS varvalue FROM dual) s
|
||||
ON (t.varname = s.varname)
|
||||
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
|
||||
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 4: EMAIL CONFIGURATION
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [4/5] Configuring email settings...
|
||||
|
||||
-- Sender address
|
||||
MERGE INTO server_info t
|
||||
USING (SELECT 'EMAIL_FROM' AS varname, '&email_from' AS varvalue FROM dual) s
|
||||
ON (t.varname = s.varname)
|
||||
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
|
||||
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
|
||||
|
||||
-- Recipient address
|
||||
MERGE INTO server_info t
|
||||
USING (SELECT 'EMAIL_TO' AS varname, '&email_to' AS varvalue FROM dual) s
|
||||
ON (t.varname = s.varname)
|
||||
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
|
||||
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
|
||||
|
||||
-- CC (empty by default)
|
||||
MERGE INTO server_info t
|
||||
USING (SELECT 'EMAIL_CC' AS varname, '' AS varvalue FROM dual) s
|
||||
ON (t.varname = s.varname)
|
||||
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
|
||||
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
|
||||
|
||||
-- SMTP Server
|
||||
MERGE INTO server_info t
|
||||
USING (SELECT 'EMAIL_SMTP' AS varname, '&email_smtp' AS varvalue FROM dual) s
|
||||
ON (t.varname = s.varname)
|
||||
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
|
||||
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
|
||||
|
||||
-- SMTP Port
|
||||
MERGE INTO server_info t
|
||||
USING (SELECT 'EMAIL_PORT' AS varname, '25' AS varvalue FROM dual) s
|
||||
ON (t.varname = s.varname)
|
||||
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
|
||||
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
|
||||
|
||||
-- Email method (UTL_SMTP is more compatible than UTL_MAIL)
|
||||
MERGE INTO server_info t
|
||||
USING (SELECT 'EMAIL_METHOD' AS varname, 'UTL_SMTP' AS varvalue FROM dual) s
|
||||
ON (t.varname = s.varname)
|
||||
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
|
||||
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
|
||||
|
||||
-- SMTP authentication username
|
||||
MERGE INTO server_info t
|
||||
USING (SELECT 'EMAIL_USERNAME' AS varname, '&email_username' AS varvalue FROM dual) s
|
||||
ON (t.varname = s.varname)
|
||||
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
|
||||
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
|
||||
|
||||
-- SMTP authentication password (stored as plain text - encode if needed)
|
||||
MERGE INTO server_info t
|
||||
USING (SELECT 'EMAIL_PASSWORD' AS varname, '&email_password' AS varvalue FROM dual) s
|
||||
ON (t.varname = s.varname)
|
||||
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
|
||||
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
|
||||
|
||||
-- ============================================================================
|
||||
-- SECTION 5: UPDATE SERVER URLs (ROMFAST Standard)
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT [5/5] Configuring update server URLs...
|
||||
|
||||
-- Main update server URL
|
||||
MERGE INTO server_info t
|
||||
USING (SELECT 'UPD_URL_APP' AS varname, 'https://update.romfast.ro/roa/' AS varvalue FROM dual) s
|
||||
ON (t.varname = s.varname)
|
||||
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
|
||||
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
|
||||
|
||||
-- Backup update server URL
|
||||
MERGE INTO server_info t
|
||||
USING (SELECT 'UPD_URL_APP_BACKUP' AS varname, 'https://update2.romfast.ro/roa/' AS varvalue FROM dual) s
|
||||
ON (t.varname = s.varname)
|
||||
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
|
||||
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
|
||||
|
||||
-- Version check URL
|
||||
MERGE INTO server_info t
|
||||
USING (SELECT 'UPD_URL_VERSION' AS varname, 'https://update.romfast.ro/version.txt' AS varvalue FROM dual) s
|
||||
ON (t.varname = s.varname)
|
||||
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
|
||||
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
|
||||
|
||||
COMMIT;
|
||||
|
||||
-- ============================================================================
|
||||
-- VERIFICATION
|
||||
-- ============================================================================
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT SERVER_INFO Configuration Verification
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
|
||||
PROMPT Current SERVER_INFO values (passwords hidden):
|
||||
SELECT varname,
|
||||
CASE
|
||||
WHEN UPPER(varname) LIKE '%PASSWORD%' THEN '***HIDDEN***'
|
||||
ELSE varvalue
|
||||
END AS varvalue
|
||||
FROM server_info
|
||||
WHERE varname IN (
|
||||
'PASSWORD_SYS', 'PASSWORD_CONTAFIN_ORACLE',
|
||||
'ROAUPDATEPATH', 'SQLPLUSPATH', 'POWERSHELLPATH',
|
||||
'UPDATEPREREQ', 'POWERSHELLDOWNLOAD', 'POWERSHELLTIMEOUT',
|
||||
'EMAIL_FROM', 'EMAIL_TO', 'EMAIL_CC', 'EMAIL_SMTP', 'EMAIL_PORT',
|
||||
'EMAIL_METHOD', 'EMAIL_USERNAME', 'EMAIL_PASSWORD',
|
||||
'UPD_URL_APP', 'UPD_URL_APP_BACKUP', 'UPD_URL_VERSION'
|
||||
)
|
||||
ORDER BY varname;
|
||||
|
||||
PROMPT
|
||||
PROMPT ========================================
|
||||
PROMPT SERVER_INFO Initialization Complete
|
||||
PROMPT ========================================
|
||||
PROMPT
|
||||
Reference in New Issue
Block a user