Banco de Dados

Ξ 1 comentário

Como converter um banco de dados oracle de um S.O. para outro

publicado por Alexandre Luis Pires

Este artigo explica como converter um banco de dados Oracle 10g para de qualquer plataforma para qualquer plataforma através do transporte das tablespaces, desde que as plataformas estejam na lista abaixo:

    SQL>  select * from v$transportable_platform;
     PLATFORM_ID PLATFORM_NAME                            ENDIAN_FORMAT
   ----------- ---------------------------------------- --------------
             1 Solaris[tm] OE (32-bit)                  Big
             2 Solaris[tm] OE (64-bit)                  Big
             7 Microsoft Windows IA (32-bit)            Little
            10 Linux IA (32-bit)                        Little
             6 AIX-Based Systems (64-bit)               Big
             3 HP-UX (64-bit)                           Big
             5 HP Tru64 UNIX                            Little
             4 HP-UX IA (64-bit)                        Big
            11 Linux IA (64-bit)                        Little
            15 HP Open VMS                              Little
             8 Microsoft Windows IA (64-bit)            Little
             9 IBM zSeries Based Linux                  Big
            13 Linux x86 64-bit                         Little
            16 Apple Mac OS                             Big
            12 Microsoft Windows x86 64-bit             Little
            17 Solaris Operating System (x86)           Little
            18 IBM Power Based Linux                    Big
            20 Solaris Operating System (x86-64)        Little
            19 HP IA Open VMS                           Little

 

1. Verifique se há restrições

————————————————

Reveja as “Limitações no Uso Transportable Tablespace” seção na Nota 371556,1. Entre outras coisas, objetos que residem no tablespace SYSTEM e objetos pertencentes a SYS não serão transportados.

Isto inclui, mas não está limitado à usuários, privilégios, Stored Procedures PL/SQL e views.

Se você usar SPATIAL INDEX, aplicar a solução na Nota 579136,1 “IMPDP TRANSPORTABLE TABLESPACE  FAILS for SPATIAL INDEX” antes de continuar

Verifique se os tablespaces serão auto-suficientes

 execute sys.dbms_tts.transport_set_check('TBS_DADOS,TBS_INDICE,USERS,TOOLS', true);
 select * from sys.transport_set_violations;

==> Essas violações devem ser resolvidas antes de trasportar os tablespaces.

Coloque as tablespaces em modo READ ONLY

ALTER TABLESPACE TOOLS READ ONLY;
ALTER TABLESPACE USERS READ ONLY;
ALTER TABLESPACE TBS_DADOS  READ ONLY;
ALTER TABLESPACE TBS_INDICE READ ONLY;

3. Exporte os metadados

 exp userid=\'/ as sysdba\' transport_tablespace=y tablespaces=TBS_DADOS,TBS_INDICE,USERS,TOOLS file=spc_tts.dmp log=exp_spc_tts.log statistics=none

Note: Os dados da tabela não serão exportados

Sobre o export dos metadados usando transportable tablespace…

For tablespace REPOSIT …

      . exporting cluster definitions
      . exporting table definitions
      . . exporting table                MTG_COL_DEP_CHG
      . . exporting table                MTG_DATABASES
      ....
      . . exporting table              ALEX11_SYSUSERS
      . exporting referential integrity constraints
      . exporting triggers
      . end transportable tablespace metadata export
      Export terminated successfully without warnings.

4. Verifique a ordenação (endianness) do banco de dados de destino e converta, se necessário

—> Execute localmente a conversão do endian compatível antes da etapa de importação:

    rman target=/
    Recovery Manager: Release 10.1.0.1.0 - 64bit Beta
    connected to target database: V101B2 (DBID=3287908659)
    RMAN> convert tablespace 'TBS_DADOS,TBS_INDICE,USERS,TOOLS'
    2>  to platform='Linux x86 64-bit'
    3> FORMAT='/DADOS/FULL/transport_linux/%U';

5. Mova os datafiles e o arquivo do dump de exportação

——————————————————————

          $ftp tts.dmp
               +
                /database/db101b2/V101B2/datafile/reposit01.dbf (no conversion)
               or
                /tmp/reposit01.dbf (converted file if conversion had been required)

6. Importe os metadados

————————————————

       $ imp userid=\'/ as sysdba\' TRANSPORT_TABLESPACE=Y  file=spc_tts.dmp log=spc_imp_tts.log TABLESPACES= TBS_DADOS,TBS_INDICE,USERS,TOOLS datafiles=u01/transport_linux/dt.dbf,u01/transport_linux/idx.dbf,u01/transport_linux/users.dbf,u01/transport_linux/tools.dbf, (or /tmp/reposit01.dbf )

7. Altere as tablespaces importadas para READ WRITE

——————————————————————-

ALTER TABLESPACE TOOLS READ WRITE;
ALTER TABLESPACE USERS READ WRITE;
ALTER TABLESPACE TBS_DADOS  READ WRITE;
ALTER TABLESPACE TBS_INDICE  READ WRITE;

 

Preservando estatísticas ao transportar Tablespaces no Oracle

 

Este é um roteiro para transportar um tablespace sem ter que analisar novamente tabelas e índices. Isto naturalmente supõe que as estatísticas otimizadoras já tenham sido coletadas. O exemplo usa um schema chamado DEMO e um tablespace chamado TRANSTS.

 

1. Preserve as estatísticas:

 

exec DBMS_STATS.CREATE_STAT_TABLE ('DEMO','DEMOSTATS');
exec DBMS_STATS.EXPORT_SCHEMA_STATS ('DEMO','DEMOSTATS');

 

2. Transforme o tablespace em READ ONLY, como preparação para o transporte:

 ALTER TABLESPACE transts READ ONLY;

3. Verifique se não há nenhuma dependência que venha a violar as restrições de transporte:

 exec dbms_tts.transport_set_check('TRANSTS', TRUE);
SELECT * FROM transport_set_violations;

4. Exporte as definições de dicionário do tablespace:

 exp TRANSPORT_TABLESPACE=y TABLESPACES=transts \ TRIGGERS=y CONSTRAINTS=y GRANTS=y FILE=tts.dmp LOG=exptts.log

5. Faça um upload para um FTP ou copie os arquivos de dados e exporte o arquivo da origem para o destino;

6. Crie usuários no banco de dados alvo, caso eles ainda não tenham sido criados;

7. Ligue os tablespaces ao banco de dados alvo:

imp TRANSPORT_TABLESPACE=y \
     DATAFILES=('/opt/oracle/data/TRANSTS_1.dbf') \
     TABLESPACES=(transts) \
      FILE=tts.dmp LOG=imptts.log

8. Marque o tablespace como READ WRITE. Dessa forma, RMAN reconhecerá sua existência. Caso seja necessário, é possível reverter o ajuste do tablespace para READ ONLY:

 ALTER TABLESPACE transts READ WRITE;

9. Importe as estatísticas preservadas:

 exec DBMS_STATS.IMPORT_SCHEMA_STATS ('DEMO','DEMOSTATS');

Autor

ORACLE OCE RAC 10g R2, OCP 11g, 10g , 9i e 8i - Mais de 22 anos de experiência na área de TI.

Alexandre Luis Pires

Comentários

You must be logged in to post a comment.

Busca

Patrocínio

Publicidade



Siga-nos!

Newsletter: Inscreva-se

Para se inscrever em nossa newsletter preencha o formulário.

Artigos Recentes