E Monitor AWS - RDS Oracle DB

  1. Discover an AWS RDS DB instance in Oracle Management Cloud. 

    1. Request an EC2 Instance ( Amazon Linux AMI or Red Hat Enterprise Linux )

    2. Request an RDS - Oracle DB creation

    3. Install SQLclient on the EC2 instance and connect to the RDS - Oracle DB instance and grant the permissions are listed below.

    4. Install the Cloud agent on the EC2 instance.

    5. Discover the RDS - Oracle DB using the Cloud agent to Oracle Management Cloud.

  2. Grant the requisite privileges.

    Create the monitoring user and give the required grants shown below in Setting up Infrastructure Monitoring of an Amazon Oracle RDS Instance.

    In addition, you also need to grant the following privileges:
    exec rdsadmin.rdsadmin_util.grant_sys_object('CDB_SERVICES','MONCSROLE','SELECT'); 
    exec rdsadmin.rdsadmin_util.grant_sys_object('GV_$SERVICES','MONCSROLE','SELECT'); 
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$SERVICES','MONCSROLE','SELECT'); 
    exec rdsadmin.rdsadmin_util.grant_sys_object('CDB_PDBS','MONCSROLE','SELECT'); 
    exec rdsadmin.rdsadmin_util.grant_sys_object('GV_$CONTAINERS','MONCSROLE','SELECT'); 
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$CONTAINERS','MONCSROLE','SELECT'); 
    exec rdsadmin.rdsadmin_util.grant_sys_object('CDB_TABLESPACES','MONCSROLE','SELECT'); 
    exec rdsadmin.rdsadmin_util.grant_sys_object('CDB_DATA_FILES','MONCSROLE','SELECT'); 
    exec rdsadmin.rdsadmin_util.grant_sys_object('CDB_TEMP_FILES','MONCSROLE','SELECT');
    

Setting up Infrastructure Monitoring of an Amazon Oracle RDS Instance

  1. Create "moncsrole" and "moncs" user in the AWS Oracle RDS Instance..
    SQL> create role moncsrole;
    Role created.
    SQL>
    SQL> create user moncs identified by <password>;
    User created.
    SQL>
    SQL> grant moncsrole to moncs;
    Grant succeeded.
    SQL>
    SQL> grant create session to moncs;
    Grant succeeded.
    SQL>

  2. Grant the required privileges to "moncsrole" created above. Some of the grants are executed differently than those for a regular Oracle Instance. This is documented in the AWS RDS documentation.

    exec rdsadmin.rdsadmin_util.grant_sys_object('GV_$PARAMETER','MONCSROLE','SELECT'); 
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$INSTANCE','MONCSROLE','SELECT'); 
    exec rdsadmin.rdsadmin_util.grant_sys_object('GV_$SQL','MONCSROLE','SELECT'); 
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE','MONCSROLE','SELECT'); 
    exec rdsadmin.rdsadmin_util.grant_sys_object('GV_$INSTANCE','MONCSROLE','SELECT'); 
    exec rdsadmin.rdsadmin_util.grant_sys_object('GV_$OSSTAT','MONCSROLE','SELECT'); 
    exec rdsadmin.rdsadmin_util.grant_sys_object('GV_$SGA','MONCSROLE','SELECT'); 
    exec rdsadmin.rdsadmin_util.grant_sys_object('GV_$PGASTAT','MONCSROLE','SELECT'); 
    exec rdsadmin.rdsadmin_util.grant_sys_object('GV_$SYSMETRIC_SUMMARY','MONCSROLE','SELECT'); 
    grant select on sys.dba_tablespaces to moncsrole; 
    grant select on dba_data_files to moncsrole; 
    grant select on dba_free_space to moncsrole; 
    exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_UNDO_EXTENTS','MONCSROLE','SELECT'); 
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ACTIVE_SESSION_HISTORY','MONCSROLE','SELECT'); 
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ASH_INFO','MONCSROLE','SELECT'); 
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$PARAMETER','MONCSROLE','SELECT'); 
    grant select on dba_temp_files to moncsrole; 
    exec rdsadmin.rdsadmin_util.grant_sys_object('GV_$SORT_SEGMENT','MONCSROLE','SELECT'); 
    grant select on sys.ts$ to moncsrole; 
    grant execute on sys.dbms_lock to moncsrole; 
    grant execute on dbms_system to moncsrole; 
    exec rdsadmin.rdsadmin_util.grant_sys_object('GV_$IOSTAT_FILE','MONCSROLE','SELECT'); 
    exec rdsadmin.rdsadmin_util.grant_sys_object('GV_$SYSSTAT','MONCSROLE','SELECT'); 
    exec rdsadmin.rdsadmin_util.grant_sys_object('GV_$SYS_TIME_MODEL','MONCSROLE','SELECT'); 
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$EVENT_NAME','MONCSROLE','SELECT'); 
    exec rdsadmin.rdsadmin_util.grant_sys_object('GV_$WAITCLASSMETRIC','MONCSROLE','SELECT'); 
    exec rdsadmin.rdsadmin_util.grant_sys_object('GV_$SYSMETRIC','MONCSROLE','SELECT'); 
    exec rdsadmin.rdsadmin_util.grant_sys_object('GV_$SYSTEM_EVENT','MONCSROLE','SELECT'); 
    exec rdsadmin.rdsadmin_util.grant_sys_object('GV_$SQL','MONCSROLE','SELECT'); 
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$SYSTEM_EVENT','MONCSROLE','SELECT'); 
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ALERT_TYPES','MONCSROLE','SELECT'); 
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$THRESHOLD_TYPES','MONCSROLE','SELECT'); 
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$SYSMETRIC','MONCSROLE','SELECT'); 
    
  3. Add the Oracle DB entity.

    omcli add_entity agent omc_oracle_db_ora12c.json -credential_file omc_oracle_db_ora12c_creds.json

  4. Verify the status of the newly added entity.

    omcli status_entity agent omc_oracle_db_ora12c.json