FAQ OracleConsultez toutes les FAQ

Nombre d'auteurs : 15, nombre de questions : 137, dernière mise à jour : 26 octobre 2006  Ajouter une question

 

Cette F.A.Q. a été réalisée à partir des questions fréquemment posées sur le forum Oracle de www.developpez.com et de l'expérience personnelle des auteurs. Elle pourra traiter de tout type de questions portant sur les technologies Oracle.

Nous espérons que cette F.A.Q. saura répondre à un maximum de vos questions. Nous vous souhaitons une bonne lecture.

L'équipe Oracle de Developpez.


SommaireAdministrationObjets (5)
précédent sommaire suivant
 

La requête suivante nous permet de lister les objets invalides, avec les informations suivantes :

  • Schéma
  • Type d'objet
  • Date de création
  • Date de dernière modification/compilation

Code sql :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT OWNER, 
       OBJECT_TYPE, 
       OBJECT_NAME, 
       CREATED, 
       LAST_DDL_TIME 
  FROM DBA_OBJECTS 
 WHERE STATUS='INVALID' 
 ORDER BY OWNER, OBJECT_NAME; 
  
OWNER  OBJECT_TYPE OBJECT_NAME          CREATED    LAST_DDL_T 
------ ----------- -------------------- ---------- ---------- 
PUBLIC SYNONYM     DBA_HIST_FILESTATXS  2006-04-18 2006-06-13 
PUBLIC SYNONYM     DBA_HIST_SQLBIND     2006-04-18 2006-06-13 
PUBLIC SYNONYM     DBA_HIST_SQLSTAT     2006-04-18 2006-06-13

Mis à jour le 18 septembre 2006 laurentschneider

À partir de la version 10g, la requête suivante permet de lister les objets dans la poubelle, avec les propriétés suivantes :

  • Nom du tablespace
  • Type d'objet
  • Propriétaire
  • Nom original
  • Nom BIN$
  • SCN
  • Date de création
  • Date d'effacement des objets dans la poubelle (Recycle bin)

Code sql :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT 
       TS_NAME, 
       TYPE, 
       OWNER, 
       ORIGINAL_NAME, 
       OBJECT_NAME, 
       DROPSCN, 
       CREATETIME, 
       DROPTIME 
  FROM dba_recyclebin 
 ORDER BY owner, type, original_name, dropSCN; 
  
TS_NAME TYPE  OWNER ORIG OBJECT_NAME                       DROPSCN CREATETIME   DROPTIME 
------- ----- ----- ---- ------------------------------ ---------- ---------- ---------- 
USERS   TABLE SCOTT T    BIN$F22M89kvcArgQwow5W1wCg==$0    3537036 2006-06-30 2006-06-30

Mis à jour le 18 septembre 2006 laurentschneider

La requête suivante nous permet de lister les jobs, avec les caractéristiques suivantes :

  • Schéma
  • Numéro du job
  • Date de prochaine exécution
  • Code des jobs

Code sql :
1
2
3
4
5
6
7
8
9
SELECT SCHEMA_USER, 
       JOB,  
       NEXT_DATE, 
       WHAT 
  FROM DBA_JOBS; 
  
SCHEMA JOB NEXT_DATE  WHAT 
------ --- ---------- -------- 
SYS      1 2006-07-01 scott.p;

Mis à jour le 18 septembre 2006 laurentschneider

La requête suivante permet de lister les sessions, avec les propriétés suivantes :

  • Utilisateur DB
  • Utilisateur SE
  • SID
  • SERIAL#
  • Processus OS
  • Type de serveur
  • Status
  • Machine cliente
  • Programme
  • Heure du login
  • Nom du dispatcher
  • Nom du shared server

Code sql :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
SELECT s.USERNAME, 
       s.OSUSER, 
       s.SID, 
       s.SERIAL#, 
       p.SPID, 
       s.SERVER, 
       s.STATUS, 
       s.MACHINE, 
       s.PROGRAM, 
       TO_CHAR(s.LOGON_TIME, 'hh24:mi:ss') LOGON_TIME, 
       d.name DISP, 
       ss.name SERV 
  FROM V$PROCESS p,  
       V$SESSION s, 
       V$DISPATCHER d,  
       V$CIRCUIT c, 
       V$SHARED_SERVER ss 
 WHERE p.ADDR = s.PADDR 
   AND s.SADDR=c.SADDR (+)  
   AND c.DISPATCHER=d.PADDR (+) 
   AND c.SERVER=ss.PADDR (+) 
   AND s.USERNAME IS NOT NULL 
 ORDER BY s.USERNAME, p.SPID; 
  
USERNAME OSUSER  SID SERIAL# SPID         SERVER    STATUS   MACHINE   PROGRAM LOGON DISP SERV 
-------- ------ ---- ------- ------------ --------- -------- --------- ------- ----- ---- ---- 
DBSNMP   oracle  129      31 2465846      SHARED    ACTIVE   pclsc01   emagent 06:17 D000 S003 
DBSNMP   oracle  122       6 2728088      NONE      INACTIVE pclsc01   emagent 06:17 D000 
SYS      oracle  113    2669 2920628      DEDICATED ACTIVE   pclsc01   sqlplus 10:38
Concernant les "longues opérations", la requête suivante vous permettra d'obtenir :

  • Numéros de sessions
  • Opération
  • Travail effectué
  • Travail total
  • Temps restant

Code sql :
1
2
3
4
5
6
7
8
9
10
11
12
SELECT SID,  
       SERIAL#,  
       OPNAME,  
       SOFAR,  
       TOTALWORK,  
       TIME_REMAINING 
  FROM V$SESSION_LONGOPS 
 WHERE TIME_REMAINING != 0; 
  
  SID SERIAL# OPNAME                       SOFAR  TOTAL TIME_REM 
----- ------- --------------------------- ------ ------ -------- 
  120    4001 RMAN: full datafile backup   33692  66496       76

Mis à jour le 18 septembre 2006 laurentschneider

Depuis la version 8, le BUFFER CACHE est divisé en plusieurs segments : DEFAULT, KEEP et RECYCLE.

Contrairement à ce que leurs noms peuvent laisser penser, ils sont gérés tous les 3 exactement de la même façon, par les même règles LRU (Last Recently Used).

En général, on utilise le buffer KEEP pour y stocker les blocs des tables que l'on interroge souvent; et le buffer RECYCLE pour des données plus volatiles.

Par exemple, si on a une table de REFERENCE, une table de COMMANDES et une table IMAGE_PRODUIT, on aura intérêt à répartir les tables de la façon suivante :

  • COMMANDES sur le buffer pool DEFAULT
  • REFERENCE dans le buffer pool KEEP
  • IMAGE_PRODUIT dans le buffer pool RECYCLE

En effet, si l'on interroge l'image (volume important), cela va nécessiter de sortir du pool de nombreux blocs de REFERENCE qu'il faudra recharger ultérieurement alors que les blocs de l'image auront très peu de chance de resservir...

Les noms des buffers pools ne sont qu'une astuce mnémotechnique, car ils pourraient très bien s'appeller A, B et C, cela ne changerait rien !

Remarque : depuis la 9i, il est possible de définir des buffer pools de taille de bloc différente (db_nk_cache_size) mais les buffer KEEP et RECYCLE auront forcément comme taille de bloc la taille DEFAULT.
Donc, on a 3 pools de taille par défault et jusqu'à 4 buffers de taille différente, ce qui fait 7 zones buffers indépendantes au maximum ! (mais je vous déconseille vivement d'implémenter un tel système, ça deviendra impossible à administrer/tuner !)

La requête est la suivante :

Code sql :
1
2
3
4
5
6
7
8
9
col object_type format a10 
col object_name format a20 
  
SELECT dba_objects.owner,object_name,object_type,object_type  
  FROM dba_objects, dba_indexes,dba_tables  
 WHERE dba_objects.object_name = dba_indexes.index_name 
   AND dba_objects.object_name = dba_tables.table_name 
   AND dba_tables.buffer_pool = 'KEEP'  
   AND dba_indexes.buffer_pool = 'KEEP' ;
Comment "Keeper" une table en mémoire :

Code sql :
ALTER TABLE TABLE_NAME STORAGE (BUFFER_POOL KEEP) ;
Attention : avec les multiples buffers pools, il n'est plus possible de monitorer les ratios par la vue habituellement utilisée (v$SysStat) mais Oracle a implémenté la vue v$Buffer_Pool_Statistics :

Code sql :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
SQL> SELECT Name, Block_size, Round(100*(CONSISTENT_GETS+DB_BLOCK_GETS-PHYSICAL_READS)/(CONSISTENT_GETS+DB_BLOCK_GETS) ,2)  
  2      AS HitRatio 
  3    FROM v$buffer_pool_statistics; 
NAME                 BLOCK_SIZE   HITRATIO 
-------------------- ---------- ---------- 
DEFAULT                    8192      97.77 
  
  
SQL> ALTER system SET db_keep_cache_size=50M scope=SPFILE; 
  
/* ARRET / RELANCE DE LA BASE */  
  
SQL> CREATE TABLE toto (col1 varchar2(30) ) storage (buffer_pool keep); 
  
TABLE created. 
  
SQL> SELECT Name, Block_size, Round(100*(CONSISTENT_GETS+DB_BLOCK_GETS-PHYSICAL_READS)/(CONSISTENT_GETS+DB_BLOCK_GETS) ,2)  
  2      AS HitRatio 
  3    FROM v$buffer_pool_statistics;   
  
NAME                 BLOCK_SIZE   HITRATIO 
-------------------- ---------- ---------- 
KEEP                       8192        100 
DEFAULT                    8192      89.57

Mis à jour le 18 septembre 2006 Jaouad LeoAnderson

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2014 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
 
 
 
Partenaires

PlanetHoster
Ikoula