@@ -255,9 +255,10 @@ create or replace package body ut_annotation_manager as
255255 end;
256256
257257 procedure trigger_obj_annotation_rebuild is
258- l_sql_text ora_name_list_t;
259- l_parts binary_integer;
260- l_object_to_parse ut_annotation_obj_cache_info;
258+ l_sql_text ora_name_list_t;
259+ l_parts binary_integer;
260+ l_object_to_parse ut_annotation_obj_cache_info;
261+ l_restricted_users ora_name_list_t;
261262
262263 function get_source_from_sql_text(a_object_name varchar2, a_sql_text ora_name_list_t, a_parts binary_integer) return sys_refcursor is
263264 l_sql_clob clob;
@@ -291,9 +292,21 @@ create or replace package body ut_annotation_manager as
291292 using a_object_name, a_object_type, a_object_owner, a_object_name;
292293 return l_result;
293294 end;
294-
295+
295296 begin
296297 if ora_dict_obj_type in ('PACKAGE','PROCEDURE','FUNCTION','TYPE') then
298+ $if dbms_db_version.version < 12 $then
299+ l_restricted_users := ora_name_list_t(
300+ 'ANONYMOUS','APPQOSSYS','AUDSYS','DBSFWUSER','DBSNMP','DIP','GGSYS','GSMADMIN_INTERNAL',
301+ 'GSMCATUSER','GSMUSER','ORACLE_OCM','OUTLN','REMOTE_SCHEDULER_AGENT','SYS','SYS$UMF',
302+ 'SYSBACKUP','SYSDG','SYSKM','SYSRAC','SYSTEM','WMSYS','XDB','XS$NULL');
303+ $else
304+ select username bulk collect into l_restricted_users
305+ from all_users where oracle_maintained = 'Y';
306+ $end
307+ if ora_dict_obj_owner member of l_restricted_users then
308+ return;
309+ end if;
297310
298311 l_object_to_parse := ut_annotation_obj_cache_info(ora_dict_obj_owner, ora_dict_obj_name, ora_dict_obj_type, 'Y');
299312
0 commit comments