Pemutakhiran otomatis file zona waktu 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.

Pemutakhiran otomatis file zona waktu Oracle

Dengan TIMEZONE_FILE_AUTOUPGRADE opsi ini, Anda dapat memutakhirkan file zona waktu saat ini ke versi terbaru pada RDS Anda untuk instans Oracle DB.

Gambaran umum file zona waktu Oracle

File zona waktu Oracle Database menyimpan informasi berikut:

  • Offset dari Coordinated Universal Time (UTC)

  • Waktu transisi untuk Daylight Saving Time (DST)

  • Singkatan untuk waktu standar dan DST

Oracle Database menyediakan beberapa versi file zona waktu. Saat Anda membuat basis data Oracle di lingkungan on-premise, Anda memilih versi file zona waktu. Untuk informasi selengkapnya, lihat Memilih File Zona Waktu di Panduan Dukungan Globalisasi Oracle Database.

Jika aturan berubah untuk DST, Oracle akan menerbitkan file zona waktu baru. Oracle merilis file zona waktu baru ini secara independen dari jadwal untuk Pembaruan Rilis triwulanan (RU) dan Revisi Pembaruan Rilis (RUR). File zona waktu berada di host basis data di direktori $ORACLE_HOME/oracore/zoneinfo/. Nama file zona waktu menggunakan format DSTvversi, seperti pada DSTv35.

Pengaruh file zona waktu terhadap transfer data

Di Oracle Database, tipe data TIMESTAMP WITH TIME ZONE menyimpan stempel waktu dan data zona waktu. Data dengan tipe data TIMESTAMP WITH TIME ZONE menggunakan aturan dalam versi file zona waktu terkait. Dengan demikian, TIMESTAMP WITH TIME ZONE data yang ada terpengaruh saat Anda memperbarui file zona waktu.

Masalah dapat terjadi ketika Anda mentransfer data antar basis data yang menggunakan versi file zona waktu yang berbeda. Misalnya, jika Anda mengimpor data dari database sumber dengan versi file zona waktu yang lebih tinggi daripada basis data target, database akan mengeluarkan ORA-39405 kesalahan. Sebelumnya, Anda harus mengatasi kesalahan ini dengan menggunakan salah satu teknik berikut:

  • Buat instans DB RDS for Oracle dengan file zona waktu yang diinginkan, ekspor data dari basis data sumber Anda, lalu impor ke basis data baru.

  • Gunakan AWS DMS atau replikasi logis untuk memigrasikan data Anda.

Pembaruan otomatis menggunakan opsi TIMEZONE_FILE_AUTOUPGRADE

Ketika grup opsi yang dilampirkan ke RDS Anda untuk instans Oracle DB menyertakan TIMEZONE_FILE_AUTOUPGRADE opsi, RDS memperbarui file zona waktu Anda secara otomatis. Dengan memastikan bahwa database Oracle Anda menggunakan versi file zona waktu yang sama, Anda menghindari teknik manual yang memakan waktu ketika Anda memindahkan data di antara lingkungan yang berbeda. Opsi TIMEZONE_FILE_AUTOUPGRADE didukung untuk basis data kontainer (CDB) dan non-CDB.

Saat Anda menambahkan opsi TIMEZONE_FILE_AUTOUPGRADE ke grup opsi, Anda dapat memilih apakah akan menambahkan opsi sesegera mungkin atau selama periode pemeliharaan. Setelah instans DB Anda menerapkan opsi baru, RDS memeriksa apakah itu dapat menginstal file versi DStv yang lebih baru. DSTvversi target bergantung pada hal berikut:

  • Versi mesin minor yang saat ini dijalankan instans DB Anda

  • Versi mesin minor yang ingin dijadikan sebagai pemutakhiran instans DB Anda

Misalnya, versi file zona waktu Anda saat ini mungkin DStv33. Ketika RDS menerapkan pembaruan ke grup opsi Anda, mungkin menentukan bahwa DStv34 saat ini tersedia di sistem file instans DB Anda. RDS kemudian akan memperbarui file zona waktu Anda ke DStv34 secara otomatis.

Untuk menemukan versi DST yang tersedia dalam pembaruan rilis RDS yang didukung, lihat patch di Catatan rilis untuk Amazon Relational Database Service (Amazon RDS) for Oracle. Misalnya, versi 19.0.0.0.ru-2022-10.rur-2022-10.r1 mencantumkan patch 34533061: RDBMS - PEMBARUAN DSTV39 - TZDATA2022C.

Strategi untuk memperbarui file zona waktu Anda

Memutakhirkan mesin DB Anda dan menambahkan TIMEZONE_FILE_AUTOUPGRADE opsi ke grup opsi adalah operasi terpisah. Menambahkan TIMEZONE_FILE_AUTOUPGRADE opsi memulai pembaruan file zona waktu Anda jika yang lebih baru tersedia. Anda menjalankan perintah berikut (hanya opsi yang relevan yang ditampilkan) baik segera atau di jendela pemeliharaan berikutnya:

  • Tingkatkan mesin DB Anda hanya menggunakan perintah RDS CLI berikut:

    modify-db-instance --engine-version name ...
  • Tambahkan TIMEZONE_FILE_AUTOUPGRADE opsi hanya menggunakan perintah CLI berikut:

    add-option-to-option-group --option-group-name name --options OptionName=TIMEZONE_FILE_AUTOUPGRADE ...
  • Tingkatkan mesin DB Anda dan tambahkan grup opsi baru ke instans Anda menggunakan perintah CLI berikut:

    modify-db-instance --engine-version name --option-group-name name ...

Strategi pembaruan Anda tergantung pada apakah Anda ingin memutakhirkan file database dan zona waktu bersama-sama atau hanya melakukan salah satu dari operasi ini. Perlu diingat bahwa jika Anda memperbarui grup opsi dan kemudian memutakhirkan mesin DB Anda dalam operasi API terpisah, pembaruan file zona waktu mungkin sedang berlangsung saat Anda memutakhirkan mesin DB Anda.

Contoh di bagian ini mengasumsikan hal berikut:

  • Anda belum menambahkan TIMEZONE_FILE_AUTOUPGRADE ke grup opsi yang saat ini terkait dengan instans DB Anda.

  • Instans DB Anda menggunakan basis data versi 19.0.0.0.ru-2019-07.rur-2019-07.r1 dan file zona waktu DSTv33.

  • Sistem file instans DB Anda menyertakan file DSTv34.

  • Pembaruan rilis 19.0.0.0.ru-2022-10.rur-2022-10.r1 menyertakan DSTv35.

Untuk memperbarui file zona waktu, Anda dapat menggunakan strategi berikut.

Memperbarui file zona waktu tanpa memutakhirkan mesin

Dalam skenario ini, basis data Anda menggunakan DSTv33, tetapi DSTv34 tersedia pada sistem file instans DB Anda. Anda ingin memperbarui file zona waktu yang digunakan oleh instans DB Anda dari DSTv33 ke DSTv34, tetapi Anda tidak ingin meningkatkan mesin Anda ke versi minor baru, yang mencakup DSTv35.

Dalam sebuah add-option-to-option-group perintah, tambahkan TIMEZONE_FILE_AUTOUPGRADE ke grup opsi yang digunakan oleh instans DB Anda. Tentukan apakah akan menambahkan opsi segera atau menundanya ke periode pemeliharaan. Setelah menerapkan TIMEZONE_FILE_AUTOUPGRADE opsi, RDS melakukan hal berikut:

  1. Memeriksa versi DST baru.

  2. Menentukan bahwa DStv34 tersedia pada sistem file.

  3. Memperbarui file zona waktu segera.

Memutakhirkan file zona waktu dan versi mesin DB

Dalam skenario ini, basis data Anda menggunakan DSTv33, tetapi DSTv34 tersedia pada sistem file instans DB Anda. Anda ingin memutakhirkan mesin DB Anda ke versi minor 19.0.0.0.ru-2022-10.rur-2022-10.r1, yang mencakup DSTv35, dan memperbarui file zona waktu Anda ke DSTv35 selama pemutakhiran mesin. Dengan demikian, tujuan Anda adalah melewati DSTv34 dan memperbarui file zona waktu Anda langsung ke DSTv35.

Untuk memutakhirkan file engine dan zona waktu bersama-sama, jalankan modify-db-instance dengan --engine-version opsi --option-group-name dan. Anda dapat menjalankan perintah segera atau menundanya ke jendela pemeliharaan. In --option-group-name, tentukan grup opsi yang menyertakan TIMEZONE_FILE_AUTOUPGRADE opsi. Sebagai contoh:

aws rds modify-db-instance --db-instance-identifier my-instance \ --engine-version new-version \ ----option-group-name og-with-timezone-file-autoupgrade \ --apply-immediately

RDS mulai meningkatkan mesin Anda ke 19.0.0.0.ru-2022-10.rur-2022-10.rur-2022-10.r1. Setelah menerapkan TIMEZONE_FILE_AUTOUPGRADE opsi, RDS memeriksa versi DST baru, melihat bahwa DStv35 tersedia di 19.0.0.0.ru-2022-10.rur-2022-10.r1, dan segera memulai pembaruan ke DStv35.

Untuk segera memutakhirkan mesin Anda dan kemudian memutakhirkan file zona waktu Anda, lakukan operasi secara berurutan:

  1. Tingkatkan mesin DB Anda hanya menggunakan perintah CLI berikut:

    aws rds modify-db-instance \ --db-instance-identifier my-instance \ --engine-version new-version \ --apply-immediately
  2. Tambahkan TIMEZONE_FILE_AUTOUPGRADE opsi ke grup opsi yang dilampirkan ke instance Anda menggunakan perintah CLI berikut:

    aws rds add-option-to-option-group \ --option-group-name og-in-use-by-your-instance \ --options OptionName=TIMEZONE_FILE_AUTOUPGRADE \ --apply-immediately

Memutakhirkan versi mesin DB Anda tanpa memperbarui file zona waktu

Dalam skenario ini, basis data Anda menggunakan DSTv33, tetapi DSTv34 tersedia pada sistem file instans DB Anda. Anda ingin memutakhirkan mesin DB Anda ke versi 19.0.0.0.ru-2022-10.rur-2022-10.r1, yang menyertakan DSTv35, tetapi mempertahankan file zona waktu DSTv33. Anda mungkin memilih strategi ini karena alasan berikut:

  • Data Anda tidak menggunakan tipe data TIMESTAMP WITH TIME ZONE.

  • Data Anda menggunakan tipe data TIMESTAMP WITH TIME ZONE, tetapi data Anda tidak terpengaruh oleh perubahan zona waktu.

  • Anda ingin menunda memperbarui file zona waktu karena Anda tidak dapat menoleransi periode nonaktif tambahan.

Strategi Anda tergantung pada mana dari kemungkinan berikut yang benar:

  • Instans DB Anda tidak terkait dengan grup opsi yang mencakup TIMEZONE_FILE_AUTOUPGRADE. Dalam modify-db-instance perintah Anda, jangan tentukan grup opsi baru sehingga RDS tidak memperbarui file zona waktu Anda.

  • Instans DB Anda saat ini dikaitkan dengan grup opsi yang menyertakanTIMEZONE_FILE_AUTOUPGRADE. Dalam satu modify-db-instance perintah, kaitkan instans DB Anda dengan grup opsi yang tidak menyertakan TIMEZONE_FILE_AUTOUPGRADE dan tingkatkan mesin DB Anda ke 19.0.0.0.ru-2022-10.rur-2022-10.r1.

Periode nonaktif selama pembaruan file zona waktu

Saat RDS memperbarui file zona waktu Anda, data yang ada yang menggunakan TIMESTAMP WITH TIME ZONE mungkin berubah. Dalam hal ini, pertimbangan utama Anda adalah periode nonaktif.

Awas

Jika Anda menambahkan opsi TIMEZONE_FILE_AUTOUPGRADE, peningkatan mesin Anda mungkin memperpanjang periode nonaktif. Memperbarui data zona waktu untuk basis data besar mungkin memakan waktu berjam-jam atau bahkan berhari-hari.

Lama pembaruan file zona waktu tergantung pada sejumlah faktor seperti berikut:

  • Jumlah data TIMESTAMP WITH TIME ZONE dalam basis data Anda

  • Konfigurasi instans DB

  • Kelas instans DB

  • Konfigurasi penyimpanan

  • Konfigurasi basis data

  • Pengaturan parameter basis data

Periode nonaktif tambahan dapat terjadi saat Anda melakukan hal berikut:

  • Tambahkan opsi ke grup opsi saat instans DB menggunakan file zona waktu yang sudah tidak berlaku

  • Mutakhirkan mesin basis data Oracle ketika versi mesin baru berisi versi baru dari file zona waktu

catatan

Selama pembaruan file zona waktu, RDS for Oracle memanggil PURGE DBA_RECYCLEBIN.

Persiapan untuk memperbarui file zona waktu

Pemutakhiran file zona waktu memiliki dua fase terpisah: siapkan dan mutakhirkan. Meskipun tidak diperlukan, sebaiknya lakukan langkah persiapan. Pada langkah ini, Anda mengetahui data mana yang akan terpengaruh dengan menjalankan prosedur DBMS_DST.FIND_AFFECTED_TABLES PL/SQL. Untuk informasi selengkapnya tentang periode persiapan, lihat Upgrading the Time Zone File and Timestamp with Time Zone Data di dokumentasi Oracle Database.

Sebagai persiapan untuk memperbarui file zona waktu
  1. Terhubung ke basis data Oracle Anda menggunakan klien SQL.

  2. Tentukan versi file zona waktu saat ini yang digunakan.

    SELECT * FROM V$TIMEZONE_FILE;
  3. Tentukan versi file zona waktu terbaru yang tersedia di instans DB Anda.

    SELECT DBMS_DST.GET_LATEST_TIMEZONE_VERSION FROM DUAL;
  4. Tentukan ukuran total tabel yang memiliki kolom tipe TIMESTAMP WITH LOCAL TIME ZONE atau TIMESTAMP WITH TIME ZONE.

    SELECT SUM(BYTES)/1024/1024/1024 "Total_size_w_TSTZ_columns_GB" FROM DBA_SEGMENTS WHERE SEGMENT_TYPE LIKE 'TABLE%' AND (OWNER, SEGMENT_NAME) IN (SELECT OWNER, TABLE_NAME FROM DBA_TAB_COLUMNS WHERE DATA_TYPE LIKE 'TIMESTAMP%TIME ZONE');
  5. Tentukan nama dan ukuran segmen yang memiliki kolom tipe TIMESTAMP WITH LOCAL TIME ZONE atau TIMESTAMP WITH TIME ZONE.

    SELECT OWNER, SEGMENT_NAME, SUM(BYTES)/1024/1024/1024 "SEGMENT_SIZE_W_TSTZ_COLUMNS_GB" FROM DBA_SEGMENTS WHERE SEGMENT_TYPE LIKE 'TABLE%' AND (OWNER, SEGMENT_NAME) IN (SELECT OWNER, TABLE_NAME FROM DBA_TAB_COLUMNS WHERE DATA_TYPE LIKE 'TIMESTAMP%TIME ZONE') GROUP BY OWNER, SEGMENT_NAME;
  6. Jalankan langkah persiapan.

    • Prosedur DBMS_DST.CREATE_AFFECTED_TABLE membuat tabel untuk menyimpan data yang terpengaruh. Anda meneruskan nama tabel ini ke prosedur DBMS_DST.FIND_AFFECTED_TABLES. Untuk informasi selengkapnya, lihat CREATE_AFFECTED_TABLE Procedure di dokumentasi Oracle Database.

    • Prosedur CREATE_ERROR_TABLE membuat tabel untuk mencatat kesalahan. Untuk informasi selengkapnya, lihat CREATE_ERROR_TABLE Procedure di dokumentasi Oracle Database.

    Contoh berikut membuat data dan tabel kesalahan yang terpengaruh, dan menemukan semua tabel yang terpengaruh.

    EXEC DBMS_DST.CREATE_ERROR_TABLE('my_error_table') EXEC DBMS_DST.CREATE_AFFECTED_TABLE('my_affected_table') EXEC DBMS_DST.BEGIN_PREPARE(new_version); EXEC DBMS_DST.FIND_AFFECTED_TABLES('my_affected_table', TRUE, 'my_error_table'); EXEC DBMS_DST.END_PREPARE; SELECT * FROM my_affected_table; SELECT * FROM my_error_table;
  7. Kueri tabel yang terpengaruh dan memiliki kesalahan.

    SELECT * FROM my_affected_table; SELECT * FROM my_error_table;

Menambahkan opsi pemutakhiran otomatis file zona waktu

Saat Anda menambahkan opsi ke grup opsi, grup opsi berada di salah satu status berikut:

  • Grup opsi yang ada saat ini dilampirkan ke setidaknya satu instans DB. Saat Anda menambahkan opsi, semua instans DB yang menggunakan grup opsi ini dimulai ulang secara otomatis. Hal ini akan menyebabkan pemadaman singkat.

  • Grup opsi yang ada tidak dilampirkan ke instans DB apa pun. Anda berencana untuk menambahkan opsi dan kemudian mengaitkan grup opsi yang ada dengan instans DB yang ada atau dengan instans DB baru.

  • Anda membuat grup opsi baru dan menambahkan opsi. Anda berencana mengaitkan grup opsi baru dengan instans DB yang ada atau instans DB baru.

Konsol

Untuk menambahkan opsi pemutakhiran otomatis file zona waktu ke instans DB
  1. Masuk ke AWS Management Console dan buka konsol Amazon RDS di https://console.aws.amazon.com/rds/.

  2. Di panel navigasi, pilih Grup opsi.

  3. Tentukan grup opsi yang ingin Anda gunakan. Anda dapat membuat grup opsi baru atau menggunakan grup opsi yang ada. Jika Anda ingin menggunakan grup opsi yang ada, lanjutkan ke langkah berikutnya. Jika tidak, buat grup opsi DB kustom dengan pengaturan berikut:

    1. Untuk Mesin pilih edisi Oracle Database untuk instans DB Anda.

    2. Untuk Versi mesin utama, pilih versi instans DB Anda.

    Untuk informasi selengkapnya, lihat Membuat grup opsi.

  4. Pilih grup opsi yang ingin Anda ubah, lalu pilih Tambahkan opsi.

  5. Di periode Tambahkan opsi, lakukan hal berikut:

    1. Pilih TIMEZONE_FILE_AUTOUPGRADE.

    2. Untuk mengaktifkan opsi pada semua instans DB terkait segera setelah Anda menambahkannya, untuk Terapkan Segera, pilih Ya. Jika Anda memilih Tidak (default), opsi diaktifkan untuk setiap instans DB terkait selama periode pemeliharaan berikutnya.

  6. Jika pengaturan sesuai keinginan Anda, pilih Tambahkan opsi.

AWS CLI

Contoh berikut menggunakan perintah AWS CLI add-option-to-option-grup untuk menambahkan opsi ke grup TIMEZONE_FILE_AUTOUPGRADE opsi yang disebut. myoptiongroup

Untuk Linux, macOS, atau Unix:

aws rds add-option-to-option-group \ --option-group-name "myoptiongroup" \ --options "OptionName=TIMEZONE_FILE_AUTOUPGRADE" \ --apply-immediately

Untuk Windows:

aws rds add-option-to-option-group ^ --option-group-name "myoptiongroup" ^ --options "OptionName=TIMEZONE_FILE_AUTOUPGRADE" ^ --apply-immediately

Memeriksa data Anda setelah pembaruan file zona waktu

Sebaiknya periksa data Anda setelah memperbarui file zona waktu. Selama langkah persiapan, RDS for Oracle secara otomatis membuat tabel berikut:

  • rdsadmin.rds_dst_affected_tables— Buat daftar tabel yang berisi data yang terpengaruh oleh pembaruan

  • rdsadmin.rds_dst_error_table— Buat daftar kesalahan yang dihasilkan selama pembaruan

Tabel ini tidak tergantung pada tabel apa pun yang Anda buat di periode persiapan. Untuk melihat hasil pembaruan, kueri tabel sebagai berikut.

SELECT * FROM rdsadmin.rds_dst_affected_tables; SELECT * FROM rdsadmin.rds_dst_error_table;

Untuk informasi selengkapnya tentang skema data yang terpengaruh dan tabel kesalahan, lihat FIND_AFFECTED_TABLES Procedure di dokumentasi Oracle.