

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
<a name="Appendix.Oracle.CommonDBATasks.Scheduler"></a>

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 oleh `SYS`, gunakan paket `rdsadmin.rdsadmin_dbms_scheduler` Amazon RDS.

`rdsadmin.rdsadmin_dbms_scheduler`Prosedur ini didukung untuk versi mesin Amazon RDS for 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 |  <pre>BSLN_MAINTAIN_STATS_JOB<br />CLEANUP_NON_EXIST_OBJ<br />CLEANUP_ONLINE_IND_BUILD<br />CLEANUP_ONLINE_PMO<br />CLEANUP_TAB_IOT_PMO<br />CLEANUP_TRANSIENT_PKG<br />CLEANUP_TRANSIENT_TYPE<br />DRA_REEVALUATE_OPEN_FAILURES<br />FILE_SIZE_UPD<br />ORA$AUTOTASK_CLEAN<br />PMO_DEFERRED_GIDX_MAINT_JOB<br />PURGE_LOG<br />RSE$CLEAN_RECOVERABLE_SCRIPT<br />SM$CLEAN_AUTO_SPLIT_MERGE</pre>  |  <pre>FGR$AUTOPURGE_JOB<br />FILE_WATCHER<br />HM_CREATE_OFFLINE_DICTIONARY<br />LOAD_OPATCH_INVENTORY<br />ORA$PREPLUGIN_BACKUP_JOB<br />XMLDB_NFS_CLEANUP_JOB</pre>  | 
| Oracle Database 21c |  <pre>BSLN_MAINTAIN_STATS_JOB<br />CLEANUP_NON_EXIST_OBJ<br />CLEANUP_ONLINE_IND_BUILD<br />CLEANUP_ONLINE_PMO<br />CLEANUP_TAB_IOT_PMO<br />CLEANUP_TRANSIENT_PKG<br />CLEANUP_TRANSIENT_TYPE<br />DRA_REEVALUATE_OPEN_FAILURES<br />FILE_SIZE_UPD<br />ORA$AUTOTASK_CLEAN<br />PMO_DEFERRED_GIDX_MAINT_JOB<br />PURGE_LOG</pre>  |  <pre>FGR$AUTOPURGE_JOB<br />FILE_WATCHER<br />HM_CREATE_OFFLINE_DICTIONARY<br />LOAD_OPATCH_INVENTORY<br />ORA$PREPLUGIN_BACKUP_JOB<br />ORA$_ATSK_AUTOSTS<br />XMLDB_NFS_CLEANUP_JOB</pre>  | 

## Parameter umum untuk prosedur Oracle Scheduler
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.CommonParameters"></a>

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  |  Prosedur yang tercantum dalam tabel di [Melakukan tugas penjadwalan umum untuk instans DB Oracle](#Appendix.Oracle.CommonDBATasks.Scheduler)   |  —  |  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 pekerjaan DBMS\$1SCHEDULER
<a name="Appendix.Oracle.CommonDBATasks.ModifyScheduler"></a>

Untuk memodifikasi komponen tertentu dari Oracle Scheduler, gunakan prosedur `dbms_scheduler.set_attribute` Oracle. Untuk informasi selengkapnya, lihat [DBMS\$1SCHEDULER](https://docs.oracle.com/database/121/ARPLS/d_sched.htm#ARPLS72235) dan [SET\$1ATTRIBUTE procedure](https://docs.oracle.com/database/121/ARPLS/d_sched.htm#ARPLS72399) 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
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.maintenance-windows"></a>

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.

1. 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
   ```

1. 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
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.TimeZone"></a>

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\$1SCHEDULER](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_SCHEDULER.html) dan [SET\$1SCHEDULER\$1ATTRIBUTE](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_SCHEDULER.html#GUID-2AB97BF7-7154-4E6C-933F-B2659B18A907) 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 developer Oracle SQL](USER_ConnectToOracleInstance.SQLDeveloper.md).

1. 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](Appendix.Oracle.Options.Timezone.md).

## Menonaktifkan pekerjaan Oracle Scheduler yang dimiliki oleh SYS
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.Disabling"></a>

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](#Appendix.Oracle.CommonDBATasks.Scheduler.CommonParameters).

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
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.Enabling"></a>

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](#Appendix.Oracle.CommonDBATasks.Scheduler.CommonParameters).

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
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.Modifying_Calendar"></a>

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](#Appendix.Oracle.CommonDBATasks.Scheduler.CommonParameters).

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
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.Modifying_Named"></a>

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](#Appendix.Oracle.CommonDBATasks.Scheduler.CommonParameters).

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
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.autocommit"></a>

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
```