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. Dalam kasus seperti itu, Oracle Support merekomendasikan agar Anda mengubah jadwal. Jika Anda perlu mengaktifkan atau menonaktifkan SYS pekerjaan, uji operasi pada pekerjaan terjadwal di lingkungan pengujian sebelum menerapkannya di lingkungan produksi. Untuk melakukan tugas untuk pekerjaan Oracle Scheduler yang dimiliki olehSYS, gunakan paket AmazonRDS. rdsadmin.rdsadmin_dbms_scheduler

rdsadmin.rdsadmin_dbms_schedulerProsedur ini didukung untuk Amazon RDS untuk versi mesin Oracle DB yang ditunjukkan pada tabel berikut. Saat menggunakan paket ini, Anda dapat menentukan SYS pekerjaan yang tercantum dalam tabel.

Rilis basis data Pekerjaan diaktifkan secara default Pekerjaan dinonaktifkan secara default
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

Parameter umum untuk prosedur Oracle Scheduler

Untuk melakukan tugas dengan Oracle Scheduler, gunakan prosedur dalam paket AmazonRDS. rdsadmin.rdsadmin_dbms_scheduler Beberapa parameter umum untuk prosedur dalam paket. Paket memiliki parameter umum berikut.

Nama parameter Tipe data Nilai valid Default Wajib Deskripsi

name

varchar2

Prosedur yang tercantum dalam tabel di Melakukan tugas penjadwalan umum untuk instans DB Oracle

Ya

Nama pekerjaan yang akan dimodifikasi.

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 DBMS _ pekerjaan SCHEDULER

Untuk memodifikasi komponen tertentu dari Oracle Scheduler, gunakan prosedur dbms_scheduler.set_attribute Oracle. Untuk informasi selengkapnya, lihat DBMS_ SCHEDULER dan SET_ ATTRIBUTE prosedur di dokumentasi Oracle.

Saat bekerja dengan instans Amazon RDS DB, masukkan 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

Amazon RDS untuk instans Oracle dibuat dengan pengaturan default untuk jendela 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. Connect ke database Anda menggunakan SQL klien Oracle.

  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 dbms_scheduler paket, lihat DBMS_ SCHEDULER dan SET_ SCHEDULER _ ATTRIBUTE di dokumentasi Oracle.

Untuk memodifikasi pengaturan zona waktu saat ini
  1. Connect ke database 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 adalahETC/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.

Mematikan pekerjaan Oracle Scheduler yang dimiliki oleh SYS

Untuk menonaktifkan pekerjaan Oracle Scheduler yang dimiliki oleh SYS pengguna, 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 olehSYS, 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 jenis pekerjaan CALENDAR

Untuk memodifikasi interval pengulangan untuk memodifikasi CALENDAR jenis pekerjaan Oracle Scheduler SYS milik, 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 jenis pekerjaan 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 sebagai berikut RDS untuk rilis Oracle:

  • 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