Transportáveis Tablespace em Diferentes Plataformas
___________________________________________________
No nosso exemplo, o transporte de uma tabela chamada TESTE. O tablespace deve ser independente sem nenhum Objeto referindo-se a outros tablespace para que verifique se o tablespace os auto-contido usando a consulta abaixo:
EXECUTE dbms_tts.transport_set_check (‘TEST’, TRUE, TRUE);
SELECT * FROM transport_set_violations;
se você tiver objetos com referências cruzadas. Solte esses objetos do espaço de tabela de teste(observe que isso está sendo feito em um ambiente de teste para que eu possa soltar os objetos referenciados facilmente. Não deixe cair nenhum objeto sem consultar seu DBA sênior em um ambiente de produção. Você nunca sabe qual objeto tem que dependência. Suponha que você tenha índices no tablespace de teste apontando para tabelas em outro tablespace. Você pode mover com segurança esses índices usando o procedimento pl/sql abaixo:
begin
for C1 in (select index_name a1 from user_indexes)
loop
execute ‘alter index ‘||C1 imediato.A1 / / ‘ reconstruir tablespace on-line < nome tablespace >’;
End loop;
end;
/
agora prossiga e verifique as violações novamente. Se você obter um erro como:
SELECT * FROM transport_set_violations;
VIOLAÇÕES
—————————
Violação 46 : entre em contato o suporte Oracle
Violação 46 : entre em contato o suporte Oracle
Violação 46 : contacte o suporte Oracle
Executar esta consulta para verificar por que a violação está jogando
SELECT TRIM(OBJ1_OWNER) || ‘, ‘ || TRIM(OBJ1_NAME) || ‘, ‘ ||
TRIM(OBJ1_SUBNAME) || ‘, ‘ || TRIM(OBJ1_TYPE) || ‘, ‘ ||
TRIM(TS1_NAME) || ‘, ‘ || TRIM(OBJ2_OWNER) || ‘, ‘ ||
TRIM(OBJ2_NAME) || ‘, ‘ || TRIM(OBJ2_SUBNAME) || ‘, ‘ ||
TRIM(OBJ2_TYPE) || ‘, ‘ || TRIM(TS2_NAME) || ‘, ‘ ||
TRIM(CONSTRAINT_NAME) || ‘, ‘ || TRIM(RAZÃO)
A PARTIR DE PLUGGABLE_SET_CHECK
ONDE MESG_ID=46;
Isso dará saída do que exatamente a violação é para o espaço de tabela transportável. Corrija essas violações e inicie o procedimento real para transportar o espaço de tabela. No meu exemplo, usei a criptografia de dados transparente(TDE) para algumas colunas no banco de dados. A consulta informou que você não pode usar TT_TBS quando tiver colunas criptografadas. Então eu tive que descriptografar as colunas que eu criptografei usando uma consulta como.
selecione * de dba_encrypted_columns;
alterar conta de tabela modificar (o titular do cartão descriptografar);
depois de descriptografar as colunas. Prosseguimos
1. Verifique a versão ENDIAN de origem e destino usando o script abaixo:
—
— quais são as possibilidades de plataforma de Tablespace transportáveis disponíveis?
—
SELECIONE
platform_name
,endian_format
v$transportable_platform
ORDER BY platform_name
;
—
— Qual é a atual ENDIAN-ness do meu banco de dados e plataforma?
—
SELECIONE
D. nome
,TP.endian_format
DE
v$transportable_platform TP
,v$database D
ONDE TP.platform_name = D. platform_name
;
ele relatará se o ENDIAN é “pequeno” ou “grande”. Se o endian for o mesmo em target e source, não há necessidade de ir para tablespace transportável. Você pode simplesmente exportar o espaço de tabela e importá-lo para o destino. Se não continuar como abaixo
2. Altere o espaço de tabela e coloque-o no modo Somente Leitura no código-fonte. Em nosso exemplo, transportaremos um espaço de tabela chamado TEST para o servidor de destino.
ALTER TABLESPACE teste somente leitura;
3. agora exporte os metadados do tablespace.
##Windows###
exp USERID= ‘system/oracle @ Source AS SYSDBA’ TRANSPORT_TABLESPACE = y TABLESPACES = test FILE = test_repository.DMP log = test_repository.txt
###Unix # # #
exp \ ‘sys / oracle AS SYSDBA \’ TRANSPORT_TABLESPACE = y TABLESPACES = test FILE = test_repository.DMP log = test_repository.txt
vá para target e copie dumpfile para qualquer local junto com os arquivos de dados desse espaço de tabela.
imp \ ‘sys / oracle AS sysdba \’ TABLESPACES = test TRANSPORT_TABLESPACE = y FILE = test_repository.DMP datafiles= ‘ users_01.dbf’
4. Até acima é para quando você está exportando um tablespace para uma máquina com as mesmas informações endian. Se você um endian diferente proceder como abaixo. Vamos converter de Solaris 64-bit SPARC (BIG) Para Windows 32-bit (Little)
5. Converter os datafiles usando RMAN e db_file_name_convert
#não utilize este método: Na máquina de Origem: Com o nome do arquivo original
RMAN> converter tablespace ‘TESTE’
para plataforma Microsoft Windows IA (32-bit)’
formato=’/datafiles/rmanbkp/%N_%f’
paralelismo = 4;
## usar este método: Na máquina de Origem: Com o nome do arquivo convertido filename
RMAN> converter tablespace ‘TESTE’
2> para plataforma Microsoft Windows IA (32-bit)’
3> db_file_name_convert ‘/datafiles/oradata/SWX’,’/datafiles/rmanbkp’
4> paralelismo = 4;
Depois que os arquivos são convertidos pode ser encontrado em ‘/datafiles/rmanbkp’. Copie esses arquivos convertidos junto com o despejo de metadados de TT_TBS e coloque-o no servidor de origem e execute import:
imp USERID= ‘system / password @ target AS SYSDBA’
TRANSPORT_TABLESPACE = y
DATAFILES = ‘C:\datafiles\test01.DBF’,’C:\datafiles\test02.DBF’
TABLESPACES=test
FILE = test_repository.dmp
nos casos acima, convertemos os arquivos na plataforma de origem. No entanto, você também pode fazer isso na plataforma de destino. Por exemplo, você pode copiar o arquivo test01.dbf junto com o despejo de metadados em uma máquina de destino de 32 bits do Windows Server 2003 e convertê-lo lá:
RMAN > converter
2 > arquivo de dados ‘c:/users01.dbf ‘ # # diretório onde você colocará seu arquivo de dados do servidor de origem
3> formato ‘c:/datafiles/rmanbkp/%N_%f’ # # diretório onde você receberá o arquivo convertido
4 > ;
esta abordagem criará um arquivo no formato especificado no diretório.
mas por que você gostaria de converter os arquivos de dados na plataforma de destino, exatamente? Um motivo pode ser um tempo de inatividade mais curto, o que requer que os espaços de tabela sejam somente leitura estado apenas durante a duração da cópia para o host de destino. Você pode triplicar o arquivo de dados, fazer o espaço de tabela somente leitura, quebrar o terceiro espelho e imediatamente fazer o espaço de tabela ler/escrever. Este terceiro espelho poderia então ser montado no sistema de destino e convertido no lazer. Esse arranjo minimiza a duração para a qual o espaço de tabela deve permanecer somente leitura.
outro motivo pode ser o desempenho. O banco de dados OLTP pode estar sob uma carga constante e usar a operação de conversão RMAN pode forçar o sistema mais do que o desejado. Em vez disso, a conversão pode ser descarregada para o servidor de data warehouse, onde mais CPUs geralmente estão disponíveis para operações paralelas.