Trigger de Logon para Alter Session
(com correção … pois não funcionou para Schema!)

Como funciona a nossa aplicação: o usuário de banco da aplicação não é o Owner, utilizamos roles com privilégios necessários, com isso dentro da aplicação é obrigatório usar SCHEMA.TABELA, SCHEMA.PACKAGE …;

Para testar:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”U1FMPiBjb25uIHNjaGVtYV9vd25lcjsKU1FMPiBDcmVhdGUgdGFibGUgdGFiZWxhX3Rlc3RlKGNhbXBvMSB2YXJjaGFyMigxMCksIGR0X3JlZ2lzdHJvIGRhdGUpOwpTUUw+IGNvbm4gc2NoZW1hMTsKU1FMPiBTZWxlY3QgKiBmcm9tIHNjaGVtYV9vd25lci50YWJlbGFfdGVzdGU7ClNRTD4gY29ubiBzY2hlbWEyOwpTUUw+IFNlbGVjdCAqIGZyb20gc2NoZW1hX293bmVyLnRhYmVsYV90ZXN0ZTs=” hover_enabled=”0″]U1FMPiBjb25uIHNjaGVtYV9vd25lcjsKU1FMPiBDcmVhdGUgdGFibGUgdGFiZWxhX3Rlc3RlKGNhbXBvMSB2YXJjaGFyMigxMCksIGR0X3JlZ2lzdHJvIGRhdGUpOwpTUUw+IGNvbm4gc2NoZW1hMTsKU1FMPiBTZWxlY3QgKiBmcm9tIHNjaGVtYV9vd25lci50YWJlbGFfdGVzdGU7ClNRTD4gY29ubiBzY2hlbWEyOwpTUUw+IFNlbGVjdCAqIGZyb20gc2NoZW1hX293bmVyLnRhYmVsYV90ZXN0ZTs=[/et_pb_dmb_code_snippet]

Problema:
Estavamos precisando fazer uma alteração de schema no nosso projeto, pois essa configuração pode variar em produção, em homologação e em testes, surgiu a idéia de usar Trigger de Logon. Com isso todo login do usuário (schema1 e schema2) no SEU SCHEMA a sessão passaria a ser do SCHEMA Owner (schema_owner). Assim, não precisamos fazer nenhuma alteração de configuração do Oracle, na aplicação, nas configurações da aplicação, simplesmente criamos a trigger.

Abaixo como foi realizado:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”U1FMPiBjb25uIHN5c3RlbTsK4oCTQ3JpYW1vcyBhIFRyaWdnZXIgcGFyYSBvcyBkb2lzIHNjaGVtYXMgcXVlIHByZWNpc2FtIGFjZXNzYXIgbyBEYXRhYmFzZSBvd25lcjoKCkNyZWF0ZSBPciBSZXBsYWNlIFRyaWdnZXIgQWx0ZXJfU2Vzc2lvbgpBZnRlciBMb2dvbiBPbiBEYXRhYmFzZQoKRGVjbGFyZQoKVXNlcm5hbWUgVmFyY2hhcjIoMzApOwpDbW1kMSBWYXJjaGFyMig2NCk7CkNtbWQyIFZhcmNoYXIyKDY0KTsKCkJlZ2luCgpDbW1kMSA6PSDigJhBTFRFUiBTRVNTSU9OIFNFVCBDdXJyZW50X1NjaGVtYT1TQ0hFTUFfT1dORVJfMeKAmTsKQ21tZDIgOj0g4oCYQUxURVIgU0VTU0lPTiBTRVQgQ3VycmVudF9TY2hlbWE9U0NIRU1BX09XTkVSXzPigJk7ClVzZXJuYW1lIDo9IFVzZXI7CgpJZiAoVXNlcm5hbWUgPSDigJhTQ0hFTUEx4oCZIE9yIFVzZXJuYW1lID0g4oCYU0NIRU1BMuKAmSkgVGhlbgpFeGVjdXRlIEltbWVkaWF0ZSBDbW1kMTsKRWxzaWYgVXNlcm5hbWUgPSDigJhTQ0hFTUEz4oCZIFRoZW4KRXhlY3V0ZSBJbW1lZGlhdGUgQ21tZDI7CkVuZCBJZjsKCkV4Y2VwdGlvbgpXaGVuIE90aGVycyBUaGVuCk51bGw7CkVuZDs=” hover_enabled=”0″]U1FMPiBjb25uIHN5c3RlbTsK4oCTQ3JpYW1vcyBhIFRyaWdnZXIgcGFyYSBvcyBkb2lzIHNjaGVtYXMgcXVlIHByZWNpc2FtIGFjZXNzYXIgbyBEYXRhYmFzZSBvd25lcjoKCkNyZWF0ZSBPciBSZXBsYWNlIFRyaWdnZXIgQWx0ZXJfU2Vzc2lvbgpBZnRlciBMb2dvbiBPbiBEYXRhYmFzZQoKRGVjbGFyZQoKVXNlcm5hbWUgVmFyY2hhcjIoMzApOwpDbW1kMSBWYXJjaGFyMig2NCk7CkNtbWQyIFZhcmNoYXIyKDY0KTsKCkJlZ2luCgpDbW1kMSA6PSDigJhBTFRFUiBTRVNTSU9OIFNFVCBDdXJyZW50X1NjaGVtYT1TQ0hFTUFfT1dORVJfMeKAmTsKQ21tZDIgOj0g4oCYQUxURVIgU0VTU0lPTiBTRVQgQ3VycmVudF9TY2hlbWE9U0NIRU1BX09XTkVSXzPigJk7ClVzZXJuYW1lIDo9IFVzZXI7CgpJZiAoVXNlcm5hbWUgPSDigJhTQ0hFTUEx4oCZIE9yIFVzZXJuYW1lID0g4oCYU0NIRU1BMuKAmSkgVGhlbgpFeGVjdXRlIEltbWVkaWF0ZSBDbW1kMTsKRWxzaWYgVXNlcm5hbWUgPSDigJhTQ0hFTUEz4oCZIFRoZW4KRXhlY3V0ZSBJbW1lZGlhdGUgQ21tZDI7CkVuZCBJZjsKCkV4Y2VwdGlvbgpXaGVuIE90aGVycyBUaGVuCk51bGw7CkVuZDs=[/et_pb_dmb_code_snippet]

Para testar:
Conectar como system e dar permissão:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”U1FMPiBncmFudCBzZWxlY3Qgb24gc2NoZW1hX293bmVyLnRhYmVsYV90ZXN0ZSB0byBzY2hlbWExOwpTUUw+IGdyYW50IHNlbGVjdCBvbiBzY2hlbWFfb3duZXIudGFiZWxhX3Rlc3RlIHRvIHNjaGVtYTI7″ hover_enabled=”0″]U1FMPiBncmFudCBzZWxlY3Qgb24gc2NoZW1hX293bmVyLnRhYmVsYV90ZXN0ZSB0byBzY2hlbWExOwpTUUw+IGdyYW50IHNlbGVjdCBvbiBzY2hlbWFfb3duZXIudGFiZWxhX3Rlc3RlIHRvIHNjaGVtYTI7[/et_pb_dmb_code_snippet]

Logar com os usuarios acima (schema1 e schema2);

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”U1FMPiBzZWxlYyAqIGZyb20gdGFiZWxhX3Rlc3RlOw==” hover_enabled=”0″]U1FMPiBzZWxlYyAqIGZyb20gdGFiZWxhX3Rlc3RlOw==[/et_pb_dmb_code_snippet]

Ainda existe uma outra opção que é para o Schemae não para o Database, muda somente o tipo do Logon, só que está não consegui fazer funcionar! Fica como aprendizado.

(Após perceber o erro:)
Obs.: Não vou apagar o post, pois vou analisar para ver se resolvo, não funcionou para o Schema. Somente funcionou porque criei uma de Database que passou despercebida.
Então vou realizar novos testes, mas a principio o alter session somente funciona com logon em Database e não Schema.

Att,
capin