Spostare datafile, redolog file e controlfile – Oracle Database
Datafile e RedoLog file
Per spostare i datafile e i redolog file eseguire il seguente comando:
SQL>alter database backup controlfile to trace;
che crea un file di trace generalmente nella seguente cartella:
$ORACLE_HOME/admin/[$ORACLE_SID]/udump/
copiare il file ed editare lo statement di creazione del control file modificando i path dei datafile da spostare;
fare lo shutdown;
SQL>shutdown immediate;
fare la copia fisica dei datafile e dei redolog file nella nuova posizione;
eseguire i comandi precedentemente editati ponendo attenzione a evitare le righe commentate che potrebbero creare problemi;
alter database backup controlfile to trace;
vi $ORACLE_HOME/admin/[$ORACLE_SID]/udump/sid_ora_XXXXX.trc
shutdown immediate;
cp -p /oracleDB/oraBase/oradata/SILDEV/redo*.log /spare2/SILDEV/
cp -p /oracleDB/oraBase/oradata/SILDEV/system01.dbf /oraDB_data/dbase/SILDEV/
cp -p /oracleDB/oraBase/oradata/SILDEV/sysaux01.dbf /oraDB_data/dbase/SILDEV/
cp -p /oracleDB/oraBase/oradata/SILDEV/users01.dbf /oraDB_data/dbase/SILDEV/
cp -p /oracleDB/oraBase/oradata/SILDEV/undotbs01.dbf /oraAS/SILDEV/
cp -p /oracleDB/oraBase/oradata/SILDEV/temp01.dbf /oraDB_data/dbase/SILDEV/STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE “SILDEV” NORESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 ‘/spare2/SILDEV/redo01.log’ SIZE 50M,
GROUP 2 ‘/spare2/SILDEV/redo02.log’ SIZE 50M,
GROUP 3 ‘/spare2/SILDEV/redo03.log’ SIZE 50M
DATAFILE
‘/oraDB_data/dbase/SILDEV/system01.dbf’,
‘/oraAS/SILDEV/undotbs01.dbf’,
‘/oraDB_data/dbase/SILDEV/sysaux01.dbf’,
‘/oraDB_data/dbase/SILDEV/users01.dbf’
CHARACTER SET WE8ISO8859P1
;
ALTER DATABASE OPEN;
ALTER TABLESPACE TEMP ADD TEMPFILE ‘/oraDB_data/dbase/SILDEV/temp01.dbf’
SIZE 20971520 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
Controlfile
Per spostare i controlfile occorre modificare il file spfile.ora nella cartella:
$ORACLE_HOME/dbs/spfile[$ORACLE_SID].ora
farne una copia di sicurezza;
esso e’ un file binario; per cui occore prima trasformarlo in un file di testo col seguente comando:
SQL>create pfile='[path]/pfile[$ORACLE_SID].ora' from spfile='$ORACLE_HOME/dbs/spfile[$ORACLE_SID].ora';
editare il file “pfile[$ORACLE_SID].ora” e modificare il path dei controlfile che si vogliono spostare e/o eventuali altri parametri di sistema;
fare lo shutdown;
SQL>shutdown immediate;
spostare i controlfile nella nuova posizione;
fare una prova del pfile startando il db col seguente comando:
SQL> startup pfile='[path]/pfile[$ORACLE_SID].ora';
e verificare che l’istanza parta correttamente.
potrebbe generare un errore di tipo “ORA-01991: invalid password file…”
in questo caso va rigenerato il file di password che generalmente ha un path del tipo:
[$ORACLE_HOME]/dbs/orapw[$ORACLE_SID]
rinominare il file (per sicurezza) e ricrearlo, il comando è il seguente:
orapwd file=[$ORACLE_HOME]/dbs/orapw[$ORACLE_SID] password=[password]
a questo punto provare a startare di nuovo l’istanza attraverso il pfile,
se tutto va a buon fine ricreare l’spfile dal pfile appena modificato;
SQL>create spfile='$ORACLE_HOME/dbs/spfile[$ORACLE_SID].ora' from pfile='[path]/pfile[$ORACLE_SID].ora';
fare lo startup del database;
SQL>startup;
Verificare il corretto funzionamento del Database.