Melakukan tugas penjadwalan umum untuk instans DB Oracle - Layanan Basis Data Relasional Amazon

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

name

varchar2

'SYS.BSLN_MAINTAIN_STATS_JOB','SYS.CLEANUP_ONLINE_IND_BUILD'

Ya

Nama pekerjaan yang akan dimodifikasi.

catatan

Saat ini, Anda hanya dapat memodifikasi pekerjaan SYS.CLEANUP_ONLINE_IND_BUILD dan SYS.BSLN_MAINTAIN_STATS_JOB.

attribute

varchar2

'REPEAT_INTERVAL','SCHEDULE_NAME'

Ya

Atribut untuk diubah.

Untuk memodifikasi interval pengulangan untuk pekerjaan, tentukan 'REPEAT_INTERVAL'.

Untuk memodifikasi nama jadwal untuk pekerjaan, tentukan 'SCHEDULE_NAME'.

value

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 dan SET_ATTRIBUTE procedure di dokumentasi Oracle.

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 ke FORCE: dalam grup parameter Anda. Jika instans Anda menggunakan Enterprise Edition, pengaturan ini mencegah paket Database Resource Manager diaktifkan.

Untuk memodifikasi pengaturan masa pemeliharaan
  1. Terhubung ke basis data Anda menggunakan klien Oracle SQL.

  2. 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
  3. 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 dan SET_SCHEDULER_ATTRIBUTE dalam dokumentasi Oracle.

Untuk memodifikasi pengaturan zona waktu saat ini
  1. Terhubung ke basis data menggunakan klien seperti SQL Developer. Untuk informasi selengkapnya, lihat Menghubungkan ke instans DB menggunakan pengembang Oracle SQL.

  2. 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