Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
|
sysadmin:tips:oracle [2012/08/02 17:31] james modif pagination |
sysadmin:tips:oracle [2015/01/09 11:39] (Version actuelle) james ajout tags |
||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | {{tag>astuces comandes oracle bdd admin redo log taille lister session utilisation tablespace sqlplus export_csv creation_table schema}} | ||
| ====== Oracle ====== | ====== Oracle ====== | ||
| + | ===== Admin ===== | ||
| + | Les requêtes coté admin oracle. | ||
| - | ===== Export CSV sous oracle avec sqlplus ===== | + | <note>adaptez les requetes si vous etes en RAC pour utiliser les gv$session, ....</note> |
| + | ==== Lister les sessions générant actuellement le plus de redo log ==== | ||
| + | connecté en sysdba : | ||
| + | <code>select s.sid, sn.serial#, sn.machine, n.name, s.value, sn.username, sn.program, sn.type, sn.module | ||
| + | from v$sesstat s | ||
| + | join v$statname n on n.statistic# = s.statistic# | ||
| + | join v$session sn on sn.sid = s.sid | ||
| + | where name like '%redo entries%' | ||
| + | order by value desc ;</code> | ||
| + | |||
| + | ==== Connaître l'utilisation des différents tablespaces ==== | ||
| + | |||
| + | connecté en sysdba :<code> | ||
| + | select a.tablespace_name, b.free,a.total,round((a.used-b.free)/a.total * 100,2) prc | ||
| + | from ( | ||
| + | select tablespace_name,sum(bytes) used, sum(maxbytes) total | ||
| + | from dba_data_files group by tablespace_name) A, ( | ||
| + | select tablespace_name,sum(bytes) free | ||
| + | from dba_free_space group by tablespace_name) B | ||
| + | where a.tablespace_name=b.tablespace_name ; | ||
| + | </code> | ||
| + | utilisable dans un plugin munin pour grapher le pourcentage d'utilisation par exemple | ||
| + | |||
| + | ===== Utilisateur ===== | ||
| + | |||
| + | ==== Export CSV sous oracle avec sqlplus ==== | ||
| De base on ne peut pas exporter en CSV ;-) | De base on ne peut pas exporter en CSV ;-) | ||
| Ligne 26: | Ligne 54: | ||
| <note>adaptez le linesize pour avoir des lignes plus longues si vous en avez besoin</note> | <note>adaptez le linesize pour avoir des lignes plus longues si vous en avez besoin</note> | ||
| - | ===== Afficher la requête de creation de table ===== | + | ==== Afficher la requête de creation de table ==== |
| Voici l'equivalent SQLplus du "SHOW CREATE TABLE" MySQL, en remplaçant $TABLE_NAME et $SCHEMA_NAME par les valeurs souhaitées :<code> | Voici l'equivalent SQLplus du "SHOW CREATE TABLE" MySQL, en remplaçant $TABLE_NAME et $SCHEMA_NAME par les valeurs souhaitées :<code> | ||
| set pages 0 | set pages 0 | ||
| Ligne 33: | Ligne 61: | ||
| <note> cette requete peut etre abrégée en <code>select dbms_metadata.get_ddl('TABLE', '$TABLE_NAME') from dual ; </code> sur une table du schéma courant</note> | <note> cette requete peut etre abrégée en <code>select dbms_metadata.get_ddl('TABLE', '$TABLE_NAME') from dual ; </code> sur une table du schéma courant</note> | ||
| + | |||
| + | ==== Afficher le temps de traitement de chaque requete avec sqlplus ==== | ||
| + | Il faut utiliser :<code>set timing on</code> | ||
| + | comme par exemple dans l'exemple suivant : | ||
| + | <code>SQL> set timing on | ||
| + | SQL> select * from dual ; | ||
| + | |||
| + | D | ||
| + | - | ||
| + | X | ||
| + | |||
| + | Elapsed: 00:00:00.05 | ||
| + | </code> | ||
| + | |||
| + | ==== Limiter le nombre de resultats renvoyés par une requete ==== | ||
| + | L'equivalent MySQL de <code>select col from tbl limit 20;</code> est <code>select col from tbl where rownum<=20;</code> | ||
| + | <note> Bien entendu, Oracle sait faire les choses simplement, donc pour faire un _order by_ sur la table, mais pas que sur les 20 résultats réclamés, et bien, on est bien obligé de faire CA : <code>select * from (select col from tbl order by moncul asc) where rownum<=20;</code> | ||
| + | </note> | ||
| + | |||
| + | ==== Lister les tables ==== | ||
| + | |||
| + | * Lister les tables du schéma de l'utilisateur courant :<code>SELECT table_name FROM user_tables;</code> | ||
| + | * Lister les tables accessibles par l'utilisateur :<code>SELECT table_name FROM all_tables;</code> | ||
| + | * Lister toutes les tables (il faut être admin/sysdba) : <code>SELECT table_name FROM dba_tables; </code> | ||
| + | |||
| + | ==== Changer le format de date utilisé pour la session courante ==== | ||
| + | pour changer temporairement le format de date pour la session actuelle : <code>alter session set nls_date_format = 'dd/mm/yyyy HH24:MI:SS';</code> | ||