Melakukan tugas umum terkait log 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 umum terkait log untuk instans DB Oracle

Setelah itu, Anda dapat menemukan cara melakukan tugas DBA umum tertentu terkait proses pencatatan log di instans DB Amazon RDS Anda yang menjalankan Oracle. Untuk memberikan pengalaman layanan terkelola, Amazon RDS tidak memberikan akses shell ke instans DB, dan membatasi akses ke sejumlah prosedur dan tabel sistem tertentu yang memerlukan hak istimewa tingkat lanjut.

Untuk informasi selengkapnya, lihat File log basis data Oracle.

Mengatur pencatatan log paksa

Dalam mode pencatatan log paksa, Oracle mencata log semua perubahan pada basis data kecuali perubahan dalam ruang tabel sementara dan segmen sementara (NOLOGGING klausul diabaikan). Untuk informasi selengkapnya, lihat Menentukan mode LOGGING PAKSA di dokumentasi Oracle.

Untuk mengatur pencatatan log paksa, gunakan prosedur rdsadmin.rdsadmin_util.force_logging Amazon RDS. Prosedur force_logging memiliki parameter berikut.

Nama parameter Jenis data Default Ya Deskripsi

p_enable

boolean

true

Tidak

Atur ke true untuk menempatkan basis data dalam mode pencatatan log paksa, false untuk menghapus basis data dari mode pencatatan log paksa.

Contoh berikut menempatkan basis data dalam mode pencatatan log paksa.

EXEC rdsadmin.rdsadmin_util.force_logging(p_enable => true);

Mengatur pencatatan log tambahan

Jika Anda mengaktifkan pencatatan tambahan, LogMiner memiliki informasi yang diperlukan untuk mendukung baris berantai dan tabel berkerumun. Untuk informasi selengkapnya, lihat Supplemental logging di dokumentasi Oracle.

Oracle Database tidak mengaktifkan pencatatan log tambahan secara default. Untuk mengaktifkan dan menonaktifkan pencatatan log tambahan, gunakan prosedur rdsadmin.rdsadmin_util.alter_supplemental_logging Amazon RDS. Untuk informasi selengkapnya tentang cara Amazon RDS mengelola retensi log pengulangan yang diarsipkan untuk instans DB Oracle, lihat Mempertahankan log pengulangan yang diarsipkan.

Prosedur alter_supplemental_logging memiliki parameter berikut.

Nama parameter Jenis data Default Wajib Deskripsi

p_action

varchar2

Ya

'ADD' untuk menambahkan pencatatan log tambahan, 'DROP' untuk menghapus pencatatan log tambahan.

p_type

varchar2

null

Tidak

Tipe pencatatan log tambahan. Nilai yang valid adalah 'ALL', 'FOREIGN KEY', 'PRIMARY KEY', 'UNIQUE', atau PROCEDURAL.

Contoh berikut mengaktifkan pencatatan log tambahan.

begin rdsadmin.rdsadmin_util.alter_supplemental_logging( p_action => 'ADD'); end; /

Contoh berikut mengaktifkan pencatatan log tambahan untuk semua kolom ukuran maksimum dengan panjang tetap.

begin rdsadmin.rdsadmin_util.alter_supplemental_logging( p_action => 'ADD', p_type => 'ALL'); end; /

Contoh berikut memungkinkan pencatatan log tambahan untuk kolom kunci primer.

begin rdsadmin.rdsadmin_util.alter_supplemental_logging( p_action => 'ADD', p_type => 'PRIMARY KEY'); end; /

Mengganti file log online

Untuk beralih file log, gunakan prosedur rdsadmin.rdsadmin_util.switch_logfile Amazon RDS. Prosedur switch_logfile tidak memiliki parameter.

Contoh berikut mengganti file log.

EXEC rdsadmin.rdsadmin_util.switch_logfile;

Menambahkan log pengulangan online

Instans DB Amazon RDS yang menjalankan Oracle dimulai dengan empat log pengulangan online, yang masing-masing berukuran 128 MB. Untuk menambahkan log pengulangan tambahan, gunakan prosedur rdsadmin.rdsadmin_util.add_logfile Amazon RDS.

Prosedur add_logfile memiliki parameter berikut.

catatan

Parameter ini tidak bisa ada pada saat yang sama.

Nama parameter Jenis data Default Wajib Deskripsi

bytes

positif

null

Tidak

Ukuran file log dalam byte.

p_size

varchar2

Ya

Ukuran file log. Anda dapat menentukan ukuran dalam kilobyte (K), megabyte (M), atau gigabyte (G).

Perintah berikut menambahkan file log 100 MB.

EXEC rdsadmin.rdsadmin_util.add_logfile(p_size => '100M');

Menghapus log pengulangan online

Untuk menghapus log pengulangan, gunakan prosedur rdsadmin.rdsadmin_util.drop_logfile Amazon RDS. Prosedur drop_logfile memiliki parameter berikut.

Nama parameter Jenis data Default Wajib Deskripsi

grp

positif

Ya

Nomor grup log.

Contoh berikut menghapus log dengan grup nomor 3.

EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 3);

Anda hanya dapat menghapus log yang memiliki status tidak digunakan atau tidak aktif. Contoh berikut mendapatkan status log.

SELECT GROUP#, STATUS FROM V$LOG; GROUP# STATUS ---------- ---------------- 1 CURRENT 2 INACTIVE 3 INACTIVE 4 UNUSED

Mengubah ukuran log pengulangan online

Instans DB Amazon RDS yang menjalankan Oracle dimulai dengan empat log pengulangan online, yang masing-masing berukuran 128 MB. Contoh berikut menunjukkan cara menggunakan prosedur Amazon RDS untuk mengubah ukuran log Anda dari 128 MB menjadi 512 MB untuk masing-masing.

/* Query V$LOG to see the logs. */ /* You start with 4 logs of 128 MB each. */ SELECT GROUP#, BYTES, STATUS FROM V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 1 134217728 INACTIVE 2 134217728 CURRENT 3 134217728 INACTIVE 4 134217728 INACTIVE /* Add four new logs that are each 512 MB */ EXEC rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912); EXEC rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912); EXEC rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912); EXEC rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912); /* Query V$LOG to see the logs. */ /* Now there are 8 logs. */ SELECT GROUP#, BYTES, STATUS FROM V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 1 134217728 INACTIVE 2 134217728 CURRENT 3 134217728 INACTIVE 4 134217728 INACTIVE 5 536870912 UNUSED 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED /* Drop each inactive log using the group number. */ EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 1); EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 3); EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 4); /* Query V$LOG to see the logs. */ /* Now there are 5 logs. */ select GROUP#, BYTES, STATUS from V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 2 134217728 CURRENT 5 536870912 UNUSED 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED /* Switch logs so that group 2 is no longer current. */ EXEC rdsadmin.rdsadmin_util.switch_logfile; /* Query V$LOG to see the logs. */ /* Now one of the new logs is current. */ SQL>SELECT GROUP#, BYTES, STATUS FROM V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 2 134217728 ACTIVE 5 536870912 CURRENT 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED /* If the status of log 2 is still "ACTIVE", issue a checkpoint to clear it to "INACTIVE". */ EXEC rdsadmin.rdsadmin_util.checkpoint; /* Query V$LOG to see the logs. */ /* Now the final original log is inactive. */ select GROUP#, BYTES, STATUS from V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 2 134217728 INACTIVE 5 536870912 CURRENT 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED # Drop the final inactive log. EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 2); /* Query V$LOG to see the logs. */ /* Now there are four 512 MB logs. */ SELECT GROUP#, BYTES, STATUS FROM V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 5 536870912 CURRENT 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED

Mempertahankan log pengulangan yang diarsipkan

Anda dapat menyimpan log redo yang diarsipkan secara lokal pada instans DB Anda untuk digunakan dengan produk seperti LogMiner Oracle (). DBMS_LOGMNR Setelah Anda mempertahankan redo log, Anda dapat menggunakan LogMiner untuk menganalisis log. Untuk informasi selengkapnya, lihat Menggunakan LogMiner untuk menganalisis file log ulang dalam dokumentasi Oracle.

Untuk mempertahankan log pengulangan yang diarsipkan, terapkan prosedur rdsadmin.rdsadmin_util.set_configuration Amazon RDS. Prosedur set_configuration memiliki parameter berikut.

Nama parameter Jenis data Default Wajib Deskripsi

name

varchar

Ya

Nama konfigurasi yang akan diperbarui.

value

varchar

Ya

Nilai untuk konfigurasi.

Contoh berikut mempertahankan log pengulangan 24 jam.

begin rdsadmin.rdsadmin_util.set_configuration( name => 'archivelog retention hours', value => '24'); end; / commit;
catatan

Commit tersebut diperlukan agar perubahan dapat berlaku.

Untuk melihat berapa lama log pengulangan yang diarsipkan dipertahankan untuk instans DB Anda, gunakan prosedur rdsadmin.rdsadmin_util.show_configuration Amazon RDS.

Contoh berikut menunjukkan waktu retensi log.

set serveroutput on EXEC rdsadmin.rdsadmin_util.show_configuration;

Output menunjukkan pengaturan saat ini untuk archivelog retention hours. Output berikut menunjukkan bahwa log pengulangan yang diarsipkan dipertahankan selama 48 jam.

NAME:archivelog retention hours VALUE:48 DESCRIPTION:ArchiveLog expiration specifies the duration in hours before archive/redo log files are automatically deleted.

Karena log pengulangan yang diarsipkan dipertahankan dalam instans DB Anda, pastikan bahwa instans DB Anda memiliki penyimpanan yang cukup untuk log yang dipertahankan. Untuk menentukan seberapa besar ruang yang digunakan oleh instans DB Anda dalam X jam terakhir, Anda dapat menjalankan kueri berikut, mengganti X dengan jumlah jam.

SELECT SUM(BLOCKS * BLOCK_SIZE) bytes FROM V$ARCHIVED_LOG WHERE FIRST_TIME >= SYSDATE-(X/24) AND DEST_ID=1;

RDS for Oracle hanya menghasilkan log pengulangan yang diarsipkan jika periode retensi cadangan instans DB Anda lebih besar dari nol. Secara default periode retensi cadangan lebih besar dari nol.

Ketika periode retensi log yang diarsipkan berakhir, RDS for Oracle akan menghapus log pengulangan yang diarsipkan dari instans DB Anda. Untuk mendukung pemulihan instans DB Anda ke titik waktu tertentu, Amazon RDS menyimpan log pengulangan yang diarsipkan di luar instans DB Anda berdasarkan periode retensi cadangan. Untuk mengubah periode retensi cadangan, lihat Memodifikasi instans DB Amazon RDS.

catatan

Dalam beberapa kasus, Anda mungkin menggunakan JDBC di Linux untuk mengunduh log pengulangan yang diarsipkan dan mengalami waktu latensi panjang dan pengaturan ulang koneksi. Dalam kasus seperti itu, masalah mungkin disebabkan oleh pengaturan generator nomor acak default pada klien Java Anda. Sebaiknya setel driver JDBC Anda untuk menggunakan generator nomor acak yang tidak blokir.

Mengakses log pengulangan online dan yang diarsipkan

Anda mungkin ingin mengakses file log redo online dan diarsipkan untuk pertambangan dengan alat eksternal seperti GoldenGate, Attunity, Informatica, dan lainnya. Untuk mengakses file ini, lakukan hal berikut:

  1. Buat objek direktori yang memberikan akses hanya baca ke jalur file fisik.

    Gunakan rdsadmin.rdsadmin_master_util.create_archivelog_dir dan rdsadmin.rdsadmin_master_util.create_onlinelog_dir.

  2. Baca file menggunakan PL/SQL.

    Anda dapat membaca file menggunakan PL/SQL. Untuk informasi selengkapnya tentang cara membaca file dari objek direktori, lihat Membuat daftar file di direktori instans DB dan Membaca file di direktori instans DB.

Mengakses log transaksi didukung untuk rilis berikut ini:

  • Oracle Database 21c

  • Oracle Database 19c

Kode berikut membuat direktori yang memberikan akses baca saja ke file log pengulangan online dan yang diarsipkan.

penting

Kode ini juga mencabut hak istimewa DROP ANY DIRECTORY.

EXEC rdsadmin.rdsadmin_master_util.create_archivelog_dir; EXEC rdsadmin.rdsadmin_master_util.create_onlinelog_dir;

Kode berikut menghapus direktori untuk file log pengulangan online dan yang diarsipkan.

EXEC rdsadmin.rdsadmin_master_util.drop_archivelog_dir; EXEC rdsadmin.rdsadmin_master_util.drop_onlinelog_dir;

Kode berikut memberikan dan mencabut hak istimewa DROP ANY DIRECTORY.

EXEC rdsadmin.rdsadmin_master_util.revoke_drop_any_directory; EXEC rdsadmin.rdsadmin_master_util.grant_drop_any_directory;

Mengunduh log pengulangan yang diarsipkan dari Amazon S3

Anda dapat mengunduh log pengulangan yang diarsipkan pada instans DB Anda menggunakan paket rdsadmin.rdsadmin_archive_log_download. Jika log pengulangan yang diarsipkan tidak lagi tersedia di instans DB, Anda dapat mengunduhnya lagi dari Amazon S3. Kemudian Anda dapat menambang log atau menggunakannya untuk memulihkan atau mereplikasi basis data Anda.

catatan

Anda tidak dapat mengunduh log pengulangan yang diarsipkan pada instans replika baca.

Mengunduh log pengulangan yang diarsipkan: langkah-langkah dasar

Ketersediaan log pengulangan yang diarsipkan bergantung pada kebijakan retensi berikut:

  • Kebijakan retensi cadangan - Log dalam kebijakan ini tersedia di Amazon S3. Log di luar kebijakan ini akan dihapus.

  • Kebijakan penyimpanan log yang diarsipkan - Log dalam kebijakan ini tersedia pada instans DB Anda. Log di luar kebijakan ini akan dihapus.

Jika log tidak tersedia di instans Anda tetapi dilindungi oleh periode retensi cadangan, gunakan rdsadmin.rdsadmin_archive_log_download untuk mengunduhnya lagi. RDS for Oracle menyimpan log ke direktori /rdsdbdata/log/arch pada instans DB Anda.

Untuk mengunduh log pengulangan yang diarsipkan dari Amazon S3
  1. Konfigurasikan periode retensi Anda untuk memastikan unduhan log pengulangan yang diarsipkan dipertahankan selama yang Anda butuhkan. Pastikan untuk COMMIT perubahan Anda.

    RDS mempertahankan log yang Anda unduh sesuai dengan kebijakan retensi log yang diarsipkan, mulai dari saat log diunduh. Untuk mempelajari cara menetapkan kebijakan retensi, lihat Mempertahankan log pengulangan yang diarsipkan.

  2. Tunggu hingga 5 menit agar perubahan kebijakan retensi log yang diarsipkan diterapkan.

  3. Unduh log pengulangan yang diarsipkan dari Amazon S3 menggunakan rdsadmin.rdsadmin_archive_log_download.

    Untuk informasi lebih lanjut, lihat Mengunduh satu log pengulangan yang diarsipkan dan Mengunduh serangkaian log pengulangan yang diarsipkan.

    catatan

    RDS secara otomatis memeriksa penyimpanan yang tersedia sebelum mengunduh. Jika log yang diminta memakan ruang dengan persentase tinggi, Anda akan menerima peringatan.

  4. Konfirmasi bahwa log berhasil diunduh dari Amazon S3.

    Anda dapat melihat status tugas unduhan Anda di file bdump. File bdump memiliki nama jalur /rdsdbdata/log/trace/dbtask-task-id.log. Pada langkah unduhan sebelumnya, Anda menjalankan pernyataan SELECT yang menampilkan ID tugas dalam tipe data VARCHAR2. Untuk informasi selengkapnya, lihat contoh serupa di Memantau status transfer file.

Mengunduh satu log pengulangan yang diarsipkan

Untuk mengunduh satu log pengulangan yang diarsipkan ke direktori /rdsdbdata/log/arch, gunakan rdsadmin.rdsadmin_archive_log_download.download_log_with_seqnum. Prosedur ini memiliki parameter berikut.

Nama parameter Jenis data Default Wajib Deskripsi

seqnum

number

Ya

Nomor urut log pengulangan yang diarsipkan.

Contoh berikut mengunduh log dengan nomor urut 20.

SELECT rdsadmin.rdsadmin_archive_log_download.download_log_with_seqnum(seqnum => 20) AS TASK_ID FROM DUAL;

Mengunduh serangkaian log pengulangan yang diarsipkan

Untuk mengunduh serangkaian log pengulangan yang diarsipkan ke direktori /rdsdbdata/log/arch, gunakan download_logs_in_seqnum_range. Unduhan Anda dibatasi hingga 300 log per permintaan. Prosedur download_logs_in_seqnum_range memiliki parameter berikut.

Nama parameter Jenis data Default Wajib Deskripsi

start_seq

number

Ya

Nomor urut awal untuk rangkaian.

end_seq

number

Ya

Nomor urut akhir untuk rangkaian.

Contoh berikut mengunduh log dengan nomor urut 50 sampai 100.

SELECT rdsadmin.rdsadmin_archive_log_download.download_logs_in_seqnum_range(start_seq => 50, end_seq => 100) AS TASK_ID FROM DUAL;