!
!
!
!
!
!
!
!

White Paper
Modifier la géographie d’une base
Vous avez une base qui est mal distribuée, des disques se sont intervertis, etc, la panoplie des questions relatives à ‘pourquoi réorganiser physiquement une base’ est infinie(.

Le fichier de configuration

. . .
###########################################
# Diagnostics and Statistics
###########################################
background_dump_dest=M:\admin\lib9\bdump
core_dump_dest=M:\admin\lib9\cdump
timed_statistics=TRUE
user_dump_dest=M:\admin\lib9\udump
Copier les répertoires orahome\bdump,cdump,udump à l’emplacement souhaité (répertorié dans init.ora). Pour être sur, recréer le service.

Les tablespaces temporaires

A partir de la version 8i, un tablespace temporaire peut reposer sur un tempfile. Lors d’un déplacement d’un tel fichier, nous ne pouvons pas le renommer. Dans ce cas, nous allons dropper le tablespace temporaire et le recréer au bon endroit.
Un problème qui peut intervenir est l’impossibilité de dropper le tablespace temporaire par défaut (9i+). Nous allons mettre un autre tablespace temporaire comme défaut pendant la recréation du vrai :
drop tablespace TEMPO_00;
create temporary tablespace TEMPO_00 blocksize 8192 
  tempfile  'l:\db\lib9\temp\FTEMPO_00' size 104857600
  autoextend on next 52428800  maxsize 32767M 
  extent management local  uniform size 10485760;
drop tablespace CCTEMP;
create temporary tablespace CCTEMP blocksize 8192 
  tempfile  'l:\db\lib9\temp\CCTEMP.DBF' size 629145600
  autoextend on next 52428800  maxsize 32767M 
  extent management local  uniform size 163840; 

TAFORA SQL> select name from v$tempfile;
NAME
--------------------------------------------------------------------------------
M:\ORAHOME90\ORADATA\LIB9\TEMP01.DBF
L:\DB\LIB9\TEMP\FTEMPO_00
L:\DB\LIB9\TEMP\CCTEMP.DBF
L:\DB\LIB9\TEMP\FTEMPO_02.DBF
TAFORA SQL> alter database default temporary tablespace tempo_00;
Base de donnÚes modifiÚe.
TAFORA SQL> drop tablespace TEMP;
Tablespace supprimÚ.
TAFORA SQL> create temporary tablespace TEMP blocksize 8192
  2    tempfile  'M:\db\lib9\temp\TEMP01.DBF' size 220200960
  3    autoextend on next 655360  maxsize 32767M
  4    extent management local  uniform size 1048576;
Tablespace crÚÚ.
TAFORA SQL> alter database default temporary tablespace temp;
Base de donnÚes modifiÚe.

Les redo logs

Nous sommes en mode ARCHIVELOG. Base ouverte, nous faisons un peu d’exercice :
/* 
|| Modifier la disposition des fichiers redo 
|| Ici nous sommes en mode ARCHIVELOG
|| Il faut parfois switcher :-) alter system switch logfile (base ouverte !)
|| Radu Caulea, TAFORA, 2002
*/
select * from v$logfile;
select * from v$log;
alter system switch logfile; -- pour ne pas dropper le membre actif
alter database drop logfile group 1;
alter database add logfile group 1 'm:\db\lib9\redo\redo_lib9_1A.log' size 15M;
--
alter database drop logfile group 2;
alter database add logfile group 2 'm:\db\lib9\redo\redo_lib9_2A.log' size 15M;
--
alter database drop logfile group 3;
alter database add logfile group 3 'm:\db\lib9\redo\redo_lib9_3A.log' size 15M;
--
alter database drop logfile group 4;
alter database add logfile group 4 'm:\db\lib9\redo\redo_lib9_4A.log' size 15M;
--
alter database drop logfile group 5;
alter database add logfile group 5 'm:\db\lib9\redo\redo_lib9_5A.log' size 15M;
--
alter database add logfile member  'i:\db\lib9\redo\redo_lib9_1B.log' to group 1;
alter database add logfile member  'i:\db\lib9\redo\redo_lib9_2B.log' to group 2;
alter database add logfile member  'i:\db\lib9\redo\redo_lib9_3B.log' to group 3;
alter database add logfile member  'i:\db\lib9\redo\redo_lib9_4B.log' to group 4;
alter database add logfile member  'i:\db\lib9\redo\redo_lib9_5B.log' to group 5;

Immédiatement après la création des miroirs, ils sont invalides. Switcher un tour pour les valider.
MEMBER                                        STATUS
--------------------------------------------- -------
M:\DB\LIB9\REDO\REDO_LIB9_1A.LOG
M:\DB\LIB9\REDO\REDO_LIB9_2A.LOG
M:\DB\LIB9\REDO\REDO_LIB9_3A.LOG
M:\DB\LIB9\REDO\REDO_LIB9_4A.LOG
M:\DB\LIB9\REDO\REDO_LIB9_5A.LOG
I:\DB\LIB9\REDO\REDO_LIB9_1B.LOG              INVALID
I:\DB\LIB9\REDO\REDO_LIB9_2B.LOG              INVALID
I:\DB\LIB9\REDO\REDO_LIB9_3B.LOG              INVALID
I:\DB\LIB9\REDO\REDO_LIB9_4B.LOG              INVALID
I:\DB\LIB9\REDO\REDO_LIB9_5B.LOG              INVALID


Les fichiers de contrôle

select name, status from v$controlfile;
donne:
NAME                                          STATUS
--------------------------------------------- -------
M:\ORAHOME90\ORADATA\LIB9\CONTROL01.CTL
M:\ORAHOME90\ORADATA\LIB9\CONTROL02.CTL
M:\ORAHOME90\ORADATA\LIB9\CONTROL03.CTL
Apres l’arrêt de l’instance, copier les fichiers de contrôle dans les répertoires choisis. Modifier le paramètre control_files dans init.ora et redémarrer l’instance.
control_files=("M:\orahome90\oradata\lib9\control01.ctl", 
     "M:\orahome90\oradata\lib9\control02.ctl", 
     "M:\orahome90\oradata\lib9\control03.ctl")
devient
control_files=("i:\db\lib9\ctrl\control01.ctl", "m:\db\lib9\ctrl\control02.ctl", 
     "z:\db\lib9\ctrl\control03.ctl")
Après startup,
select name, status from v$controlfile;
donne
NAME                                          STATUS
--------------------------------------------- -------
I:\DB\LIB9\CTRL\CONTROL01.CTL
M:\DB\LIB9\CTRL\CONTROL02.CTL
Z:\DB\LIB9\CTRL\CONTROL03.CTL


Copyright © 1998-2002 Radu Caulea, TAFORA MAJ 06/11/2006 !
Commentaires et suggestions radu[CHEZ]tafora.fr