Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Melakukan tugas penjadwalan umum untuk instans DB Oracle
Beberapa pekerjaan penjadwal yang dimiliki SYS
dapat mengganggu operasi basis data normal. Dukungan Oracle merekomendasikan Anda menonaktifkan pekerjaan ini atau memodifikasi jadwal. Untuk melakukan tugas untuk pekerjaan Oracle Scheduler yang dimiliki oleh SYS
, gunakan paket rdsadmin.rdsadmin_dbms_scheduler
Amazon RDS.
Prosedur rdsadmin.rdsadmin_dbms_scheduler
mendukung versi mesin DB Amazon RDS for Oracle berikut:
-
Oracle Database 21c (21.0.0)
-
Oracle Database 19c
Parameter umum untuk prosedur Oracle Scheduler
Untuk melakukan tugas dengan Oracle Scheduler, gunakan prosedur di paket rdsadmin.rdsadmin_dbms_scheduler
Amazon RDS. Beberapa parameter umum untuk prosedur dalam paket. Paket memiliki parameter umum berikut.
Nama parameter | Tipe data | Nilai valid | Default | Wajib | Deskripsi |
---|---|---|---|---|---|
|
varchar2 |
|
— |
Ya |
Nama pekerjaan yang akan dimodifikasi. catatanSaat ini, Anda hanya dapat memodifikasi pekerjaan |
|
varchar2 |
|
– |
Ya |
Atribut untuk diubah. Untuk memodifikasi interval pengulangan untuk pekerjaan, tentukan Untuk memodifikasi nama jadwal untuk pekerjaan, tentukan |
|
varchar2 |
Interval jadwal atau nama jadwal yang valid, tergantung atribut yang digunakan. |
– |
Ya |
Nilai baru dari atribut. |
Memodifikasi pekerjaan DBMS_SCHEDULER
Untuk memodifikasi komponen tertentu dari Oracle Scheduler, gunakan prosedur dbms_scheduler.set_attribute
Oracle. Untuk informasi selengkapnya, lihat DBMS_SCHEDULER
Saat bekerja dengan instans DB Amazon RDS, siapkan nama skema SYS
ke nama objek. Contoh berikut mengatur atribut rencana sumber daya untuk objek periode hari Senin.
BEGIN DBMS_SCHEDULER.SET_ATTRIBUTE( name => '
SYS.MONDAY_WINDOW
', attribute => 'RESOURCE_PLAN
', value => 'resource_plan_1
'); END; /
Memodifikasi AutoTask jendela pemeliharaan
Instans Amazon RDS for Oracle dibuat dengan pengaturan default untuk masa pemeliharaan. Tugas pemeliharaan otomatis seperti pengumpulan statistik pengoptimal berjalan selama periode ini. Secara default, masa pemeliharaan mengaktifkan Oracle Database Resource Manager.
Untuk memodifikasi periode, gunakan paket DBMS_SCHEDULER
. Anda mungkin perlu memodifikasi pengaturan masa pemeliharaan karena alasan berikut ini:
-
Anda ingin pekerjaan pemeliharaan berjalan pada waktu yang berbeda, dengan pengaturan yang berbeda, atau tidak sama sekali. Misalnya, Anda mungkin ingin mengubah durasi periode atau mengubah waktu dan interval pengulangan.
-
Anda ingin menghindari dampak performa dari mengaktifkan Resource Manager selama pemeliharaan. Misalnya, jika rencana pemeliharaan default ditentukan dan jika masa pemeliharaan terbuka saat basis data sedang dimuat, Anda mungkin melihat peristiwa tunggu seperti
resmgr:cpu quantum
. Peristiwa tunggu ini terkait dengan Database Resource Manager. Anda memiliki opsi berikut:-
Pastikan masa pemeliharaan aktif selama waktu tidak sibuk untuk instans DB Anda.
-
Nonaktifkan rencana pemeliharaan default dengan mengatur atribut
resource_plan
ke string kosong. -
Tetapkan parameter
resource_manager_plan
keFORCE:
dalam grup parameter Anda. Jika instans Anda menggunakan Enterprise Edition, pengaturan ini mencegah paket Database Resource Manager diaktifkan.
-
Untuk memodifikasi pengaturan masa pemeliharaan
-
Terhubung ke basis data Anda menggunakan klien Oracle SQL.
-
Kueri konfigurasi saat ini untuk periode penjadwal.
Contoh berikut mengueri konfigurasi untuk
MONDAY_WINDOW
.SELECT ENABLED, RESOURCE_PLAN, DURATION, REPEAT_INTERVAL FROM DBA_SCHEDULER_WINDOWS WHERE WINDOW_NAME='MONDAY_WINDOW';
Output berikut menunjukkan bahwa periode menggunakan nilai 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
-
Modifikasi periode menggunakan paket
DBMS_SCHEDULER
.Contoh berikut menetapkan rencana sumber daya ke null sehingga Resource Manager tidak akan berjalan selama masa pemeliharaan.
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; /
Contoh berikut mengatur durasi maksimum periode menjadi 2 jam.
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; /
Contoh berikut menetapkan interval pengulangan untuk setiap hari Senin pukul 10 pagi.
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; /
Mengatur zona waktu untuk pekerjaan Oracle Scheduler
Untuk memodifikasi zona waktu Oracle Scheduler, Anda dapat menggunakan prosedur dbms_scheduler.set_scheduler_attribute
Oracle. Untuk informasi selengkapnya tentang paket dbms_scheduler
, lihat DBMS_SCHEDULER
Untuk memodifikasi pengaturan zona waktu saat ini
-
Terhubung ke basis data menggunakan klien seperti SQL Developer. Untuk informasi selengkapnya, lihat Menghubungkan ke instans DB menggunakan pengembang Oracle SQL.
-
Atur zona waktu default sebagai berikut, menggantikan zona waktu untuk
.time_zone_name
BEGIN DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE( attribute => 'default_timezone', value => '
time_zone_name
' ); END; /
Dalam contoh berikut, Anda mengubah zona waktu ke Asia/Shanghai.
Mulai dengan melakukan kueri zona waktu saat ini, seperti yang ditunjukkan berikut.
SELECT VALUE FROM DBA_SCHEDULER_GLOBAL_ATTRIBUTE WHERE ATTRIBUTE_NAME='DEFAULT_TIMEZONE';
Output menunjukkan bahwa zona waktu saat ini adalah ETC/UTC.
VALUE ------- Etc/UTC
Kemudian Anda mengubah zona waktu ke Asia/Shanghai.
BEGIN DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE( attribute => 'default_timezone', value => 'Asia/Shanghai' ); END; /
Untuk informasi selengkapnya tentang perubahan zona waktu sistem, lihat Zona waktu Oracle.
Menonaktifkan pekerjaan Oracle Scheduler yang dimiliki oleh SYS
Untuk menonaktifkan pekerjaan Oracle Scheduler yang dimiliki oleh pengguna SYS, gunakan prosedur rdsadmin.rdsadmin_dbms_scheduler.disable
.
Prosedur ini menggunakan parameter umum name
untuk tugas Oracle Scheduler. Untuk informasi selengkapnya, lihat Parameter umum untuk prosedur Oracle Scheduler.
Contoh berikut menonaktifkan pekerjaan SYS.CLEANUP_ONLINE_IND_BUILD
Oracle Scheduler.
BEGIN rdsadmin.rdsadmin_dbms_scheduler.disable('SYS.CLEANUP_ONLINE_IND_BUILD'); END; /
Mengaktifkan pekerjaan Oracle Scheduler yang dimiliki oleh SYS
Untuk mengaktifkan pekerjaan Oracle Scheduler yang dimiliki oleh SYS, gunakan prosedur rdsadmin.rdsadmin_dbms_scheduler.enable
.
Prosedur ini menggunakan parameter umum name
untuk tugas Oracle Scheduler. Untuk informasi selengkapnya, lihat Parameter umum untuk prosedur Oracle Scheduler.
Contoh berikut memungkinkan pekerjaan SYS.CLEANUP_ONLINE_IND_BUILD
Oracle Scheduler.
BEGIN rdsadmin.rdsadmin_dbms_scheduler.enable('SYS.CLEANUP_ONLINE_IND_BUILD'); END; /
Memodifikasi interval pengulangan Oracle Scheduler untuk pekerjaan tipe CALENDAR
Untuk memodifikasi interval pengulangan untuk memodifikasi pekerjaan Oracle Scheduler yang dimiliki SYS dari tipe CALENDAR
, gunakan prosedur rdsadmin.rdsadmin_dbms_scheduler.disable
.
Prosedur ini menggunakan parameter umum berikut untuk tugas Oracle Scheduler:
-
name
-
attribute
-
value
Untuk informasi selengkapnya, lihat Parameter umum untuk prosedur Oracle Scheduler.
Contoh berikut memodifikasi interval pengulangan dari pekerjaan SYS.CLEANUP_ONLINE_IND_BUILD
Oracle Scheduler.
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; /
Memodifikasi interval pengulangan Oracle Scheduler untuk pekerjaan tipe NAMED
Beberapa pekerjaan Oracle Scheduler menggunakan nama jadwal, bukan interval. Untuk jenis pekerjaan ini, Anda harus membuat jadwal baru yang sudah dinamai di skema pengguna master. Gunakan standar prosedur sys.dbms_scheduler.create_schedule
Oracle untuk melakukan tindakan ini. Selain itu, gunakan rdsadmin.rdsadmin_dbms_scheduler.set_attribute
procedure
untuk menetapkan jadwal baru yang dinamai pada pekerjaan.
Prosedur ini menggunakan parameter umum berikut untuk tugas Oracle Scheduler:
-
name
-
attribute
-
value
Untuk informasi selengkapnya, lihat Parameter umum untuk prosedur Oracle Scheduler.
Contoh berikut memodifikasi interval pengulangan dari pekerjaan SYS.BSLN_MAINTAIN_STATS_JOB
Oracle Scheduler.
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; /
Menonaktifkan autocommit untuk pembuatan pekerjaan Oracle Scheduler
Ketika DBMS_SCHEDULER.CREATE_JOB
membuat pekerjaan Oracle Scheduler, tindakan ini langsung menciptakan pekerjaan dan melakukan perubahan. Anda mungkin perlu memasukkan pembuatan pekerjaan Oracle Scheduler dalam transaksi pengguna untuk melakukan hal berikut:
-
Lakukan roll-back pada pekerjaan Oracle Schedule saat roll-back diterapkan pada transaksi pengguna.
-
Buat pekerjaan Oracle Scheduler saat transaksi pengguna utama dilakukan.
Anda dapat menggunakan prosedur rdsadmin.rdsadmin_dbms_scheduler.set_no_commit_flag
untuk mengaktifkan perilaku ini. Prosedur ini tidak menggunakan parameter. Anda dapat menggunakan prosedur ini dalam rilis RDS for Oracle berikut:
-
21.0.0.0.ru-2022-07.rur-2022-07.r1 dan yang lebih baru
-
19.0.0.0.ru-2022-07.rur-2022-07.r1 dan yang lebih baru
Contoh berikut menonaktifkan autocommit untuk Oracle Scheduler, membuat pekerjaan Oracle Scheduler, dan kemudian melakukan roll-back pada transaksi. Karena autocommit dinonaktifkan, basis data juga melakukan roll-back pada pembuatan pekerjaan 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