MINI MINI MANI MO
Rem
Rem $Header: rdbms/admin/dbmsplsw.sql /main/12 2017/06/26 16:01:19 pjulsaks Exp $
Rem
Rem
Rem Copyright (c) 2002, 2017, Oracle and/or its affiliates.
Rem All rights reserved.
Rem
Rem NAME
Rem dbmsplsw.sql - dbms_warning package and view definitions for
Rem PL/SQL warning settings
Rem
Rem DESCRIPTION
Rem This file defines the dbms_warning package and various user and
Rem dba views to access PL/SQL warning settings.
Rem
Rem
Rem BEGIN SQL_FILE_METADATA
Rem SQL_SOURCE_FILE: rdbms/admin/dbmsplsw.sql
Rem SQL_SHIPPED_FILE: rdbms/admin/dbmsplsw.sql
Rem SQL_PHASE: DBMSPLSW
Rem SQL_STARTUP_MODE: NORMAL
Rem SQL_IGNORABLE_ERRORS: NONE
Rem SQL_CALLING_FILE: rdbms/admin/catpdbms.sql
Rem END SQL_FILE_METADATA
Rem
Rem MODIFIED (MM/DD/YY)
Rem pjulsaks 06/26/17 - Bug 25688154: Uppercase create_cdbview's input
Rem skayoor 11/30/14 - Proj 58196: Change Select priv to Read Priv
Rem surman 12/29/13 - 13922626: Update SQL metadata
Rem surman 03/27/12 - 13615447: Add SQL patching tags
Rem achoi 04/14/06 - support application edition
Rem ciyer 08/06/03 - cleanup
Rem sagrawal 06/06/03 - bug 2995317
Rem sagrawal 04/18/03 - clean up
Rem sagrawal 03/17/03 - fix permissions
Rem sagrawal 03/06/03 - DBMS_PLSQL_warning library
Rem sagrawal 01/08/03 - improve view performance
Rem sagrawal 12/04/02 - package implementation
Rem sagrawal 11/26/02 - clean up
Rem sagrawal 11/18/02 - fix comments
Rem sagrawal 11/08/02 - sagrawal_plsql_compiler_warning_framework
Rem sagrawal 10/03/02 - PL/SQL compiler warnings package API
Rem sagrawal 10/02/02 - move dbms_warning body INTO plb file
Rem sagrawal 04/09/02 - PL/SQL warnings views
Rem sagrawal 04/09/02 - Created
REM
@@?/rdbms/admin/sqlsessstart.sql
-- DBMS_WARNING packages, exposes API's to set and get warning settings
-- for the SESSION or SYSTEM
CREATE OR replace PACKAGE sys.dbms_warning AUTHID CURRENT_USER AS
/*
* For the following functions, meanings of parameters are:
*
* 1. warning_category - one of:
* - 'ALL'
* - 'INFORMATIONAL'
* - 'SEVERE'
* - 'PERFORMANCE'
*
* 2. warning_value - one of:
* - 'ENABLE'
* - 'DISABLE'
* - 'ERROR'
*
* 3. scope - one of:
* - 'SYSTEM'
* - 'SESSION'
*
* 4. warning_number - any valid warning number
*/
--
-- This API changes the warning_category to warning value without affecting
-- other independent categories.
--
PROCEDURE add_warning_setting_cat(warning_category IN VARCHAR2,
warning_value IN VARCHAR2,
scope IN VARCHAR2);
--
-- This API changes the warning_number to warning value without affecting
-- other existing settings.
--
PROCEDURE add_warning_setting_num(warning_number IN PLS_INTEGER,
warning_value IN VARCHAR2,
scope IN VARCHAR2);
--
-- This API returns the session warning_value for a given warning_category
-- If any of parameter values are incorrect or, if the function was
-- unsuccessful 'INVALID' is returned, the session warning_value is
-- returned on successful completion.
--
FUNCTION get_warning_setting_cat(warning_category IN VARCHAR2)
RETURN VARCHAR2;
--
-- This API returns the session warning_value for a given warning_number
-- If any of parameter values are incorrect or, if the function was
-- unsuccessful 'INVALID' is returned, the session warning_value is
-- returned on successful completion.
--
FUNCTION get_warning_setting_num(warning_number IN PLS_INTEGER)
RETURN VARCHAR2;
--
-- This API returns the entire warning setting string for the current
-- session
--
FUNCTION get_warning_setting_string RETURN VARCHAR2;
--
-- This API sets the entire warning string, replacing the old values.
-- It can set the value for the SESSION or for SYSTEM depending on the
-- value of the scope parameter.
--
PROCEDURE set_warning_setting_string(VALUE IN VARCHAR2, scope IN VARCHAR2);
--
-- This API returns the warning category name for the given warning number
--
FUNCTION get_category(warning_number IN PLS_INTEGER) RETURN VARCHAR2;
END dbms_warning;
/
@@prvtplsw.plb
GRANT EXECUTE ON dbms_warning to PUBLIC WITH GRANT OPTION;
CREATE OR REPLACE
PUBLIC SYNONYM dbms_warning FOR dbms_warning;
CREATE OR REPLACE
VIEW user_warning_settings
(object_name, object_id, object_type, warning, setting) AS
SELECT o.name, o.obj#,
DECODE(o.type#,
7, 'PROCEDURE',
8, 'FUNCTION',
9, 'PACKAGE',
11, 'PACKAGE BODY',
12, 'TRIGGER',
13, 'TYPE',
14, 'TYPE BODY',
'UNDEFINED'),
DECODE(w.warning,
-1, 'INFORMATIONAL',
-2, 'PERFORMANCE',
-3, 'SEVERE',
-4, 'ALL',
w.warning),
DECODE(w.setting,
0, 'DISABLE',
1, 'ENABLE',
2, 'ERROR',
'INVALID')
FROM sys."_CURRENT_EDITION_OBJ" o,
TABLE(dbms_warning_internal.show_warning_settings(o.obj#)) w
WHERE o.linkname IS NULL
AND o.obj# = w.obj_no
AND o.type# IN (7, 8, 9, 11, 12, 13, 14)
AND o.owner# = userenv('SCHEMAID')
/
comment on table user_warning_settings is
'Warning Parameter settings for objects owned by the user'
/
comment on column user_warning_settings.object_name is
'Name of the object'
/
comment on column user_warning_settings.object_id is
'Object number of the object'
/
comment on column user_warning_settings.object_type is
'Type of the object'
/
comment on column user_warning_settings.warning is
'Warning number or category'
/
comment on column user_warning_settings.setting is
'Value of the warning setting'
/
CREATE OR REPLACE
PUBLIC SYNONYM user_warning_settings FOR user_warning_settings;
GRANT READ ON user_warning_settings TO PUBLIC WITH GRANT OPTION;
CREATE OR REPLACE
VIEW all_warning_settings
(owner, object_name, object_id, object_type, warning, setting) AS
SELECT u.name, o.name, o.obj#,
DECODE(o.type#,
7, 'PROCEDURE',
8, 'FUNCTION',
9, 'PACKAGE',
11, 'PACKAGE BODY',
12, 'TRIGGER',
13, 'TYPE',
14, 'TYPE BODY',
'UNDEFINED'),
DECODE(w.warning,
-1, 'INFORMATIONAL',
-2, 'PERFORMANCE',
-3, 'SEVERE',
-4, 'ALL',
w.warning),
DECODE(w.setting,
0, 'DISABLE',
1, 'ENABLE',
2, 'ERROR',
'INVALID')
FROM sys."_CURRENT_EDITION_OBJ" o, sys.user$ u,
TABLE(dbms_warning_internal.show_warning_settings(o.obj#)) w
WHERE o.owner# = u.user#
AND o.linkname IS NULL
AND o.type# IN (7, 8, 9, 11, 12, 13, 14)
AND w.obj_no = o.obj#
AND
(
o.owner# IN (userenv('SCHEMAID'), 1 /* PUBLIC */)
OR
(
(
(
(o.type# = 7 OR o.type# = 8 OR o.type# = 9 OR o.type# = 13)
and
o.obj# in (select obj# from sys.objauth$
where grantee# in (select kzsrorol from x$kzsro)
and privilege# = 12 /* EXECUTE */)
)
or
exists
(
select null from sys.sysauth$
where grantee# in (select kzsrorol from x$kzsro)
and
(
(
/* procedure */
(o.type# = 7 or o.type# = 8 or o.type# = 9)
and
(
privilege# = -144 /* EXECUTE ANY PROCEDURE */
or
privilege# = -141 /* CREATE ANY PROCEDURE */
)
)
or
(
/* package body */
o.type# = 11 and
privilege# = -141 /* CREATE ANY PROCEDURE */
)
or
(
/* type */
o.type# = 13
and
(
privilege# = -184 /* EXECUTE ANY TYPE */
or
privilege# = -181 /* CREATE ANY TYPE */
)
)
or
(
/* type body */
o.type# = 14 and
privilege# = -181 /* CREATE ANY TYPE */
)
)
)
)
)
)
/
comment on table all_warning_settings is
'Warnings ettings for objects accessible to the user'
/
comment on column all_warning_settings.owner is
'Username of the owner of the object'
/
comment on column all_warning_settings.object_name is
'Name of the object'
/
comment on column all_warning_settings.object_id is
'Object number of the object'
/
comment on column all_warning_settings.object_type is
'Type of the object'
/
comment on column all_warning_settings.warning is
'Warning number or category'
/
comment on column all_warning_settings.setting is
'Value of the warning setting'
/
CREATE OR REPLACE
PUBLIC SYNONYM all_warning_settings FOR all_warning_settings;
GRANT READ ON all_warning_settings TO PUBLIC WITH GRANT OPTION;
CREATE OR REPLACE
VIEW dba_warning_settings
(owner, object_name, object_id, object_type, warning, setting) AS
SELECT u.name, o.name, o.obj#,
DECODE(o.type#,
7, 'PROCEDURE',
8, 'FUNCTION',
9, 'PACKAGE',
11, 'PACKAGE BODY',
12, 'TRIGGER',
13, 'TYPE',
14, 'TYPE BODY',
'UNDEFINED'),
DECODE(w.warning,
-1, 'INFORMATIONAL',
-2, 'PERFORMANCE',
-3, 'SEVERE',
-4, 'ALL',
w.warning),
DECODE(w.setting,
0, 'DISABLE',
1, 'ENABLE',
2, 'ERROR',
'INVALID')
FROM sys."_CURRENT_EDITION_OBJ" o, sys.user$ u,
TABLE(dbms_warning_internal.show_warning_settings(o.obj#)) w
WHERE o.owner# = u.user#
AND o.linkname is null
AND o.type# IN (7, 8, 9, 11, 12, 13, 14)
AND w.obj_no = o.obj#
/
comment on table dba_warning_settings is
'warning settings for all objects'
/
comment on column dba_warning_settings.owner is
'Username of the owner of the object'
/
comment on column dba_warning_settings.object_name is
'Name of the object'
/
comment on column dba_warning_settings.object_id is
'Object number of the object'
/
comment on column dba_warning_settings.object_type is
'Type of the object'
/
comment on column dba_warning_settings.warning is
'Warning number or category'
/
comment on column dba_warning_settings.setting is
'Value of the warning setting'
/
CREATE OR REPLACE
PUBLIC SYNONYM dba_warning_settings FOR dba_warning_settings;
GRANT SELECT ON dba_warning_settings TO select_catalog_role;
execute CDBView.create_cdbview(false,'SYS','DBA_WARNING_SETTINGS','CDB_WARNING_SETTINGS');
grant select on cdb_warning_settings to select_catalog_role
/
create or replace public synonym cdb_warning_settings for SYS.cdb_warning_settings
/
@?/rdbms/admin/sqlsessend.sql
OHA YOOOO