Esecuzione di attività di programmazione comuni per le istanze database Oracle - Amazon Relational Database Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esecuzione di attività di programmazione comuni per le istanze database Oracle

Alcuni processi Scheduler di proprietà di SYS possono interferire con le normali operazioni di database. In questi casi, Oracle Support consiglia di modificare la pianificazione. Se è necessario abilitare o disabilitare i SYS lavori, testate l'operazione sui lavori pianificati in un ambiente di test prima di implementarla in un ambiente di produzione. Per eseguire attività per i job di Oracle Scheduler di proprietà diSYS, utilizza il RDS pacchetto rdsadmin.rdsadmin_dbms_scheduler Amazon.

Le rdsadmin.rdsadmin_dbms_scheduler procedure sono supportate per le versioni del motore Amazon RDS for Oracle DB mostrate nella tabella seguente. Quando usi questo pacchetto, puoi specificare i SYS lavori elencati nella tabella.

Versione del database Lavori abilitati per impostazione predefinita Lavori disabilitati per impostazione predefinita
Oracle Database 19c
BSLN_MAINTAIN_STATS_JOB CLEANUP_NON_EXIST_OBJ CLEANUP_ONLINE_IND_BUILD CLEANUP_ONLINE_PMO CLEANUP_TAB_IOT_PMO CLEANUP_TRANSIENT_PKG CLEANUP_TRANSIENT_TYPE DRA_REEVALUATE_OPEN_FAILURES FILE_SIZE_UPD ORA$AUTOTASK_CLEAN PMO_DEFERRED_GIDX_MAINT_JOB PURGE_LOG RSE$CLEAN_RECOVERABLE_SCRIPT SM$CLEAN_AUTO_SPLIT_MERGE
FGR$AUTOPURGE_JOB FILE_WATCHER HM_CREATE_OFFLINE_DICTIONARY LOAD_OPATCH_INVENTORY ORA$PREPLUGIN_BACKUP_JOB XMLDB_NFS_CLEANUP_JOB
Oracle Database 21c
BSLN_MAINTAIN_STATS_JOB CLEANUP_NON_EXIST_OBJ CLEANUP_ONLINE_IND_BUILD CLEANUP_ONLINE_PMO CLEANUP_TAB_IOT_PMO CLEANUP_TRANSIENT_PKG CLEANUP_TRANSIENT_TYPE DRA_REEVALUATE_OPEN_FAILURES FILE_SIZE_UPD ORA$AUTOTASK_CLEAN PMO_DEFERRED_GIDX_MAINT_JOB PURGE_LOG
FGR$AUTOPURGE_JOB FILE_WATCHER HM_CREATE_OFFLINE_DICTIONARY LOAD_OPATCH_INVENTORY ORA$PREPLUGIN_BACKUP_JOB ORA$_ATSK_AUTOSTS XMLDB_NFS_CLEANUP_JOB

Parametri comuni per procedure Oracle Scheduler

Per eseguire attività con Oracle Scheduler, utilizza le procedure del RDS pacchetto rdsadmin.rdsadmin_dbms_scheduler Amazon. Nelle procedure del pacchetto ci sono diversi parametri comuni. Il pacchetto presenta i seguenti parametri comuni.

Nome del parametro Tipo di dati Valori validi Default Campo obbligatorio Descrizione

name

varchar2

Le procedure elencate nella tabella in Esecuzione di attività di programmazione comuni per le istanze database Oracle

Il nome del processo da modificare.

attribute

varchar2

'REPEAT_INTERVAL','SCHEDULE_NAME'

Attributo da modificare

Per modificare l'intervallo di ripetizione del lavoro, specificare 'REPEAT_INTERVAL'.

Per modificare il nome della pianificazione del lavoro, specificare 'SCHEDULE_NAME'.

value

varchar2

Un intervallo o un nome di pianificazione valido, a seconda dell'attributo utilizzato.

Il nuovo valore dell'attributo.

Modifica di DBMS _ lavori SCHEDULER

Puoi utilizzare la procedura Oracle dbms_scheduler.set_attribute per modificare determinati componenti di Oracle Scheduler. Per ulteriori informazioni, vedere le ATTRIBUTEprocedure DBMS_ SCHEDULER e SET _ nella documentazione di Oracle.

Quando lavori con istanze Amazon RDS DB, aggiungi il nome dello schema SYS al nome dell'oggetto. L'esempio seguente imposta l'attributo del piano delle risorse per l'oggetto finestra Lunedì.

BEGIN DBMS_SCHEDULER.SET_ATTRIBUTE( name => 'SYS.MONDAY_WINDOW', attribute => 'RESOURCE_PLAN', value => 'resource_plan_1'); END; /

Modifica delle finestre di manutenzione AutoTask

Le istanze Amazon RDS for Oracle vengono create con impostazioni predefinite per le finestre di manutenzione. Le attività di manutenzione automatizzate come la raccolta delle statistiche dell'ottimizzatore vengono eseguite durante queste finestre. Per impostazione predefinita, le finestre di manutenzione attivano Oracle Database Resource Manager.

Per modificare la finestra, utilizzare il pacchetto DBMS_SCHEDULER. Potrebbe essere necessario modificare le impostazioni della finestra di manutenzione per i motivi seguenti:

  • Si desidera che i processi di manutenzione vengano eseguiti in un momento diverso, con impostazioni diverse o non del tutto. Ad esempio, è possibile modificare la durata della finestra o modificare il tempo e l'intervallo di ripetizione.

  • Si desidera evitare l'impatto sulle prestazioni dell'abilitazione di Resource Manager durante la manutenzione. Ad esempio, se viene specificato il piano di manutenzione predefinito e se si apre la finestra di manutenzione mentre il database è sotto carico, è possibile che vengano visualizzati eventi di attesa come resmgr:cpu quantum. Questo evento di attesa è correlato a Database Resource Manager. Sono disponibili le seguenti opzioni:

    • Assicurarsi che le finestre di manutenzione siano attive durante i periodi non di punta per l'istanza del database.

    • Disabilitare il piano di manutenzione predefinito impostando l'attributo resource_plan ad una stringa vuota.

    • Imposta il parametro resource_manager_plan su FORCE: nel gruppo di parametri. Se l'istanza utilizza Enterprise Edition, questa impostazione impedisce l'attivazione dei piani di Database Resource Manager.

Per modificare le impostazioni della finestra di manutenzione
  1. Connect al database utilizzando un SQL client Oracle.

  2. Eseguire una query sulla configurazione corrente per una finestra di scheduler.

    Nell'esempio seguente viene eseguita una query sulla configurazione di MONDAY_WINDOW.

    SELECT ENABLED, RESOURCE_PLAN, DURATION, REPEAT_INTERVAL FROM DBA_SCHEDULER_WINDOWS WHERE WINDOW_NAME='MONDAY_WINDOW';

    Il seguente output mostra che la finestra utilizza i valori di default.

    ENABLED RESOURCE_PLAN DURATION REPEAT_INTERVAL --------------- ------------------------------ ---------------- ------------------------------ TRUE DEFAULT_MAINTENANCE_PLAN +000 04:00:00 freq=daily;byday=MON;byhour=22 ;byminute=0; bysecond=0
  3. Modificare la finestra utilizzando il pacchetto DBMS_SCHEDULER.

    Nell'esempio seguente il piano delle risorse viene impostato su null in modo che il Resource Manager non venga eseguito durante la finestra di manutenzione.

    BEGIN -- disable the window to make changes DBMS_SCHEDULER.DISABLE(name=>'"SYS"."MONDAY_WINDOW"',force=>TRUE); -- specify the empty string to use no plan DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'"SYS"."MONDAY_WINDOW"', attribute=>'RESOURCE_PLAN', value=>''); -- re-enable the window DBMS_SCHEDULER.ENABLE(name=>'"SYS"."MONDAY_WINDOW"'); END; /

    L'esempio seguente imposta la durata massima della finestra su 2 ore.

    BEGIN DBMS_SCHEDULER.DISABLE(name=>'"SYS"."MONDAY_WINDOW"',force=>TRUE); DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'"SYS"."MONDAY_WINDOW"', attribute=>'DURATION', value=>'0 2:00:00'); DBMS_SCHEDULER.ENABLE(name=>'"SYS"."MONDAY_WINDOW"'); END; /

    Nell'esempio seguente l'intervallo di ripetizione viene impostato su ogni lunedì alle 10:00.

    BEGIN DBMS_SCHEDULER.DISABLE(name=>'"SYS"."MONDAY_WINDOW"',force=>TRUE); DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'"SYS"."MONDAY_WINDOW"', attribute=>'REPEAT_INTERVAL', value=>'freq=daily;byday=MON;byhour=10;byminute=0;bysecond=0'); DBMS_SCHEDULER.ENABLE(name=>'"SYS"."MONDAY_WINDOW"'); END; /

Impostazione del fuso orario per i job di Oracle Scheduler

Per modificare il fuso orario per Oracle Scheduler, è possibile utilizzare la procedura Oracle dbms_scheduler.set_scheduler_attribute. Per ulteriori informazioni sul dbms_scheduler pacchetto, consulta DBMS_ SCHEDULER e SET_ SCHEDULER _ ATTRIBUTE nella documentazione Oracle.

Per modificare l'impostazione del fuso orario corrente
  1. Connect al database utilizzando un client come SQL Developer. Per ulteriori informazioni, consulta Connessione all'istanza database tramite Oracle SQL Developer.

  2. Impostare il fuso orario predefinito come segue, sostituendo il fuso orario per time_zone_name.

    BEGIN DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE( attribute => 'default_timezone', value => 'time_zone_name' ); END; /

Nell'esempio seguente, si modifica il fuso orario in Asia/Shanghai.

Iniziare interrogando il fuso orario corrente, come illustrato di seguito.

SELECT VALUE FROM DBA_SCHEDULER_GLOBAL_ATTRIBUTE WHERE ATTRIBUTE_NAME='DEFAULT_TIMEZONE';

L'output mostra che il fuso orario corrente èETC/UTC.

VALUE ------- Etc/UTC

Quindi si imposta il fuso orario su Asia/Shanghai.

BEGIN DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE( attribute => 'default_timezone', value => 'Asia/Shanghai' ); END; /

Per ulteriori informazioni sulla modifica del fuso orario di sistema, consulta Fuso orario Oracle.

Disattivazione dei job di Oracle Scheduler di proprietà di SYS

Per disabilitare un job di Oracle Scheduler di proprietà dell'SYSutente, utilizzare la rdsadmin.rdsadmin_dbms_scheduler.disable procedura.

Questa procedura utilizza il parametro comune name per le attività Oracle Scheduler. Per ulteriori informazioni, consulta Parametri comuni per procedure Oracle Scheduler.

L'esempio seguente disabilita il lavoro Oracle Scheduler SYS.CLEANUP_ONLINE_IND_BUILD.

BEGIN rdsadmin.rdsadmin_dbms_scheduler.disable('SYS.CLEANUP_ONLINE_IND_BUILD'); END; /

Attivazione dei job di Oracle Scheduler di proprietà di SYS

Per attivare un job di Oracle Scheduler di proprietà diSYS, utilizzare la rdsadmin.rdsadmin_dbms_scheduler.enable procedura.

Questa procedura utilizza il parametro comune name per le attività Oracle Scheduler. Per ulteriori informazioni, consulta Parametri comuni per procedure Oracle Scheduler.

L'esempio seguente abilita il lavoro Oracle Scheduler per SYS.CLEANUP_ONLINE_IND_BUILD.

BEGIN rdsadmin.rdsadmin_dbms_scheduler.enable('SYS.CLEANUP_ONLINE_IND_BUILD'); END; /

Modifica dell'intervallo di ripetizione di Oracle Scheduler per job di tipo CALENDAR

Per modificare l'intervallo di ripetizione per modificare un tipo di job di Oracle Scheduler di SYS CALENDAR proprietà, utilizzare la procedura. rdsadmin.rdsadmin_dbms_scheduler.disable

Questa procedura utilizza i parametri comuni seguenti per le attività Oracle Scheduler:

  • name

  • attribute

  • value

Per ulteriori informazioni, consulta Parametri comuni per procedure Oracle Scheduler.

L'esempio seguente modifica l'intervallo di ripetizione del lavoro Oracle Scheduler SYS.CLEANUP_ONLINE_IND_BUILD.

BEGIN rdsadmin.rdsadmin_dbms_scheduler.set_attribute( name => 'SYS.CLEANUP_ONLINE_IND_BUILD', attribute => 'repeat_interval', value => 'freq=daily;byday=FRI,SAT;byhour=20;byminute=0;bysecond=0'); END; /

Modifica dell'intervallo di ripetizione di Oracle Scheduler per job di tipo NAMED

I lavori Oracle Scheduler utilizzano il nome della pianificazione invece dell'intervallo. Per questi tipi di lavori, è necessario creare un nuovo nome di pianificazione nello schema dell'utente principale. Per questo, utilizzare la procedura standard Oracle sys.dbms_scheduler.create_schedule. Inoltre, utilizza rdsadmin.rdsadmin_dbms_scheduler.set_attribute procedure per assegnare le nuove pianificazioni denominate al processo.

Questa procedura utilizza i parametri comuni seguenti per le attività Oracle Scheduler:

  • name

  • attribute

  • value

Per ulteriori informazioni, consulta Parametri comuni per procedure Oracle Scheduler.

L'esempio seguente modifica l'intervallo di ripetizione del lavoro Oracle Scheduler SYS.BSLN_MAINTAIN_STATS_JOB.

BEGIN DBMS_SCHEDULER.CREATE_SCHEDULE ( schedule_name => 'rds_master_user.new_schedule', start_date => SYSTIMESTAMP, repeat_interval => 'freq=daily;byday=MON,TUE,WED,THU,FRI;byhour=0;byminute=0;bysecond=0', end_date => NULL, comments => 'Repeats daily forever'); END; / BEGIN rdsadmin.rdsadmin_dbms_scheduler.set_attribute ( name => 'SYS.BSLN_MAINTAIN_STATS_JOB', attribute => 'schedule_name', value => 'rds_master_user.new_schedule'); END; /

Disattivazione del commit automatico per la creazione di processi in Oracle Scheduler

DBMS_SCHEDULER.CREATE_JOB crea i processi Oracle Scheduler immediatamente e conferma le modifiche. Potrebbe essere necessario incorporare la creazione di processi Oracle Scheduler nella transazione utente per:

  • Eseguire il rollback del processo Oracle Schedule quando viene eseguito il rollback della transazione dell'utente.

  • Creare il processo Oracle Scheduler quando viene confermata la transazione dell'utente principale.

Puoi utilizzare la procedura rdsadmin.rdsadmin_dbms_scheduler.set_no_commit_flag per attivare questo comportamento. Questa procedura non richiede parametri. È possibile utilizzare questa procedura nelle seguenti versioni RDS per le versioni Oracle:

  • 21.0.0.0.ru-2022-07.rur-2022-07.r1 versioni successive

  • 19.0.0.0.ru-2022-07.rur-2022-07.r1 versioni successive

L'esempio seguente disattiva il commit automatico per Oracle Scheduler, crea un processo Oracle Scheduler e quindi esegue il rollback della transazione. Poiché il commit automatico è disattivato, il database esegue il rollback anche del processo Oracle Scheduler.

BEGIN rdsadmin.rdsadmin_dbms_scheduler.set_no_commit_flag; DBMS_SCHEDULER.CREATE_JOB(job_name => 'EMPTY_JOB', job_type => 'PLSQL_BLOCK', job_action => 'begin null; end;', auto_drop => false); ROLLBACK; END; / PL/SQL procedure successfully completed. SELECT * FROM DBA_SCHEDULER_JOBS WHERE JOB_NAME='EMPTY_JOB'; no rows selected