› Fóruns › Banco de dados Oracle › Impr obj de um schema em outro schema em outro bco › Impr obj de um schema em outro schema em outro bco
Isso aí , C-S-R : como eu disse na minha resposta, “os objetos programados (como procedures, triggers, packages, etc) vão ser transferidos para o novo schema EXATAMENTE COMO ESTAVAM, apenas no usuário destino” : mais que Óbvio, se por qualquer motivo a trigger no schema origem foi codificada com :
BEGIN
COMPRAS.nomedeumaprocedure;
…
END;
===> Claro que o comando de importação mesmo que vc use FROMUSER/TOUSER ou REMAP_SCHEMA apontando para um schema COMPRAS2, ele vai conectar no schema COMPRAS2 e mandar lá exatamente o mesmo código :
BEGIN
COMPRAS.nomedeumaprocedure;
…
END;
que estava codificado…. Realmente, no meu exemplo onde o código da trigger estava como :
BEGIN
add_job_history(:old.employee_id, :old.hire_date, sysdate, :old.job_id, :old.department_id);
END;
/
e como :
BEGIN
secure_dml;
END secure_employees;
/
SEM referenciar o schema-dono das procedures/functions add_job_history e secure_dml dentro do código da trigger, aí sem probs…
O FATO é esse mesmo, o FROMUSER/TOUSER ou REMAP_SCHEMA simplesmente pega o código-fonte no schema origem e o recompila no schema destino DO JEITINHO EXATO que estava, se qquer código PL/SQL referencia outros schemas dentro de si tal código NÂO SERÁ re-escrito…
Airton, se é realmente este o seu caso, IMHO o procedimento mais fácil para alterar esse schema COMPRAS hard-coded em tuas triggers sem ter que editar na mão cada um deles seria escrever uma rotina que obtenha uma string com o código-fonte (normalmente via DBMS_METADATA, mas iirc vc estava com problemas na sua versão 10g pra isso, então talvez tenha que apelar pra DBA/ALL/USER_SOURCE ou DBA/ALL/USER_TRIGGERS) , depois usar as funções string do RDBMS Oracle (principalmente a TRANSLATE) para trocar ‘COMPRAS.’ por ‘COMPRAS2.’ e finalmente executar esse DDL alterado no banco-destino, é isso…
[]s
Chiappa