Create/drop DML error tables
This commit is contained in:
parent
047d4c87d2
commit
3a2c86c599
@ -73,6 +73,11 @@ CREATE OR REPLACE PACKAGE app AS
|
|||||||
logs_table_name CONSTANT VARCHAR2(30) := 'LOGS'; -- used in purge_old
|
logs_table_name CONSTANT VARCHAR2(30) := 'LOGS'; -- used in purge_old
|
||||||
logs_max_age CONSTANT PLS_INTEGER := 7; -- max logs age in days
|
logs_max_age CONSTANT PLS_INTEGER := 7; -- max logs age in days
|
||||||
|
|
||||||
|
-- owner of DML error tables
|
||||||
|
dml_tables_owner CONSTANT VARCHAR2(30) := NULL; -- NULL = same as current owner
|
||||||
|
dml_tables_postfix CONSTANT VARCHAR2(30) := '_E$';
|
||||||
|
view_dml_errors CONSTANT VARCHAR2(30) := 'LOGS_DML_ERRORS';
|
||||||
|
|
||||||
-- arrays to specify adhoc requests
|
-- arrays to specify adhoc requests
|
||||||
TYPE arr_log_setup IS VARRAY(100) OF logs_blacklist%ROWTYPE;
|
TYPE arr_log_setup IS VARRAY(100) OF logs_blacklist%ROWTYPE;
|
||||||
|
|
||||||
@ -1279,6 +1284,27 @@ CREATE OR REPLACE PACKAGE app AS
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- ### DML Error Handling
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Drop DML error tables matching filter
|
||||||
|
--
|
||||||
|
PROCEDURE drop_dml_table (
|
||||||
|
in_table_name logs.module_name%TYPE
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Recreates DML error tables matching filter
|
||||||
|
--
|
||||||
|
PROCEDURE create_dml_table (
|
||||||
|
in_table_name logs.module_name%TYPE
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Refresh views source (convert views source from LONG to searchable lines)
|
-- Refresh views source (convert views source from LONG to searchable lines)
|
||||||
--
|
--
|
||||||
|
|||||||
@ -2967,6 +2967,63 @@ CREATE OR REPLACE PACKAGE BODY app AS
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PROCEDURE drop_dml_table (
|
||||||
|
in_table_name logs.module_name%TYPE
|
||||||
|
)
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
app.log_module(in_table_name);
|
||||||
|
|
||||||
|
-- process existing data first
|
||||||
|
app.process_dml_errors(in_table_name);
|
||||||
|
--
|
||||||
|
EXECUTE IMMEDIATE
|
||||||
|
'DROP TABLE ' || app.get_dml_table(in_table_name) || ' PURGE';
|
||||||
|
--
|
||||||
|
app.log_success();
|
||||||
|
EXCEPTION
|
||||||
|
WHEN app.app_exception THEN
|
||||||
|
RAISE;
|
||||||
|
WHEN OTHERS THEN
|
||||||
|
app.raise_error();
|
||||||
|
END;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PROCEDURE create_dml_table (
|
||||||
|
in_table_name logs.module_name%TYPE
|
||||||
|
)
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
app.log_module(in_table_name);
|
||||||
|
|
||||||
|
-- drop existing tables
|
||||||
|
app.drop_dml_table(in_table_name);
|
||||||
|
|
||||||
|
-- create DML log tables for all tables
|
||||||
|
DBMS_ERRLOG.CREATE_ERROR_LOG (
|
||||||
|
dml_table_name => app.get_owner(app.get_app_id()) || '.' || in_table_name,
|
||||||
|
err_log_table_owner => app.get_owner(app.get_app_id()),
|
||||||
|
err_log_table_name => app.get_dml_table(in_table_name),
|
||||||
|
skip_unsupported => TRUE
|
||||||
|
);
|
||||||
|
--
|
||||||
|
IF app.get_owner(app.get_app_id()) != app.dml_tables_owner THEN
|
||||||
|
EXECUTE IMMEDIATE
|
||||||
|
'GRANT ALL ON ' || app.get_dml_table(in_table_name) ||
|
||||||
|
' TO ' || app.get_owner(app.get_app_id());
|
||||||
|
END IF;
|
||||||
|
--
|
||||||
|
app.log_success();
|
||||||
|
EXCEPTION
|
||||||
|
WHEN app.app_exception THEN
|
||||||
|
RAISE;
|
||||||
|
WHEN OTHERS THEN
|
||||||
|
app.raise_error();
|
||||||
|
END;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
PROCEDURE refresh_user_source_views (
|
PROCEDURE refresh_user_source_views (
|
||||||
in_view_name VARCHAR2 := NULL,
|
in_view_name VARCHAR2 := NULL,
|
||||||
in_force BOOLEAN := FALSE
|
in_force BOOLEAN := FALSE
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user