PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Re : Général » pb installation oracle_fdw sous Redhat 7 » 23/01/2019 11:25:19

Bonjour,
nous avons réussi !
je vous ferai un topo quand la pression sera retombée !!

Bonne journée à tous.

#2 Général » pb installation oracle_fdw sous Redhat 7 » 21/01/2019 19:47:05

trainvapeur
Réponses : 2

Bonsoir à tous,

après avoir développé une grosse application sous Windows, mon client veut la tester sous Linux Redhat7. Problème, nous n'arrivons pas à installer Oracle_fdw.

notre première question : est-ce que l'on peut installer Oracle_fdw sous Linux simplement en copiant des fichiers comme on l'a fait sous Windows; ou bien est-on forcé de recompiler les sources ?

et deuxième question : est-ce quelqu'un a déjà fait cette opération ?

D'avance merci pour vos réponses
Jean

#3 Re : Général » probleme avec pgpass.conf » 14/01/2019 09:20:20

J'ai trouvé un contournement : il existe la variable d'environnement PGPASSWORD : je l'ai créée, j'ai mis 040T17 dedans et j'ai pu lancer mon test sans avoir à saisir le mot de passe !!

Cela doit surement poser quelques problèmes de sécurité mais pour l'instant cela sauve la situation !

Jean

#4 Re : Général » probleme avec pgpass.conf » 13/01/2019 15:46:57

oui !

j'ai aussi pensé à redémarrer Windows pour être sur que Postgre utilise PGPASSFILE !

Bon, si la syntaxe est bonne, je vais chercher ...

Bon dimanche !!

Jean

#5 Général » probleme avec pgpass.conf » 13/01/2019 12:01:24

trainvapeur
Réponses : 4

Je n'arrive pas à utiliser le fichier de mot de passe pgpass.conf ! Et pourtant j'ai trouvé une question résolue sur ce point !! (je fais ce test avec mon PC perso W7-64 avec PG9.3)

Sous Windows, j'a créé la variable d'environnement PGPASSFILE elle contient 'd:\postgres\pgpass.conf'
Dans le répertoire d:\postgres, pgpass.conf est :

#test fichier de mot de passe
#127.0.0.1:5432:*:postgres:<Motdepassedelutilisateurpostgres_avecdes!etdes+>
*:*:*:*:'040T17'

(j'ai essayé <040T17>, 040T17, ... en vain

la commande psql est :
c:\utilitaires\postgre\bin\psql -A -t -w -U postgres -f testpw.sql northwind

L'option -w est bien prise en compte puisque le message d'erreur est
fe_sendauth: no password supplied

qu'est ce que j'ai oublié ?

Jean

#6 Re : Général » après une mise à jour Windows10, le serveur postgre ne démarre pas » 03/01/2019 15:35:08

Comme j'ai un script de creation de ma base de données et une sauvegarde des tables en CSV, j'ai desinstallé Postgre et je l'ai reinstallé : il refonctionne. Ouf !

#7 Re : Général » après une mise à jour Windows10, le serveur postgre ne démarre pas » 03/01/2019 10:15:30

J'ai pu accéder aux logs système de windows (observateur d'événements, journaux Windows, Système) ou je trouve des erreurs qui correspondent aux heures de tentative de démarrage de Pg :

evt 10016 distributed COM

Les paramètres d’autorisation propres à l’application n’accordent pas l’autorisation Local Activation pour l’application serveur COM avec le CLSID
{8D8F4F83-3594-4F07-8369-FC3C3CAE4919}
et l’APPID
{F72671A9-012C-4725-9D2F-2A4D32D65169}
au SID AUTORITE NT\Système de l’utilisateur (S-1-5-18) depuis l’adresse LocalHost (avec LRPC) s’exécutant dans le SID Non disponible du conteneur d’applications (Non disponible). Cette autorisation de sécurité peut être modifiée à l’aide de l’outil d’administration Services de composants.

Pour moi, c'est du chinois ...

Est-ce que mon problème peut venir de là ?

Jean

#8 Re : Général » après une mise à jour Windows10, le serveur postgre ne démarre pas » 03/01/2019 09:00:50

Bonjour,
les dernières lignes du log correspondent à l'arrêt du serveur avant de redémarrer W10. Donc, a priori, le serveur n'a pas démarré.

Jean

#9 Re : Général » après une mise à jour Windows10, le serveur postgre ne démarre pas » 02/01/2019 12:40:31

J'ai oublié de vous donner le message d'erreur :
could not connect to server: Connection refused (0x0000274D/10061) Is the server running on host "localhost" (::1) and accepting TCP/IP connections on port 5432? could not connect to server: Connection refused (0x0000274D/10061) Is the server running on host "localhost" (127.0.0.1) and accepting TCP/IP connections on port 5432?

#10 Général » après une mise à jour Windows10, le serveur postgre ne démarre pas » 02/01/2019 12:20:24

trainvapeur
Réponses : 6

Ce matin, j'ai une notification me demandant de redémarrer le PC; a priori suite à une mise à jour de Windows10. je le fais. Mais le serveur postgre ne veut plus démarrer. Je le reinstalle : il détecte bien l'ancienne installatiuon et le répertoire des données. Je n'ai pas de message d'erreur pendant l'installation et j'ai bien une fenêtre disant 'démarrage du serveur'. Mais si j'ouvre le gestionnaire des tâche puis les services, Postgre est arrété. Si je clique sur 'démarrer', l'état passe très briévement sur 'démarrage' puis revient sur 'arrété'.

Que puis-je faire ? Note : je ne suis pas un expert en Windows ...

D'avance merci pour vos réponses
Jean

PS et bonne année 2019 à tous !!

#11 Général » visualiser graphiquement la structure d'une base de données » 19/12/2018 21:25:05

trainvapeur
Réponses : 2

Bonsoir,

on me demande de créer un schéma graphique des tables d'une base de données avec leurs relations (clef étrangères), indexs, ...
Existe-t-il un outil qui fasse cela automatiquement ?

Et si en plus, l'outil pouvait l'imprimer sur plusieurs feuilles A4 que l'on assemblerait pour faire un 'mur', cela serait d'un chic !!!

Merci d'avance
Jean

#12 Re : Général » fonction et transaction » 11/12/2018 16:08:23

Bonjour à tous,

est-ce que, si je crée ma table mouchard comme UNLOGGED, je vais pouvoir la mettre à jour à l'intérieur d'une transaction ?

Je vais essayer mais j'aimerai une confirmation !
Cordialement,
J. MAURICE

#13 Général » configuration matérielle optimale » 10/12/2018 10:32:28

trainvapeur
Réponses : 2

Bonjour à tous,
comme vous avez pu le constater, nous testons Postgre en vue de remplacer Oracle.
Dans un premier temps, je devais faire deux versions de l'application, une pour Windows, l'autre pour Linux. Pour l'instant, nous nous occupons que de Windows.

Je dois proposer une configuration matérielle qui permette de tester postgre et non le matériel (c'est à dire une configuration rapide, efficace, ... ).
dans l'pplication, j'ai 4 tablespaces : un pour les tables, un autre pour les indexs, un troisième pour les tables paramètres. Si il y a quelque chose dans le 4éme , c'est que j'ai raté une option sur une table ou un index.

2 questions sur le matériel donc :
- multi-coeur : je n'ai pas du tout pensé à ce paramètre dans l'application. Je n'ai aucune option concernant la parallélisation (j'ai vu passer des infos dans la doc mais sans approfondir). Est-ce important ?
- plusieurs disques. Je pensai demander au moins 3 disques C: pour windows, les programmes et les tables paramètres; un disque rapide pour les tables et un autre pour les indexs. C'est bon? Que pensez-vous des disques SSD ?

Bref, je suis preneur de tout conseil concernant la configuration matérielle !

D'avance merci
Jean

#14 Re : Général » fonction et transaction » 10/12/2018 10:20:24

Merci rjuju pour ces précisions. Pour le mouchard, je vais effectivement m'interesser aux traces (chapitre 19.8 du manuel) et à pg_audit. Ce point est très important pour nous puisque nous sommes en train d'évaluer Postgre en testant différentes options dans le but de remplacer les bases Oracle que nous avons en production.

Mais ta réponse m'inquiète beaucoup. L'application que je développe récupère règulièrement des données sur une base Oracle (3 mois de données, 50go) pour les historiser sur 5 ans (500go). Il y a une vingtaine de tables à traiter. J'avais pensé faire une boucle 'infinie' en plpgsql mais cela ne va pas fonctionner parce que les tables Postgre ne seront pas mises à jour à chaque itération. Vrai? Il faut donc lancer une fonction qui fait l'import des données et qui sera lancée par le planificateur des tâches sous windows, idem pour Linux. Vrai ?

La sueur perle sur mon front !!

Merci d'avance
Jean

#15 Général » fonction et transaction » 07/12/2018 09:27:26

trainvapeur
Réponses : 4

Bonjour à tous,

j'ai l'impression qu'une transaction entoure chaque fonction. Est-ce vrai ?

A priori, cela ne me génerait pas trop sauf pour une table. Cette table est un mouchard dans lequel j'enregistre tout ce qu'il se passe dans l'application (pendant les tests cela devrait me permettre de savoir ce qu'il s'est passé juste avant un plantage). Or, si la fonction se plante alors que des enregistrements auraient du être créés dans le mouchard, ils n'y sont pas. Comment corriger ce problème ?

D'avance merci
Jean

#16 Re : Général » problèmes avec execute » 03/12/2018 10:19:22

Hervé, j'ai adapté ta solution et cela marche ... parfaitement. Sauf que c'est très long : 8 minutes pour transformer une table de 56000 lignes et 245 champs. J'ai pourtant cherché à optmiser : au lieu de traiter ligne par ligne puis champ par champ, je fais, pour chaque champ 'INSERT INTO .... SELECT monbauchamp FROM ma table;

Quand j'aurais plus le temps, je me pencherai sur JSON ...

Merci à tous
Jean

#17 Re : Général » problèmes avec execute » 30/11/2018 14:43:16

je précise un peu car je ne trouve pas de solution !
sous  plpgsql, j'ai

nomtablechamp := 'ligne_origine.' || unchamp.attname;
où ligne_origine est une ligne d'un curseur qui contient des données et unchamp est une ligne d'un curseur qui contient le nom d'un champ de ligne_origine.

Donc nomtablechamp contient par exemple 'ligne_origine.indice'

Comment puis-je faire pour obtenir le contenu de ce champ ?

D'avance merci !
Jean

#18 Re : Général » problèmes avec execute » 30/11/2018 13:02:32

vu !

mais alors sous plpgsql a-t-on la possibilité de faire une indirection ?

A+
Jean

#19 Général » postgre10 et RED HAT7 » 30/11/2018 12:59:25

trainvapeur
Réponses : 7

rebonjour,

mon client a un gros souci je vous le transmet !
Il voudrait installer postgre10.6 sur RED HAT 7 parce que c'est le Linux qu'ils maitrisent le mieux (ils font plein de VM). Mais Le support Redhat 7 ne supporte Postgre que pour la version 9.x. Ce client a lui même des clients dans le monde entier et mon travail est de lui permettre de stocker ses données sur une période beaucoup plus longue : on passerait de 3 mois à 5 ans et la base passerait de 50 go à 500 go.


1°) y-a-t-il des problèmes répertoriés avec Postgre 10 et RedHat 7 ? S'engage-t-on vers des difficultés ? On va partitionner des tables et on utilise beaucoup oracle_fdw.

2°) y-a-t-il une autre distribution Linux recommandée pour Postgre 10 ?

Et j'ajoute, parce que je pense qu'on va y arriver bientôt, et pour postgre 11 ?

Cordialement,
Jean

#20 Général » problèmes avec execute » 30/11/2018 12:15:22

trainvapeur
Réponses : 7

Bonjour à tous,
j'ai 2 problèmes avec EXECUTE

a priori, il ne veut pas executer une commande  RAISE NOTICE  !!

J'ai créé un curseur sur une table
  cursorigine CURSOR FOR SELECT * FROM sch.itemps;

J'ai créé un curseur qui me donne la liste des champs de cette table, en gros :
    curschamp CURSOR (poidtable oid) FOR SELECT att.attname, att.atttypid, att.attlen, att.attnum, typ.typname, typ.typlen, typ.typtype
     FROM pg_attribute att INNER JOIN pg_type typ ON att.atttypid = typ.oid
      WHERE att.attrelid = poidtable;

Avec 2 boucles FOR, j'arrive parfaitement à lister les noms des champs. mais je n'arrive pas à récupérer leur contenu.
Avec
    FOR ligne_origine IN cursorigine LOOP
       .....
         FOR unchamp IN curschamp (oidtable) LOOP

je voudrai mettre la valeur du champ courant dans une variable:
EXECUTE 'SELECT ligne_origine.' || unchamp.attname || ' INTO unevaleurnum'; ne fonctionne pas
EXECUTE 'unevaleurnum := ligne_origine.' || unchamp.attname ;  ne fonctionne pas;

Vous avez une idée ?
Merci d'avance
Jean

#21 Re : Général » inverse de crosstab » 30/11/2018 12:02:02

Merci, je regarde cela ce week-end.

Jean

#22 Général » inverse de crosstab » 29/11/2018 10:29:22

trainvapeur
Réponses : 2

Je reviens sur mes tables à plus de 200 champs que j'importe d'Oracle via oracle_fdw. Cela marche tellement bien qu'on me demande des choses plus complexes !

Ces tables sont remplies à 80% de valeurs NULL. On voudrait essayer de faire l'inverse de crosstab; c'est à dire que, pour chaque ligne de la table Oracle, on aurait dans la table Postgre une ligne par champ non NULL. Cette ligne contiendrait un ou plusieurs champs pour la clef, un champ pour le nom du champ Oracle, un pour son type, et 1 pour la valeur (en fait 3 car il faut un champ pour les valeurs numériques, un pour les textes (rares) et un pour les dates).

A priori je n'ai pas trouvé de fonction qui pourrait faire cela. Mais est-ce que quelqu'un l'a déjà fait et pourrait m'aiguiller sur la marche à suivre ?

D'avance merci
Jean

#24 Général » simplifier un UPDATE » 27/11/2018 17:04:34

trainvapeur
Réponses : 2

Bonjour à tous,

j'ai une table toto dans lequel on modifie des lignes et on en ajoute. J'en ai une autre, tata, identique à toto SAUF qu'elle a un champ supplémentaire au début et un autre à la fin. Ces deux champs supplémentaires ont une clause DEFAULT. En fait on a une application qui gère une machine, on veut la rendre apte à piloter plusieurs machines et pour l'instant on modifie l'application actuelle; donc le premier champ contient 1; on en profite pour ajouter un champ date de mise à jour à la fin mais celui-là ne me gène pas pour l'instant.
Ceci dit je peux écrire la commande INSERT comme ceci :

        INSERT INTO tata 
            SELECT 1, * FROM toto WHERE 
                    NOT EXISTS (SELECT 1 FROM tata soon WHERE
                       soon.machine = 1 AND soon.evt = toto.evt AND soon.ht = tot.ht);
C'est bien parce qu'on a 240 champs.

Je voudrai écrire la même chose avec la commande UPDATE mais je n'arrive pas à voir comment on pourrait se passer de la liste des champs (des 240 SET toto. = tata. ).

Quelqu'un aurait une idée ?

D'avance merci
Jean

#25 PL/pgSQL » parametrer un script a partir d'un fichier texte » 22/11/2018 09:26:01

trainvapeur
Réponses : 1

Bonjour,
je suis en train de créer un (gros) script dans lequel j'utilise beaucoup de paramètres. Ces paramètres peuvent être boolean (entest, ...), entier (frequence, ...) ou même text (titrerapport, ..).
J'aimerai pouvoir mettre ces paramètres dans un fichier texte lu au démarrage du script.
Est-ce possible ?
Des suggestions ?

Sous VFP, ce fichier texte contient des instructions executables (du style "monparamètre = savaleur") et je lance l'execution de ce fichier; ce qui met à jour les variables. On peut faire quelque chose de semblable avec Plpdsql ?

D'avance merci
Jean

Pied de page des forums

Propulsé par FluxBB