Pular para o conteúdo

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

#108842
Avatar photoJosé Laurindo Chiappa
Moderador

    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