Pacote CS_SESSION
O pacote CS_SESSION
fornece uma interface para alternar o serviço de banco de dados e o grupo de consumidores da sessão existente.
Quando uma conexão é estabelecida com um Autonomous Database, essa sessão recebe um grupo de consumidores. Por exemplo, uma sessão pode ser criada usando uma conexão com o serviço LOW de um Autonomous Database. Talvez você queira alternar o grupo de consumidores, por exemplo, de LOW para HIGH. O pacote CS_SESSION
fornece uma API para alternância. Consulte Nomes de Serviço de Banco de Dados para o Autonomous Database para obter mais informações.
Os grupos de consumidores determinam a simultaneidade e o grau de paralelismo (DOP). Por exemplo, as instruções em uma conexão estabelecida com o serviço de banco de dados LOW são executadas em série. As instruções em uma conexão estabelecida com o serviço de banco de dados ALTO são executadas em paralelo. Se você tiver uma carga de trabalho que exija processamento de demonstrativo serial com a alternância para um grupo de consumidores ALTO para algumas instruções, o pacote CS_SESSION
permitirá que você alterne.
- SWITCH_SERVICE Procedimento
Esse procedimento alterna o serviço de banco de dados e o grupo de consumidores da sessão atual.
Tópico principal: Referência de Pacote Fornecido pelo Autonomous Database
SWITCH_SERVICE Procedimento
Este procedimento alterna o serviço de banco de dados e o grupo de consumidores da sessão atual.
Sintaxe
CS_SESSION.SWITCH_SERVICE(service_name IN varchar2);
Parâmetros
Parâmetro | Descrição |
---|---|
service_name |
Especifica o grupo de consumidores a ser atualizado. Dependendo da carga de trabalho, os valores válidos são: |
Observações de Uso
Quando chamado, o procedimento alterna a sessão para o serviço especificado e o grupo de consumidores relacionado. Se o serviço especificado não existir nesse banco de dados, uma mensagem de erro será fornecida. Por exemplo, se você especificar 'TP' como o nome do serviço em uma carga de trabalho do data warehouse, o erro indicará que ele não é um nome de serviço válido. Nenhum erro será reportado se o serviço atual e o serviço especificado forem idênticos.
O procedimento não redefine os atributos da sessão. Tudo o que o usuário definir para sua sessão antes de chamar este procedimento continuará como está. Por exemplo, se um parâmetro de sessão foi modificado e, posteriormente, a sessão foi alternada para um serviço diferente, o valor do parâmetro permanecerá o mesmo.
Exemplo
BEGIN
CS_SESSION.SWITCH_SERVICE('HIGH');
END;
/
Segurança e Acesso
O usuário ADMIN
recebe o privilégio EXECUTE
no CS_SESSION
com GRANT OPTION
. O privilégio também é concedido ao DWROLE
sem o GRANT OPTION
.
Considerações Adicionais de Segurança
Se um usuário receber privilégios EXECUTE
neste procedimento e você não quiser que ele alterne para um serviço específico, poderá usar um trigger AFTER SET CONTAINER
para bloquear a operação. Isso é feito criando um trigger AFTER SET CONTAINER
.
CREATE OR REPLACE TRIGGER SESS_SWITCH
AFTER SET CONTAINER ON DATABASE
BEGIN
IF SYS_CONTEXT('USERENV','SESSION_USER') = 'USER' and
SYS_CONTEXT('USERENV','SERVICE_NAME') = 'serviceexample_low.adwc.oraclecloud.com'
THEN
NULL;
ELSE
RAISE_APPLICATION_ERROR(-20001, 'Denied! You are not allowed to switch service in the database');
END IF;
END;
/
Mensagens de Erro
A tabela a seguir descreve exceções para CS_SESSION
Erro | Mensagem | Causa |
---|---|---|
20,001 | Nome de serviço inválido. Os valores válidos são HIGH, MEDIUM, LOW. | Para uma carga de trabalho do data warehouse, foi especificado um valor diferente de 'HIGH', 'MEDIUM', 'LOW'. |
20,001 | Nome de serviço inválido. Os valores válidos são HIGH, MEDIUM, LOW, TP, TPURGENT. | Para uma carga de trabalho de processamento de transações, foi especificado um valor diferente de 'HIGH', 'MEDIUM', 'LOW', 'TP', 'TPURGENT'. |
20,002 | Falha na alternância de serviço. | Falha ao alternar para o novo serviço. |
Tópico principal: Pacote CS_SESSION