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 |
|
|
Oracle Database 21c |
|
|
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 |
---|---|---|---|---|---|
|
varchar2 |
Le procedure elencate nella tabella in Esecuzione di attività di programmazione comuni per le istanze database Oracle |
— |
Sì |
Il nome del processo da modificare. |
|
varchar2 |
|
– |
Sì |
Attributo da modificare Per modificare l'intervallo di ripetizione del lavoro, specificare Per modificare il nome della pianificazione del lavoro, specificare |
|
varchar2 |
Un intervallo o un nome di pianificazione valido, a seconda dell'attributo utilizzato. |
– |
Sì |
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
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
suFORCE:
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
-
Connect al database utilizzando un SQL client Oracle.
-
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
-
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
Per modificare l'impostazione del fuso orario corrente
-
Connect al database utilizzando un client come SQL Developer. Per ulteriori informazioni, consulta Connessione all'istanza database tramite Oracle SQL Developer.
-
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