FAQ OracleConsultez toutes les FAQ
Nombre d'auteurs : 17, nombre de questions : 139, dernière mise à jour : 30 mai 2016 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.
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 : | Sélectionner tout |
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 |
À 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 : | Sélectionner tout |
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 |
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 : | Sélectionner tout |
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; |
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 : | Sélectionner tout |
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 |
- Numéros de sessions
- Opération
- Travail effectué
- Travail total
- Temps restant
Code sql : | Sélectionner tout |
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 |
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 : | Sélectionner tout |
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' ; |
Code sql : | Sélectionner tout |
ALTER TABLE TABLE_NAME STORAGE (BUFFER_POOL KEEP) ;
Code sql : | Sélectionner tout |
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 |
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 çaLes 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 © 2024 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.