Ok

En poursuivant votre navigation sur ce site, vous acceptez l'utilisation de cookies. Ces derniers assurent le bon fonctionnement de nos services. En savoir plus.

Professionnel - Page 5

  • backup

    # Backup script starts here.
    set -x
    #!/bin/bash
    # Location of the backup logfile.
    DEST=/export/BD/dump/postgres
    NAME=dec
    CLU_NAME=DOUX
    HOSTNAME=toto
    # Location to place backups.
    backup_dir="$DEST/$CLU_NAME"
    logfile="$backup_dir/logfile.log"
    touch $logfile
    timeslot=`date +%H-%M`
    databases=`psql -h /var/run/postgresqlcluster$NAME -p 5435 postgres -q -c "l" | sed -n 4,/eof/p | grep -v lignes) | awk {'print $1'} | grep -v template| grep -v "|"`
    TO_C="unix@lulu.fr"
    date > $logfile
    hostname >> $logfile
    for i in $databases; do
        echo "DATABASE $i" >> $logfile
            timeinfo=`date '+%T %x'`
            echo "Backup and Vacuum complete at $timeinfo for time slot $timeslot on database: $i " >> $logfile
        /usr/bin/vacuumdb -z -h/var/run/postgresqlcluster$NAME -p 5435 -U s-cad-postgresdec $i >/dev/null 2>&1
            /usr/bin/pg_dump $i -h /var/run/postgresqlcluster$NAME -p 5435  | gzip > "$backup_dir/postgresql-$i-$timeslot-database.gz"
        echo "taille $databases" >> $logfile
        du -hs $backup_dir/postgresql-$i-$timeslot-database.gz >> $logfile
        echo "" >> $logfile
    done
    echo "Bonjour,nn DUMP BASE POSTGRES$NAME sur le serveur $HOSTNAME. nnL'équipe Unix & Linux" | mutt -x -s "DUMP BASE DUMP POSTGRES$NAME" -a ${logfile} -c ${TO_C}

  • last access table oracle

    select a.obj#,a.table_scans_delta,b.object_name,b.owner,b.object_type 
    from dba_hist_seg_stat a, dba_objects b
    where a.obj# = b.object_id
    and   b.owner like 'USERNAME%'
    order by table_scans_total desc

  • Scripts de vérification des produits soumis à licence Oracle

    Le script suivant permet de donner des infos sur ce qui a été utilisé comme produits soumis à licence sous Oracle.

    options_packs_usage_statistics.sql

     

     

    Lire la suite

  • Déclaration d'activité des formateurs ou organismes de formation

    Déclaration en ligne : https://www.service-public.fr/professionnels-entreprises/vosdroits/F19087

  • Erreur EXP-00008, ORA-04063, ORA-06508, EXP-00083 PL/SQL: could not find program unit being called: "WMSYS.LTUTIL"

    Alors lorsque je faisais un export classique avec exp, j'avais cette erreur là :

     

    EXP-00008, ORA-04063, ORA-06508, EXP-00083 PL/SQL: could not find program unit being called: "WMSYS.LTUTIL"

     

    Je suis tombé sur cette page :

     

    http://olashowunmi.blogspot.fr/2015/06/exp-00008-ora-04063-ora-06508-exp-00083.html

     

    Qui ne m'a pas aidé.

     

    Par contre en cherchant bien je suis tombé sur ça :

     

    http://surachartopun.com/2009/11/invalid-objects-on-sys-and-ora-04063.html

     

    et cela a résolu, mon pb.

  • Trouver les gros fichiers {UNIX}

    Trouver les 10 fichiers les + volumineux :

    find . -printf '%s %pn'| sort -nr | head -10

    Liste tous les fichiers qui ont une taille supérieure à 100Mo

    find . -xdev -type f -size +100M
     

    Lire la suite

  • Insertion de données en masse dans une table oracle via un script python

    File='fichier.csv'

    FileOut='commandes.sql'



    f = open(File, 'r')

    fout=open(FileOut,'w')

    f.readline() #saute la premiere ligne

    for line in f:

       time=line.split(";")[0].strip()

       temp=line.split(";")[1].strip()

       commande = "UPDATE TABLE SET COLUMN = '%s' WHERE COL1='xxxxxxxxx' and COL2 = 'xxxxxx' and COL3 = '%s' ; n" % (temp,time)

       fout.write(commande)

     

     

    le fichier csv contient deux colonnes, une colonne temps et une colonne time.

  • 'orm-default' et 'orm-alternative' (Doctrine)

    Doctrine peut utiliser plusieurs bases de données ou même plusieurs SGBD différents .Les connexions 'orm-default' et 'orm-alternative' sont uniquement des noms de configuration de connexion.
    Dans l'application C3, la connexion 'orm-default' est utilisée pour le mode consultation. L'utilisateur du SGBD associé à ce profil n'a que les droits pour effectuer des requête de type 'select'.
    Après avoir cliqué sur le bouton "Connexion" de la page d'identification, l'application effectue les vérification suivantes :  
    •    Tentative de connexion à la BDD en utilisant la configuration 'orm-alternative' et le nom et le mot de passe entrés par l'utilisateur (Controller/IndexController.php lignes 44 à 49)
    •    En cas de succès, vérification des droits de l'utilisateur (lignes 70 à 81)
    •    Si l'utilisateur peut exécuter les requêtes de type 'delete', 'insert', 'update' et 'select' (ligne 84), la connexion 'orm-alternative' reste ouverte. Dans le cas contraire, la connexion est fermée (ligne 87).

  • Automatiser la différence entre deux fichiers

    Par exemple on exporte toutes les jours les schémas DDL oracle

    et un utilisateur non averti modifie la structure de son schéma.

    Il faut pouvoir être capable de voir à l'instant t la différence de structure.

     

    Il est donc possible d'automatiser la vérification du DDL des schémas.

    https://www.techrepublic.com/blog/linux-and-open-source/how-to-compare-the-content-of-two-or-more-directories-automatically/

  • Comment supprimer les jobs datapumps en defunct

    1. First we need to identify which jobs are in NOT RUNNING status. For this, we need to use below query (basically we are getting this info from dba_datapump_jobs)

    SET lines 200

    SELECT owner_name, job_name, operation, job_mode,
    state, attached_sessions
    FROM dba_datapump_jobs
    ORDER BY 1,2;

    The above query will give the datapump jobs information and it will look like below

    OWNER_NAME JOB_NAME            OPERATION JOB_MODE  STATE       ATTACHED
    ———- ——————- ——— ——— ———– ——–
    SCOTT      SYS_EXPORT_TABLE_01 EXPORT    TABLE     NOT RUNNING        0
    SCOTT      SYS_EXPORT_TABLE_02 EXPORT    TABLE     NOT RUNNING        0
    SYSTEM     SYS_EXPORT_FULL_01  EXPORT    FULL      NOT RUNNING        0

    In the above output, you can see state is showing as NOT RUNNING and those jobs need to be removed.

    Note: Please note that jobs state will be showing as NOT RUNNING even if a user wantedly stopped it. So before taking any action, consult the user and get confirmed

    2. we need to now identify the master tables which are created for these jobs. It can be done as follows

     

    SELECT o.status, o.object_id, o.object_type, o.owner||'.'||object_name "OWNER.OBJECT" FROM dba_objects o, dba_datapump_jobs j WHERE o.owner=j.owner_name AND o.object_name=j.job_name AND j.job_name NOT LIKE 'BIN$%' ORDER BY 4,2

     

    STATUS   OBJECT_ID OBJECT_TYPE  OWNER.OBJECT
    ——- ———- ———— ————————-
    VALID        85283 TABLE        SCOTT.EXPDP_20051121
    VALID        85215 TABLE        SCOTT.SYS_EXPORT_TABLE_02
    VALID        85162 TABLE        SYSTEM.SYS_EXPORT_FULL_01

    3. we need to now drop these master tables in order to cleanup the jobs

    SQL> DROP TABLE SYSTEM.SYS_EXPORT_FULL_01;
    SQL> DROP TABLE SCOTT.SYS_EXPORT_TABLE_02 ;
    SQL> DROP TABLE SCOTT.EXPDP_20051121;

    4. Re-run the query which is used in step 1 to check if still any jobs are showing up. If so, we need to stop the jobs once again using STOP_JOB parameter in expdp or DBMS_DATAPUMP.STOP_JOB package

    Some imp points:

    1. Datapump jobs that are not running doesn’t have any impact on currently executing ones.
    2. When any datapump job (either export or import) is initiated, master and worker processes will be created.
    3. When we terminate export datapump job, master and worker processes will get killed and it doesn’t lead to data courrption.
    4. But when import datapump job is terminated, complete import might not have done as processes(master & worker)  will be killed.

  • Script de sauvegarde Postgres

    Un script réalisé par un DBA (celui que j'ai personnalisé) :

     Backup Postgres

     

    Un autre script réalisé par un autre DBA :

    pg_back le script de base pour sauvegarder PostgreSQL

     

    Il y a fort longtemps, et c’est ma première contribution relative à PostgreSQL, j’ai écrit un script de backup qui dump tout un serveur PostgreSQL avec pg_dump et pg_dumpall. Il s’agit de pg_back.

    Cela peut paraître curieux de publier un simple script de sauvegarde que tout DBA PostgreSQL a écrit dans sa vie et sait écrire par cœur. Surtout qu’on le réécrit en permanence ce script, pour ajuster des chemins, des cas particuliers du serveur à sauvegarder et de l’environnement où l’on sauvegarde…

    En bien justement, c’est parce qu’on le réécrit tout le temps que pg_back fait gagner du temps. Il est simple et court, facilement lisible, c’est du shell : tout ce qu’il faut pour en faire une bonne base pour créer un script de sauvegarde adapté. Quand on l’utilise comme patron pour en faire un outil plus évolué, on gagne du temps.

    Justement rajouter du code pour l’adapter peut se faire au début. Si on n’a pas envie d’utiliser le fichier de configuration, on adapte la liste de variables au début du script, quitte à en rajouter.

    L’autre endroit intéressant c’est tout à la fin, avant le exit, on peut rajouter tout ce qu’il faut pour externaliser ses sauvegardes.

    C’est par ici.

     

    https://github.com/orgrim/pg_back

     

     

    https://wiki.postgresql.org/wiki/Automated_Backup_on_Linux

  • Supprimer un tablespace temporaire TEMP2

    SQL> alter database datafile '/export/BD/ORACLE/oratbldev/DEV/temp02.dbf' offline drop;
    alter database datafile '/export/BD/ORACLE/oratbldev/DEV/temp02.dbf' offline drop
    *
    ERREUR à la ligne 1 :
    ORA-01516: le fichier journal, le fichier de données ou le fichier temporaire
    "/export/BD/ORACLE/oratbldev/DEV/temp02.dbf" n'existe pas


    SQL> drop tablespace TEMP2 including contents;

    Tablespace supprimé.

  • Détecter les doublons dans une table Oracle

    La table s'appelle DICO.

     

    Il y a des doublons sur la clé primaire mais où?

     

    La clé primaire est composée des champs : NOM_TABLE,ATTRIBUT

     

    Pour trouver les doublons :

    SELECT   COUNT(*) AS nbr_doublon, NOM_TABLE,ATTRIBUT
    FROM     DICO
    GROUP BY NOM_TABLE,ATTRIBUT
    HAVING   COUNT(*) > 1

  • Modification de structure avec ajout de colonne et FK.

    alter table bref.FA_FAISCEAU add LOT_CHEMISE VARCHAR2(25 BYTE) CONSTRAINT FK13_FA_FAISCEAU REFERENCES bref.FA_CHEMISE (LOT);
    alter table bref.FA_FAISCEAU add LOT_FILTRE_EVENT VARCHAR2(25 BYTE) CONSTRAINT FK14_FA_FAISCEAU REFERENCES bref.FA_FILTRE_EVENT (LOT);

  • Lancement de pgAdmin4

    (pgadmin4) jj771560@utl42642:~/home-global/virtualenv/myVE/lib/python2.7/site-packages/pgadmin4/pgadmin4/lib/python2.7$ cd /home/jj771560/home-global/virtualenv/myVE/lib/python2.7/site-packages/pgadmin4/
    (pgadmin4) jj771560@utl42642:~/home-global/virtualenv/myVE/lib/python2.7/site-packages/pgadmin4$ python pgAdmin4.py
    pgAdmin 4 - Application Initialisation
    ======================================


    The configuration database - '/home/jj771560/.pgadmin/pgadmin4.db' does not exist.
    Entering initial setup mode...
    NOTE: Configuring authentication for SERVER mode.


    Enter the email address and password to use for the initial pgAdmin user account:

    Email address: josselin_joly@hotmail.com
    Password:
    Retype password: 

    The configuration database has been created at /home/jj771560/.pgadmin/pgadmin4.db
    Starting pgAdmin 4. Please navigate to http://localhost:5050 in your browser.

     

    Aide : https://stackoverflow.com/questions/41260004/error-trying-to-run-pgadmin4