Overblog Suivre ce blog
Editer l'article Administration Créer mon blog

LAMI DBA

Hello !

Aujourd'hui, j'ai décidé de vous parler d'une fonctionnalité de la 12c qui me parait bien pratique, le déplacement ou le renommage online de datafile ! Avant la 12c pour déplacer un datafile, il fallait le passer en OFFLINE, puis via le system (et donc pas sans risques) le déplacer, et enfin effectuer un rename.

La preuve par l'exemple...

 SQL> select file_name from dba_data_files;
FILE_NAME
-------------------------------------------------------------------------
/ORADB/oradata/ORADB/system01.dbf
/ORADB/oradata/ORADB/sysaux01.dbf
/ORADB/oradata/ORADB/undotbs01.dbf
/ORADB/oradata/ORADB/users01.dbf

 

Afin d'illuster cette fonctionnalité, je vais déplacer mon datafile /ORADB/oradata/ORADB/users01.dbf vers l'emplacement /u02/ORADB/oradata

 SQL> alter database move datafile '/ORADB/oradata/ORADB/users01.dbf' to '/u02/ORADB/oradata/user01.dbf'; 

 

Avant d'excuter la commande, ouvrez une autre session sur votre schema de test (lao dans mon cas) afin de vérifier que non seulement les données sont accessibles mais en plus vous pouvez continuer à en inserer.
En fonction de la taille du fichier à déplacer au bout de quelques instants, dans votre première session vous avez le message suivant.

 Database altered. 

 

Durant le période de la copie, comme je l'indiquais les données restent accessibles en lecture /écriture

 SQL> connect lao/lao Connected. SQL> insert into t values (5);
 1 row created.
 SQL> commit;
 Commit complete.
 
SQL> select count(*) from t;
 COUNT(*) 
 ---------- 
  14999991 
SQL> insert into t values (5);
1 row created.
SQL> commit;
Commit complete.

SQL> select count(*) from t;
COUNT(*)
----------
14999992 

 

La confiance n'exclue pas le contrôle !

 

 SQL> select file_name from dba_data_files; 
FILE_NAME 
-------------------------------------------------------------------------- /ORADB/oradata/ORADB/system01.dbf
/ORADB/oradata/ORADB/sysaux01.dbf
/ORADB/oradata/ORADB/undotbs01.dbf
/u02/ORADB/oradata/user01.dbf 

 

et...

 

ls -lht /ORADB/oradata/ORADB/ total 6.1G
  -rw-r-----1 oracle oinstall 51M Jul 23 09:43 redo03.log
  -rw-r-----. 1 oracle oinstall 4.6G Jul 23 09:43 system01.dbf
  -rw-r-----. 1 oracle oinstall 451M Jul 23 09:43 undotbs01.dbf
  -rw-r-----. 1 oracle oinstall 551M Jul 23 09:35 sysaux01.dbf
  -rw-r-----. 1 oracle oinstall 51M Jul 23 09:10 redo02.log
  -rw-r-----. 1 oracle oinstall 51M Jul 23 09:10 redo01.log
  -rw-r-----. 1 oracle oinstall 351M Jul 22 10:09 temp01.dbf
  
ls -lht /u02/ORADB/oradata/ total 1.4G
  -rw-r-----. 1 oracle oinstall 1.4G Jul 23 09:40 user01.dbf

 

 

 

Et voila, mon datafile a bien été déplacé pendant que mes données restaient accessibles !

Mais encore...

 

Qui peut le plus peut le moins, donc avec cette fonctionnalité, on peut
-1/ juste renommer le datafile.
-2/ Egalement déplacer les datafiles concernant les tablespaces SYSTEM & SYSAUX
-3/ Via l'option KEEP en fin de ligne permet de faire conserver une copie du fichier à son emplacement d'origine.
-4/ Dans le cas de l'utilisation d'un flashback database, le fichier ne sera pas remis à son emplacement initial.

@++ LAMI

Published by lami DBA - - Administration, oracle 12c

commentaires

Articles autour des SGBD Oracle, SQL Server & PostgreSQL

A propos de LAMI-DBA

Le Blog LAMI-DBA est la fusion de deux blogs existants, celui de LAurent (laodba) et celui de MIckael (dbafaq), deux DBA passionnés des sgbd, et particulièrement d'Oracle.

 

Laurent, 45 ans, Expert Oracle & MS SQL Server, Team Leader, dit "Le Taz", Certifié Expert RAC 11G, Exadata Implementation Specialist, OCA 11G, 

Profil Linkdin

 

 

 

Mickael, 35 ans, Expert Oracle, dit "Batman", Certifié Expert RAC 11G, OCP 11G, OCP 10G,

Profil Linkdin      

 

Hébergé par Overblog