Collected posts: Oracle, SQL, PL/SQL, Performance, Security...(More than 300 blogs)

vendredi 30 novembre 2012

HISTORY OF ASH VIEWS


VIEW_NAME

DBA_HIST_ACTIVE_SESS_HISTORY : DBA_HIST_ACTIVE_SESS_HISTORY displays the history of the contents of the in-memory active session history of recent system activity. This view contains snapshots of V$ACTIVE_SESSION_HISTORY. See "V$ACTIVE_SESSION_HISTORY" for further interpretation details for many of these columns (except SNAP_ID,DBID, and INSTANCE_NUMBER).
DBA_HIST_BASELINE : 
DBA_HIST_BASELINE displays information on baselines taken in the system. For each baseline, this view displays the complete time range and whether the baseline is the default baseline.
DBA_HIST_BG_EVENT_SUMMARY 
:DBA_HIST_BG_EVENT_SUMMARY displays the historical summary background event activity. This view contains snapshots from V$SESSION_EVENT.
DBA_HIST_BUFFERED_QUEUES
DBA_HIST_BUFFERED_SUBSCRIBERS
DBA_HIST_BUFFER_POOL_STAT
DBA_HIST_COMP_IOSTAT
DBA_HIST_CR_BLOCK_SERVER
DBA_HIST_CURRENT_BLOCK_SERVER
DBA_HIST_DATABASE_INSTANCE
DBA_HIST_DATAFILE
DBA_HIST_DB_CACHE_ADVICE :DBA_HIST_DB_CACHE_ADVICE displays historical predictions of the number of physical reads for the cache size corresponding to each row. This view contains snapshots of V$DB_CACHE_ADVICE.
DBA_HIST_DLM_MISC
DBA_HIST_ENQUEUE_STAT
DBA_HIST_EVENT_NAME
DBA_HIST_FILEMETRIC_HISTORY
DBA_HIST_FILESTATXS
DBA_HIST_INSTANCE_RECOVERY
DBA_HIST_INST_CACHE_TRANSFER
DBA_HIST_JAVA_POOL_ADVICE
DBA_HIST_LATCH
DBA_HIST_LATCH_CHILDREN
DBA_HIST_LATCH_MISSES_SUMMARY
DBA_HIST_LATCH_NAME
DBA_HIST_LATCH_PARENT
DBA_HIST_LIBRARYCACHE
DBA_HIST_LOG
DBA_HIST_METRIC_NAME
DBA_HIST_MTTR_TARGET_ADVICE
DBA_HIST_OPTIMIZER_ENV
DBA_HIST_OSSTAT
DBA_HIST_OSSTAT_NAME
DBA_HIST_PARAMETER
DBA_HIST_PARAMETER_NAME
DBA_HIST_PGASTAT
DBA_HIST_PGA_TARGET_ADVICE
DBA_HIST_PROCESS_MEM_SUMMARY
DBA_HIST_RESOURCE_LIMIT
DBA_HIST_ROWCACHE_SUMMARY
DBA_HIST_RULE_SET
DBA_HIST_SEG_STAT
DBA_HIST_SEG_STAT_OBJ
DBA_HIST_SERVICE_NAME
DBA_HIST_SERVICE_STAT
DBA_HIST_SERVICE_WAIT_CLASS
DBA_HIST_SESSMETRIC_HISTORY
DBA_HIST_SESS_TIME_STATS
DBA_HIST_SGA
DBA_HIST_SGASTAT
DBA_HIST_SGA_TARGET_ADVICE
DBA_HIST_SHARED_POOL_ADVICE
DBA_HIST_SNAPSHOT
DBA_HIST_SNAP_ERROR
DBA_HIST_SQLBIND
DBA_HIST_SQLSTAT
DBA_HIST_SQLTEXT
DBA_HIST_SQL_BIND_METADATA
DBA_HIST_SQL_PLAN
DBA_HIST_SQL_SUMMARY
DBA_HIST_SQL_WORKAREA_HSTGRM
DBA_HIST_STAT_NAME
DBA_HIST_STREAMS_APPLY_SUM
DBA_HIST_STREAMS_CAPTURE
DBA_HIST_STREAMS_POOL_ADVICE
DBA_HIST_SYSMETRIC_HISTORY
DBA_HIST_SYSMETRIC_SUMMARY
DBA_HIST_SYSSTAT
DBA_HIST_SYSTEM_EVENT
DBA_HIST_SYS_TIME_MODEL
DBA_HIST_TABLESPACE_STAT
DBA_HIST_TBSPC_SPACE_USAGE
DBA_HIST_TEMPFILE
DBA_HIST_TEMPSTATXS
DBA_HIST_THREAD
DBA_HIST_UNDOSTAT
DBA_HIST_WAITCLASSMET_HISTORY
DBA_HIST_WAITSTAT
DBA_HIST_WR_CONTROL

mercredi 17 octobre 2012

Oracle events : cursor: pin S wait on X & ORA-04030

Dernièrement j'ai rencontré un problème de performance lié à une requête d'insert , lors de l’exécution de cette requête par plusieurs sessions en même temps un de programme se termine en erreur
ORA-12801: error signaled in parallel query server P077ORA-04030: out of process memory when trying to allocate 44452 bytes                                     (initSubHeap:qk,travElemP:qkspmTravCreate) 

L'insert dans la table se fait à partir d'une vue oracle qu'est basé sur d'autres vues oracles avec plusieurs jointures avec d'autres tables.

J'ai constaté la présence de l’évènement cursor: pin S wait on X    parmi les Top 5 Timed Foreground Events
 Top 5 Timed Foreground Events~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                              Avg                              wait   % DBEvent                                 Waits     Time(s)   (ms)   time Wait Class------------------------------ ------------ ----------- ------ ------ ----------DB CPU                                            1,980          51.8db file sequential read             407,338         388      1   10.1 User I/Ocursor: pin S wait on X                 444         304    686    8.0 Concurrencdb file scattered read                8,748         103     12    2.7 User I/Oenq: TX - row lock contention             9          50   5587    1.3 Applicatio


Ma requête est présente dans le bloc SQL ordered by Sharable Memory  dans le report AWR:

SQL ordered by Sharable Memory           
Sharable Mem (b)  Executions   % Total    SQL Id---------------- ------------ -------- -------------       7,388,523            1     0.88 cd1777r7db2kcModule: PPXMINSERT INTO MYTABLE
       5,541,891            1     0.66 4chckmq1yu1vdModule: PPXMINSERT INTO MYTABLE
       5,541,855            1     0.66 0nfd6dkqsfwpwModule: PPXMINSERT INTO MYTABLE
       5,541,851            1     0.66 5yu5smgshjttsModule: PPXMINSERT INTO MYTABLE
 

Suite à une analyse de ce deux éléments, j'ai constaté que ce problème est lié hard + soft parse de requête.
Le serveur ne supporte plus la charge en mémoire. 

La requête prend toujours le même plan d’exécution (le bon plan). 

J'ai utilisé des bind variables et ça résout le problème : le même sql_id est utilisé par les différents programmes qui font appel à cette requête. La variable dans la requête est le numéro de session.       









mercredi 25 juillet 2012

dbms_xplan.display_cursor & User has no SELECT privilege on V$SESSION

Lors de l’essai de récupération de plan d’exécution d'une requête j'ai reçu le message d’erreur suivant:

SQL> select * from table(dbms_xplan.display_cursor(null));
PLAN_TABLE_OUTPUT
------------------------------------------------------------
User has no SELECT privilege on V$SESSION


Il manque le privilège select sur certaines vues Oralce:
SQL> grant select on v_$session to hr;
Autorisation de privilèges (GRANT) acceptée.
SQL> grant select on v_$sql_plan to hr;
Autorisation de privilèges (GRANT) acceptée.
SQL> grant select on v_$sql to hr;
Autorisation de privilèges (GRANT) acceptée.










mardi 26 juin 2012

ORA-20000: ORU-10027: buffer overflow, limit of 10000 bytes



Dernierement lors de l’exécution d'un bloc PL/SQL sous PL/SQL developer j'ai reçu l'erreur oracle suivante : ORA-20000: ORU-10027: buffer overflow, limit of 10000 bytes.

Dans mon bloc PL/SQL, j'utilise la fonction DBMS_OUTPUT.put_line pour afficher des données.


Pour résoudre le problème il suffit juste d'ajouter DBMS_OUTPUT.ENABLE(1000000); juste avant l'appel de fonction DBMS_OUTPUT.put_line


declare   -- Local variables here
  i integer;
begin
  DBMS_OUTPUT.ENABLE(1000000);
  -- Test statements here  for i in 1..1000 loop
    ------  end loop;
end; 

Pour résoudre ce problème si vous êtes sous SQLplus il suffit  juste d'ajouter
d’exécuter cette commande  set serveroutput on size 1000000

jeudi 24 mai 2012

ORA-01453: SET TRANSACTION doit être la première instruction de la transaction

En essayant de d’exécuter ce bout de code sous PL/SQL developer, ça passe lors de première exécution mais lors de deuxième exécution j'ai reçu l'erreur oracle ORA-01453:
declare
  -- Local variables here
  i integer;
begin
set transaction read only;
/*
----
*/
end;

Vous devriez vous reconnecter pour re-exécuter ce code. Il y a une autre solution qui consiste à ajouter un commit ou rollback à fin de bloc en fonction de vos besoins.

declare
  -- Local variables here
  i integer;
begin
set transaction read only;
/*
----
*/  

commit;
-- or Rollback;
end;

vendredi 27 avril 2012

PLS-00999: restriction d'implémentation (peut-être temporaire) RESULT_CACHE is disallowed on subprograms with RETURN parameter of (or containing) object type


J'ai essayé de profiter de la nouvelle fonctionnalité d'oracle 11G, function result cache.

Mais ça n'a pas marché parce que ma fonction renvoie un type object.

CREATE OR REPLACE FUNCTION GET_CLIENT_INFO_cache(pidint in client.idint%type)return client_obj RESULT_CACHE isresult  client_obj ;
beginresult := client_obj (null,null,null,null,null,null, null,null);/*  code*/  return result;END  GET_CLIENT_INFO_cache ;


Compilation errors for FUNCTION GET_ CLIENT _INFO_CACHE  Error: PLS-00999: restriction d'implémentation (peut-être temporaire) RESULT_CACHE is disallowed on subprograms with RETURN parameter of (or containing) object type 
La solution est de créer des fonctions ayant comme retour des types simples.