Oracle

Admin

Les requêtes coté admin oracle.

adaptez les requetes si vous etes en RAC pour utiliser les gv$session, ….

Lister les sessions générant actuellement le plus de redo log

connecté en sysdba :

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 ;

Connaître l'utilisation des différents tablespaces

connecté en sysdba :

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 ;

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 ;-)

Pour exporter le resultat d'une requête oracle en fichier csv (séparé par des ;) :

  • il faut modifier la requete source :
    select column1, column2, column3
    from MYVIEW
    WHERE MYCONDITIONS;

    qui devient (replacement des , entre champs par “||';'||”):

    select column1||';'||column2||';'||column3
    from MYVIEW
    WHERE MYCONDITIONS;
  • Enregistrons donc cette requête dans le fichier /tmp/requete.sql
  • Admettons qu'on veuille exporter le resultat dans /tmp/resultat.csv , Il faut se connecter avec sqlplus et taper les commandes suivantes :
    set pagesize 5000
    set linesize 200
    spool /tmp/resultat.csv
    @/tmp/requete.sql
    spool off;
Remarquez les mots clef “SPOOL $filename” et “SPOOL off” pour débuter puis mettre fin a la redirection de la sortie dans le fichier csv
adaptez le linesize pour avoir des lignes plus longues si vous en avez besoin

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 :

set pages 0
set long 999999
select dbms_metadata.get_ddl('TABLE', '$TABLE_NAME', '$SCHEMA_NAME') from dual;
cette requete peut etre abrégée en
select dbms_metadata.get_ddl('TABLE', '$TABLE_NAME') from dual ; 

sur une table du schéma courant

Afficher le temps de traitement de chaque requete avec sqlplus

Il faut utiliser :

set timing on

comme par exemple dans l'exemple suivant :

SQL> set timing on
SQL> select * from dual ;

D
-
X

Elapsed: 00:00:00.05

Limiter le nombre de resultats renvoyés par une requete

L'equivalent MySQL de

select col from tbl limit 20;

est

select col from tbl where rownum<=20;
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 :
select * from (select col from tbl order by moncul asc) where rownum<=20;

Lister les tables

  • Lister les tables du schéma de l'utilisateur courant :
    SELECT table_name FROM user_tables;
  • Lister les tables accessibles par l'utilisateur :
    SELECT table_name FROM all_tables;
  • Lister toutes les tables (il faut être admin/sysdba) :
    SELECT table_name FROM dba_tables; 

Changer le format de date utilisé pour la session courante

pour changer temporairement le format de date pour la session actuelle :

alter session set nls_date_format = 'dd/mm/yyyy HH24:MI:SS';
sysadmin/tips/oracle.txt · Dernière modification: 2015/01/09 11:39 par james
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0