Olá Chiappa,

Usar o data pump realmente não é uma opção, pois o ambiente de produção é do 
nosso cliente, e como não administramos o ambiente, as politicas de segurança 
deles não permitem nenhum tipo de acesso ao servidor de banco de dados, nem 
criar data base link.

Vou estudar as outras opções que você indicou.

Obrigado,
Everson


________________________________
De: oracle_br@yahoogrupos.com.br <oracle_br@yahoogrupos.com.br> em nome de 
jlchia...@yahoo.com.br [oracle_br] <oracle_br@yahoogrupos.com.br>
Enviado: sexta-feira, 28 de setembro de 2018 13:07
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] Re: Como ignorar Materialized View no exp (antigo)



Blz ? Bom, primeira coisa : imagino que o dump file é gerado/gravado na máquina 
do usuário final que vai fazer o import (via comando exp) , E essa tal máquina 
do usuário final já possui o client Oracle instalado (senão não ia ter 
instalado nem exp nem imp), E essa mesma máquina possui acesso via rede AO 
BANCO onde os dados devem ser importados, correto ? O usuário em si não tem 
acesso AO SERVIDOR ORACLE, mas acesso via rede AO DATABASE claro que deve ter, 
senão o import no banco destino a partir dessa máquina de usuário não seria 
possível....

 Muito bem : não é porque o usuário/máquina não tem acesso ao servidor que não 
possa rodar o impdp, okdoc ?? Para o usuário poder rodar  o impdp na máquina 
dele importando o dump file num banco remoto, uma dessas opções deve ser 
verdadeira :

 1. o dump file foi gerado via expdp num diretório lá no servidor Oracle de 
origem E esse diretório pode ser acessado via  rede lá pelo servidor destino : 
aí é simplesmente o usuário final gerar o dump file executando na máquina dele :

 expdp usuario/senha@bancoremoto 
DIRECTORY=objetodirectoryCRIADONOBANCOORIGEMapontandoprumapastadoservidor 
....demasopções.....

 e aí ele faria o import executando na máquina dele :

 impdp usuario/senha@bancoremoto 
DIRECTORY=objetodirectoryCRIADONOBANCODESTINOapontandoprumapastadoservidor 
....demasopções.....


 ==> DEPENDENDO de qual seja o Sistema Operacional nos dois servidores, esse 
'compartilhamento' da pasta/diretório no servidor do banco origem para poder 
ser lido pelo banco destino pode ser feito com NFS, UNC, Samba, etc...

 OU

 2. depois de gerado o dump file lá no servidor TRANSFERE (via FTP ou rcp, 
digamos) o dump file para o servidor destino : isso PODERIA ser um shell script 
lá no banco origem (via job de banco, via cron, etc), ou PODERIA ser uma 
procedure PL/SQL executada pelo usuário.... 
https://oracle-base.com/articles/misc/ftp-from-plsql exemplifica como rodar FTP 
e 
https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:16212348050
 mostra como rodar um shell script, ambos os casos (creio) poderiam ser 
disparados pelo seu usuário final conectando nos bancos via um programa client 
qquer, OU MESMO o usuário final teria na máquina dele um shell script /.BAT 
script que já faz isso tudo pra ele

 OU

 3. (a opção menos desejável, caso não haja NENHUM TIPO de comunicação entre os 
dois servidores Oracle) , o usuário poderia ter um banquinho Oracle qquer free, 
de pequeno porte (um Oracle XE, digamos), banquinho esse que teria um DBLINK 
com o banco origem dos dados E então o usuário conectaria nesse banquinho local 
e geraria o dump file com dados vindos do servidor Oracle remoto via  parâmetro 
NETWORK_LINK...
 Aí deveria haver algum tipo de SHARE da pasta local da máquina do usuário com 
o servidor Oracle destino, aí o usuário rodaria o impdp na máquina dele 
conectando no banco destino desejado e usando um DIRECTORY que lê a pasta local 
dele


===>> OKDOC ???? Só se NENHUMA DESSAS OPÇÕES for viável aí SIM vc teria que 
apelar pro exp/imp tradicionais : o problema aí é que o exp/imp tradicionais 
NÃO POSSUEM COMANDOS pra excluir determinados objetos, essa é UMA das muitas 
melhorias introduzidas no datapump... No exp/imp tradicionais, vc VAI ter que 
apelar pra alguma gambiarra, tipo : OU tentar adicionar um WHERE no export ou 
criar uma política de VPD que não traga as views que vc quer excluir (vide 
https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:5259339200346256666)
 , OU cria na mão antes do import no banco destino objetos com o mesmo nome das 
views que vc não quuer importar e usa IGNORE=Y 
(https://deepakdba.wordpress.com/2009/12/08/import-in-oracle-9i/ fala sobre o 
IGNORE) , OU alguma gambi pesada, tipo Editar o dump file pra renomear/excluir 
as views que vc não quer, colocar a tablespace onde a view materializada vai 
ser criada temporariamente em read-only, ou coisas assim...

 []s

   Chiappa


Responder a