quinta-feira, 21 de setembro de 2017

Oracle 10g - Mover banco de dados de ASM para filesystem

Olá,
Hoje vamos fazer um teste em um ambiente Oracle XE para mover o banco de dados do ASM para FileSystem.
Primeiramente vamos garantir as seguintes informações:
Baixar o banco de dados e o listener do servidor.
Iniciar apenas o banco de dados Oracle e manter o Listener baixado, para garantir que nenhum usuário irá conectar no ambiente no momento das atividades.
Verifique as tablespaces temporárias no seu ambiente de banco de dados e elimine-as do ambiente, ou seja, podemos dropar as temporárias.

Feito isso, vamos ao passo a passo das atividades:
1 - Criar tablespace temporária no Filesystem, conforme exemplo abaixo:
SQL> alter tablespace  TEMP add tempfile '/mnt/backup/oracle/xe/temp_01.dbf' size 128m autoextend on next 64m maxsize 4096m;

Tablespace altered.

2 - Mover os controlfiles para o Filesystem:
    2.1 Baixe o banco de dados novamente com o comadno:
SQL> shutdown immediate

    2.2 Apenas monte o banco de dados conforme comando abaixo:
SQL> startup mount

    2.3 Configure o parametro do controlfile no filesystem, conforme comando abaixo:
SQL> alter system set control_files='/mnt/backup/oracle/xe/control01.ctl' scope=spfile;

2.4 Baixe o banco de dados novamente:
    SQL> shutdown immediate

2.5 Apenas monte o banco de dados com o comando:
    SQL> startup mount

    2.6 Restaurar o Controlfile via rman, segue exemplo abaixo:
    rman target /
    RESTORE CONTROLFILE FROM '+DATA/xe/controlfile/current.256.745338209';
    alter database mount;

3 - Verifique os Datafiles do seu ambiente de banco de dados:

SQL>  select file#, name from v$datafile;

     FILE# NAME
---------- ------------------------------------------------
     1 +DATA/xe/datafile/system.260.745338219
     2 +DATA/xe/datafile/undotbs1.261.745338231
     3 +DATA/xe/datafile/sysaux.262.745338237
     4 +DATA/xe/datafile/users.264.745338243
     5 +DATA/xe/datafile/rm_dados.266.745340513
     6 +DATA/xe/datafile/rm_dados2.166.74534051
     7 +DATA/xe/datafile/rm_indices.268.745340545
     8 +DATA/xe/datafile/rm_dados_ff.269.745340559

8 rows selected.

4 - Realize a cópia dos datafiles do seu ambiente de banco de dados para o Filesystem do servidor:

RMAN> BACKUP AS COPY DATAFILE  1 FORMAT '/mnt/backup/oracle/xe/system01.dbf';
RMAN> BACKUP AS COPY DATAFILE  2 FORMAT '/mnt/backup/oracle/xe/undotbs1.dbf';
RMAN> BACKUP AS COPY DATAFILE  3 FORMAT '/mnt/backup/oracle/xe/sysaux.dbf';
RMAN> BACKUP AS COPY DATAFILE  4 FORMAT '/mnt/backup/oracle/xe/users.dbf';
RMAN> BACKUP AS COPY DATAFILE  5 FORMAT '/mnt/backup/oracle/xe/rm_dados.dbf';
RMAN> BACKUP AS COPY DATAFILE  6 FORMAT '/mnt/backup/oracle/xe/rm_dados2.dbf';
RMAN> BACKUP AS COPY DATAFILE  7 FORMAT '/mnt/backup/oracle/xe/rm_indices.dbf';
RMAN> BACKUP AS COPY DATAFILE  8 FORMAT '/mnt/backup/oracle/xe/rm_dados_ff.dbf';
   
5 - Execute o Switch para alterar os datafiles e utilizar a cópia que acabamos de gerar:

RMAN>  switch datafile 1 to copy;
RMAN>  switch datafile 2 to copy;
RMAN>  switch datafile 3 to copy;
RMAN>  switch datafile 4 to copy;
RMAN>  switch datafile 5 to copy;
RMAN>  switch datafile 6 to copy;
RMAN>  switch datafile 7 to copy;
RMAN>  switch datafile 8 to copy;

6 - Verifiquei se os datafiles foram alterados e estão no diretório correto:

SQL> select name from v$datafile;

NAME
----------------------------------------------------
/mnt/backup/oracle/xe/system01.dbf
/mnt/backup/oracle/xe/undotbs1.dbf
/mnt/backup/oracle/xe/sysaux.dbf
/mnt/backup/oracle/xe/users.dbf
/mnt/backup/oracle/xe/rm_dados.dbf
/mnt/backup/oracle/xe/rm_dados2.dbf
/mnt/backup/oracle/xe/rm_indices.dbf
/mnt/backup/oracle/xe/rm_dados_ff.dbf

8 rows selected.

7 - Abra o banco de dados com o seguinte comando:
SQL> alter database open;

Database altered.

Pronto, feito isso o seu banco de dados está completamente no filesystem, apenas lembre de recriar os redologs e também mudar o diretório dos archivelog.
Espero que tenha ajudado, qualquer dúvida, deixe o seu comentário.

Nenhum comentário:

Postar um comentário