Estou desenvolvendo um aplicativo Apex que usa contextos de banco de dados em conjunto com segurança de nível de linha. Gostaria de instalar uma segunda cópia do esquema e do espaço de trabalho na mesma instância; isso funciona, exceto para o Contexto, que é uma coisa global.
Por exemplo, no esquema "DEV", crio o contexto:
CREATE OR REPLACE CONTEXT myapp_ctx USING myapp_pkg;
Quando eu consulto dba_context
, vejo que meu contexto foi criado:
NAMESPACE SCHEMA PACKAGE TYPE
========= ====== ========= ================
MYAPP_CTX DEV MYAPP_PKG ACCESSED LOCALLY
No schema "TEST", crio o contexto como antes:
CREATE OR REPLACE CONTEXT myapp_ctx USING myapp_pkg;
Isso tem o efeito de remover o contexto de desenvolvimento e substituí-lo pelo de teste:
NAMESPACE SCHEMA PACKAGE TYPE
========= ====== ========= ================
MYAPP_CTX TEST MYAPP_PKG ACCESSED LOCALLY
Eu tenho o nome do contexto codificado em várias partes do aplicativo (por exemplo, exibições, pacotes, etc) e prefiro que ele não seja diferente entre os ambientes se eu puder ajudar.
No momento, minha única ideia é parametrizar o nome do namespace nos scripts de implantação - para que o namespace seja, por exemplo, MYAPP_CTX_DEV
ou MYAPP_CTX_TEST
dependendo de uma opção de configuração nos scripts de implantação.
Existem alternativas melhores que me permitem instalar várias versões do meu aplicativo em uma única instância?
Oracle versão 11.1.0.7