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_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
|
||||
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)
|
||||
--
|
||||
|
||||
@ -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 (
|
||||
in_view_name VARCHAR2 := NULL,
|
||||
in_force BOOLEAN := FALSE
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user