Paramétrage du client

Le port du client (de l'application ds_EvDispatch) est 3636 (c'est 2424 pour loris prod).
Cela doit être indiqué dans inishell et dans test/doris.ini sur le client.

Paramétrage de l'OPAC Web

Le site web de loristest est sur le port 2828 (c'est 8080 pour loris prod).
Cela doit être indiqué dans inishell (LISTENP_PORT=2828) et dans conf/OPAC.ini (NUMPORT = 2828)

Regénérer la base test

Il s'agit de copier dans la base de test les structures et les données de la base de production.

1. Faire une sauvegarde de la base de production

1.1. Sous loris : faire StopServer

1.2. Aller dans loris/dmp

C'est là qu'on met les sauvegardes.

1.3. Taper la commande d'export au prompt habituel :

exp <utilisateur de production>/<mot de passe> file=<nom du fichier>.dmp buffer=500000 log=export_<nom du fichier>.log

Exemple : exp abc/abc file=2007.dmp buffer=500000 log=export_2007.log

1.4. Sous loris : faire StartServer

2. Détruire et recréer le compte test

2.1. Sous loristest : faire StopServer

2.2. Revenir à loris/bin

cd ../loris/bin

Parce que c'est là qu'il y a la commande createuser.sql.

2.3. Détruire le compte test

sqlplus system/manager
drop user test cascade;
commit;

2.4. Recréer le compte test

Toujours sous sqlplus, lancer : @createuser.sql test

3. Importer les données de prod dans la base test

3.1. Aller dans loris/dmp

cd ../../loris/dmp

3.2. Taper la commande d'import

imp test/test fromuser=<utilisateur> touser=test file=<nom du fichier>.dmp buffer=500000 log=import_<nom du fichier>.log

Exemple : imp test/test fromuser=xxx touser=test file=2007.dmp buffer=500000 log=import_2007.log

3. En cas d'erreur

On a souvent l'erreur ORA-01658 sur une ou plusieurs tables (parce que l'extent INITIAL n'est pas assez vaste).
Dans ce cas il faut aller dans le fichier log de l'import, copier le texte de l'erreur dans un autre fichier, nettoyer ce texte pour refaire une commande SQL (et donc enregistrer ce nouveau fichier en .sql), lancer la commande ainsi recréée, puis relancer un import des données sur cette table. Exemple :

3.1. Texte de l'erreur dans le fichier log

 "CREATE TABLE "UNIMARC" ("DORIS_KEY" NUMBER(10, 0) NOT NULL ENABLE, "DORIS_S"
 "UBKEY" NUMBER(10, 0), "DORIS_STAMP" VARCHAR2(17), "SORT" VARCHAR2(240), "DI"
 "SPLAY" VARCHAR2(240), "CODE_ACRO" VARCHAR2(30), "FR_BN" VARCHAR2(30), "PPN""
 " VARCHAR2(30), "TYPE_MS" VARCHAR2(1), "UNIMARC1" VARCHAR2(70), "UNIMARC2" V"
 "ARCHAR2(70), "UNIMARC3" VARCHAR2(10), "UNIMARC4" VARCHAR2(70), "UNIMARC5" V"
 "ARCHAR2(10), "UNIMARC6" VARCHAR2(30), "UNIMARC7" VARCHAR2(70), "UNIMARC8" V"
 "ARCHAR2(70), "UNIMARC9" VARCHAR2(70), "UNIMARC10" VARCHAR2(70), "UNIMARC11""
 " VARCHAR2(70), "UNIMARC12" VARCHAR2(70), "UNIMARC13" VARCHAR2(70), "UNIMARC"
 "14" VARCHAR2(70), "UNIMARC15" VARCHAR2(70), "UNIMARC16" VARCHAR2(70), "UNIM"
 "ARC17" NUMBER(10, 0), "UNIMARC18" NUMBER(10, 0), "UNIMARC19" VARCHAR2(5), ""
 "UNIMARC20" VARCHAR2(70), "UNIMARC21" VARCHAR2(70), "UNIMARC22" VARCHAR2(70)"
 ", "UNIMARC23" VARCHAR2(70), "UNIMARC24" VARCHAR2(70), "UNIMARC25" VARCHAR2("
 "70), "UNIMARC26" NUMBER(10, 0), "UNIMARC27" NUMBER(10, 0), "UNIMARC28" NUMB"
 "ER(10, 0), "UNIMARC29" NUMBER(10, 0), "UNIMARC30" NUMBER(10, 0), "T_DORIS" "
 "LONG RAW)  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 LOGGING STORAGE(IN"
 "ITIAL 145096704 NEXT 3145728 MINEXTENTS 1 MAXEXTENTS 121 PCTINCREASE 0 FREE"
 "LISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS""

3.2. Nettoyage pour recréer une commande sql

Le résultat doit être :

CREATE TABLE UNIMARC (DORIS_KEY NUMBER(10, 0) NOT NULL ENABLE, DORIS_SUBKEY NUMBER(10, 0), DORIS_STAMP VARCHAR2(17), SORT VARCHAR2(240), DISPLAY VARCHAR2(240), CODE_ACRO VARCHAR2(30), FR_BN VARCHAR2(30), PPN VARCHAR2(30), TYPE_MS VARCHAR2(1), UNIMARC1 VARCHAR2(70), UNIMARC2 VARCHAR2(70), UNIMARC3 VARCHAR2(10), UNIMARC4 VARCHAR2(70), UNIMARC5 VARCHAR2(10), UNIMARC6 VARCHAR2(30), UNIMARC7 VARCHAR2(70), UNIMARC8 VARCHAR2(70), UNIMARC9 VARCHAR2(70), UNIMARC10 VARCHAR2(70), UNIMARC11 VARCHAR2(70), UNIMARC12 VARCHAR2(70), UNIMARC13 VARCHAR2(70), UNIMARC14 VARCHAR2(70), UNIMARC15 VARCHAR2(70), UNIMARC16 VARCHAR2(70), UNIMARC17 NUMBER(10, 0), UNIMARC18 NUMBER(10, 0), UNIMARC19 VARCHAR2(5), UNIMARC20 VARCHAR2(70), UNIMARC21 VARCHAR2(70), UNIMARC22 VARCHAR2(70), UNIMARC23 VARCHAR2(70), UNIMARC24 VARCHAR2(70), UNIMARC25 VARCHAR2(70), UNIMARC26 NUMBER(10, 0), UNIMARC27 NUMBER(10, 0), UNIMARC28 NUMBER(10, 0), UNIMARC29 NUMBER(10, 0), UNIMARC30 NUMBER(10, 0), T_DORIS LONG RAW)  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 LOGGING STORAGE(INITIAL 145096704 NEXT 3145728 MINEXTENTS 1 MAXEXTENTS 121 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE USERS

Pour cela, voici un script perl (traite_depart.pl) :

#  Traite le fichier depart.log
#  Enlève tous les retours à la ligne, puis la séquence " ", puis tous les "

my $binnen = "depart.log";
my $buiten1 = "temp.log";
my $buiten2 = "table1.sql";

open (INFILE, "<$binnen");
open (OUTFILE, ">$buiten1");
while (<INFILE>)
{
 chomp;
 print {OUTFILE} $_;
}#while
close INFILE;
close OUTFILE;

open (INFILE, "<$buiten1");
open (OUTFILE, ">$buiten2");
while (<INFILE>)
{
 $_ =~ s/"\s"//g;
 $_ =~ s/"//g;
 print {OUTFILE} $_;
}#while
close INFILE;
close OUTFILE;

3.3. Création d'un fichier de commande sql

Il suffit de créer un fichier unimarc.sql (adapter le nom en fonction de la table à recréer) et d'y copier la commande créée ci-dessus.

Ensuite, l'étape essentielle est de taper 500000 derrière le mot INITIAL à la fin de la commande : il s'agit en fait de réduire l'espace imparti au segment à créer.

3.4. Lancer la commande

Lancer sqlplus test/test, puis @unimarc.sql;
Cette commande crée la structure de la table.

Faire la même chose pour toutes les tables en question avant de passer à la suite.

3.5. Importer les données

Taper la commande suivante en adaptant le nom des tables à réimporter.

imp test/test fromuser=<utilisateur> touser=test file=<nom du fichier>.dmp buffer=500000 log=import_<nom du fichier>.log tables=UNIMARC,MATIERE,OCLC ignore=yes

4. Si l'erreur persiste

Si on reçoit toujours la même erreur, c'est que le tablespace est décidément trop étroit. La meilleure solution est de l'agrandir en y ajoutant un datafile :

ALTER TABLESPACE USERS
add datafile '/user/local/oraclev8/oradata/V817/users03.dbf' size 2097152000;

Cette commande ajoute un troisième datafile.
Il faut ensuite reprendre l'import : détruire et recréer le user test, et envoyer la commande d'import.