Pacchetto CS_RESOURCE_MANAGER

Il pacchetto CS_RESOURCE_MANAGER fornisce un'interfaccia per elencare e aggiornare i parametri del gruppo di consumer e per ripristinare i valori predefiniti dei parametri.

Procedura CLEAR_PENDING_AREA

Questa procedura cancella le modifiche in sospeso per il manager risorse.

Sintassi


CS_RESOURCE_MANAGER.CLEAR_PENDING_AREA;

Procedura CREATE_CONSUMER_GROUP

Questa procedura definisce i gruppi di consumer di risorse.

Sintassi

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

Parametri

Parametro Descrizione

consumer_group

Nome del gruppo di consumer

comment

Commento utente

Note sull'uso

È possibile determinare la modalità di inserimento delle sessioni nei gruppi di consumer mediante:

  • Assegnazione stringa di connessione: specificare il valore CONSUMER_GROUP nella stringa di connessione al database come mostrato di seguito. Questo approccio ha la precedenza sul mapping e sostituirà tutti i mapping definiti.

    (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)))
  • Regole di mapping: utilizzare i programmi secondari set_consumer_group_mapping e set_consumer_group_mapping_pri per assegnare sessioni o applicazioni a gruppi di consumer in base ad attributi quali nome utente o nome applicazione.

Esempi

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;
/

Procedura CREATE_PENDING_AREA

Questa procedura crea un'area in sospeso per apportare modifiche agli oggetti di Resource Manager.

L'area in sospeso può essere considerata come un'area graffio per le modifiche allo schema del piano. L'amministratore crea quest'area in sospeso, apporta le modifiche necessarie, eventualmente convalida le modifiche e solo al termine della sottomissione le modifiche diventano attive.

Sintassi

CS_RESOURCE_MANAGER.CREATE_PENDING_AREA;

Note sull'uso

È possibile, in qualsiasi momento mentre l'area in sospeso è attiva, visualizzare lo schema del piano corrente con le modifiche effettuate effettuando una selezione dalle viste utente appropriate. Per ulteriori informazioni, vedere Visualizzazione della configurazione e dello stato di Database Resource Manager.

È possibile cancellare l'area in sospeso in qualsiasi momento se si desidera interrompere le modifiche correnti. È inoltre possibile chiamare la procedura VALIDATE per verificare se le modifiche apportate sono valide. Non è necessario eseguire le modifiche in un determinato ordine per mantenere un gruppo coerente di voci. Questi controlli vengono eseguiti anche implicitamente quando viene sottomessa l'area in sospeso.

Nota

Oracle consente i gruppi di consumer "orfani" (in altre parole, i gruppi di consumer che non dispongono di direttive di piano che vi fanno riferimento). Si prevede che un amministratore possa voler creare un gruppo di consumer non attualmente in uso, ma che verrà utilizzato in futuro.
Per i piani risorse, è necessario rispettare le regole riportate di seguito e verificarle ogni volta che vengono eseguite le procedure di convalida o sottomissione.
  • Nessuno schema piano può contenere loop.
  • Devono esistere tutti i piani e i gruppi di consumatori a cui fanno riferimento le direttive del piano.
  • Tutti i piani devono avere direttive di piano che si riferiscono a piani o gruppi di consumatori.
  • Tutte le percentuali in un determinato livello non devono essere superiori a 100 per il metodo di allocazione delle risorse di enfasi.
  • Non è possibile eliminare alcun piano attualmente utilizzato come piano superiore da un'istanza attiva.
  • Non possono esserci più di 28 direttive di piano provenienti da un piano specifico (cioè nessun piano può avere più di 28 figli).
  • Non possono esistere più di 28 gruppi di consumer in uno schema piano attivo.
  • I piani e i gruppi di consumer utilizzano lo stesso spazio di nomi; pertanto, nessun piano può avere lo stesso nome di qualsiasi gruppo di consumer.
  • In qualsiasi schema di piano attivo deve essere presente una direttiva di piano per OTHER_GROUPS. Ciò garantisce che a una sessione non coperta dal piano attualmente attivo siano assegnate risorse come specificato dalla direttiva OTHER_GROUPS.

Se una delle regole precedenti viene interrotta quando viene verificata dalle procedure VALIDATE o SUBMIT, viene restituito un messaggio di errore informativo. È quindi possibile apportare modifiche per risolvere uno o più problemi e riemettere le procedure di convalida o sottomissione.

Procedura CREATE_PLAN

Questa procedura crea voci che definiscono i piani risorse.

Sintassi

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

Parametri

Parametro Descrizione

plan

Il nome del piano risorse

comment

Commento utente

Esempio

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

Procedura CREATE_PLAN_DIRECTIVE

Questa procedura crea le direttive del piano risorse.

Sintassi

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);

Parametri

Parametro Descrizione

plan

Il nome del piano risorse

consumer_group

Nome del gruppo di consumer

comment

Commento per la direttiva sul piano

shares

Condivisione dell'allocazione delle risorse per il gruppo di consumer. Le condivisioni determinano la quantità di risorse CPU e IO che un gruppo di consumer ottiene rispetto ad altri gruppi di consumer. Ad esempio, un gruppo di consumer con una quota di 2 otterrà il doppio delle risorse CPU e IO rispetto a un gruppo di consumer con una quota di 1.

Se non si specificano azioni per un gruppo di consumatori nel piano, la quota di tale gruppo di consumatori verrà impostata su 1.

utilization_limit

Limiti delle risorse che determinano il numero massimo di risorse CPU e I/O che un gruppo di consumer può ottenere.

switch_action

Azioni da intraprendere al raggiungimento di uno qualsiasi dei limiti specificati nelle direttive. I valori validi sono cancel_sql, kill_session o il nome di un gruppo di consumer a cui passare.

cpu_time_limit

Tempo alla CPU (in secondi) durante il quale una sessione può essere eseguita prima di eseguire un'azione. L'impostazione predefinita è NULL, ovvero illimitato.

io_megabytes_limit

Quantità di I/O (in MB) che una sessione può emettere prima di eseguire un'azione. L'impostazione predefinita è NULL, ovvero illimitato.

io_reqs_limit

Numero di richieste di I/O che una sessione può emettere prima dell'esecuzione di un'azione. L'impostazione predefinita è NULL, ovvero illimitato.

io_logical_limit

Numero di I/O logici che attiveranno l'azione specificata da switch_action.

elapsed_time_limit

Tempo trascorso (in secondi) che attiverà l'azione specificata da switch_action.

max_idle_time

Numero di secondi durante i quali una sessione può rimanere inattiva prima dell'interruzione della sessione. L'impostazione predefinita è NULL, ovvero illimitato.

max_idle_blocker_time

Periodo di tempo massimo, in secondi, durante il quale una sessione può rimanere inattiva prima dell'interruzione della sessione, se la sessione contiene un blocco o una risorsa necessari per altre sessioni.

active_session_limit

Numero massimo di sessioni che possono contemporaneamente avere una chiamata attiva.

active_session_timeout

Tempo specificato (in secondi) dopo il quale si verificherà il timeout di una chiamata nella coda della sessione inattiva (in attesa di esecuzione). L'impostazione predefinita è NULL, ovvero illimitato.

parallel_degree_limit

Specifica un limite al grado di parallelismo per qualsiasi operazione eseguita. L'impostazione predefinita è NULL, ovvero illimitato. Utilizzare il valore 1 affinché un'operazione sia seriale.

concurrency_limit

Imposta il livello di concorrenza e quindi il grado di parallelismo (DOP). Può fare il DOP 1.

session_pga_limit

Quantità massima di PGA non configurabile (in MB) che una sessione in questo gruppo di consumer può allocare prima di essere interrotta. NULL (impostazione predefinita) indica l'assenza di limiti.

Le operazioni SQL che allocano PGA configurabile (operazioni che possono scegliere di utilizzare lo spazio temporaneo) non sono controllate da questo limite.

parallel_queue_timeout

Specifica il periodo di tempo, in secondi, durante il quale un'istruzione parallela può rimanere nella coda delle istruzioni parallele del gruppo di consumer prima che venga rimossa e terminata con un errore (ORA- 07454).

parallel_queue_timeout_action

Specifica l'azione da eseguire quando un'istruzione parallela viene rimossa dalla coda a causa di parallel_queue_timeout.

I valori disponibili sono:
  • CANCEL: l'istruzione parallela viene terminata con errore ORA-7454
  • RUN: l'istruzione SQL viene eseguita immediatamente e potrebbe essere sottoposta a downgrade se i server paralleli non sono disponibili.

Note sull'uso

  • Non è possibile creare direttive di piano sui piani predefiniti predefiniti forniti con Autonomous AI Database, ovvero DWCS_PLAN e OLTP_PLAN.
  • Tutti i parametri, ad eccezione delle condivisioni, vengono impostati automaticamente su NULL.
  • Se si specifica parallel_queue_timeout, viene restituito un errore, ma non viene specificato parallel_queue_timeout_action.

Esempi

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;
/

Procedura DELETE_CONSUMER_GROUP

Questa procedura elimina i gruppi di consumer di risorse.

Sintassi

CS_RESOURCE_MANAGER.DELETE_CONSUMER_GROUP (
   consumer_group IN VARCHAR2);

Parametri

Parametro Descrizione

consumer_group

Nome del gruppi di consumatori da eliminare.

Nota

Non è possibile eliminare i gruppi di consumer predefiniti forniti con Autonomous Database, ovvero TPURGENT, TP, HIGH, MEDIUM e LOW.

Esempi

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

Procedura DELETE_PLAN

Questa procedura elimina il piano specificato e tutte le direttive del piano a cui fa riferimento.

Sintassi

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

Parametri

Parametro Descrizione

plan

Nome del piano risorse da eliminare.

Nota

Non è possibile eliminare i piani predefiniti forniti con Autonomous Database, ovvero DWCS_PLAN e OLTP_PLAN.
cascade

Flag che indica se eliminare il piano specificato e tutti i relativi discendenti (direttive del piano, piani secondari, gruppi di consumer). Gli oggetti e le direttive obbligatori non vengono eliminati. Il valore predefinito è false.

Con cascade ON, se DELETE_PLAN rileva un errore, esegue il rollback dell'operazione e nulla viene eliminato.

Esempio

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

Procedura DELETE_PLAN_DIRECTIVE

Questa procedura elimina le direttive del piano risorse.

Sintassi

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

Parametri

Parametro Descrizione

plan

Il nome del piano risorse

Nota

Non è possibile eliminare le direttive del piano nei piani predefiniti predefiniti forniti con Autonomous Database, ovvero DWCS_PLAN e OLTP_PLAN.
consumer_group Nome del gruppo di consumer.

Esempio

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

Funzione LIST_CURRENT_RULES

Questa funzione restituisce le impostazioni correnti per il piano predefinito.

Nota

Impossibile utilizzare LIST_CURRENT_RULES per visualizzare le impostazioni per i piani personalizzati. Se si utilizzano piani personalizzati, è possibile utilizzare le viste DBRM per visualizzare le impostazioni.

Sintassi

CS_RESOURCE_MANAGER.LIST_CURRENT_RULES
   RETURN TABLE;

Esempio

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 

Funzione LIST_DEFAULT_RULES

Questa funzione restituisce i valori predefiniti per tutti i gruppi di consumer.

Sintassi

CS_RESOURCE_MANAGER.LIST_DEFAULT_RULES
  RETURN TABLE;

Nota per l'uso

  • Per impostazione predefinita, il valore del criterio del grado parallelo è MANUAL per il gruppo di consumer TPURGENT. La funzione CS_RESOURCE_MANAGER.LIST_DEFAULT_RULES non mostra alcun valore per il valore predefinito per DEGREE_OF_PARALLELISM per il gruppo di consumer TPURGENT.

Esempio

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                       

Procedura REVERT_TO_DEFAULT_VALUES

Questa procedura ripristina i valori predefiniti delle proprietà del piano Resource Manager.

Nota

Non è possibile utilizzare questa procedura con piani personalizzati e può essere utilizzata solo per ripristinare i piani Resource Manager predefiniti forniti con Autonomous Database, ovvero DWCS_PLAN e OLTP_PLAN.

Sintassi

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

Parametri

Parametro Descrizione

consumer_group

Specifica il gruppo di consumer da ripristinare.

I valori validi sono: HIGH, MEDIUM, LOW, TP o TPURGENT.

shares

Se il valore è TRUE, ripristinare il valore predefinito delle condivisioni per il servizio.

concurrency_limit

Se il valore è TRUE, ripristinare il valore predefinito di concurrency_limit per il servizio. Quando si ripristina il valore concurrency_limit, i valori concurrency_limit e degree_of_parallelism vengono impostati sui valori predefiniti.

Esempi

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;
/

Procedura SET_CONSUMER_GROUP_MAPPING

Questa procedura aggiunge, elimina o modifica le voci che mappano le sessioni ai gruppi di consumer in base agli attributi di login e runtime della sessione.

Sintassi

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

Parametri

Parametro Descrizione

attribute

Attributo di mapping da aggiungere o modificare. Può essere uno dei costanti elencati.

value

Valore dell'attributo da confrontare. Ciò include sia il mapping assoluto che le espressioni regolari.

consumer_group

Nome del gruppo di consumer mappati o NULL per eliminare un mapping.

Note sull'uso

  • Se non esiste alcun mapping per l'attributo e il valore specificati, verrà creato un mapping al gruppo di consumer specificato. Se esiste già un mapping per l'attributo e il valore specificati, il gruppo di consumer mappati verrà aggiornato a quello specificato. Se l'argomento consumer_group è NULL, qualsiasi mapping dall'attributo e dal valore specificati verrà eliminato.
  • Il sottoprogramma supporta espressioni regex semplici per il parametro value. Implementa la stessa semantica dell'operatore SQL 'LIKE'. In particolare, utilizza '%' come carattere jolly a più caratteri e '_' come carattere jolly a singolo carattere. Il carattere '\' può essere utilizzato come carattere di escape dei caratteri jolly. Si noti che i caratteri jolly possono essere utilizzati solo se l'attributo è uno dei seguenti:
    • CLIENT_OS_USER
    • CLIENT_PROGRAM
    • CLIENT_MACHINE
    • MODULE_NAME
    • MODULE_NAME_ACTION
    • SERVICE_MODULE
    • SERVICE_MODULE_ACTION
  • I confronti dei mapping dei gruppi di consumer per CS_RESOURCE_MANAGER.CLIENT_PROGRAM vengono eseguiti rimuovendo il segno @ e i caratteri seguenti da V$SESSION.PROGRAM prima di confrontarli con il valore CLIENT_PROGRAM fornito.
  • È possibile utilizzare attributi quali il nome utente o il nome dell'applicazione per determinare la modalità di inserimento delle sessioni in un gruppo di consumer, come mostrato nell'esempio precedente.

Esempi

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;
/

Procedura SET_CONSUMER_GROUP_MAPPING_PRI

È possibile utilizzare più attributi di una sessione per mappare la sessione a un gruppo di consumer. Questa procedura assegna la priorità ai mapping degli attributi.

Sintassi

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);

Parametri

Parametro Descrizione

explicit

Priorità del mapping esplicito.

oracle_user

Priorità del mapping dei nomi utente Oracle.

service_name

Priorità del mapping dei nomi del servizio client.

client_program

Priorità del mapping del programma client.

module_name

Priorità del mapping dei nomi dei moduli applicativi.

module_name_action

Priorità del nome e del mapping delle azioni del modulo applicativo.

client_id

Identificativo del client.

Note sull'uso

  • Questa procedura richiede di includere lo pseudo-attributo esplicito come argomento. Deve essere impostato su 1. Indica che gli switch dei gruppi di consumer espliciti hanno la priorità più alta. Il passaggio al gruppo di consumer mediante DBMS_SESSION.SWITCH_CURRENT_CONSUMER_GROUP avrà la precedenza sui mapping dei gruppi di consumer.
  • Ogni valore di priorità deve essere un numero intero univoco compreso tra 1 e 11. Insieme, stabiliscono un ordine in cui 1 è la priorità più alta e 11 è la più bassa.
  • È possibile utilizzare attributi quali il nome utente o il nome dell'applicazione per determinare la modalità di inserimento delle sessioni in un gruppo di consumer. Per un esempio, vedere Passo 4: Creazione di mapping di gruppi di consumer.

Procedura SUBMIT_PENDING_AREA

Questa procedura sottomette le modifiche in sospeso per il manager risorse. Cancella l'area in sospeso dopo aver convalidato ed eseguito il commit delle modifiche (se valide).

Nota

Una chiamata a SUBMIT_PENDING_AREA potrebbe non riuscire anche se VALIDATE_PENDING_AREA riesce. Ciò può verificarsi se un piano da eliminare viene caricato da un'istanza dopo la chiamata a VALIDATE_PENDING_AREA, ma prima della chiamata a SUBMIT_PENDING_AREA.

Sintassi

CS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA;

Procedura UPDATE_PLAN_DIRECTIVE

Utilizzare questa procedura per aggiornare i piani predefiniti predefiniti forniti con Autonomous AI Database, ovvero DWCS_PLAN e OLTP_PLAN per un gruppo di consumer specificato.

Nota

Non è possibile utilizzare questa procedura per aggiornare le impostazioni per i piani personalizzati. Per aggiornare gli attributi di un piano personalizzato definito dall'utente, utilizzare la procedura UPDATE_PLAN_DIRECTIVE_ADV.

Sintassi

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);

Parametri

Parametro Descrizione

consumer_group

Specifica il gruppo di consumer da aggiornare.

I valori validi sono: HIGH, MEDIUM, LOW, TP o TPURGENT.

io_megabytes_limit

Specifica il numero massimo di megabyte di I/O che un'operazione SQL può eseguire.

Specificare un valore NULL per cancellare il limite.

elapsed_time_limit

Specifica il tempo massimo, in secondi, di esecuzione di un'operazione SQL.

Specificare un valore NULL per cancellare il limite.

shares

Specifica il valore delle condivisioni. Un numero maggiore di condivisioni, rispetto ad altri gruppi di consumer, aumenta la priorità CPU e I/O del gruppo di consumer.

concurrency_limit

Specifica il numero massimo di istruzioni SQL concorrenti che è possibile eseguire.

Questo parametro è valido solo con il gruppo di consumer MEDIUM.

Note sull'uso

  • Quando un'istruzione SQL nel servizio specificato esegue più del limite di runtime specificato (elapsed_time_limit) o esegue più I/O della quantità specificata (io_megabytes_limit), l'istruzione SQL verrà arrestata.

  • Quando si specifica il parametro concurrency_limit, l'unico valore valido per consumer_group è MEDIUM.

Esempi

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;
/

Procedura UPDATE_PLAN_DIRECTIVE_ADV

Utilizzare questa procedura per aggiornare il piano Resource Manager definito dall'utente per un gruppo di consumer specificato.

Nota

Non è possibile utilizzare questa procedura per aggiornare i piani predefiniti forniti con Autonomous Database, ovvero DWCS_PLAN e OLTP_PLAN. Per aggiornare un piano risorse predefinito, utilizzare la procedura UPDATE_PLAN_DIRECTIVE.

Sintassi

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);

Parametri

Parametro Descrizione

plan

Il nome del piano risorse

consumer_group

Nome del gruppo di consumer.

comment

Commento per la direttiva sul piano.

shares

Condivisione dell'allocazione delle risorse per il gruppo di consumer. Le condivisioni determinano la quantità di risorse CPU e IO che un gruppo di consumer ottiene rispetto ad altri gruppi di consumer. Ad esempio, un gruppo di consumer con una quota di 2 otterrà il doppio delle risorse CPU e IO rispetto a un gruppo di consumer con una quota di 1.

Se non si specificano azioni per un gruppo di consumatori nel piano, la quota di tale gruppo di consumatori verrà impostata su 1.

utilization_limit

Limiti delle risorse che determinano il numero massimo di risorse CPU e I/O che un gruppo di consumer può ottenere.

switch_action

Azioni da intraprendere al raggiungimento di uno qualsiasi dei limiti specificati nelle direttive. I valori validi sono cancel_sql, kill_session o il nome di un gruppo di consumer a cui passare.

cpu_time_limit

Tempo alla CPU (in secondi) durante il quale una sessione può essere eseguita prima di eseguire un'azione. Il valore predefinito è NULL, ovvero illimitato.

io_megabytes_limit

Quantità di I/O (in MB) che una sessione può emettere prima di eseguire un'azione. L'impostazione predefinita è NULL, ovvero illimitato.

io_reqs_limit

Numero di richieste di I/O che una sessione può emettere prima dell'esecuzione di un'azione. L'impostazione predefinita è NULL, ovvero illimitato.

io_logical_limit

Numero di I/O logici che attiveranno l'azione specificata da switch_action.

elapsed_time_limit

Tempo trascorso (in secondi) che attiverà l'azione specificata da switch_action.

max_idle_time

Numero di secondi durante i quali una sessione può rimanere inattiva prima dell'interruzione della sessione. L'impostazione predefinita è NULL, ovvero illimitato.

max_idle_blocker_time

Periodo di tempo massimo, in secondi, durante il quale una sessione può rimanere inattiva prima dell'interruzione della sessione, se la sessione contiene un blocco o una risorsa necessari per altre sessioni.

active_session_limit

Numero massimo di sessioni che possono contemporaneamente avere una chiamata attiva.

active_session_timeout

Tempo specificato (in secondi) dopo il quale si verificherà il timeout di una chiamata nella coda della sessione inattiva (in attesa di esecuzione). L'impostazione predefinita è NULL, ovvero illimitato.

parallel_degree_limit

Specifica un limite al grado di parallelismo per qualsiasi operazione eseguita. L'impostazione predefinita è NULL, ovvero illimitato. Utilizzare il valore 1 affinché un'operazione sia seriale.

concurrency_limit

Imposta il livello di concorrenza e quindi il grado di parallelismo (DOP). Può fare il DOP 1.

session_pga_limit

Quantità massima di PGA non configurabile (in MB) che una sessione in questo gruppo di consumer può allocare prima di essere interrotta. NULL (impostazione predefinita) indica l'assenza di limiti.

Le operazioni SQL che allocano PGA configurabile (operazioni che possono scegliere di utilizzare lo spazio temporaneo) non sono controllate da questo limite.

parallel_queue_timeout

Specifica il periodo di tempo, in secondi, durante il quale un'istruzione parallela può rimanere nella coda delle istruzioni parallele del gruppo di consumer prima che venga rimossa e terminata con un errore (ORA- 07454).

parallel_queue_timeout_action

Specifica l'azione da eseguire quando un'istruzione parallela viene rimossa dalla coda a causa di parallel_queue_timeout.

I valori disponibili sono:
  • CANCEL: l'istruzione parallela viene terminata con errore ORA-7454
  • RUN: l'istruzione SQL viene eseguita immediatamente e potrebbe essere sottoposta a downgrade se i server paralleli non sono disponibili.

Note sull'uso

  • Tutti i parametri, ad eccezione delle condivisioni, vengono impostati automaticamente su NULL.
  • Se si specifica parallel_queue_timeout_action, viene restituito un errore, ma non viene specificato parallel_queue_timeout.

Procedura VALIDATE_PENDING_AREA

Questa procedura convalida le modifiche in sospeso per il manager risorse.

Sintassi


CS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA;