Le blog de Jean David TECHER, un Réunionnais à Saint-Priest/Lyon

Aller au contenu | Aller au menu | Aller à la recherche


< 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 >

mercredi 21 décembre 2011

Supprimer la chaine "<U+FEFF>", BOM

En faisant un less sur un fichier, cette chaîne apparaît en début de fichier
<U+FEFF>..... ......
........ ......... .........
Pour la supprimer
sed -i '1 s:\xEF\xBB\xBF::' file
Source: http://thegreyblog.blogspot.com/2010/09/shell-script-to-find-and-remove-bom.html

vendredi 16 décembre 2011

Semaine bien stressante

Je n'avais pas connu une semaine aussi stressante au niveau professionnel depuis bien des lustres. J'ai réussi à dormir avec peu de calme ces derniers jours. Au réveil, l'esprit tourné vers le travail en espérant que tout aille pour le mieux pour la journée. Ma dernière montée de stress - au niveau professionel - doit remonter au printemps 2010 quand j'ai virtualisé pour la première fois des serveurs Oracle. Je m'en rappelle encore. Je n'avais pas réussi à l'époque à en dormir la veille...

Quelques période de doute passager, des étourderies de débutant...mais bon au moins on tout ira pour le mieux!

Ce soir annonce le week-end! Au programme: du repos que du repos et quelques occupations, histoire de se changer les idées comme il faut!

lundi 12 décembre 2011

Slony 1.2: Restoring a Slonyfied PostgreSQL dump on node just after pg_dump/pg_restore

If on all nodes (both master and slaves), you did a fresh backup of the node using pg_dump, here is the script that you need to apply on each node, just after pg_restore. I use this script due to a bug in "repair config()" in Slony 1.2.X. So I use this script instead of using instruction "repair config()".

1. To do

    Backup all nodes
  1. On each node, stop the Slony processes. This step is mandatory else you could have bad lock on sl_event while pg_dump is running and Slony too.
  2. On each node, make a dump
    pg_dump -Fc -f your_dump_of_node.dmp -hlocalhost -v -p???? -U???? yourDB
    Restore all nodes
  1. On each node, restore from the dump using pg_restore
    dropdb yourDB
    -- createdb -p??? -U??? -hlocalhost yourDB
    pg_restore -d yourDB  -p??? -U??? -v your_dump_of_node.dmp
  2. Copy the content of the script on each node. Apply the script
    chmod +x script.sh
    ./script.sh | psql -hlocalhost -U??? -p??? yourDB
  3. On each node, restart Slony processes.

2. Content of the script

# This script is a updated version done by Darcy Buskermolen
# Original script see http://lists.slony.info/pipermail/slony1-general/2005-February/001631.html
#
# The name of your Slony cluster
CLUSTERNAME="replication";

# Using 'cat | sed ', the SQL queries will be printed out on stdout. You can redirect it to psql ( | psql ....) or to a SQL file ' > your_file.sq
#
cat << _EOF_ | sed -e "s:CLUSTERNAME:${CLUSTERNAME}:g"
BEGIN TRANSACTION;

DROP TABLE IF EXISTS "_CLUSTERNAME".repair_config_tab;

DROP TABLE IF EXISTS "_CLUSTERNAME".repair_config_seq;

CREATE TABLE
        _CLUSTERNAME.repair_config_tab
AS SELECT
        rct.tab_reloid as reloid,
        rct.tab_relname,
        rct.tab_nspname
 FROM
        _CLUSTERNAME.sl_table rct,
        pg_catalog.pg_class pgc,
        pg_catalog.pg_namespace pgn
   WHERE
        pg_catalog.quote_ident(rct.tab_relname)=pg_catalog.quote_ident(pgc.relname)
        AND
         pg_catalog.quote_ident(rct.tab_nspname)=pg_catalog.quote_ident(pgn.nspname)
        AND pgc.relnamespace=pgn.oid;


CREATE TABLE
        _CLUSTERNAME.repair_config_seq
AS SELECT
        rcs.seq_reloid as reloid,
        rcs.seq_relname,
        rcs.seq_nspname
 FROM
     "_CLUSTERNAME".sl_sequence rcs,
     pg_catalog.pg_class pgc,
     pg_catalog.pg_namespace pgn
   WHERE
       pg_catalog.quote_ident(rcs.seq_relname)=pg_catalog.quote_ident(pgc.relname)
     AND
       pg_catalog.quote_ident(rcs.seq_nspname)=pg_catalog.quote_ident(pgn.nspname)
     AND pgc.relnamespace = pgn.oid
;


 UPDATE "_CLUSTERNAME".sl_table
   SET
     tab_reloid = pgc.oid
   FROM
     "_CLUSTERNAME".repair_config_tab rct,
     pg_catalog.pg_class pgc,
     pg_catalog.pg_namespace pgn
   WHERE
       pg_catalog.quote_ident(rct.tab_relname)=pg_catalog.quote_ident(pgc.relname)
     AND
       pg_catalog.quote_ident(rct.tab_nspname)=pg_catalog.quote_ident(pgn.nspname)
     AND pgc.relnamespace = pgn.oid
     AND rct.reloid = tab_reloid;

 UPDATE "_CLUSTERNAME".sl_sequence
   SET
     seq_reloid = pgc.oid
   FROM
     "_CLUSTERNAME".repair_config_seq rcs,
     pg_catalog.pg_class pgc,
     pg_catalog.pg_namespace pgn
   WHERE
       pg_catalog.quote_ident(rcs.seq_relname)=pg_catalog.quote_ident(pgc.relname)
     AND
       pg_catalog.quote_ident(rcs.seq_nspname)=pg_catalog.quote_ident(pgn.nspname)
     AND pgc.relnamespace = pgn.oid
     AND rcs.reloid = seq_reloid
 ;

samedi 10 décembre 2011

Slony 1.2: ALTER TABLE RENAME TO...

select distinct 'UPDATE _replication.sl_table SET tab_relname='''||p.relname||''' WHERE 
tab_relname='''||r.tab_relname||''' and tab_nspname='''||tab_nspname||''';' from pg_catalog.pg_class p,_replication.sl_table 
r where p.oid=r.tab_reloid and p.relname!=r.tab_relname;