MINI MINI MANI MO

Path : /opt/oracle/product/18c/dbhomeXE/rdbms/admin/
File Upload :
Current File : //opt/oracle/product/18c/dbhomeXE/rdbms/admin/catsnmp.sql

Rem
Rem NAME
Rem    CATSNMP.SQL
Rem  FUNCTION
Rem    Creates an SNMPAgent role to access the v$ tables
Rem  NOTES
Rem
Rem BEGIN SQL_FILE_METADATA
Rem SQL_SOURCE_FILE: rdbms/admin/catsnmp.sql
Rem SQL_SHIPPED_FILE: rdbms/admin/catsnmp.sql
Rem SQL_PHASE: CATSNMP
Rem SQL_STARTUP_MODE: NORMAL
Rem SQL_IGNORABLE_ERRORS: NONE
Rem SQL_CALLING_FILE: rdbms/admin/catpexec.sql
Rem END SQL_FILE_METADATA
Rem
Rem  MODIFIED
Rem     aramappa   02/28/16 - 21239547:Remove INHERIT PRIVILEGE on SYS to
Rem                           DBSNMP
Rem     surman     12/29/13 - 13922626: Update SQL metadata
Rem     surman     03/27/12 - 13615447: Add SQL patching tags
Rem     dalpern    03/21/12 - bug 13853343: grant INH PRIVS on sys to dbsnmp
Rem     akruglik   10/03/11 - (13056894): make it possible for dbsnmp to see
Rem                           all data in CONTAINER_DATA objects in the Root
Rem     akruglik   09/06/11 - rename CDB_ADMIN to CDB_DBA
Rem     akruglik   08/29/11 - DB Consolidation: grant CDB_ADMIN role to dbsnmp
Rem     rpang      07/25/11 - Proj 32719: grant inherit any priv to dbsnmp
Rem     rkunnamp   01/20/11 - bug 9346110 fix transaction
Rem     ychan      06/17/09 - Fix bug 8607966
Rem     dsemler    01/14/08 - Add QOS user creation
Rem     amahalin   06/21/07 - to grant SELECT_CATALOG_ROLE to OEM_MONITOR
Rem     jsoule     05/07/07 - grant dbms_management_packs access to dbsnmp
Rem     ychan      02/13/07 - Add db_feature table and procedure
Rem     jsoule     07/20/06 - restore bsln schema creation 
Rem     jsoule     07/13/06 - remove bsln dependency on EMDW
Rem     lburgess   03/27/06 - user lowercase for DBSNMP password 
Rem     nachen     02/02/05 - add OEM_ADVISOR role 
Rem     ychan      11/11/04 - Fix bug 3926476 
Rem     zsyed      10/29/04 - Removing addition of dbsnmp to SYS_USER group 
Rem     jsoule     08/06/04 - add dbsnmp baseline schema objects 
Rem     shigupta   07/16/04 - add dbsnmp to sys_group consumer group 
Rem     hxlin      06/28/04 - Put SQL Response back 
Rem     hxlin      06/18/04 - Temporarily remove response.plb 
Rem     shigupta   06/07/03 - cleanup
Rem     ychan      11/05/03 - Fix bug 3234502 
Rem     jochen     10/02/03 - Add ANALYZE ANY DICTIONARY to OEM_MONITOR 
Rem     vchao      07/09/03 - Fix bug 3027355. Modify alert_que privileges
Rem     ychan      06/27/03 - Add aq priv
Rem     ychan      06/26/03 - Add aq priv
Rem     lhan       06/27/03 - change key of gtt
Rem     lhan       06/13/03 - remove hard tab
Rem     lhan       06/06/03 - Add GTTs definition
Rem     ychan      05/14/03 - Remove reuse
Rem     ychan      05/11/03 - Grant dbms_lock
Rem     ychan      04/28/03 - Add response sql
Rem     ychan      03/26/03 - Fix connect dbsnmp
Rem     ychan      03/24/03 - Fix bug 2657279
Rem     jaysmith   08/21/02 - remove create user error-handling
Rem     jaysmith   08/18/02 - suppress error from create user
Rem     jaysmith   08/16/02 - do not recreate DBSNMP user each time run
Rem     xxu        02/01/02 - add function OemGetNextExtend
Rem     glavash    01/03/02 - remove superfluos privs
Rem     rburns     10/28/01 - wrap drop role statement
Rem     gviswana   05/24/01 - CREATE OR REPLACE SYNONYM
Rem	jaysmith   04/11/01 - restore views, oemagent roles
Rem	jaysmith   03/08/01 - pull back grants for dbsnmp user
Rem	glavash    02/16/01 - add select access to sys.obj$ user and ts
Rem	glavash    10/23/00 - add statspack views
Rem     dholail    04/12/99 - Adding Events role OEM_MONITOR
Rem     cluo       07/15/96 -
Rem     dnakos     removed creation of backup script tables
Rem     dnakos     removed creation of obsolete history tables
Rem     dnakos     removed references to obsolete DBA_LOCKS
Rem
Rem  OWNER
Rem    ebosco
Rem

@@?/rdbms/admin/sqlsessstart.sql

alter session set "_ORACLE_SCRIPT"=true;

BEGIN
  EXECUTE IMMEDIATE 'drop role SNMPAGENT';
EXCEPTION
   WHEN OTHERS THEN
      IF SQLCODE = -1919 THEN NULL;
      ELSE RAISE;
      END IF;
END;
/

REM
REM -- OEM_ADVISOR role is needed so that users with this
REM -- role could manage advisor tasks.
REM
create role OEM_ADVISOR;
    REM -- Privileges to run Advisor Tasks as Scheduler Jobs
    grant ADVISOR to OEM_ADVISOR;
    grant CREATE JOB to OEM_ADVISOR;
    REM -- Privileges to run SQL Tuning Advisor Tasks
    grant ADMINISTER SQL TUNING SET to OEM_ADVISOR;

REM
REM -- OEM_MONTOR role is needed so that users of EM Diagnostics Pack can grant this
REM -- role to another user who they want to use to monitor database using EM Agent.
REM -- DBSNMP is the out-of-box default user used by EM Agent to monitor the database.
REM
create role OEM_MONITOR;

    REM -- Ability to create a session and read dictionary views
    grant CREATE SESSION to OEM_MONITOR;
    grant SELECT ANY DICTIONARY to OEM_MONITOR;

    REM -- Privileges to enable/disable SQL Tracing and Statistics Aggregation
    grant execute on SYS.DBMS_SYSTEM to OEM_MONITOR;
    grant execute on SYS.DBMS_MONITOR to OEM_MONITOR;

    REM -- Privileges to run AWR report 
    grant execute on dbms_workload_repository to OEM_MONITOR;

    REM -- Privileges to run Advisor Tasks as Scheduler Jobs
    grant ADVISOR to OEM_MONITOR;
    grant CREATE JOB to OEM_MONITOR;

    REM -- HA related package
    grant execute on SYS.DBMS_DRS to OEM_MONITOR;

    REM -- Privileges needed to use DBMS_SPACE package. This package
    REM -- is used by Space metrics
    REM
    grant analyze any to OEM_MONITOR;
    grant analyze any dictionary to OEM_MONITOR;

    REM -- Privileges for alerts queue
    grant EXECUTE on DBMS_AQADM to OEM_MONITOR;
    grant EXECUTE on DBMS_AQ to OEM_MONITOR;
    grant EXECUTE on DBMS_SERVER_ALERT to OEM_MONITOR;
    
    REM -- Privileges for OLS Data Dictionary Views
    grant SELECT_CATALOG_ROLE to OEM_MONITOR;	
	
    begin
      dbms_aqadm.grant_system_privilege('manage_any', 'OEM_MONITOR', false);
      dbms_aqadm.grant_queue_privilege('dequeue', 'alert_que', 'OEM_MONITOR', false);
    end;
    /

create user DBSNMP identified by dbsnmp DEFAULT TABLESPACE SYSAUX PASSWORD EXPIRE ACCOUNT LOCK;

REM
REM Grant INHERIT ANY PRIVILEGES to DBSNMP to inherit privileges of callers of
REM its invoker rights routines. Revoke automatic grant of INHERIT PRIVILEGES
REM from public.
REM
grant inherit any privileges to DBSNMP;

declare
  already_revoked exception;
  pragma exception_init(already_revoked,-01927);
begin
  execute immediate 'revoke inherit privileges on user DBSNMP from public';
exception
  when already_revoked then
    null;
end;
/

grant select any dictionary to DBSNMP;
grant OEM_MONITOR to DBSNMP;

remark
remark grant role containing privileges needed to administer a 
remark Consolidated Database
remark
grant CDB_DBA to DBSNMP;

remark
remark make it possible for dbsnmp to see all data in CONTAINER_DATA objects 
remark in the Root
remark
alter user DBSNMP set container_data=all;

REM - These privileges are needed for SQL Response metric. These need to be
REM - granted only to DBSNMP since DBSNMP schema owns these objects.
REM - The response.plb file (see below) creates the tables and procedures
REM - under DBSNMP. Such creation will fail without these privileges.
REM
grant create table to DBSNMP;
grant create procedure to DBSNMP;
grant unlimited tablespace to DBSNMP;

REM - DBSNMP user should get preferential resource allocation on a system 
REM - experiencing contention. This is to ensure that DBA is able to use 
REM - EM to diagnose the problem. If resource manager is enabled then sys_group
REM - gets a high allocation since this is what sys and system belong to.
REM - Therefore, add dbsnmp to sys_group.
  
REM Grant these directly to the owner of mgmt_bsln_internal.
GRANT EXECUTE ON DBMS_SERVER_ALERT TO DBSNMP;
GRANT EXECUTE ON DBMS_MANAGEMENT_PACKS TO DBSNMP;

ALTER SESSION SET CURRENT_SCHEMA = DBSNMP;

REM Load the SQL Response Metric
@@response.plb

    REM -- Privilege to execute MGMT_RESPONSE package (for SQL Response Metric)
    grant EXECUTE on dbsnmp.mgmt_response to OEM_MONITOR;

REM -- Privileges to query SQL Response tables
grant select on dbsnmp.mgmt_baseline to OEM_MONITOR; 
grant select on dbsnmp.mgmt_baseline_sql to OEM_MONITOR;
grant select on dbsnmp.mgmt_latest to OEM_MONITOR;
grant select on dbsnmp.mgmt_latest_sql to OEM_MONITOR;
grant select on dbsnmp.mgmt_history to OEM_MONITOR;
grant select on dbsnmp.mgmt_history_sql to OEM_MONITOR;

REM Create the BSLN schema objects
@@catbsln

REM Create GTTs for Tablespaces Full metric under DBSNMP schema
create global temporary table mgmt_db_file_gtt (
        tablespace_name varchar2(30),
        meg number,
        max_meg number,
        file_name varchar2(513),
        file_id number,
        ts# number,
        blocksize number,
        flag number,
        constraint mgmt_db_file_gtt_pk primary key (tablespace_name,file_id)
)
on commit delete rows;

create global temporary table mgmt_db_size_gtt (
        tablespace_name varchar2(30),
        sz number,
        constraint mgmt_db_size_gtt_pk primary key (tablespace_name)
)
on commit delete rows;

REM ******************************
REM Start: Tracking em db feature
REM ******************************
CREATE TABLE mgmt_db_feature_log (
   source varchar2(30) NOT NULL CONSTRAINT mgmt_db_feature_log_pk PRIMARY KEY,
   last_update_date timestamp with time zone);

CREATE OR REPLACE PROCEDURE mgmt_update_db_feature_log(src IN VARCHAR2)
AS 
    l_last_update_date mgmt_db_feature_log.last_update_date%TYPE;
    current_date mgmt_db_feature_log.last_update_date%TYPE;
    diff interval day(9) to second(9);
    diff_min NUMBER;
  BEGIN
    current_date := SYSTIMESTAMP;
    SELECT last_update_date
      INTO l_last_update_date
        FROM mgmt_db_feature_log
        WHERE source = src;
    diff := current_date - l_last_update_date;
    diff_min := EXTRACT(DAY FROM diff)*24*60+EXTRACT(HOUR FROM diff)*60+EXTRACT(MINUTE FROM diff);
    -- 2 hours 2x60=120
    IF (diff_min > 120) THEN 
    	UPDATE mgmt_db_feature_log set last_update_date = current_date WHERE source = src;   
	commit;
    END IF;    
  EXCEPTION
    when NO_DATA_FOUND then     
      BEGIN
        INSERT INTO mgmt_db_feature_log VALUES (src, systimestamp);
	commit;
      END;        
  END;
/

GRANT EXECUTE ON  dbsnmp.mgmt_update_db_feature_log TO OEM_MONITOR;

REM ******************************
REM END: Tracking em db feature
REM ******************************


ALTER SESSION SET CURRENT_SCHEMA = SYS;

REM This must be called after the DBSNMP user is known to be created as
REM   it grants permissions to DBSNMP
@@catqos

@?/rdbms/admin/sqlsessend.sql

OHA YOOOO