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 : PL/pgSQL » [RESOLU] variable externe dans du plpgsql » 29/08/2016 13:09:58

jp

Merci !
J'ai compris mon erreur et j'ai suivi vos conseils. Comme ceci tout fonctionne.

----------------------------------------------
DROP table ma_table;

CREATE TABLE ma_table (message date) ;

CREATE OR REPLACE FUNCTION ma_func (date_debut date)
RETURNS text AS $BODY$

declare

begin
 
  insert into ma_table values (date_debut);
  return 'insert ok';
end;
$BODY$ LANGUAGE plpgsql;

select ma_func(:vdate_debut);

-----------------------------------------------

Merci encore

#2 PL/pgSQL » [RESOLU] variable externe dans du plpgsql » 29/08/2016 09:52:00

jp
Réponses : 2

Bonjour,
J'ai besoin de passer une variable (surement plusieurs à termes) dans un bloc plpgsql.
Mais je n'y arrive pas ! c'est pour ca que je requière votre aide :-)
Voici un exemple pour illustrer mon probleme.
La commande psql que je passe (toujours la meme):
# psql  --set vdate_debut=\'01/01/2016\' -f mon_fichier.sql

Contenu de mon_fichier.sql qui fonctionne:
------------------------------------
DROP table ma_table;
CREATE TABLE ma_table (message text) ;
insert into ma_table values (:vdate_debut);
------------------------------------
Ici pas de probleme la valeur est bien insérée.

Contenu de mon_fichier.sql qui ne fonctionne pas:
------------------------------------
DROP table ma_table;
CREATE TABLE ma_table (message date) ;
DO language plpgsql $$
declare
\set ddeb    date := to_date(:vdate_debut,'dd/mm/yyyy');
begin
insert into ma_table values (ddeb);
END
$$;
------------------------------------

Ici problème, ddeb n'est meme pas "seté". J'ai essayé plusieurs technique mais je n'y arrive toujours pas.
Est ce que quelqu'un aurai une solution miracle ?
J'ai forcement raté un truc mais n’étant pas tres fort en plpgsql, je ne sais pas quoi.
Merci

#3 Re : Général » Conseils et avis: Politique de sauvegarde et restauration. » 27/09/2010 14:35:37

jp

Merci pour ces reponses.
Je pense que j'ai un peu de boulot maintenant ;-)

#4 Général » Conseils et avis: Politique de sauvegarde et restauration. » 27/09/2010 13:52:38

jp
Réponses : 3

Bonjour à tous,
Je possede en production 1 cluster linux (HB -drbd) de 2 serveurs. Celui ci heberge 4 cluster postgresql.
Chaque noeud du cluster linux est actif et possede un cluster postgres 8.3 et un cluster postgres 8.4.
Pour plus de lisibilité je les nomerais pgprod1, pgprod2, pgprod3 et pgprod4.
Sur le premier noeud de mon cluster linux se trouve pgprod1 et pgprod3.
Sur pgprod3 il y a 7 BD dont 2 de plus de 150 Go repartie dans 3 tablespace.
Un tablespace postgres correspond à un logical volume sur le serveur.
Les deux plus grosse base ont un tablespace à elles.
Les sauvegardes sont effectués de 2 façons: un pg_dump et un tar des fichiers des bases ( associé au fonction pg_start_backup et pg_stop_backup).
Il va sans dire que les archives logs sont parametrés.
voici pour la config.
La problemeatique:
Lors de la restauration total d'une base de 150 Go, celle ci se passe tres bien mais elle dure 5 heures (pg_restore).
Pour reduire le temps je desactive les archiveslogs et l'autovacuum le temps de la restauration. Mais cette operation m'oblige à redemarrer pgprod3 ce qui cause de l'indisponibilité pour mes autres bases.
Autre problematique durant le tar je verouille l'acces aux bases (ALTER ROLE user NOLOGIN) pour etre sur que la base ne sera pas modifier durant la sauvegarde. Ce qui cause aussi une indisponibilité la nuit.

Questions:
Les fichiers de bases etant dans un logical volume, un snapshot lvm pourrait il remplacer le NOLOGIN ?
Lors d'une restauration puis je restaurer uniquement les fichiers de base d'un tablespace (celui de la base concernée) et rejouer les archiveslogs (meme si ceux ci sont commun à toutes les bases ? ce n'est pas une vraie question car selon la doc ce n'est pas possible, je souhaite seulement votre avis.
Pensez vous que pour les grosses bases (>100 Go) l'utilisation d'un cluster postgresql dédié soit LA solution ?
Pensez vous que je devrais penser à migrer vers la version 9 de postgres et utiliser la replication ? (active/standby).
Pensez vous que je devrais revoir ma politique de sauvegarde/restauration ? Utiliser un autre outil ? je pense particulierement au projet pg-rman.

Je suppose que plusieurs personnes sur ce forum utilisent des bases plus grosses que les miennes. Comment faites vous pour sauvegarder/restaurer ? avez vous des contraintes de temps de restauration et si oui comment optimisez vous vos sauvegardes/restauration.

Désolé pour la longueur du post, j'ai essayé de faire le plus clair et concis possible.
Merci pour vos réponses, avis et conseils.

Jean-Philippe

Pied de page des forums

Propulsé par FluxBB