Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#1 Re : Installation » mise à jour vesion 10.6 vers 10.12 » 21/02/2020 15:31:34
Bonjour Pifor,
merci de votre réponse.
Je pensais passer par yum pour récupérer le paquet et l'installer (il semblerait qu'il gère mieux les dépendance que RPM). Comme cela va être effectif sur notre 3 instances (y compris la prod) j'avais peur des répercussions mais étant donnée qu'il s'agit bien d'une version mineur elle es donc compatible et ne touche pas au structure des tables (de ce que j'ai vu dans la release note)
je n'ai encore jamais fait d'évolution de version sur postgres, y-a-t'il une vérification particulière à effectuer ou les standards suffisent ?
Merci d'avance
Cordialement
#2 Installation » mise à jour vesion 10.6 vers 10.12 » 21/02/2020 10:43:57
- caius
- Réponses : 3
Bonjour,
nous avons une installation de postgresql en version 10.6 (serveur redhat) et nous devons passer en version 10.12 pour raison de sécurité.
J'aurais voulu avoir quelques renseignements avant : si j'ai bien compris les informations de versioning la 10.12 est une mise à jour mineur. est-ce bien le cas ?!
Est-il possible de passer de la 10.6 à celle-ci directement ou faut-il passer les intermédiaires ? question bête sûrement mais je préfère en être sûre et ne pas avoir de mauvaise surprise derrière..
pg_upgrade est surtout & utiliser pour les version majeurs, quel est la meilleur façon de procéder pour installer une version mineur ?
pour information nous possédons 3 instances plus un client oracle pour l'extension oracle_fdw : cela ne va en rien toucher cette extension ?
Merci d'avance pour vos réponses
#3 Re : Général » enregistrer sortie de pg_restore » 31/01/2020 15:15:28
Bonjour à tous les deux,
merci beaucoup pour votre réponse !
et effectivement ça fonctionne parfaitement
Merci
#4 Général » enregistrer sortie de pg_restore » 31/01/2020 10:47:40
- caius
- Réponses : 3
Bonjour,
j'ai une question bête : je voudrais sauvegarder la sortie d'un pg_restore vers un ficheir de log mais je n'y arrive pas...
'jai essayé avec ça :
pg_restore -d test -p 5433 -U postgres -c -v --file=restore_test_schemas_2020_01_30-1717.log -n bob -n dev_bob export_applit_schemas.tar
mais aussi simplement ça :
pg_restore -d test -p 5433 -U postgres -c -v -n bob-n dev_bob export_testt_schemas_2020_01_30-1717.tar > restore_applit_schemas.log
Or, la première me dit qu'il n'est pas possible d'utilier l'option -f avec -d.
Comment faire donc s'il vous plait ?
Merci d'avance
Cordialement
#5 Re : Installation » out of shared memory » 24/10/2019 11:41:22
Bonjour,
merci pour votre réponse !
oui oui j'ai bien redémarré le service à chaque modification.
Existe-t-il une valeur à ne pas dépasser, au regard des autres paramètres ? si j'augmente la valeur du max_locks_per_transaction , dois-je modifier d'autre paramètres ?
je suis un peu perdue dans la doc par rapport à tout ce paramétrage...
Merci
#6 Installation » out of shared memory » 24/10/2019 11:00:38
- caius
- Réponses : 3
Bonjour,
je rencontre un problème pour paramétrer mon fichier de conf postgres (version 10.6).
j'ai une grosse procédure de transaction qui me déclenche une erreur
ERROR: out of shared memory
HINT: You might need to increase max_locks_per_transaction."
j'ai paramétré comme ceci mon fichier postgresql.conf :
shared_buffers = 3GB
dynamic_shared_memory_type = posix
max_wal_size = 1GB
max_locks_per_transaction = 100
comment pusi-je changer ? est-ce que j'ai paramétré les bonnes informations ? en ai-je oublié d'autre ?
il faut savoir que j'ai 3 instances postgres qui sont installées sur le serveur qui possède un disque de 5Go et la mémoire est de 8Go. IL va falloir que les 3 instances soient opérationnelles et partagent tout ceci.
merci pour vos lumières !
#7 Général » pg_restore bloqué avec extension plpgsql » 16/05/2019 14:23:34
- caius
- Réponses : 1
Bonjour,
je rencontre un problème pour restaurer une base de données avec pgadmin4. J'utilise les seules options --clean et --single-transaction sur un fichier dump :
/usr/pgsql-10/bin/pg_restore --host "localhost" --port "5432" --username "postgres" --no-password --role "postgres" --dbname "applip" --clean --single-transaction --verbose "/var/lib/pgadmin/storage/script_modification/applip_2019-05-14_11-07-02.dump"
mais je rencontre tout le temps la même erreur :
pg_restore: dropping COMMENT EXTENSION plpgsql
pg_restore: dropping EXTENSION plpgsql
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 1; 3079 13794 EXTENSION plpgsql
pg_restore: [archiver (db)] could not execute query: ERROR: cannot drop extension plpgsql because other objects depend on it
DETAIL: function schema.create_batiment(character varying,numeric,character varying,character varying,character varying,character varying) depends on language plpgsql
...
j'ai une instance postgres test sur laquelle j'arrive sans problème à restaurer mes bases mais là je ne comprends pas pourquoi l'extension plpgsql me bloque...
Que dois-je changer ?
merci d'avance
#8 Re : PL/pgSQL » shell commande \copy sans être superuser » 06/05/2019 09:36:16
Bonjour,
désolé pour le retard. Merci beaucoup pour votre réponse c'est exactement ce qu'il me fallait !
Merci
#9 Re : PL/pgSQL » shell commande \copy sans être superuser » 29/04/2019 16:16:42
la revoici :
DECLARE
contenu text;
temp_import_file text;
BEGIN
fichier := fichier;
temp_import_file := quote_ident('temp_import_file');
-- création d'une table temporaire
EXECUTE format('CREATE TEMP TABLE %I (contenu text)', temp_import_file);
--recopie du contenu du fichier dans la table temporaire
EXECUTE format('COPY %I FROM %L ',temp_import_file, fichier);
--recupère le contenu de la table temp et l'ajoute à la variable 'contenu'
EXECUTE format('SELECT contenu FROM %I ', temp_import_file)INTO contenu;
--supprime la table temp
EXECUTE format('drop table %I', temp_import_file);
-- retourne le contenu de la variable
RETURN contenu;
END;
je ne récupère que la 1ere ligne de mon fichier. Je suis désolé avec toutes mes questions mais je débute en postgres...
#10 Re : PL/pgSQL » shell commande \copy sans être superuser » 29/04/2019 14:55:08
Bon alors effectivement il fallait préfixer pour le 1er bug mais pour le second je ne trouve pas.
en fait j'ai un fichier qui contient :
MIME-Version: 1.0
Content-Type: text/html
Content-Disposition: inline
<html>
<head>
<style>.bat{margin-left:15px;color:#00BFFF} .eta{margin-left:50px;color:#9A2EFE} .pie{margin-left:75px;color:#FE9A2E}</style>
</head>
<body><p>Bonjour !</p><br/><pre><div class="evrp_container">
tout ce que je veux faire c'est l'afficher pour commencer à partir de la fonction que j'essaie de créer mais voilà il ne me retour seulement la 1ère ligne.
J'utilise sûrement mal COPY mais comment je dois faire pour récupérer tout le contenu du fichier et l’insérer dans un champ de ma table de type text pour le retourner par la suite ?
Merci de votre aide
#11 Re : PL/pgSQL » shell commande \copy sans être superuser » 29/04/2019 10:36:07
Bonjour et merci pour vos réponses.
Effectivement, j'ai dû mal m'y prendre en créant la fonction puisque je l'avais précédemment supprimé de l'utilisateur avant de la recréer avec postgres.
Cependant, il y a un truc que je comprend pas. Quand je l'utilise dans pgadmin, il me sort une erreur :
ERROR: function pg_file_read(unknown) does not exist
LINE 1: select pg_file_read('import_test/output.html')
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
État SQL :42883
alors que lorsque je l'appelle via le shell cela fonctionne même si je rencontre d'autres erreurs :
si j'enregistre dans une variable le fichier que je souhaite ouvrir de cette façon :
fichier := fichier;
alors j'obtiens
ERROR: extra data after last expected column
CONTEXT: COPY temp_import_file, line 1: "1200917 C801_03 0 ANCIENNE DOCUMENTATION DU PETI C8_03 DIGNE LES BAINS BOULEVARD SAINT..."
SQL statement "COPY temp_import_file FROM 'import_test/test_sortie_fich.html'"
PL/pgSQL function dev_evrp.pg_file_read(text) line 13 at EXECUTE
mais si je l'encapsule dans quote-literal ou quote-nullable, alors il me dit que le fichier n'existe pas...
que dois-je faire ?
merci d'avance
#12 Re : PL/pgSQL » shell commande \copy sans être superuser » 26/04/2019 16:08:05
Bon alors...
j'ai modifié ma fonction :
CREATE OR REPLACE FUNCTION dev_evp.pg_file_read(fichier text)
RETURNS text
LANGUAGE 'plpgsql'
VOLATILE SECURITY DEFINER
PARALLEL UNSAFE
COST 100
AS $BODY$ DECLARE
contenu text;
temp_import_file text;
BEGIN
fichier := quote_nullable(fichier);
temp_import_file := quote_ident(temp_import_file);
-- création d'uen table temporaire
EXECUTE format('CREATE TEMP TABLE %I (contenu text)', 'temp_import_file');
--recopie du contenu du fichier dans la table temporaire
EXECUTE format('copy %I FROM %L DELIMITER " " ', 'temp_import_file', fichier);
--recupère le contenu de la table temp et l'ajoute à la variable 'contenu'
EXECUTE format('SELECT contenu FROM %I INTO %L', 'temp_import_file', contenu);
--supprime la table temp
EXECUTE format('drop table %I', 'temp_import_file');
-- retourne le contenu de la variable
RETURN contenu;
END;
$BODY$;
l'option security definer si j'ai bien compris, permet d’exécuter la fonction avec les droits de l'utilisateur propriétaire. je l'ai donc crée en tant qu'utilisateur postgres. sauf que lorsque je l'appelle en tant qu'utilisateur toto, cela me dit toujours que je dois être superuser pour lire le fichier..
Je dois modifier autre chose ?
j'ai accordé les droits "execute" à postgres et à toto dans l'onglet sécurité de la fonction sur pgadmin.
merci de votre aide
#13 Re : PL/pgSQL » shell commande \copy sans être superuser » 26/04/2019 14:51:51
Bonjour et merci pour vos réponses, désolé du retard je n'ai pas pu répondre avant.
Malheureusement je susi en version 10 de postgres et à ce que je vois il n'y a pas le pg_read_server_file.
Je vais voir ce security definer du coup !
#14 PL/pgSQL » shell commande \copy sans être superuser » 25/04/2019 11:43:03
- caius
- Réponses : 14
Bonjour,
je suis en train de créer une fonction permettant de lire un fichier (via une doc trouvée sur le net). Cette fonction doit être utilisée par un utilisateur de ma bdd qui n'est pas superuser, par ex toto.
La commande COPY ne le permettant pas j'ai utilisé \copy dans ma procédure :
DECLARE
contenu text;
temp_import_file text;
BEGIN
fichier := quote_nullable(fichier_lect); -- fichier_lect étant le paramètre passé à la fonction
temp_import_file := quote_ident(temp_import_abyla);
-- création d'uen table temporaire
EXECUTE format('CREATE TEMP TABLE %I (contenu text)', 'temp_import_file');
--recopie du contenu du fichier dans la table temporaire
EXECUTE format('\copy %I FROM %L DELIMITER " " ', 'temp_import_file', fichier);
--recupère le contenu de la table temp et l'ajoute à la variable 'contenu'
EXECUTE format('SELECT contenu FROM %I INTO %L', 'temp_import_file', contenu);
--supprime la table temp
EXECUTE format('drop table %I', 'temp_import_file');
-- retourne le contenu de la variable
RETURN contenu;
END;
lorsque j'appelle cette fonction (en étant connecté avec l'utilisateur toto) avec un tout simple
select pg_read_file('path/to/mon/fichier')
j'obtiens le message suivant : "must be superuser to read files". pourtant il me semble que la commande \copy peut être utilisé par tous les utilisateurs..
c'est quoi mon problème dans ce cas ?
Merci pour vos lumières !!
#15 Re : PL/pgSQL » relation curseur n'existe pas » 23/04/2019 10:53:32
Bon alors le problème venait de ma boucle for qui suivait :
FOR l_batiment IN batiment_cur LOOP
où l_batiment était une variable déclarée, ce qu'il ne faut pas.
#16 PL/pgSQL » relation curseur n'existe pas » 23/04/2019 10:12:35
- caius
- Réponses : 1
Bonjour tout le monde,
alors ma question peut paraitre bête (désolé si c'est le cas) mais je ne comprends pas. j'essaie de convertir une procédure oracle en fonction postgres.
J'ai un curseur :
CREATE or REPLACE FUNCTION import_piece_fichier(p_file_name character varying) returns void
LANGUAGE 'plpgsql'
AS $$
DECLARE
batiment_cur CURSOR FOR SELECT * FROM dev_tool.rs_batiment ORDER BY num_comp;
...
...
mais je récupère l'erreur suivante
ERROR: relation "batiment_cur" does not exist
CONTEXT: compilation of PL/pgSQL function "import_piece_fichier" near line 4
État SQL :42P01
Je précise pour information que ma table rs_batiment, est une table distance (venant d'une base oracle) et que j'importe via le wrapper oracle_fdw. Lorsque je fais un simple select * sur cette table, je récupère bien les informations.
Pourquoi mon curseur reste indéfini ? Il me semble que je le déclare de la bonne façon pourtant... où ai-je fait une erreur svp ?
Merci d'avance
#17 Re : Général » pb installation oracle_fdw sous Redhat 7 » 15/04/2019 11:05:35
Bonjour,
je me permet de vous contacter sur votre ticket : comment avez-vous fait pour installer oracle_fdw ?
Merci d'avance
#18 Re : ODBC » dblink postgres vers oracle 11 » 11/04/2019 17:02:25
Bonjour,
merci pour ton retour. Il me semble que c'est une extension qui fait partie d'un package. je suis entrain de chercher et installer pour faire les tests.
La bise
#19 ODBC » dblink postgres vers oracle 11 » 10/04/2019 16:56:35
- caius
- Réponses : 2
Bonjour,
j'ai besoin de connecter une base de données sous postgres 10 sur un serveur redhat à une autre sous oracle 11 sur un serveur distant. Si j'ai bien compris, il faut que j'installe 2 drivers ? psqlodbc et unixodbc ?
avez-vous déjà procédé à son installation sur un serveur redhat ? savez-vous où trouver ces drivers ?
par la suite, comment créer un dblink entre mes bases ?
merci pour votre aide.
Cordialement
#20 Re : PHP » pg_connecte ne retourne rien » 08/04/2019 10:22:40
Ok c'est noté,
merci beaucoup pour ton explication !
#21 Re : PHP » pg_connecte ne retourne rien » 05/04/2019 14:12:51
Merci pour votre retour,
en fait il me manquait des extensions. postgres était bien installé mais pas complètement.
Merci !
#22 PHP » pg_connecte ne retourne rien » 05/04/2019 08:23:31
- caius
- Réponses : 4
Bonjour,
je suis nouvelle utilisatrice de postgreSQL 10 et là j'essaie d'accéder à ma base avec un select tout simple via php. Je ne comprend pas pourquoi ma connexion ne se fait pas.
Le fichier php sur se trouve sur un autre serveur que celui où est installé postgres mais j'ai bien entré l'autorisation dans le fichier pg_hba de mon instance avec
host all all xxx.xxx.xxx.xx/32 md5 (les x sont remplacés par la vraie ip)
Je n'ai aucun retour dans les log de l'instance, du coup je ne sais pas pourquoi cela ne fonctionne pas. J'ai essayé ceci :
$conn= pg_connect( "host=$sid_post port=$port dbname=$base_postgres user=$user_postgres password=$pass_postgres");
if (!$conn){
print pg_last_error($conn);
echo "error connection";
} else {
echo 'everything was ok';
}
mais rien de rien ne s'affiche.
Pourriez-vous me dire ce qui cloche et ce que j'ai oublié de faire por que cela fonctionne svp ?
J'avais aussi pensé à utiliser PDO pour PDOexception mais il me manque le driver. Mais avant cela j'aimerai bien comprendre pourquoi cela ne marche pas avec une simple requête de connexion.
Merci pour votre aide
#23 Re : Installation » impossible relancer servuer postgres avec systemctl » 08/03/2019 17:54:54
et oui... avec le masque /32 cela marche beaucoup mieux d'un coup !
vraiment merci à vous deux !
#24 Re : Installation » impossible relancer servuer postgres avec systemctl » 08/03/2019 17:30:56
bonjour,
j'ai rajouté la ligne dans ipv4 :
# IPv4 local connections:
host all all 127.0.0.1/32 ident
host base_f dude 10.134.2.200 md5
effectivement quand j'enlève ce que j'ai ajouté (la 2ème ligne) ça fonctionne... pourriez-vous me dire ce que je fais mal dans le paramétrage de cette ligne svp ?
#25 Installation » impossible relancer servuer postgres avec systemctl » 08/03/2019 17:14:20
- caius
- Réponses : 4
Bonjour,
j'ai 3 instances postgres 10 qui écoute sur 3 port différents. J'ai voulu arrêter puis relancer les serveurs pour enregistrer un ajout dans le fichier pg_hba.conf des mes instances mais depuis (je ne pense pas que cela a un rapport mais je précise) aucun instance ne veut redémarrer quand j'utilise systemctl.
j'obtiens :
Job for postgresql-10.service failed because the control process exited with error code. See "systemctl status postgresql-10.service" and "journalctl -xe" for details.
en appelant les status j'obtiens :
postgresql-10.service - PostgreSQL 10 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-10.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Fri 2019-03-08 16:07:59 CET; 18s ago
Docs: https://www.postgresql.org/docs/10/static/
Process: 9731 ExecStart=/usr/pgsql-10/bin/postmaster -D ${PGDATA} (code=exited, status=1/FAILURE)
Process: 9726 ExecStartPre=/usr/pgsql-10/bin/postgresql-10-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
Main PID: 9731 (code=exited, status=1/FAILURE)
Mar 08 16:07:59 panorama postmaster[9731]: 2019-03-08 16:07:59.938 CET [9731] LOG: listening on IPv4 address "127.0.0.1", port 5432
Mar 08 16:07:59 panorama postmaster[9731]: 2019-03-08 16:07:59.941 CET [9731] LOG: could not create IPv6 socket for address "::1": Address family not supported by protocol
Mar 08 16:07:59 panorama postmaster[9731]: 2019-03-08 16:07:59.943 CET [9731] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
Mar 08 16:07:59 panorama postmaster[9731]: 2019-03-08 16:07:59.947 CET [9731] LOG: listening on Unix socket "/tmp/.s.PGSQL.5432"
Mar 08 16:07:59 panorama postmaster[9731]: 2019-03-08 16:07:59.960 CET [9731] LOG: redirecting log output to logging collector process
Mar 08 16:07:59 panorama postmaster[9731]: 2019-03-08 16:07:59.960 CET [9731] HINT: Future log output will appear in directory "log".
Mar 08 16:07:59 panorama systemd[1]: postgresql-10.service: main process exited, code=exited, status=1/FAILURE
Mar 08 16:07:59 panorama systemd[1]: Failed to start PostgreSQL 10 database server.
Mar 08 16:07:59 panorama systemd[1]: Unit postgresql-10.service entered failed state.
Mar 08 16:07:59 panorama systemd[1]: postgresql-10.service failed.
et le journal donne :
The result is failed.
Mar 08 16:07:59 panorama systemd[1]: Unit postgresql-10.service entered failed state.
Mar 08 16:07:59 panorama systemd[1]: postgresql-10.service failed.
Mar 08 16:07:59 panorama polkitd[8596]: Unregistered Authentication Agent for unix-process:9720:8716297 (system bus name :1.418, object path /org/freedesktop/PolicyKit1/AuthenticationAge
M
que dois-je faire ?
j'ai le même problème avec mes 3 instances. je suis sur un serveurs redhat 7.
Merci à vous