Canalblog
Editer l'article Suivre ce blog Administration + Créer mon blog
Publicité
Blog d'un DBA sur le SGBD Oracle et SQL
19 octobre 2020

Auditer les bases Oracle du Cloud via le repository du Cloud Control - Audit databases via the Cloud Control repository

               

Introduction
Savez-vous qu'il existe pour chaque produit majeur Oracle un repository? Par repository j'entends un ensemble de vues et de tables du dictionnaire de données Oracle qui permettent d'interroger soit un produit spécifique soit une fonctionnalité. Pour AWR, ces vues commencent par DBA_HIST_*** et il y en a près de 400, si vous décidez d'utiliser un catalogue RMAN, vous aurez là encore un repository avec des centaines de vue, commençant par RC_***.

Le Cloud Control a aussi un repository de centaines de vues, commençant par MGMT_***. A ma grande surprise il y a très peu de sites ou de blogs qui en parlent; j'ai tellement galéré pour trouver ces infos et construire les bons SELECTs qu'un article s'imposait pour partager les infos.

Par exemple voici deux recherches effectuées le 19/10/2020 sur Google : 83 résultats pour une vue très utile du repository Cloud Control et 258 000 pour la même vue mais concernant les users d'une base... incroyable! Bon, il est vrai que cette vue MGMT$DB_USERS n'est même pas documentée par Oracle mais quand même... 
          - recherche sur "MGMT$DB_USERS" : environ 83 résultats
          - recherche sur "DBA_USERS" : environ 258 000 résultats
Si je prends une vue documentée, comme MGMT$TARGET, il n'y a que 3940 résultats (si j'utilise les guillemets).

L'intérêt de ce repository est multiple :
          - centraliser en un endroit, des infos de N entités différentes : par exemple, je peux en un seul SELECT connaître le nombre de users qui sont répartis sur 100 bases; sans le repository, je dois me connecter à ces 100 bases pour avoir la même info
          - interroger des entités qui ne sont pas des bases de données mais qui sont quand même monitorées par le Cloud Control : serveur Unix, Listener etc etc
          - ...

L'objet de ce post est donc de voir comment utiliser ce repository pour avoir un état des lieux voir auditer les hosts et bases gérées par le Cloud Control. 

ATTENTION : dans ces vues ne sont remontées qu'une partie des informations des bases Oracle, celles utiles pour les monitorer à partir du Cloud; par exemple, il n'y a aucune vue équivalente à DBA_OBJECTS ou à V$SQLAREA car ces infos n'ont, selon Oracle, de sens que depuis la base proprement dite et n'ont pas d'utilité quand on parle de gérer un Cloud.

Dernier point, ces vues appartiennent au schéma SYSMAN, pas à SYS.

Un lien très utile ici, à savoir une liste (qui je pense est incomplète) de ces vues : https://docs.oracle.com/cd/cloud-control-13.3/EMVWS/EMVWS.pdf 
 


 

Points d'attention
N/A.

 


 

Base de tests
Un Cloud Control 12c, une base Oracle 11g hébergeant le repository et N bases de données, de la V9 à la V12.

 


 

Exemples
============================================================================================
Les vues du repository Cloud Control
============================================================================================
ATTENTION : je masque les noms des vraies bases pour des raisons de discrétion donc ne soyez pas surpris si les noms sont incohérents d'un SELECT à l'autre.

La base de données hébergeant le repository du Cloud Control est une 11g.
     SQL> select * from v$version;
     BANNER
     --------------------------------------------------------------------------------
     Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
     PL/SQL Release 11.2.0.3.0 - Production
     CORE    11.2.0.3.0      Production
     TNS for Linux: Version 11.2.0.3.0 - Production
     NLSRTL Version 11.2.0.3.0 - Production

Il y a 405 vues commençant par MGMT (pour Management certainement) : ce sont celles-là qui nous intéressent.
     SQL> select count(*) from dba_objects where object_name like 'MGMT$%' and object_type = 'VIEW';
       COUNT(*)
     ----------
            405

Répartition des vues par catégories
Je regroupe par chaîne de caractères avant le premier underscore. Le repository Cloud Control peut se diviser en 69 catégories de vues : je vous laisse imaginer ce que cela recouvre.
     SQL> select substr(object_name, 1, instr(object_name, '_') -1) AS "Catégorie de vues", count(*) from dba_objects where object_name like 'MGMT$%' and object_type = 'VIEW' group by (substr(object_name, 1, instr(object_name, '_') -1)) order by 1;
     Catégorie de vues     COUNT(*)
     -------------------- ----------
     MGMT$ADR                      1
     MGMT$ALERT                    4
     MGMT$APPL                     1
     MGMT$APPLIED                  2
     MGMT$ARU                      9
     MGMT$AUDIT                    1
     MGMT$AVAIL                    1
     MGMT$AVAILABILITY             2
     MGMT$BLACKOUT                 1
     MGMT$CCC                      4
     MGMT$CCS                      4
     MGMT$CLUSTER                  1
     MGMT$CM                       3
     MGMT$COMPLIANCE               3
     MGMT$COMPOSITE                1
     MGMT$CONFIG                   1
     MGMT$CONNECTOR                1
     MGMT$CPF                      4
     MGMT$CS                      22
     MGMT$CSA                     14
     MGMT$DB                      33
     MGMT$DELTA                   15
     MGMT$DIAGNOSTIC               2
     MGMT$ECM                      3
     MGMT$EM                       1
     MGMT$ESA                     23
     MGMT$ESM                      5
     MGMT$GROUP                    3
     MGMT$GRP                      3
     MGMT$HA                      11
     MGMT$HOMES                    1
     MGMT$HOSTPATCH                4
     MGMT$HW                       4
     MGMT$IAS                     12
     MGMT$INTERFACE                1
     MGMT$JOB                      5
     MGMT$J2EE                     1
     MGMT$J2EEAPP                  8
     MGMT$METRIC                  12
     MGMT$MISSING                  2
     MGMT$MS                       2
     MGMT$OC4J                    16
     MGMT$OH                      16
     MGMT$OHS                      6
     MGMT$ORACLE                   4
     MGMT$OS                      11
     MGMT$OSB                      1
     MGMT$PA                       6
     MGMT$PATCH                    1
     MGMT$POLICY                   7
     MGMT$PR                       4
     MGMT$RAC                      2
     MGMT$RACDB                    1
     MGMT$RECOM                    1
     MGMT$SERVICETAG               2
     MGMT$SOFTWARE                12
     MGMT$STATSPACK                1
     MGMT$STEP                     4
     MGMT$STORAGE                  8
     MGMT$SWLIB                    1
     MGMT$TARGET                  16
     MGMT$TEMPLATE                 3
     MGMT$TXN                      3
     MGMT$UNPATCHABLE              1
     MGMT$VIEW                     1
     MGMT$WEBCACHE                11
     MGMT$WEBLOGIC                25
     MGMT$WEBSPHERE                2
                                   8
     
     69 ligne(s) s▒lectionn▒e(s).


Vues ayant des infos sur les bases targets
Ces vues ont DB_ dans leur nom.
     SQL> select object_name from dba_objects where object_name like 'MGMT$DB%' and object_type = 'VIEW' order by 1;
     OBJECT_NAME
     ---------------------------------------------------------------
     MGMT$DB_ASSOC_DATA
     MGMT$DB_AUTOTASK_CLIENT
     MGMT$DB_CONTROLFILES
     MGMT$DB_CONTROLFILES_ALL
     MGMT$DB_CPU_USAGE
     MGMT$DB_DATAFILES
     MGMT$DB_DATAFILES_ALL
     MGMT$DB_DBNINSTANCEINFO
     MGMT$DB_DBNINSTANCEINFO_ALL
     MGMT$DB_FEATURE_USAGE
     MGMT$DB_FEATUREUSAGE
     MGMT$DB_HA_BACKUP_REPORT
     MGMT$DB_HA_CONFIG
     MGMT$DB_HIGHWATERMARK
     MGMT$DB_INIT_PARAMS
     MGMT$DB_INIT_PARAMS_ALL
     MGMT$DB_INST_ONLY_INFO
     MGMT$DB_INVOBJ_CNT
     MGMT$DB_LICENSE
     MGMT$DB_LICENSE_ALL
     MGMT$DB_OPTIONS
     MGMT$DB_OPTIONS_ALL
     MGMT$DB_REDOLOGS
     MGMT$DB_REDOLOGS_ALL
     MGMT$DB_ROLLBACK_SEGS
     MGMT$DB_ROLLBACK_SEGS_ALL
     MGMT$DB_SCHEDULER_JOBS
     MGMT$DB_SERVICES_ECM
     MGMT$DB_SGA
     MGMT$DB_SGA_ALL
     MGMT$DB_TABLESPACES
     MGMT$DB_TABLESPACES_ALL
     MGMT$DB_USERS

     33 ligne(s) s▒lectionn▒e(s).


============================================================================================
Auditer les bases Oracle répertoriées dans le Cloud Control
============================================================================================
Pour auditer les bases Oracle, nous utiliserons les vues suivantes en filtrant par TARGET_TYPE = 'oracle_database' :  
          - MGMT$TARGET 
          - MGMT$AVAILABILITY_CURRENT

Répartition des bases Oracle par leur version

Quelques bases Oracle 9 mais il y a peu d’options dans le Cloud Control pour administrer cette version d’Oracle.
     SQL> select type_qualifier1, count(*) from mgmt$target where TARGET_TYPE = 'oracle_database' group by type_qualifier1 order by 2      DESC;
     TYPE_QUALIFIER1                                                    COUNT(*)
     ---------------------------------------------------------------- ----------
     11gR202                                                                  63
     10gR204                                                                  27
     9iR2                                                                     14
                                                                               5

Répartition des bases Oracle par leur statut
     SQL> select AVAILABILITY_STATUS, count(*) from MGMT$AVAILABILITY_CURRENT where target_type = 'oracle_database' group by      AVAILABILITY_STATUS order by 2 DESC;
     AVAILABILITY_STATUS    COUNT(*)
     -------------------- ----------
     Unreachable                  77
     Target Up                    21
     Target Down                   5
     Pending/Unknown               4
     Metric Error                  2


Répartition des bases Oracle par statut et nom
     SQL> select AVAILABILITY_STATUS, target_name from MGMT$AVAILABILITY_CURRENT where target_type = 'oracle_database' and AVAILABILITY_STATUS <> 'Target Up' order by 1, 2;
     AVAILABILITY_ST TARGET_NAME
     --------------- ------------------------------
     Metric Error    BASEINFO
     
     Pending/Unknown BASERH
     Target Down     DATADEV
          
     Unreachable     DWDWSP
     

     89 ligne(s) s▒lectionn▒e(s).


Répartition des bases Oracle par le statut ‘Metric Error’
     SQL> select T.target_name, T.type_qualifier1, T.host_name, A.AVAILABILITY_STATUS from SYSMAN.MGMT$TARGET T, SYSMAN.MGMT$AVAILABILITY_CURRENT A where A.target_name = T.target_name and A.AVAILABILITY_STATUS = 'Metric Error' order by 1;
     TARGET_NAME                    TYPE_QUALI HOST_NAME                      AVAILABILITY_STATUS
     ------------------------------ ---------- ------------------------------ --------------------
     BASEINFO                       10gR204    li11grde.test01.com         Metric Error
     BASESOC                       10gR204                                   Metric Error


Répartition des bases Oracle par serveur
     SQL> SELECT HOST_NAME, count(*) from SYSMAN.MGMT$TARGET where target_type = 'oracle_database' group by rollup(host_name) order by 2  DESC;
     HOST_NAME                        COUNT(*)
     ------------------------------ ----------
                                           109
     oraoem_az.test01.com                 31
     li10ora11t.test01.com               12
     li12rht.test01.com                  10
     li11ora11p.test01.com                9
     li12fit.test01.com                   9
     li11ora10p.test01.com                5
     li11edop.test01.com                  4
     li10ora12t.test01.com                4
     li10dwht.test01.com                  4
     li13rhp.test01.com                   4
     li13fip.test01.com                   4
     li11dwhp.test01.com                  3
     li11ora12p.test01.com                3
     li11infp.test01.com                  3
     li11clmp.test01.com                  2
     li12rhi.test01.com                   1
     li13fii.test01.com                   1

     18 ligne(s) s▒lectionn▒e(s).


Répartition des bases Oracle par serveur et par version de la base Oracle
     SQL> break on HOST_NAME skip 1
     SQL> SELECT HOST_NAME, type_qualifier1, count(*) from SYSMAN.MGMT$TARGET where target_type = 'oracle_database' group by host_name, type_qualifier1 order by HOST_NAME, 3 DESC ;
     HOST_NAME                      TYPE_QUALI   COUNT(*)
     ------------------------------ ---------- ----------
     oraoem_az.test01.com         10gR204            16
                                    9iR2               14
                                    11gR202             1

     li10dwht.test01.com         11gR202             4
     
     li10ora11t.test01.com       11gR202            12
     
     li10ora12t.test01.com       11gR202             4
     
     li11clmp.test01.com         11gR202             2

     li11dwhp.test01.com         11gR202             3

     li11edop.test01.com         10gR204             4

     li13fii.test01.com          11gR202             1

     li13fip.test01.com          11gR202             4

     li13rhp.test01.com          11gR202             4
     ...     

     21 ligne(s) s▒lectionn▒e(s).


============================================================================================
Auditer les agents répertoriés dans le Cloud Control
============================================================================================
Pour auditer les agents Cloud Control, nous utiliserons les vues suivantes en filtrant par TARGET_TYPE = 'oracle_emd'
          - MGMT$AGENTS_MONITORING_TARGETS (inconnue en 11g)
          - MGMT$TARGET_PROPERTIES
          - MGMT$AVAILABILITY_CURRENT
          - MGMT$TARGET

Liste des agents
La vue MGMT$AGENTS_MONITORING_TARGETS n’existe pas en Oracle 11… il faut utiliser mgmt$target_properties.
SQL> select agent_name, AGENT_TYPE from MGMT$AGENTS_MONITORING_TARGETS order by 1;

En Oracle 11.
     SQL> select distinct TARGET_NAME from mgmt$target_properties where TARGET_TYPE = 'oracle_emd' order by 1 ;
TARGET_NAME
     ----------------------------
     oraoem_az.test01.com:3872
     ux08hrt:3872
     li10clmb.test01.com:3872
     li10dwht.test01.com:3872
     ...
     li11ora12p.test01.com:3872
     li12fit.test01.com:3872
     li12rhi.test01.com:3872
     li12rht.test01.com:3872
     li13fii.test01.com:3872
     li13fip.test01.com:3872
     li13rhp.test01.com:3872

     21 ligne(s) s▒lectionn▒e(s).


Liste des Agents avec un statut différent de ‘Target Up’
     SQL> select AVAILABILITY_STATUS, target_name from MGMT$AVAILABILITY_CURRENT where target_type = 'oracle_emd' and AVAILABILITY_STATUS <> 'Target Up' order by 1, 2;
     AVAILABILITY_ST TARGET_NAME
     --------------- ------------------------------
     Unreachable     oraoem_az.test01.com:3872
     Unreachable     ux08hrt:3872
     Unreachable     li10clmb.test01.com:3872
     Unreachable     li10edot.test01.com:3872
     Unreachable     li10ora11t.test01.com:3872
     Unreachable     li11clmp.test01.com:3872
     Unreachable     li11dwhp.test01.com:3872
     Unreachable     li11edop.test01.com:3872
     Unreachable     li11ora10p.test01.com:3872
     Unreachable     li11ora11p.test01.com:3872
     Unreachable     li12rhi.test01.com:3872
     Unreachable     li12rht.test01.com:3872
     Unreachable     li13fip.test01.com:3872

     13 ligne(s) s▒lectionn▒e(s).


Liste des bases Oracle en erreur avec leur agent
ATTENTION : on avait 89 bases en erreur sur 109 ; ici on a 119 lignes mais plusieurs bases sont présentes deux fois donc on a bien 89 bases dont 30 présentes deux fois.
     SQL> select distinct T.target_name AS "Base", A.AVAILABILITY_STATUS AS "Statut base", nvl(substr(T.EMD_URL, 9, length(T.EMD_URL) -10), '***** Agent inconnu *****') AS "Agent"
from MGMT$TARGET T,  
(
select target_name, AVAILABILITY_STATUS from MGMT$AVAILABILITY_CURRENT where target_type = 'oracle_database' and AVAILABILITY_STATUS <> 'Target Up'
) A
where T.target_name = A.target_name
order by T.target_name;
     Base                           Statut base     Agent
     ------------------------------ --------------- -----------------------------------
     DWAIRSP                          Unreachable     oraoem_az.test01.com:3872/emd/mai
     DWAIRSP                          Unreachable     ***** Agent inconnu *****
     DWAIRST                          Unreachable     oraoem_az.test01.com:3872/emd/mai
     DWAIRST                          Unreachable     ***** Agent inconnu *****
     DWSHERPAP                        Unreachable     li11ora11p.test01.com:3872/emd/mai
     DWSHERPAT                        Unreachable     li10ora11t.test01.com:3872/emd/mai
     ...
     119 ligne(s) s▒lectionn▒e(s).


============================================================================================
Auditer les users répertoriés dans le Cloud Control
============================================================================================
Pour auditer les users des bases répertoriées dans le Cloud Control, nous utiliserons la vue suivante : 
          - MGMT$DB_USERS

Attention, ce qui nous intéresse ce ne sont pas les users de la base gérant le Cloud Control mais bien les users des N bases Oracles qui sont répertoriées dans le Cloud Control : ce n'est pas la même chose!


Nombre total de users
     SQL> select 'Users actifs : ' AS "Statut", count(*) AS "Nb users"
from MGMT$DB_USERS
where EXPIRY_DATE is null
UNION
select 'Users expirés : ' AS "Statut", count(*) AS "Nb users"
from mgmt$db_users
where EXPIRY_DATE is not null
UNION
SELECT 'Nb Users : ' AS "Statut", count(*) AS "Nb users"
from mgmt$db_users
order by "Nb users" DESC;
     Statut                Nb users
     ------------------- ----------
     Nb Users :                3070
     Users actifs :            2283
     Users expirés :            787


Répartition des users par année de création
     SQL> select extract(year from CREATED), count(*) from mgmt$db_users group by extract(year from CREATED) order by 1;
     EXTRACT(YEARFROMCREATED)   COUNT(*)
     ------------------------ ----------
                         2006         35
                         2007          4
                         2008         71
                         2009        103
                         2010        117
                         2011        228
                         2012         18
                         2013        316
                         2014        491
                         2015        734
                         2016        131
                         2017        613
                         2018        133
                         2019         22
                         2020         54

     15 ligne(s) s▒lectionn▒e(s).


Répartition des users par host et par base
     SQL> break on HOST_NAME skip 1
     SQL> select HOST_NAME, TARGET_NAME, count(*) from mgmt$db_users group by rollup(HOST_NAME, TARGET_NAME) order by HOST_NAME, TARGET_NAME;
     HOST_NAME                      TARGET_NAME    COUNT(*)
     ------------------------------ ------------ ----------
     li10dwht.test01.com            PRTEST               30
                                    PRHDEV               23
                                    PRHQLIF              23
                                    PRHTEST              23
                                                         99

     li11clmp.test01.com            CTM9TDEV             20
                                    EM9TDEV              20
                                                         40
...
                                                       3070

     108 ligne(s) s▒lectionn▒e(s).


Répartition des users par host et par statut
     SQL> break on host_name skip 2
     SQL> compute SUM label TOTAL of "Nb users" on host_name

     SQL> select HOST_NAME, 'Nb users actifs : ', count(*) AS "Nb users"
from mgmt$db_users
where EXPIRY_DATE is not null
group by HOST_NAME
UNION
select HOST_NAME, 'Nb users expirés : ', count(*) AS "Nb users"
from mgmt$db_users
where EXPIRY_DATE is null
group by HOST_NAME
order by host_name;
     HOST_NAME                      'NBUSERSACTIFS:'         Nb users
     ------------------------------ ---------------------- ----------
     oraoem_az.test01.com         Nb users actifs :               7
                                    Nb users expirés :            441
     ******************************                        ----------
     TOTAL                                                        448


     li10dwht.test01.com         Nb users actifs :              20
                                    Nb users expirés :             79
     ******************************                        ----------
     TOTAL                                                         99

     ...
     32 ligne(s) s▒lectionn▒e(s).


Répartition des users par host, base, date de création et date d’expiration
     SQL> select HOST_NAME, TARGET_NAME, USERNAME, CREATED, EXPIRY_DATE from mgmt$db_users order by HOST_NAME, TARGET_NAME, USERNAME;
     HOST_NAME                TARGET_NAME  USERNAME             CREATED  EXPIRY_D
     -------------------------------- -------- ---------------------------------------------
     li13fip.test01.com          FADWT        INT_CG57             23/11/15
     li13fip.test01.com          FADWT        INTERFACE            23/11/15
     li13fip.test01.com          FADWT        INTDEV               23/11/15
     li13fip.test01.com          FADWT        LO                   23/11/15
     li13fip.test01.com          FADWT        MAJ_CONFIG           23/11/15
     li13fip.test01.com          FADWT        NAGIOS               23/11/15
     li13fip.test01.com          FADWT        OG                   23/11/15
     li13fip.test01.com          FADWT        OP                   23/11/15
     li13fip.test01.com          FADWT        ORACLE_OCM           23/11/15 23/11/15
     li13fip.test01.com          FADWT        OUTLN                23/11/15
     li13fip.test01.com          FADWT        PA                   23/11/15
         ...


============================================================================================
Auditer les features, options et packages utilisés dans les bases répertoriés dans le Cloud Control
============================================================================================
Pour identifier quelles options payantes et non sont utilisées, nous interrogerons les vues suivantes : 
          - MGMT$DB_OPTIONS
          - MGMT$DB_FEATUREUSAGE

Répartition des options utilisées par bases
"The MGMT$DB_OPTIONS view displays whether or not the option is currently LOADED and ACTIVE, or either the option does not exist or is NOT LOADED orINACTIVE. Options settings are collected by checking user name and status in thesys.dba_users and dba_registry tables."
     SQL> select HOST_NAME, TARGET_NAME, NAME from MGMT$DB_OPTIONS where SELECTED = 'TRUE' order by 1, 2 ;
     HOST_NAME        TARGET_NAME    NAME
     ----------------------------------------------------------------------
     
     li13rhp.test01.com          FADWTA               Advanced Analytics
     li13rhp.test01.com          FADWTA               Advanced Compression
     li13rhp.test01.com          FADWTA               Advanced Index Compression
     li13rhp.test01.com          FADWTA               Advanced replication
     li13rhp.test01.com          FADWTA               Application Role
     li13rhp.test01.com          FADWTA               Automatic Data Optimization
     li13rhp.test01.com          FADWTA               Backup Encryption
     li13rhp.test01.com          FADWTA               Basic Compression
     li13rhp.test01.com          FADWTA               Bit-mapped indexes
     li13rhp.test01.com          FADWTA               Block Change Tracking
     


Liste des options utilisées par total
     SQL> break on NAME
     SQL> col NAME for A50
     SQL> select NAME, SELECTED, count(*) from MGMT$DB_OPTIONS group by NAME, SELECTED order by 1, 2 ;
     NAME                                               SELEC   COUNT(*)
     -------------------------------------------------- ----- ----------
     Active Data Guard                                  FALSE         51
                                                        TRUE          12
     Adaptive Execution Plans                           FALSE          9
                                                        TRUE          11
     Advanced Analytics                                 FALSE          9
                                                        TRUE          11
     Advanced Compression                               FALSE         51
                                                        TRUE          12
     ...

     184 ligne(s) s▒lectionn▒e(s).


Répartition des options utilisées par bases
     SQL> select database_name, DETECTED_USAGES from MGMT$DB_FEATUREUSAGE where name = 'Advanced Index Compression' order by 1;
     DATABASE_NAME                  DETECTED_USAGES
     ------------------------------ ---------------
     CTJJDEV                                     0
     JJ9PROD                                      0
     MAELDDD                                      0
     ...

     30 ligne(s) s▒lectionn▒e(s).


Répartition des options par utilisation
     SQL> select name, min(DETECTED_USAGES), max(DETECTED_USAGES) from MGMT$DB_FEATUREUSAGE group by name order by name;
     NAME                                                    MIN(DETECTED_USAGES) MAX(DETECTED_USAGES)
     ------------------------------------------------------- -------------------- --------------------
     Active Data Guard - Real-Time Query on Physical Standby                    0                    0
     Adaptive Plans                                                             0                  143
     ADDM                                                                       0                    1
     Advanced Index Compression                                                 0                    0
     Advanced Replication                                                       0                    0
     Advanced Security                                                          0                    0
     ...

     248 ligne(s) s▒lectionn▒e(s).


Répartition des options utilisées par base
     SQL> select database_name, name, DETECTED_USAGES from MGMT$DB_FEATUREUSAGE where DETECTED_USAGES > 0 order by database_name, name;
     DATABASE_NAME             NAME                         DETECTED_USAGES
     -------------------------------------------------------------------------------------------
     
     SHERPII                        Automatic SGA Tuning                       244
     SHERPII                        Automatic SQL Execution Memory             244
     SHERPII                        Automatic Undo Management                  244
     SHERPII                        Character Set                              244
     


============================================================================================
Autres audits
============================================================================================
Pour ces autres audits, nous utiliserons les vues suivantes : 
          - MGMT$TARGET
          - MGMT$AVAILABILITY_HISTORY

Répartition des targets par type
     SQL> select TARGET_TYPE, count(*) from mgmt$target group by TARGET_TYPE  order by 1;
     TARGET_TYPE                                                        COUNT(*)
     ---------------------------------------------------------------- ----------
     composite                                                                 4
     host                                                                     21
     j2ee_application                                                          3
     metadata_repository                                                       2
     oracle_apache                                                             1
     oracle_apm                                                                1
     oracle_beacon                                                             1
     oracle_database                                                         109
     oracle_dbsys                                                            109
     oracle_emd                                                               21
     oracle_emrep                                                              1
     oracle_em_service                                                         2
     oracle_home                                                              38
     oracle_ias_farm                                                           1
     oracle_listener                                                          10
     oracle_oms                                                                1
     oracle_oms_console                                                        1
     oracle_oms_pbs                                                            1
     weblogic_domain                                                           1
     weblogic_j2eeserver                                                       2

     20 ligne(s) selectionnee(s).


Identifier les metrics les plus anciennes et voir si une purge est nécessaire
     SQL> select to_char(START_TIMESTAMP, 'DD/MM/YYYY HH24 :MI :SS'), AVAILABILITY_STATUS from MGMT$AVAILABILITY_HISTORY where target_type = 'oracle_database' and target_name = 'GFFSXX' order by START_TIMESTAMP;
     TO_CHAR(START_TIMESTA AVAILABILITY_STATUS
     --------------------- --------------------
     08/09/2014 00 :00 :00 Pending/Unknown
     10/10/2014 10 :49 :23 Target Up
     10/10/2014 19 :05 :53 Target Down
     11/10/2014 06 :12 :31 Target Up
     11/10/2014 19 :05 :50 Target Down
     12/10/2014 06 :12 :03 Target Up
     13/10/2014 19 :05 :58 Target Down


Publicité
Publicité
Commentaires
Blog d'un DBA sur le SGBD Oracle et SQL
Publicité
Archives
Blog d'un DBA sur le SGBD Oracle et SQL
  • Blog d'un administrateur de bases de données Oracle sur le SGBD Oracle et sur les langages SQL et PL/SQL. Mon objectif est de vous faire découvrir des subtilités de ce logiciel, des astuces, voir même des surprises :-)
  • Accueil du blog
  • Créer un blog avec CanalBlog
Visiteurs
Depuis la création 340 848
Publicité