Esse procedimento serve também para:
* Apagar um controlfile;
* Adicionar um controlfile (basta copiar de um controlfile existente com o banco de dados offline);
* Renomear um controlfile.
Hipoteticamente, o controlfile encontra-se em:
/u01/oradata/controlfiles/control01.ctl
/u01/oradata/controlfiles/control02.ctl
E será movido para:
/u01/oradata/control01.ctl
/u01/oradata/control02.ctl
Confirmando os parâmetros e a atual localização dos controlfiles no banco de dados
SQL> select name from v$controlfile;
/u01/oradata/controlfiles/control01.ctl
/u01/oradata/controlfiles/control02.ctl
SQL> show parameter control_files
NAME TYPE VALUE
-------------- ------- ----------------------------------------------
control_files string /u01/oradata/controlfiles/control01.ctl, /u01/
oradata/controlfiles/control02.ctl
Movendo um controlfile utilizando Sqlplus
1. Alterando o parâmetro no spfile
SQL> alter system set control_files = '/u01/oradata/control01.ctl', '/u01/oradata/control02.ctl' scope = spfile;
2. Baixando o banco
SQL> shutdown immediate;
3. Movendo os arquivos
SQL> host mv /u01/oradata/controlfiles/control01.ctl /u01/oradata/control01.ctl
SQL> host mv /u01/oradata/controlfiles/control02.ctl /u01/oradata/control02.ctl
4. Iniciando o banco em modo nomount
SQL> startup nomount
5. Abrindo o banco de dados
SQL> alter database open;
Movendo um controlfile manualmente
1. Criando uma cópia do SPFILE
SQL> create pfile '/u01/pfile.ora' from spfile;
2. Baixando o banco
SQL> shutdown immediate;
3. Edite o arquivo /u01/pfile.ora e procure pela linha
*.control_files='/u01/oradata/controlfiles/control01.ctl', '/u01/oradata/controlfiles/control02.ctl'
4. Altere a linha para
*.control_files='/u01/oradata/control01.ctl', '/u01/oradata/control02.ctl'
5. mova os controlfiles para o novo local
$ mv /u01/oradata/controlfiles/control01.ctl /u01/oradata/control01.ctl
$ mv /u01/oradata/controlfiles/control02.ctl /u01/oradata/control02.ctl
6. Inicie o banco
SQL> startup
Através desses dois processos é possível renomer os controlfiles, apagá-lo ou adicioná-los.
Marcos Aurélio Braga
OCA - Oracle Database 10g Administrator