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, um grupo de consumidores é designado a essa sessão. 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 do 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 HIGH são executadas em paralelo. Se você tiver uma carga de trabalho que exija processamento de instruções em série com alternância para um grupo de consumidores HIGH para algumas instruções, o pacote CS_SESSION
permite a alternação.
- Procedimento SWITCH_SERVICE
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 Fornecida pelo Autonomous Database
Procedimento SWITCH_SERVICE
Esse 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 nome do serviço em uma carga de trabalho data warehouse, o erro indicará que 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 atributos de sessão. Tudo o que o usuário definiu para sua sessão antes de chamar esse procedimento continuará como está. Por exemplo, se um parâmetro de sessão tiver sido modificado e, posteriormente, a sessão tiver sido alternada para outro serviço, 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
em CS_SESSION
com GRANT OPTION
. O privilégio também é concedido a DWROLE
sem o GRANT OPTION
.
Considerações Adicionais de Segurança
Se um usuário receber privilégios EXECUTE
nesse procedimento e você não quiser que esse usuário seja alternado para um serviço específico, poderá usar um trigger AFTER SET CONTAINER
para bloquear a operação. Isso é obtido 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 | Motivo |
---|---|---|
20,001 | Nome de serviço inválido. Os valores válidos são HIG, MEIO e BAIXO. | Para uma carga de trabalho data warehouse, um valor diferente de "HIGH", "MEDIUM" e "LOW" foi especificado. |
20,001 | Nome de serviço inválido. Os valores válidos são ELEVADO, MÉDIO, BAIXO, ATRAVÉS. | Para uma carga de trabalho de processamento de transações, um valor diferente de "HIGH", "MEDIUM", "LOW", "TP" e "TPURGENT". |
20,002 | Falha ao alternar serviço. | Falha ao alternar para o novo serviço. |
Tópico principal: Pacote CS_SESSION