Pacote CS_RESOURCE_MANAGER

O pacote CS_RESOURCE_MANAGER fornece uma interface para listar e atualizar parâmetros do grupo de consumidores e para reverter parâmetros para valores padrão.

CLEAR_PENDING_AREA Procedimento

Este procedimento limpa as alterações pendentes para o gerenciador de recursos.

Sintaxe


CS_RESOURCE_MANAGER.CLEAR_PENDING_AREA;

CREATE_CONSUMER_GROUP Procedimento

Este procedimento define grupos de consumidores de recursos.

Sintaxe

CS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
   consumer_group  IN VARCHAR2,
   comment         IN VARCHAR2 DEFAULT NULL);

Parâmetros

Parâmetro Descrição

consumer_group

Nome do grupo de consumidores

comment

Comentário do usuário

Observações de Uso

Você pode determinar como as sessões são colocadas em grupos de consumidores por meio de:

  • Designação da String de Conexão: Especifique o CONSUMER_GROUP na string de conexão do banco de dados, conforme mostrado abaixo. Esta abordagem tem precedência sobre o mapeamento e substituirá todos os mapeamentos definidos.

    (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.us-ashburn-1.oraclecloud.com))(connect_data=(service_name=my_database_low.adb.oraclecloud.com)(CONSUMER_GROUP=OLTP_LOW))(security=(ssl_server_dn_match=yes)))
  • Regras de Mapeamento: Use os subprogramas set_consumer_group_mapping e set_consumer_group_mapping_pri para designar sessões ou aplicativos a grupos de consumidores com base em atributos como nome de usuário ou nome de aplicativo.

Exemplos

BEGIN
  CS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
    consumer_group => 'OLTP_HIGH',
    comment        => 'Priority OLTP sessions');

  CS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
    consumer_group => 'OLTP_LOW',
    comment        => 'Background/low-priority OLTP');

  CS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
    consumer_group => 'LH_BATCH',
    comment        => 'Batch / reporting workloads');  
END;
/

CREATE_PENDING_AREA Procedimento

Este procedimento cria uma área pendente para fazer alterações nos objetos do gerenciador de recursos.

A área pendente pode ser considerada como uma área risco para alterações de esquema do plano. O administrador cria essa área pendente, faz alterações conforme necessário, possivelmente valida essas alterações e, somente quando o envio for concluído, essas alterações se tornarão ativas.

Sintaxe

CS_RESOURCE_MANAGER.CREATE_PENDING_AREA;

Observações de Uso

Você pode, a qualquer momento enquanto a área pendente estiver ativa, exibir o esquema do plano atual com suas alterações selecionando entre as exibições de usuário apropriadas. Consulte Exibindo a Configuração e o Status do Database Resource Manager para obter mais detalhes.

A qualquer momento, você pode limpar a área pendente se quiser interromper as alterações atuais. Você também pode chamar o procedimento VALIDATE para confirmar se as alterações feitas são válidas. Não é necessário executar as alterações em uma determinada ordem para manter um grupo consistente de entradas. Estas verificações são também implicitamente efectuadas quando a área pendente é submetida.

Observação

A Oracle permite grupos de consumidores "órfãos" (em outras palavras, grupos de consumidores que não têm diretivas de plano que se refiram a eles). Isso antecipa que um administrador pode querer criar um grupo de consumidores que não esteja sendo usado no momento, mas que será usado no futuro.
Para planos de recursos, as seguintes regras devem ser seguidas e são verificadas sempre que os procedimentos de validação ou envio são executados:
  • Nenhum esquema de plano pode conter loops.
  • Todos os planos e grupos de consumidores referidos pelas directivas do plano devem existir.
  • Todos os planos devem ter diretivas de plano que se refiram a planos ou grupos de consumidores.
  • Todas as porcentagens em um determinado nível não devem ser adicionadas a mais de 100 para o método de alocação de recursos de ênfase.
  • Nenhum plano pode ser excluído que esteja sendo usado no momento como um plano principal por uma instância ativa.
  • Não pode haver mais de 28 diretivas de plano vindas de um determinado plano (ou seja, nenhum plano pode ter mais de 28 filhos).
  • Não pode haver mais de 28 grupos de consumidores em nenhum esquema de plano ativo.
  • Planos e grupos de consumidores usam o mesmo namespace; portanto, nenhum plano pode ter o mesmo nome que qualquer grupo de consumidores.
  • Deve haver uma diretiva de plano para OTHER_GROUPS em algum lugar em qualquer esquema de plano ativo. Isso garante que uma sessão não coberta pelo plano ativo no momento seja alocada para recursos conforme especificado pela diretiva OTHER_GROUPS.

Se alguma das regras anteriores for quebrada quando verificada pelos procedimentos VALIDATE ou SUBMIT, uma mensagem de erro informativa será retornada. Em seguida, você pode fazer alterações para corrigir um ou mais problemas e reemitir os procedimentos de validação ou envio.

CREATE_PLAN Procedimento

Este procedimento cria entradas que definem planos de recursos.

Sintaxe

CS_RESOURCE_MANAGER.CREATE_PLAN (
   plan                       IN   VARCHAR2, 
   comment                    IN   VARCHAR2 DEFAULT NULL);

Parâmetros

Parâmetro Descrição

plan

Nome do plano de recursos

comment

Comentário do usuário

Exemplo

BEGIN
  CS_RESOURCE_MANAGER.CREATE_PLAN(
    plan    => 'OLTP_LH_PLAN',
    comment => 'Split resources between OLTP and Lakehouse workload types');
END;
/

CREATE_PLAN_DIRECTIVE Procedimento

Este procedimento cria diretivas do plano de recursos.

Sintaxe

CS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE (
   plan                          IN VARCHAR2, 
   consumer_group                IN VARCHAR2, 
   comment                       IN VARCHAR2 DEFAULT NULL, 
   shares                        IN NUMBER   DEFAULT NULL,
   utilization_limit             IN NUMBER   DEFAULT NULL,
   switch_action                 IN VARCHAR2 DEFAULT NULL,
   cpu_time_limit                IN NUMBER   DEFAULT NULL,
   io_megabytes_limit            IN NUMBER   DEFAULT NULL,
   io_reqs_limit                 IN NUMBER   DEFAULT NULL,
   io_logical_limit              IN NUMBER   DEFAULT NULL,
   elapsed_time_limit            IN NUMBER   DEFAULT NULL,
   max_idle_time                 IN NUMBER   DEFAULT NULL,
   max_idle_blocker_time         IN NUMBER   DEFAULT NULL,    
   active_session_limit          IN NUMBER   DEFAULT NULL,
   active_session_timeout        IN NUMBER   DEFAULT NULL,
   parallel_degree_limit         IN NUMBER   DEFAULT NULL,
   concurrency_limit             IN NUMBER   DEFAULT NULL,
   session_pga_limit             IN NUMBER   DEFAULT NULL,
   parallel_queue_timeout        IN NUMBER   DEFAULT NULL,
   parallel_queue_timeout_action IN NUMBER   DEFAULT NULL);

Parâmetros

Parâmetro Descrição

plan

Nome do plano de recursos

consumer_group

Nome do grupo de consumidores

comment

Comentário sobre a diretiva do plano

shares

Compartilhamento de alocação de recursos para o grupo de consumidores. Os compartilhamentos determinam a quantidade de recursos de CPU e E/S que um grupo de consumidores recebe em relação a outros grupos de consumidores. Por exemplo, um grupo de consumidores com um compartilhamento de 2 obterá o dobro dos recursos de CPU e E/S do que um grupo de consumidores com um compartilhamento de 1.

Se você não especificar compartilhamentos para um grupo de consumidores em seu plano, o compartilhamento desse grupo de consumidores será definido como 1.

utilization_limit

Limites de recursos que determinam o máximo de recursos de CPU e E/S que um grupo de consumidores pode obter.

switch_action

Medidas a tomar para atingir qualquer dos limites especificados nas directivas. Os valores válidos são cancel_sql, kill_session ou um nome de grupo de consumidores para alternar.

cpu_time_limit

Tempo na CPU (em segundos) que uma sessão pode executar antes de uma ação ser executada. O padrão é NULL, o que significa ilimitado.

io_megabytes_limit

Quantidade de E/S (em MB) que uma sessão pode emitir antes de uma ação ser executada. O padrão é NULL, o que significa ilimitado.

io_reqs_limit

Número de solicitações de E/S que uma sessão pode emitir antes de uma ação ser executada. O padrão é NULL, o que significa ilimitado.

io_logical_limit

Número de E/Ss lógicas que acionarão a ação especificada por switch_action.

elapsed_time_limit

Tempo decorrido (em segundos) que acionará a ação especificada por switch_action.

max_idle_time

Número de segundos que uma sessão pode ficar ociosa antes de ser encerrada. O padrão é NULL, o que significa ilimitado.

max_idle_blocker_time

Tempo máximo, em segundos, que uma sessão pode ficar ociosa antes de ser encerrada, se a sessão estiver mantendo um bloqueio ou recurso necessário para outras sessões.

active_session_limit

Número máximo de sessões que podem ter simultaneamente uma chamada ativa.

active_session_timeout

Tempo especificado (em segundos) após o qual uma chamada na fila de sessão inativa (aguardando a execução) expirará. O padrão é NULL, o que significa ilimitado.

parallel_degree_limit

Especifica um limite no grau de paralelismo para qualquer operação. O padrão é NULL, o que significa ilimitado. Use o valor 1 para que uma operação seja serial.

concurrency_limit

Define o nível de simultaneidade e, portanto, o Grau de Paralelismo (DOP). Pode fazer o DOP 1.

session_pga_limit

Quantidade máxima de PGA não ajustável (em MB) que uma sessão deste grupo de consumidores pode alocar antes de ser encerrada. NULL (padrão) indica que não há limite.

As operações SQL que alocam PGA ajustável (operações que podem optar por usar espaço temporário) não são controladas por esse limite.

parallel_queue_timeout

Especifica o tempo (em segundos) que uma instrução paralela pode permanecer na fila de instruções paralelas do grupo de consumidores antes de ser removida e encerrada com um erro (ORA- 07454).

parallel_queue_timeout_action

Especifica a ação a ser tomada quando uma instrução paralela é removida da fila devido a parallel_queue_timeout.

Os valores são:
  • CANCEL: A instrução paralela é encerrada com o erro ORA-7454
  • RUN: A instrução SQL é executada imediatamente e poderá ser submetida a downgrade se os servidores paralelos estiverem indisponíveis.

Observações de Uso

  • Não é possível criar diretivas de plano nos planos predefinidos padrão que vêm com o Autonomous AI Database, ou seja, DWCS_PLAN e OLTP_PLAN.
  • Todos os parâmetros, exceto compartilhamentos, assumem como padrão NULL.
  • Um erro será gerado se parallel_queue_timeout for especificado, mas parallel_queue_timeout_action não for especificado.

Exemplos

BEGIN

  -- High-priority OLTP gets 8 CPU/IO shares and no parallelism
  CS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
    plan                  => 'OLTP_LH_PLAN',
    consumer_group        => 'OLTP_HIGH',
    comment               => 'OLTP high priority',
    shares                => 8,
    parallel_degree_limit => 1
  );

  -- Lower-priority OLTP gets 4 CPU/IO shares and no parallelism
  CS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
    plan                  => 'OLTP_LH_PLAN',
    consumer_group        => 'OLTP_LOW',
    comment               => 'OLTP low priority',
    shares                => 2,
    parallel_degree_limit => 1
  );

  -- Lakehouse / batch gets 4 shares and the degree of parallelism is capped to 4.
  -- If a parallel SQL statement waits in the queue for more than 60 seconds, it will be canceled.
  CS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
    plan                          => 'OLTP_LH_PLAN',
    consumer_group                => 'LH_BATCH',
    comment                       => 'Lakehouse/reporting workloads',
    shares                        => 4,
    parallel_degree_limit         => 4,     -- cap DOP within this group (adjust as needed)
    parallel_queue_timeout        => 60,
    parallel_queue_timeout_action => 'CANCEL'
  );

  -- Catch-all for anything unmapped; sessions that are not mapped to a consumer group get 1 CPU/IO share and no parallelism
  CS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
    plan                  => 'OLTP_LH_PLAN',
    consumer_group        => 'OTHER_GROUPS',
    comment               => 'Catch-all for unmapped sessions',
    shares                => 1,
    parallel_degree_limit => 1
  );
END;
/

DELETE_CONSUMER_GROUP Procedimento

Este procedimento exclui grupos de consumidores de recursos.

Sintaxe

CS_RESOURCE_MANAGER.DELETE_CONSUMER_GROUP (
   consumer_group IN VARCHAR2);

Parâmetros

Parâmetro Descrição

consumer_group

Nome do grupo do consumidor a ser excluído.

Observação

Você não pode excluir grupos de consumidores predefinidos que vêm com o Autonomous Database, ou seja, TPURGENT, TP, HIGH, MEDIUM e LOW.

Exemplos

CS_RESOURCE_MANAGER.DELETE_CONSUMER_GROUP (
   consumer_group ==> <consumer_group_name>);

DELETE_PLAN Procedimento

Este procedimento exclui o plano especificado, bem como todas as diretivas do plano a que se refere.

Sintaxe

CS_RESOURCE_MANAGER.DELETE_PLAN ( 
  plan    IN VARCHAR2,
  cascade IN BOOLEAN DEFAULT FALSE); 

Parâmetros

Parâmetro Descrição

plan

Nome do plano de recursos a ser excluído.

Observação

Você não pode excluir planos predefinidos que vêm com o Autonomous Database, ou seja, DWCS_PLAN e OLTP_PLAN.
cascade

Indicador para indicar se deseja excluir o plano especificado e todos os seus descendentes (diretivas do plano, subplanos, grupos de consumidores). Objetos e diretivas obrigatórios não foram excluídos. O valor padrão é false.

Com cascata ON, se DELETE_PLAN encontrar algum erro, ele fará rollback da operação e nada será excluído.

Exemplo

CS_RESOURCE_MANAGER.DELETE_PLAN ( 
  plan    ==> <plan_name>);

DELETE_PLAN_DIRECTIVE Procedimento

Este procedimento exclui diretivas do plano de recursos.

Sintaxe

CS_RESOURCE_MANAGER.DELETE_PLAN_DIRECTIVE (
   plan              IN VARCHAR2, 
   consumer_group    IN VARCHAR2);

Parâmetros

Parâmetro Descrição

plan

Nome do plano de recursos.

Observação

Você não pode excluir diretivas de plano nos planos predefinidos padrão que vêm com o Autonomous Database, ou seja, DWCS_PLAN e OLTP_PLAN.
consumer_group Nome do grupo de consumidores.

Exemplo

CS_RESOURCE_MANAGER.DELETE_PLAN_DIRECTIVE (
   plan            => <plan_name>, 
   consumer_group  => <consumer_group_name>);

Função LIST_CURRENT_RULES

Esta função retorna as configurações atuais do plano padrão.

Observação

LIST_CURRENT_RULES não pode ser usado para exibir as configurações de planos personalizados. Se você estiver usando planos personalizados, poderá usar as Views do DBRM para exibir suas definições.

Sintaxe

CS_RESOURCE_MANAGER.LIST_CURRENT_RULES
   RETURN TABLE;

Exemplo

SELECT * FROM CS_RESOURCE_MANAGER.LIST_CURRENT_RULES();

CONSUMER_GROUP ELAPSED_TIME_LIMIT IO_MEGABYTES_LIMIT SHARES CONCURRENCY_LIMIT DEGREE_OF_PARALLELISM 
-------------- ------------------ ------------------ ------ ----------------- --------------------- 
HIGH                                                      4                 3                     3 
MEDIUM                                                    2                 2                     9 
LOW                                                       1               900                     1 

Função LIST_DEFAULT_RULES

Esta função retorna os valores padrão para todos os grupos de consumidores.

Sintaxe

CS_RESOURCE_MANAGER.LIST_DEFAULT_RULES
  RETURN TABLE;

Observação do Uso

  • Por padrão, o valor da política de grau paralelo é MANUAL para o grupo de consumidores TPURGENT. A função CS_RESOURCE_MANAGER.LIST_DEFAULT_RULES não mostra nenhum valor para o valor padrão do DEGREE_OF_PARALLELISM para o grupo de consumidores TPURGENT.

Exemplo

SELECT * FROM CS_RESOURCE_MANAGER.LIST_DEFAULT_RULES();
CONSUMER_GROUP ELAPSED_TIME_LIMIT IO_MEGABYTES_LIMIT SHARES CONCURRENCY_LIMIT DEGREE_OF_PARALLELISM 
-------------- ------------------ ------------------ ------ ----------------- --------------------- 
HIGH                            0                  0      4                 3                     1 
MEDIUM                          0                  0      2                 1                     1 
LOW                             0                  0      1               300                     1 
TP                              0                  0      8               300                     1 
TPURGENT                        0                  0     12               300                       

REVERT_TO_DEFAULT_VALUES Procedimento

Este procedimento reverte as propriedades do plano do gerenciador de recursos padrão para valores padrão.

Observação

Você não pode usar este procedimento com planos personalizados e ele só pode ser usado para reverter as alterações nos planos padrão do gerenciador de recursos que vêm com o Autonomous Database, ou seja, DWCS_PLAN e OLTP_PLAN.

Sintaxe

CS_RESOURCE_MANAGER.REVERT_TO_DEFAULT_VALUES(
   consumer_group         IN VARCHAR2,
   shares                 IN BOOLEAN   DEFAULT FALSE,
   concurrency_limit      IN BOOLEAN   DEFAULT FALSE);

Parâmetros

Parâmetro Descrição

consumer_group

Especifica o grupo de consumidores a ser revertido.

Os valores válidos são: HIGH, MEDIUM, LOW, TP ou TPURGENT.

shares

Quando o valor for TRUE, reverta os compartilhamentos do serviço para o valor padrão.

concurrency_limit

Quando o valor for TRUE, reverta o valor concurrency_limit do serviço para o valor padrão. Quando você reverte o concurrency_limit, os valores concurrency_limit e degree_of_parallelism são definidos como seus valores padrão.

Exemplos

BEGIN
   CS_RESOURCE_MANAGER.REVERT_TO_DEFAULT_VALUES(
      consumer_group => 'MEDIUM', 
      concurrency_limit => TRUE);
END;
/

BEGIN
   CS_RESOURCE_MANAGER.REVERT_TO_DEFAULT_VALUES(
      consumer_group => 'HIGH', 
      shares => TRUE);
END;
/

SET_CONSUMER_GROUP_MAPPING Procedimento

Este procedimento adiciona, exclui ou modifica entradas que mapeiam sessões para grupos de consumidores, com base nos atributos de log-in e runtime da sessão.

Sintaxe

CS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(
   attribute        IN VARCHAR2, 
   value            IN VARCHAR2, 
   consumer_group   IN VARCHAR2 DEFAULT NULL);

Parâmetros

Parâmetro Descrição

attribute

Atributo de mapeamento a ser adicionado ou modificado. Pode ser uma das Constantes listadas.

value

Valor do atributo a ser correspondente. Isso inclui mapeamento absoluto e expressões regulares.

consumer_group

Nome do grupo de consumidores mapeado ou NULL para excluir um mapeamento.

Observações de Uso

  • Se não existir nenhum mapeamento para o atributo e o valor fornecidos, será criado um mapeamento para o grupo de consumidores fornecido. Se já existir um mapeamento para o atributo e o valor fornecidos, o grupo de consumidores mapeado será atualizado para o determinado. Se o argumento consumer_group for NULL, qualquer mapeamento do atributo e do valor fornecidos será excluído.
  • O subprograma suporta expressões regex simples para o parâmetro value. Ela implementa a mesma semântica que o operador SQL 'LIKE'. Especificamente, ele usa '%' como um curinga com vários caracteres e '_' como um curinga com um único caractere. O caractere '\' pode ser usado para caracteres de escape. Observe que os curingas só poderão ser usados se o atributo for um dos seguintes:
    • CLIENT_OS_USER
    • CLIENT_PROGRAM
    • CLIENT_MACHINE
    • MODULE_NAME
    • MODULE_NAME_ACTION
    • SERVICE_MODULE
    • SERVICE_MODULE_ACTION
  • As comparações de mapeamento do grupo de consumidores para CS_RESOURCE_MANAGER.CLIENT_PROGRAM são executadas removendo o sinal @ e os seguintes caracteres de V$SESSION.PROGRAM antes de compará-lo com o valor CLIENT_PROGRAM fornecido.
  • Você pode usar atributos como nome de usuário ou nome do aplicativo para determinar como as sessões são colocadas em um grupo de consumidores, conforme mostrado no exemplo acima.

Exemplos

BEGIN
  -- Map schema APP_USER to OLTP_HIGH
  CS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(
    attribute  => 'ORACLE_USER',
    value      => 'APP_USER',
    consumer_group => 'OLTP_HIGH');

  CS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(
    attribute  => 'ORACLE_USER',
    value      => 'LH_USER',
    consumer_group => 'LH_BATCH');
END;
/

SET_CONSUMER_GROUP_MAPPING_PRI Procedimento

Vários atributos de uma sessão podem ser usados para mapear a sessão para um grupo de consumidores. Este procedimento prioriza os mapeamentos de atributo.

Sintaxe

CS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING_PRI(
   explicit               IN NUMBER, 
   oracle_user            IN NUMBER, 
   service_name           IN NUMBER,  
   client_program         IN NUMBER, 
   module_name            IN NUMBER, 
   module_name_action     IN NUMBER,
   client_id              IN NUMBER DEFAULT 11);

Parâmetros

Parâmetro Descrição

explicit

Prioridade do mapeamento explícito.

oracle_user

Prioridade do mapeamento de nome de usuário Oracle.

service_name

Prioridade do mapeamento do nome do serviço do cliente.

client_program

Prioridade do mapeamento do programa do cliente.

module_name

Prioridade do mapeamento do nome do módulo do aplicativo.

module_name_action

Prioridade do nome do módulo de aplicativo e mapeamento de ação.

client_id

Identificador do cliente.

Observações de Uso

  • Este procedimento requer que você inclua o pseudo-atributo explícito como um argumento. Deve ser definido como 1. Isso indica que as chaves de grupo de consumidores explícitas têm a prioridade mais alta. A alternância do grupo de consumidores usando DBMS_SESSION.SWITCH_CURRENT_CONSUMER_GROUP terá precedência sobre os mapeamentos do grupo de consumidores.
  • Cada valor de prioridade deve ser um inteiro exclusivo de 1 a 11. Juntos, eles estabelecem uma ordem em que 1 é a prioridade mais alta e 11 é a mais baixa.
  • Você pode usar atributos como nome de usuário ou nome do aplicativo para determinar como as sessões são colocadas em um grupo de consumidores. Consulte a Etapa 4: Criar Mapeamentos do Grupo de Consumidores para obter um exemplo.

SUBMIT_PENDING_AREA Procedimento

Este procedimento envia alterações pendentes para o gerenciador de recursos. Ele limpa a área pendente depois de validar e confirmar as alterações (se válidas).

Observação

Uma chamada para SUBMIT_PENDING_AREA poderá falhar mesmo se VALIDATE_PENDING_AREA for bem-sucedido. Isso poderá ocorrer se um plano que está sendo excluído for carregado por uma instância após a chamada para VALIDATE_PENDING_AREA, mas antes da chamada para SUBMIT_PENDING_AREA.

Sintaxe

CS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA;

UPDATE_PLAN_DIRECTIVE Procedimento

Use este procedimento para atualizar planos predefinidos padrão que vêm com o Autonomous AI Database, ou seja, DWCS_PLAN e OLTP_PLAN para um grupo de consumidores especificado.

Observação

Não é possível usar este procedimento para atualizar as configurações de planos personalizados. Para atualizar um atributo de plano personalizado definido pelo usuário, use o procedimento UPDATE_PLAN_DIRECTIVE_ADV.

Sintaxe

CS_RESOURCE_MANAGER.UPDATE_PLAN_DIRECTIVE(
   consumer_group         IN VARCHAR2,
   io_megabytes_limit     IN NUMBER   DEFAULT NULL,
   elapsed_time_limit     IN NUMBER   DEFAULT NULL,
   shares                 IN NUMBER   DEFAULT NULL,
   concurrency_limit      IN NUMBER   DEFAULT NULL);

Parâmetros

Parâmetro Descrição

consumer_group

Especifica o grupo de consumidores a ser atualizado.

Os valores válidos são: HIGH, MEDIUM, LOW, TP ou TPURGENT.

io_megabytes_limit

Especifica o máximo de megabytes de E/S que uma operação SQL pode emitir.

Especifique um valor NULL para limpar o limite.

elapsed_time_limit

Especifica o tempo máximo em segundos que uma operação SQL pode executar.

Especifique um valor NULL para limpar o limite.

shares

Especifica o valor de compartilhamentos. Um número maior de compartilhamentos, em relação a outros grupos de consumidores, aumenta a prioridade de E/S e CPU do grupo de consumidores.

concurrency_limit

Especifica o número máximo de instruções SQL simultâneas que podem ser executadas.

Esse parâmetro só é válido com o grupo de consumidores MEDIUM.

Observações de Uso

  • Quando uma instrução SQL no serviço especificado é executada mais do que o limite de runtime especificado (elapsed_time_limit) ou faz mais E/S do que o valor especificado (io_megabytes_limit), a instrução SQL será encerrada.

  • Quando o parâmetro concurrency_limit é especificado, o único valor válido para consumer_group é MEDIUM.

Exemplos

BEGIN
   CS_RESOURCE_MANAGER.UPDATE_PLAN_DIRECTIVE(
      consumer_group => 'HIGH', 
      shares => 8);
   CS_RESOURCE_MANAGER.UPDATE_PLAN_DIRECTIVE(
      consumer_group => 'MEDIUM', 
      shares => 2);
   CS_RESOURCE_MANAGER.UPDATE_PLAN_DIRECTIVE(
      consumer_group => 'LOW', 
      shares => 1);
END;
/

BEGIN
   CS_RESOURCE_MANAGER.UPDATE_PLAN_DIRECTIVE(
      consumer_group => 'HIGH', 
      io_megabytes_limit => null, 
      elapsed_time_limit => null);
END;
/

BEGIN
   CS_RESOURCE_MANAGER.UPDATE_PLAN_DIRECTIVE(
     consumer_group => 'MEDIUM', 
     concurrency_limit => 2);
END;
/

UPDATE_PLAN_DIRECTIVE_ADV Procedimento

Use este procedimento para atualizar o plano do gerenciador de recursos definido pelo usuário para um grupo de consumidores especificado.

Observação

Não é possível usar este procedimento para atualizar planos predefinidos padrão que vêm com o Autonomous Database, ou seja, DWCS_PLAN e OLTP_PLAN. Para atualizar um plano de recursos padrão predefinido, use o procedimento UPDATE_PLAN_DIRECTIVE.

Sintaxe

CS_RESOURCE_MANAGER.UPDATE_PLAN_DIRECTIVE_ADV (
   plan                          IN VARCHAR2 DEFAULT NULL, 
   consumer_group                IN VARCHAR2, 
   comment                       IN VARCHAR2 DEFAULT NULL, 
   shares                        IN NUMBER   DEFAULT NULL,
   utilization_limit             IN NUMBER   DEFAULT NULL,
   switch_action                 IN VARCHAR2 DEFAULT NULL,
   cpu_time_limit                IN NUMBER   DEFAULT NULL,
   io_megabytes_limit            IN NUMBER   DEFAULT NULL,
   io_reqs_limit                 IN NUMBER   DEFAULT NULL,
   io_logical_limit              IN NUMBER   DEFAULT NULL,
   elapsed_time_limit            IN NUMBER   DEFAULT NULL,
   max_idle_time                 IN NUMBER   DEFAULT NULL,
   max_idle_blocker_time         IN NUMBER   DEFAULT NULL,    
   active_session_limit          IN NUMBER   DEFAULT NULL,
   active_session_timeout        IN NUMBER   DEFAULT NULL,
   parallel_degree_limit         IN NUMBER   DEFAULT NULL,
   concurrency_limit             IN NUMBER   DEFAULT NULL,
   session_pga_limit             IN NUMBER   DEFAULT NULL,
   parallel_queue_timeout        IN NUMBER   DEFAULT NULL,
   parallel_queue_timeout_action IN NUMBER   DEFAULT NULL);

Parâmetros

Parâmetro Descrição

plan

Nome do plano de recursos.

consumer_group

Nome do grupo de consumidores.

comment

Comentário sobre a diretiva do plano.

shares

Compartilhamento de alocação de recursos para o grupo de consumidores. Os compartilhamentos determinam a quantidade de recursos de CPU e E/S que um grupo de consumidores recebe em relação a outros grupos de consumidores. Por exemplo, um grupo de consumidores com um compartilhamento de 2 obterá o dobro dos recursos de CPU e E/S do que um grupo de consumidores com um compartilhamento de 1.

Se você não especificar compartilhamentos para um grupo de consumidores em seu plano, o compartilhamento desse grupo de consumidores será definido como 1.

utilization_limit

Limites de recursos que determinam o máximo de recursos de CPU e E/S que um grupo de consumidores pode obter.

switch_action

Medidas a tomar para atingir qualquer dos limites especificados nas directivas. Os valores válidos são cancel_sql, kill_session ou um nome de grupo de consumidores para alternar.

cpu_time_limit

Tempo na CPU (em segundos) que uma sessão pode executar antes de uma ação ser executada. O padrão é NULL, o que significa ilimitado.

io_megabytes_limit

Quantidade de E/S (em MB) que uma sessão pode emitir antes de uma ação ser executada. O padrão é NULL, o que significa ilimitado.

io_reqs_limit

Número de solicitações de E/S que uma sessão pode emitir antes de uma ação ser executada. O padrão é NULL, o que significa ilimitado.

io_logical_limit

Número de E/Ss lógicas que acionarão a ação especificada por switch_action.

elapsed_time_limit

Tempo decorrido (em segundos) que acionará a ação especificada por switch_action.

max_idle_time

Número de segundos que uma sessão pode ficar ociosa antes de ser encerrada. O padrão é NULL, o que significa ilimitado.

max_idle_blocker_time

Tempo máximo, em segundos, que uma sessão pode ficar ociosa antes de ser encerrada, se a sessão estiver mantendo um bloqueio ou recurso necessário para outras sessões.

active_session_limit

Número máximo de sessões que podem ter simultaneamente uma chamada ativa.

active_session_timeout

Tempo especificado (em segundos) após o qual uma chamada na fila de sessão inativa (aguardando a execução) expirará. O padrão é NULL, o que significa ilimitado.

parallel_degree_limit

Especifica um limite no grau de paralelismo para qualquer operação. O padrão é NULL, o que significa ilimitado. Use o valor 1 para que uma operação seja serial.

concurrency_limit

Define o nível de simultaneidade e, portanto, o Grau de Paralelismo (DOP). Pode fazer o DOP 1.

session_pga_limit

Quantidade máxima de PGA não ajustável (em MB) que uma sessão deste grupo de consumidores pode alocar antes de ser encerrada. NULL (padrão) indica que não há limite.

As operações SQL que alocam PGA ajustável (operações que podem optar por usar espaço temporário) não são controladas por esse limite.

parallel_queue_timeout

Especifica o tempo (em segundos) que uma instrução paralela pode permanecer na fila de instruções paralelas do grupo de consumidores antes de ser removida e encerrada com um erro (ORA- 07454).

parallel_queue_timeout_action

Especifica a ação a ser tomada quando uma instrução paralela é removida da fila devido a parallel_queue_timeout.

Os valores são:
  • CANCEL: A instrução paralela é encerrada com o erro ORA-7454
  • RUN: A instrução SQL é executada imediatamente e poderá ser submetida a downgrade se os servidores paralelos estiverem indisponíveis.

Observações de Uso

  • Todos os parâmetros, exceto compartilhamentos, assumem como padrão NULL.
  • Um erro será gerado se parallel_queue_timeout_action for especificado, mas parallel_queue_timeout não for especificado.

VALIDATE_PENDING_AREA Procedimento

Este procedimento valida alterações pendentes para o gerenciador de recursos.

Sintaxe


CS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA;