Adgrants
Adgrants
REM
REM $Header: adgrants.sql 115.54 2007/01/13 00:43:46 hxue ship $
REM +-------------------------------------------------------------------------+
REM |
REM | Copyright (c) 2003 Oracle Corporation Redwood Shores, California, USA
REM | All rights reserved.
REM |
REM | NAME
REM | adgrants.sql
REM |
REM | DESCRIPTION
REM |
REM | SQL script to grant necessary privileges on selected SYS
REM | objects when the Init.ora parameter O7_DICTIONARY_ACCESSIBILITY
REM | is set to FALSE.
REM | Also this script calls profload.sql and proftab.sql which
REM | create PL/SQL profiler objects.
REM |
REM | This script is for Unix only!
REM |
REM | USAGE
REM |
REM | sqlplus '/ as sysdba' @adgrants.sql <APPLSYS schema name>
REM |
REM | NOTES
REM |
REM | This SQL script must be run as SYS user, from the ORACLE_HOME
REM | on the Database Server.
REM |
REM | ARGUMENTS
REM | You must pass the following argument.
REM | APPLSYS schema name.
REM +-------------------------------------------------------------------------+
set verify off;
REM
REM this connect will generate an ORACLE error and cause the
REM script to exit if they don't have privileges to run as SYS
REM
connect / as sysdba
REM
REM Create PL/SQL profiler objects.
REM Bug: 3448207.CREATE PL/SQL PROFILER OBJECTS IN 11.5.10 RELEASE.
REM
prompt
prompt Creating PL/SQL profiler objects.
prompt
@?/rdbms/admin/profload.sql
@?/rdbms/admin/proftab.sql
REM
REM End of Creating PL/SQL profiler objects.
REM
commit
set termout on
DECLARE
object_list TableNameType;
grant_type_list TableNameType;
list_count number;
--
-- Procedure
-- add_list
--
-- Purpose
-- Create tables which are used later by the procedure give_grants.
--
-- Arguments
-- X_sys_object name of SYS object
-- X_grant_type type of grants such as select , execute etc.
--
-- Example
-- none
procedure add_list
( X_sys_object in varchar2 ,
X_grant_type in varchar2 )
is
begin
list_count := list_count + 1 ;
object_list(list_count) := upper (X_sys_object );
grant_type_list(list_count) := upper(X_grant_type);
exception
when others then
raise_application_error(-20000, sqlerrm || 'Error in ad_grants.add_list');
end add_list;
procedure load_table_list
is
begin
list_count := 0;
--
-- SYS tables on which Apps needs privileges
--
-- (please keep in alphabetical order)
--
add_list('AD_EXTENTS','SELECT');
add_list('ALL_COL_COMMENTS','SELECT');
add_list('ALL_IND_COLUMNS','SELECT');
add_list('ALL_OBJECTS','SELECT');
add_list('ALL_SEQUENCES','SELECT');
add_list('ALL_SOURCE','SELECT');
add_list('ALL_TABLES','SELECT');
add_list('ALL_TAB_COLUMNS','SELECT');
add_list('ARGUMENT$','SELECT');
add_list('DBA_CONSTRAINTS','SELECT');
add_list('DBA_CONS_COLUMNS','SELECT');
add_list('DBA_CONTEXT','SELECT');
add_list('DBA_DATA_FILES','SELECT');
add_list('DBA_DEPENDENCIES','SELECT');
add_list('DBA_ERRORS','SELECT');
add_list('DBA_EXTENTS','SELECT');
-- Bug 4748813 VPALAKUR, 21-NOV-2005
add_list('DBA_EXTERNAL_TABLES','SELECT');
add_list('DBA_FREE_SPACE','SELECT');
add_list('DBA_INDEXES','SELECT');
add_list('DBA_IND_COLUMNS','SELECT');
add_list('DBA_IND_EXPRESSIONS','SELECT');
add_list('DBA_IND_PARTITIONS','SELECT');
add_list('DBA_JOBS','SELECT');
add_list('DBA_LOB_PARTITIONS','SELECT');
add_list('DBA_LOBS','SELECT');
add_list('DBA_MVIEWS','SELECT');
add_list('DBA_MVIEW_DETAIL_RELATIONS','SELECT');
add_list('DBA_MVIEW_LOGS','SELECT');
add_list('DBA_OBJECTS','SELECT');
add_list('DBA_PART_INDEXES','SELECT');
--Bug 3696123, CBHATI, 17-JUN-04
add_list('DBA_PART_KEY_COLUMNS','SELECT');
add_list('DBA_PART_TABLES','SELECT');
add_list('DBA_POLICIES','SELECT');
add_list('DBA_QUEUES','SELECT');
add_list('DBA_QUEUE_TABLES','SELECT');
--Bug 3651346, HXUE, 08-JUN-04
add_list('DBA_QUEUE_SCHEDULES','SELECT');
add_list('DBA_REGISTERED_SNAPSHOTS','SELECT');
add_list('DBA_ROLE_PRIVS','SELECT');
add_list('DBA_ROLLBACK_SEGS','SELECT');
add_list('DBA_RSRC_CONSUMER_GROUPS','SELECT');
add_list('DBA_RSRC_CONSUMER_GROUP_PRIVS','SELECT');
add_list('DBA_RSRC_MANAGER_SYSTEM_PRIVS','SELECT');
add_list('DBA_RSRC_PLANS','SELECT');
add_list('DBA_RSRC_PLAN_DIRECTIVES','SELECT');
add_list('DBA_SEGMENTS','SELECT');
add_list('DBA_SEQUENCES','SELECT');
add_list('DBA_SNAPSHOTS','SELECT');
add_list('DBA_SNAPSHOT_LOGS','SELECT');
add_list('DBA_SOURCE','SELECT');
add_list('DBA_SYNONYMS','SELECT');
add_list('DBA_SYS_PRIVS','SELECT');
add_list('DBA_TABLES','SELECT');
add_list('DBA_TABLESPACES','SELECT');
add_list('DBA_TAB_COLUMNS','SELECT');
add_list('DBA_TAB_HISTOGRAMS','SELECT');
add_list('DBA_TAB_MODIFICATIONS','SELECT');
add_list('DBA_TAB_PARTITIONS','SELECT');
add_list('DBA_TAB_PRIVS','SELECT');
add_list('DBA_TEMP_FILES','SELECT');
add_list('DBA_TRIGGERS','SELECT');
add_list('DBA_TS_QUOTAS','SELECT');
add_list('DBA_TYPES','SELECT');
add_list('DBA_TYPE_ATTRS','SELECT');
add_list('DBA_USERS','SELECT');
add_list('DBA_VIEWS','SELECT');
--Bug 3777732, HXUE, 19-JUL-04
add_list('DBMS_UPG_CURRENT_STATUS','SELECT');
add_list('DBMS_UPG_DEBUG','SELECT');
add_list('DBMS_UPG_STATUS','SELECT');
add_list('DBMS_UPG_STATUS$','SELECT');
add_list('DEPENDENCY$','SELECT');
add_list('DUAL','SELECT');
add_list('ERROR$','SELECT');
add_list('EXPDEPOBJ$','SELECT');
add_list('GV_$INSTANCE','SELECT');
add_list('GV_$PROCESS','SELECT');
add_list('GV_$SESSION','SELECT');
add_list('GV_$SESSION_EVENT','SELECT');
add_list('GV_$SYSTEM_PARAMETER','SELECT');
add_list('GV_$AQ','SELECT');
add_list('GV_$LOGFILE','SELECT');
add_list('IND$','SELECT');
add_list('OBJAUTH$','SELECT');
add_list('PLSQL_PROFILER_DATA','SELECT');
add_list('PLSQL_PROFILER_DATA','INSERT');
add_list('PLSQL_PROFILER_DATA','UPDATE');
add_list('PLSQL_PROFILER_DATA','DELETE');
add_list('PLSQL_PROFILER_RUNS','SELECT');
add_list('PLSQL_PROFILER_RUNS','INSERT');
add_list('PLSQL_PROFILER_RUNS','UPDATE');
add_list('PLSQL_PROFILER_RUNS','DELETE');
add_list('PLSQL_PROFILER_RUNNUMBER','SELECT');
add_list('PLSQL_PROFILER_UNITS','SELECT');
add_list('PLSQL_PROFILER_UNITS','INSERT');
add_list('PLSQL_PROFILER_UNITS','UPDATE');
add_list('PLSQL_PROFILER_UNITS','DELETE');
add_list('PROCEDURE$','SELECT');
add_list('PRODUCT_COMPONENT_VERSION','SELECT');
add_list('SEG$','SELECT');
add_list('SOURCE$','SELECT');
add_list('TAB$','SELECT');
add_list('TRIGGER$','SELECT');
add_list('TS$','SELECT');
add_list('UNDO$','SELECT');
add_list('USER$','SELECT');
add_list('USER_OBJECTS','SELECT');
add_list('USER_TAB_COLUMNS','SELECT');
add_list('V_$DATABASE','SELECT');
add_list('V_$INSTANCE','SELECT');
add_list('V_$LOCK','SELECT');
add_list('V_$MYSTAT','SELECT');
add_list('V_$NLS_PARAMETERS','SELECT');
add_list('V_$PARAMETER','SELECT');
add_list('V_$PARAMETER2','SELECT');
add_list('V_$PQ_SYSSTAT','SELECT');
add_list('V_$PROCESS','SELECT');
add_list('V_$ROLLSTAT','SELECT');
add_list('V_$ROWCACHE','SELECT');
add_list('V_$SESSION','SELECT');
add_list('V_$SESSTAT','SELECT');
add_list('V_$STATNAME','SELECT');
add_list('V_$SQLAREA','SELECT');
add_list('V_$SQLTEXT','SELECT');
add_list('V_$SYSTEM_PARAMETER','SELECT');
add_list('V_$THREAD','SELECT');
add_list('V_$TRANSACTION','SELECT');
add_list('V_$TYPE_SIZE','SELECT');
add_list('V_$VERSION','SELECT');
--
-- SYS packages on which Apps needs privileges
--
-- (please keep in alphabetical order)
--
add_list('DBMS_ALERT','EXECUTE');
add_list('DBMS_APPLICATION_INFO','EXECUTE');
add_list('DBMS_AQ','EXECUTE');
add_list('DBMS_AQADM','EXECUTE');
add_list('DBMS_AW','EXECUTE');
add_list('DBMS_DESCRIBE','EXECUTE');
add_list('DBMS_JAVA','EXECUTE');
add_list('DBMS_JOB','EXECUTE');
add_list('DBMS_LOB','EXECUTE');
add_list('DBMS_LOCK','EXECUTE');
add_list('DBMS_MVIEW','EXECUTE');
add_list('DBMS_OBFUSCATION_TOOLKIT','EXECUTE');
add_list('DBMS_OUTPUT','EXECUTE');
add_list('DBMS_PIPE','EXECUTE');
add_list('DBMS_PROFILER','EXECUTE');
add_list('DBMS_RANDOM','EXECUTE');
add_list('DBMS_REPCAT','EXECUTE');
add_list('DBMS_RLS','EXECUTE');
--Bug 3777732, HXUE, 19-JUL-04
add_list('DBMS_SCHEMA_COPY','EXECUTE');
add_list('DBMS_SESSION','EXECUTE');
add_list('DBMS_SQL','EXECUTE');
add_list('DBMS_SPACE','EXECUTE');
add_list('DBMS_SPACE_ADMIN','EXECUTE');
add_list('DBMS_STATS','EXECUTE');
add_list('DBMS_SYSTEM','EXECUTE');
add_list('DBMS_SYS_SQL','EXECUTE');
add_list('DBMS_TRANSACTION','EXECUTE');
add_list('DBMS_UTILITY','EXECUTE');
add_list('DBMS_XMLGEN','EXECUTE');
add_list('DBMS_XMLQUERY','EXECUTE');
add_list('DBMS_XMLSAVE','EXECUTE');
add_list('UTL_RECOMP','EXECUTE');
--
-- End of list marker (do not delete)
--
add_list(null,null);
exception
when others then
raise;
end load_table_list;
--
-- Procedure
-- give_grants.
--
-- Purpose
-- Grants necessary preveliges on sys objects by using the data stored in
-- the tables schema_list , object_list , grant_type_list and
-- with_grant_option_list
--
-- Arguments
-- none
-- Example
-- none
--
procedure give_grants
is
i number;
--Bug:3457610:sshivara.
cursor schema_list is
select ORACLE_USERNAME from &&1..FND_ORACLE_USERID FOU ,DBA_USERS DU
where FOU.ORACLE_USERNAME = DU.USERNAME and
FOU.READ_ONLY_FLAG in ('U', 'K' )
union select 'SYSTEM' from dual;
object_exists exception;
object_not_exists exception;
plsql_not_exists exception;
begin
load_table_list;
i := 1;
while object_list(i) is not null loop
exception
when object_exists then null;
when object_not_exists then null;
when plsql_not_exists then null;
when others then
raise_application_error(-20000, sqlerrm ||'Error in
ad_grants.Give_grants');
end;
else
begin
execute immediate 'grant ' || grant_type_list(i) || ' on ' ||'SYS.'||
object_list(i) || ' to ' || c_schema.ORACLE_USERNAME ;
exception
when object_exists then null;
when object_not_exists then null;
when plsql_not_exists then null;
when others then
raise_application_error(-20000, sqlerrm ||'Error in
ad_grants.Give_grants');
end;
end if;
i := i + 1;
begin
execute immediate 'grant EXECUTE on DBMS_LOCK to CTXSYS';
exception
when others then
null;
end;
begin
execute immediate 'grant EXECUTE on DBMS_PIPE to CTXSYS';
exception
when others then
null;
end;
begin
execute immediate 'grant EXECUTE on DBMS_REGISTRY to CTXSYS';
exception
when others then
null;
end;
begin
execute immediate
'grant EXECUTE on AQ$_JMS_TEXT_MESSAGE to APPLSYS with GRANT OPTION';
exception
when others then
null;
end;
end give_grants;
--
-- For bug 3447980, create a view using the huge select tested by
-- APPS Performance team. This is one of the steps in replacing the
-- Rule optimization in ad_parallel_updates_pkg() package.
--
procedure create_ad_extents
is
l_stmt varchar2(20000);
begin
exception
when others then
raise_application_error(-20000, sqlerrm ||': ' ||
'Error in creating view');
end create_ad_extents;
BEGIN
begin
create_ad_extents;
commit;
exception
when others then
raise;
end;
begin
give_grants;
commit;
exception
when others then
raise;
end;
END;
/
begin
execute immediate 'revoke all on sys.dual from public';
execute immediate 'grant select on sys.dual to public';
exception
when others then
raise;
end;
/
COMMIT
/
EXIT;