Files
Database/_UP/recreate.src
2022-09-13 12:19:52 +00:00

133 lines
4.1 KiB
Plaintext

--
-- Recreate script van Facilitor
--
/*
* C-style comment is removed from the result
*/
#include "modules.h"
#include "comsql.h"
SET TERMOUT ON
SET FEEDBACK OFF
SET ECHO OFF
SET PAGESIZE 0
SPOOL OFF
SET HEADING OFF
PROMPT ***********************************************************************
PROMPT
PROMPT RECREATE SCRIPT van Facilitor
PROMPT $Revision$
PROMPT $Id$
PROMPT
PROMPT Re-creëert alle algemene views, triggers etc van Faciltor schema _DBV
PROMPT
PROMPT Het wordt aangeraden om deze upgrade te draaien op een moment dat er
PROMPT geen gebruikers bezig zijn met de applicatie.
PROMPT
PROMPT De recreate wordt uitgevoerd. Even geduld a.u.b...
PROMPT
SET TERMOUT ON
SET HEADING OFF
SET FEEDBACK ON
SET ECHO ON
SET VERIFY OFF
SET LINESIZE 1000
SET TIME ON
SET SERVEROUTPUT ON;
SET DEFINE ON
column fcltlogfile new_value fcltlogfile NOPRINT;
select 'RECRE'||_DBV_STRING || '_' || UPPER(USER || '_' || sys_context('USERENV', 'SERVICE_NAME') || '_' || sys_context('USERENV', 'SERVER_HOST')) || '_' || to_char(sysdate,'YYYYMMDD_HH24MISS') || '.lst' as fcltlogfile from dual;
spool &fcltlogfile
column 1 new_value 1 noprint
select '' "1" from dual where rownum = 0;
define forceit = &1 "donot"
WHENEVER SQLERROR EXIT;
DECLARE
tekst VARCHAR2 (1000);
fac_schema fac_version.fac_version_schema%TYPE;
BEGIN
SELECT fac_version_schema
INTO fac_schema
FROM fac_version;
IF SUBSTR(fac_schema, 1, 2) <> SUBSTR(_DBV_STRING, 1, 2) AND '&forceit' != 'FORCE' THEN
tekst := '=================================================================' || CHR(10)
|| 'This recreate can only be applied to a DB'|| SUBSTR(_DBV_STRING, 1, 2) || ' database' || CHR(10)
|| 'Current database is version DB'|| fac_schema || CHR(10)
|| 'Add parameter FORCE when calling this script to force the recreate' || CHR(10)
|| 'This recreate script is now cancelled!' || CHR(10)
|| '=================================================================' || CHR(10);
RAISE_APPLICATION_ERROR(-20000, 'OR'||'A-' || CHR(10) || tekst);
END IF;
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE <> -20000 THEN
RAISE_APPLICATION_ERROR(-20000, 'Could not find table FAC_VERSION. Not a Facilitor database?');
ELSE
RAISE;
END IF;
END;
/
WHENEVER SQLERROR CONTINUE;
SELECT 'The current version of Facilitor@' || USER || ' is: DB' || fac_version_schema
FROM fac_version;
SET DEFINE OFF
SELECT adm.systeminfo FROM DUAL;
variable recreate_start number
exec :recreate_start := dbms_utility.get_time
/* first compile all views, triggers etc */
BEGIN DBMS_UTILITY.COMPILE_SCHEMA(USER, FALSE); END;
/
PROMPT List of all invalid objects *before* Facilitor upgrade.
SELECT 'OR'||'A-'||'DB'||_DBV_STRING||' Warning: ' || object_type || ' ' || object_name || ' was ' || status || ' before the upgrade.'
FROM user_objects
WHERE object_type IN ('VIEW', 'TRIGGER', 'PACKAGE', 'PROCEDURE', 'FUNCTION', 'PACKAGE BODY')
AND status <> 'VALID'
ORDER BY object_name;
#include "recreate.inc"
select 'Recreate has '||'completed in ' || ROUND(( dbms_utility.get_time - :recreate_start )/100) || ' seconds.' from dual;
/* Report invalid objects, if any */
SET ECHO OFF
SET HEADING OFF
SET LINESIZE 132
PROMPT List of all invalid objects after Facilitor upgrade:
SELECT 'OR'||'A-'||'DB'||_DBV_STRING||' Warning: ' || object_type || ' ' || object_name || ' is ' || status
FROM user_objects
WHERE object_type IN ('VIEW', 'TRIGGER', 'PACKAGE', 'PROCEDURE', 'FUNCTION', 'PACKAGE BODY')
AND status <> 'VALID'
ORDER BY object_name;
SET HEADING ON
column name format a32
column text format a60
column line format 9999
column pos format 9999
SET HEADING ON
SELECT TYPE, NAME, LINE, POSITION POS, TEXT
FROM USER_ERRORS
ORDER BY NAME, TYPE, SEQUENCE;
SET ECHO ON
REGISTERONCE('$Id$')
INSERT INTO adm_tracking
(adm_tracking_name, adm_tracking_revision)
VALUES
('Database recreated', 'DB' || _DBV_STRING);
COMMIT;
SPOOL OFF
SET ECHO OFF
SET DEFINE ON
PROMPT Recreate is done. Check &fcltlogfile