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;
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');
You must be logged in to post a comment.